Reguläre Ausdrücke, reguläre Grammatiken und endliche Automaten sind einfach drei verschiedene Formalismen für dieselbe Sache. Es gibt Algorithmen, die von einem in einen anderen konvertiert werden können.
Der Grund, warum wir alle drei haben, ist, dass sie unabhängig voneinander erstellt wurden, wobei die ersten Äquivalenzen (es gibt auch mehrere andere Formalismen) von Kleene bewiesen wurden (dieses Ergebnis oder ein Teil davon wird Kleenes Theorem genannt).
In diesem Kontext erkennen oder generieren alle Modelle Zeichenfolgen einer regulären Sprache, je nachdem, in welcher Richtung Sie die Modelle ausführen möchten, und mathematisch besteht in diesem Sinne kein Unterschied.
Natürlich ist manchmal ein Modell aufgrund der Details des Formalismus für eine bestimmte Aufgabe einfacher zu verwenden als ein anderes. Darüber hinaus ist die Art und Weise, wie sie im Kopf eines Menschen arbeiten, oft etwas anders. Endliche Automaten "fühlen" sich wie Computer, reguläre Ausdrücke "fühlen" sich wie eine Zeichenkette aus kleineren Teilzeichenfolgen und reguläre Grammatiken "fühlen" sich wie eine traditionellere Grammatik Ableitung oder Klassifizierung eines Satzes in einer Sprache (nicht überraschend, wenn man sich die Geschichte ansieht).
Um die beiden zu vergleichen, definieren wir sie:
Reguläre Ausdrücke
So werden reguläre Ausdrücke wie folgt rekursiv definiert:
- ist ein regulärer Ausdruck∅
- ist ein regulärer Ausdruckε
- ist ein regulärer Ausdruck für jeden ein & egr ; & Sgr;eina & egr ; & Sgr;
- EINB
- A ⋅ B
- EIN ∣ B
- EIN∗
Zusammen mit einer gewissen Semantik (dh wie wir die Operatoren interpretieren, um eine Zeichenfolge zu erhalten) erhalten wir eine Möglichkeit, Zeichenfolgen aus einer regulären Sprache zu generieren.
Regelmäßige Grammatiken
( N, Σ , P, S∈ N)NΣSPΣ∗P
Rechte lineare Grammatik
BCeinε
- B → a
- B → a C
- B → ε
Linke lineare Grammatiken
B → Cein
Dinge zum Nachdenken
Wenn wir uns diese Definitionen ansehen und mit ihnen spielen, können wir sehen, dass reguläre Ausdrücke wie übereinstimmende Regeln aussehen oder wie man ein bisschen mit Strings umgeht.
S
Diese tun jedoch genau dasselbe, und wie Sie die Metapher ihrer Funktion sehen, liegt ganz bei Ihnen.