Ich weiß, dass Sprachen, die mit regulären Ausdrücken definiert werden können und die durch DFA / NFA (endliche Automaten) erkennbar sind, gleichwertig sind. Auch für die Sprache existiert kein DFA n ≥ 0 } . Trotzdem kann es mit regulären Ausdrücken (im Übrigen kann jede nicht reguläre Sprache verwendet werden) als . Wir wissen jedoch, dass jede Sprache, die einen regulären Ausdruck hat, einen DFA hat, der ihn erkennt (Widerspruch zu meiner früheren Aussage). Ich weiß, dass dies eine triviale Sache ist, aber beinhaltet die Definition des regulären Ausdrucks die Bedingung, dass er endlich sein sollte?
10
Antworten:
Wenn reguläre Ausdrücke unendlich sein könnten , wäre jede Sprache regulär gewesen.
In Anbetracht der Sprache können wir immer den regulären Ausdruck definieren, der genau definiert . (Beispiel: Der reguläre Ausdruck definiert .)R = w 1 + w 2 + ⋯ L R 1 = ϵ + 0 + 1 + 00 + 01 + 10 + 11 + ⋯ L 1 = { 0 , 1 } ∗L={w1,w2,…} R=w1+w2+⋯ L
R1=ϵ+0+1+00+01+10+11+⋯ L1={0,1}∗
Wir wissen, dass einige Sprachen nicht regulär sind, daher zeigt dies, dass unendliche reguläre Ausdrücke eine größere Klasse von Sprachen beschreiben als endliche reguläre Ausdrücke.
quelle
Ja, es muss endlich sein. Stellen Sie sich vor, Sie haben unendlich viele mögliche Übereinstimmungen und Ihre Eingabe ist
011
. Würdest du es jemals ablehnen können? Würden Ihnen jemals die Streichhölzer ausgehen, um sie zu überprüfen?Gibt es eine Sprache, die nach dieser Definition nicht regelmäßig wäre ? Was ist mit der Menge aller Programm- und Eingabepaare, sodass das angegebene Programm bei der angegebenen Eingabe anhält?
Wenn Sie ein Programm hätten, das die Zeichenfolgen in einer Sprache in lexikografischer Reihenfolge auflistet -
Aktualisieren
Um ein wenig anhand des Feedbacks in den Kommentaren zu verdeutlichen, ist der Grund, warum nicht jede Sprache dieses Formulars regelmäßig ist, per Definition. Wenn Sie zum Beispiel den Beweis von Kleenes Theorem nachschlagen, hängt dies davon ab, dass ein regulärer Ausdruck endlich sein muss, um zu beweisen, dass er eine endliche Zustandsmaschine erzeugt.
Warum definieren wir so „normale“ Sprache? Da jede formale Sprache eine Teilmenge der Zeichenketten eines Alphabets ist und jede Zeichenkette als Vereinigung von Singletons ausgedrückt werden kann, wäre reguläre Sprache nur ein Synonym für , wenn wir eine Reihe von Zeichenketten als „reguläre“ Sprache bezeichnen würden Sprache . Dies ist keine sehr nützliche Definition, zumal wir sie nicht in Hardware oder Software implementieren können. Wir können nirgendwo eine beliebige unendliche Liste speichern oder eine Maschine mit unendlichem Zustand erstellen.
Wie ich jedoch angedeutet habe, können Sie, wenn Sie die Möglichkeit haben, alle Zeichenfolgen in einer Sprache der Reihe nach aufzulisten, daraus eine Entscheidung treffen (akzeptieren Sie, wenn Sie genau diese Zeichenfolge sehen, lehnen Sie ab, wenn Sie auf eine Zeichenfolge stoßen, die nach der von Ihnen kommt suchen) und umgekehrt (für jede Zeichenfolge in der richtigen Reihenfolge, führen Sie sie durch den Entscheider und geben Sie sie genau dann aus, wenn sie akzeptiert wird). Wenn wir also jede aufzählbare Sprache als regulär betrachten würden , wäre jede entscheidbare Sprache „regulär“ und wir würden einen neuen Begriff für die Sprachen benötigen, die von endlichen Zustandsmaschinen erkannt werden, und ihre äquivalenten Codierungen als endliche Ausdrücke.
quelle
Angenommen, reguläre Ausdrücke dürfen unendlich sein.
Somit ist die durch {ϵ} ∪ {01} ∪ {0011} ... definierte Sprache regulär. Für jede reguläre Sprache gibt es eine NFA. Eine Möglichkeit, diese NFA zu erhalten, besteht darin, individuelle NFAs für jede von {ϵ}, {01}, {0011} ... zu haben und diese mithilfe von ϵ-Übergängen zu kombinieren. Da es unendlich viele reguläre Ausdrücke gibt, müssen unendlich viele Sub-NFAs kombiniert werden. NFA kann jedoch nur eine begrenzte Anzahl von Zuständen haben (Definition von NFA).
Somit gibt es keine NFA, die eine Sprache definieren kann, die durch Vereinigung unendlicher regulärer Ausdrücke definiert ist, was impliziert, dass die Sprache nicht regulär ist.
Somit gibt es keinen regulären Ausdruck, der dieselbe Sprache definieren kann wie die Sprache, die durch die Vereinigung unendlicher regulärer Ausdrücke definiert wird.
Reguläre Ausdrücke können also nur endliche Ausdrücke haben.
quelle