Ich fragte mich, wann Sprachen, die die gleiche Anzahl von Instanzen von zwei Teilzeichenfolgen enthielten, regelmäßig sein würden. Ich weiß, dass die Sprache mit der gleichen Anzahl von Einsen und Nullen nicht regulär ist, sondern eine Sprache wie , wobei L = { w ∣ Anzahl der Instanzen der Teilzeichenfolge "001" gleich der Anzahl der Instanzen der Teilzeichenfolge "100" ist. } regelmäßig? Beachten Sie, dass die Zeichenfolge "00100" akzeptiert würde.
Meine Intuition sagt mir, dass dies nicht der Fall ist, aber ich kann das nicht beweisen. Ich kann es nicht in eine Form umwandeln, die über das pumpfähige Lemma gepumpt werden kann. Wie kann ich das beweisen? Andererseits habe ich versucht, einen DFA oder einen NFA oder einen regulären Ausdruck zu erstellen, und bin auch an diesen Fronten gescheitert. Wie soll ich also vorgehen? Ich möchte dies allgemein verstehen, nicht nur für die vorgeschlagene Sprache.
quelle
Antworten:
Eine Antwort aus der Frage.
Wie Hendrik Jan betonte, sollte es bei q5 eine zusätzliche 0-Selbstschleife geben.
quelle
Es ist eine Trickfrage. Versuchen Sie, einen String zu konstruieren, der zwei 001 enthält und keine 100 enthält, und sehen Sie, warum Sie das nicht können. Wenn X = "Anzahl von 001" und Y = "Anzahl von 100", dann ist X = Y oder X = Y ± 1.
Sobald Sie den Trick erkannt haben, wird es höchst unwahrscheinlich, dass die Sprache unregelmäßig ist, und dann ist das Erstellen eines DFA recht einfach. Es gibt nur 8 Zustände mit ihren Übergängen, wenn das nächste Symbol 0/1 ist:
Der Anfangszustand ist S0, und S0, S1, C0, C1, C2 akzeptieren Zustände.
quelle