$ L= $ {W $ \ in (a, b) ^ * $ |Für jeden U-Teilstring von W, $ -5 \ le | u | _A- | u | _b \ le5 \} $ ist regelmäßig
-
29-09-2020 - |
Frage
Ich versuche zu zeigen, dass diese Sprache regelmäßig ist:
$ l= $ {w $ \ in \ (a, b) ^ * $ | |Für jeden U-Teilstring von W, $ - 5 \ le | u | _A- | u | _b \ le5 \} $
Wenn ich einen NFA baue und jedes Mal, wenn ich jedes Mal, wenn ich andere Buchstaben überspringe) - und nur, wenn sie alle akzeptiert werden (folgt dem Zustand), dann akzeptieren Sie w. Ist es in NFA möglich?Gibt es eine andere Möglichkeit, die Regelmäßigkeit der Sprache zu zeigen?
Lösung
Schöne Frage! Dies ist ein sehr nichtriviales Problem, das regelmäßige Sprachen beteiligt ist.
Zunächst einmal: Nein, Sie können auf jedem Teilzeichen einer Zeichenfolge andere Buchstaben mit anderen Buchstaben ausführen. Sie sollen den Automaton nur einmal auf der Zielzeichenfolge ausführen.
In diesem Fall ist es einfacher, auf die komplementäre der gegebenen Sprache zu greifen, nämlich auf
$$ l ^ c={w \ in (a, b) ^ * \ Mid \ Text {Es gibt ein Teilstring} \ text {von} w \ text {so, dass} |} | _A- | u | _b> 5 \ text {oder} | u | _A- | u | _b <-5 \} $$
Die Sprache $ l ^ C $ ist regelmäßig, da es von den folgenden NFA erkannt wird:
(Jeder Zustandsname ist der Unterschied $ | U | _A- | u | _b $ , der erste Buchstabe des Substring-
so, wie $ l ^ c $ regelmäßig ist, auch $ l= (l ^ c) ^ c $ ist.
Nach dem Vorschlag von Hendrick versuchte ich, das NFA zu erkennen und seine Ergänzung zu zeichnen, und ich bekomme diese nette DFA, die $ L $ :
Jeder Name eines Annahme-Statusnamens ist ein Intervall: Wenn, wenn der Automaton ausgeführt wird, sind wir in staatlicher
In gewisser Weise, wie Hendrick sagt, es ist, als ob wir den Automaton auf jedem Teilstring ausführen, aber dies bedeutet nicht, dass wir ein DFA direkt verwenden können, der Saiten erkennen, dass der Unterschied zwischen der
Schließlich würde ich eine triviale Verallgemeinerung des Ergebnisses schreiben (ich denke, dass dies Folklore ist, aber ich konnte keine Referenz finden).
lass $ t $ Seien Sie eine normale Sprache in einem Alphabet $ \ Sigma $ und lassen Sie
$$ L={W \ in \ Sigma ^ * \ MID \ Text {für jeden Teilzeichen} \ text {von} w, \ u \ in t \} $$
dann auch $ l $ ist regelmäßig.
in der Tat, wie oben, in Betracht ziehen $ l ^ C $ , die Ergänzung von $ L $ , nämlich
$$ l ^ c={w \ in \ sigma ^ * \ mid \ text {Es gibt einen Teilstring} u \ text {von} w \ text {so } u \ nicht \ in t \} $$
dann $ l ^ c \ \ Sigma ^ * t ^ c \ sigma ^ * $ , und deshalb $ l= (\ Sigma ^ * t ^ c \ sigma ^ *) ^ C \ Sigma ^ *) ^ C $ ist regelmäßig, da die Familie der regulären Sprachen unter Verkettung und Komplementierung geschlossen ist.
cleary Das Ergebnis stimmt immer noch für jede in der Verkettung und Ergänzung geschlossene Familie der Sprachen, aber dies ist kein notwendiger Zustand. In der Tat ist die Familie von Finite-Sprachen, die es nicht unter Komplementierung geschlossen ist, aber eindeutig, wenn $ T $ endlich ist, dann auch $ L $ ist (wie es immer der Fall ist, dass