Ich habe eine Frage zum Zählen von DFAs:
Wie würde ich bei einer
Σ = {0, 1}
Eingabezeichenfolge mit festgelegtem StatusQ = {1...n}
die Gesamtzahl der DFAs ermitteln, die erstellt werden können?
Ich glaube, dies ist ein kombinatorisches Problem, aber ich bin mir nicht sicher, was ich multiplizieren müsste.
Vielen Dank.
finite-automata
combinatorics
Heplar
quelle
quelle
Antworten:
Dies ist in der Tat ein nicht triviales Problem. Eine Lösung finden Sie in diesem Dokument: Aufzählung und zufällige Generierung zugänglicher Automaten .
quelle
Im Wesentlichen ist es das Produkt aller möglichen Übergänge von jedem möglichen Startzustand zu jedem möglichen Satz von Akzeptanzzuständen. Für dieses Beispiel gibt es n ^ (2n) Übergangsmöglichkeiten. Wo es n Gesamtzustände gibt, von denen jeder n mögliche Übergänge pro Kante hat (Eingabesymbol), was uns n ^ (2n) ergibt. Wir haben n mögliche Startzustände und 2 ^ n Akzeptanzzustände (die Potenzmenge möglicher Zustände). Das Produkt aller drei ergibt uns: n ^ (2n) * n * 2 ^ (n).
quelle
TL; DR:n ⋅2n⋅nm n
wo∣ Q ∣ = n und ∣ Σ ∣ = m .
Wir werden jedes Element eines DFA-5-Tupels durchgehen, um die verschiedenen Kombinationen herauszufinden, die jeweils einen eindeutigen DFA ergeben würden. Das 5-Tupel besteht aus (Q , Σ,δ , s , F)
Beliebiges 1 Element vonQ kann der Startzustand sein. So gibt es∣Q∣ = n Möglichkeiten zu wählen s .
F:
Eine beliebige Anzahl von Elementen von Q kann Akzeptanzzustände sein, daher sind alle Teilmengen von Q gültige Auswahlmöglichkeiten für F. Die Anzahl möglicher Teilmengen für eine Menge von Kardinalität n beträgt 2n . Eine andere Möglichkeit, dies zu sagen, ist die Kardinalität vonQ 's Power Set P(Q) ist 2n
Also die Gesamtzahl der Möglichkeiten, unter den 5 Elementen eines DFA zu wählen, wo∣Q∣ = n und ∣Σ∣ = m ist
Besser 5 Jahre zu spät als nie, oder?
quelle