Subkapitel Minimalautomat
This commit is contained in:
		
							parent
							
								
									513bfcc583
								
							
						
					
					
						commit
						2136710719
					
				| @ -303,6 +303,8 @@ Betrachte den NFA M' mit $\begin{cases} | ||||
| \delta(z,a) &\text{ falls } \delta(z,a)\cap E = \varemtpy \\ | ||||
| \delta(z,a)\cup S &\text{ sonst } \end{cases}$ | ||||
| 
 | ||||
| Behauptung: für alle $Y\subseteq Z$ und $w\in\sum^+$ gilt $\top{\sigma}(Y,w)=\top{sigma}(Y,w)\cup \bigcup \top{\sigma}(S, u_n)$ | ||||
| 
 | ||||
| 
 | ||||
| > Satz: Wenn L eine reguläre Sprache ist, dann ist auch $L^*$ regulär. | ||||
| 
 | ||||
| @ -335,13 +337,13 @@ Klammern sparen: | ||||
| - bei Operatoren auf gleicher Ebene weglassen | ||||
| 
 | ||||
| Präferenzregel: | ||||
| - $^x$ bindet stärker als $*$ | ||||
| - $*$ bindet stärker als $+$ | ||||
| - $*$ bindet stärker als $\times$ | ||||
| - $\times$ bindet stärker als $+$ | ||||
| 
 | ||||
| Wo tauchen reguläre Ausdrücke auf: | ||||
| - Suchen und Ersetzten | ||||
| - Pattern Matching | ||||
| - Übersetzung (von Programmiersprachen) | ||||
| - Übersetzung (von Programmiersprachen): Lexikalische Analyse | ||||
| 
 | ||||
| > Proposition: zu jedem regulären Ausdruck $\gamma$ gibt es einen NFA M mit $L(\gamma)=L(M)$ | ||||
| 
 | ||||
| @ -355,7 +357,7 @@ Sei $L\subseteq \sum^*$ eine Sprache, dann sind äquivalent | ||||
| - L ist regulär, d.h. es gibt einen DFA M mit $L(M)=L$ | ||||
| - es gibt einen NFA M mit $L(M)=L$ | ||||
| - L ist rechtslinear, d.h. es gibt eine rechtslineare Grammatik G mit $L(G)=L$ | ||||
| - Es igbt einen regulären Ausdruck $\gamma$ mit $L(\gamma)=L$ | ||||
| - Es gibt einen regulären Ausdruck $\gamma$ mit $L(\gamma)=L$ | ||||
| 
 | ||||
| ## Zusammenfassung | ||||
| - Rechtslineare Grammatiken | ||||
| @ -377,13 +379,13 @@ ist vielleicht jede Sprache regulär? Zeige für jede Alphabet $\sum$ | ||||
| 1. es gibt nur abzählbar unendlich viele Sprachen über $\sum$, die Sprache einer Grammatik sind | ||||
| 2. Es gibt überabzählbar viele Sprachen über $\sum$ | ||||
| 
 | ||||
| > Lemma: Für jedes Alphabet $\sum$ ist die Menge ${L(G) | \text{G Grammatik über} \sum}$ abzählbar unendlich. | ||||
| > Lemma: Für jedes Alphabet $\sum$ ist die Menge $\{L(G) | \text{G Grammatik über} \sum\}$ abzählbar unendlich. | ||||
| 
 | ||||
| $|P(\sum^*)\cap RE|=|RE|=|\N|$ | ||||
| 
 | ||||
| > Satz: Für jedes Alphabet $\sum$ ist die Menge $P(\sum^*)={L|L \text{Sprache über} \sum}$ überabzählbar, d.h. es gibt keine bijektive Funktion $F:\N \rightarrow P(\sum^*)$. | ||||
| 
 | ||||
| Beweis: Indirekt "Diagonalisierung" | ||||
| Beweis: Indirekte "Diagonalisierung" auf die bijektive Funktion $F:\N\rightarrow P(\sum^*)$ | ||||
| 
 | ||||
| > Korollar: Für jedes Alphabet $\sum$ existiert eine Sprache L über $\sum$, die von keiner Grammatik G erzeugt wird. | ||||
| 
 | ||||
| @ -402,19 +404,40 @@ Wenn L eine reguläre Sprache ist, dann gibt es $n\leq 1$ derart, dass für alle | ||||
| 3. $|v|\geq 1$ | ||||
| 4. $uv^i w\in L$ für alle $i\geq 0$ | ||||
| 
 | ||||
| Dieses Lemma spricht nicht über Automaten, sondern nur über die Eigenschaften der Sprache. | ||||
| Dieses Lemma spricht nicht über Automaten, sondern nur über die Eigenschaften der Sprache. Es ist geeignet, Aussagen über Nicht-Regularität zu machen. Dabei ist es aber nur eine notwendige Bedingung. Es kann nicht genutzt werden, um die Regularität einer Sprache L zu zeigen. | ||||
| 
 | ||||
| ### Myhill-Nerode Äquivalenz | ||||
| [...] | ||||
| Ein zweites Verfahren um Nicht-Regularität zu zeigen. Dieses kann auch genutzt werden um Regularität zu beweisen.  | ||||
| 
 | ||||
| Der Index $index(R)$ von R ist die Anzahl der Äquivalenzklassen von R. | ||||
| > Definition Myhill-Nerode-Äquivalenz: Für eine Sprache $L\subseteq \sum^*$ definieren wir eine binäre Relation $R_L \subseteq \sum^* \times \sum^*$ wie folgt: Für alle $x,y\in \sum^*$ setze $(x,y)\in R_L$ genau dann, wenn $\forall z \in \sum^* :(xy\in L \leftrightarrow yz \in L)$ gilt. Wir schreiben hierfür auch $x R_L y$. | ||||
| 
 | ||||
| Beispiel: Gegeben sei die Sprache $L=\{ w\in \{a,b}^*: |w|_a gerade\}$. Seien $x,z\in \{a,b\}^*$. Betrachte zwei Fälle: | ||||
| - $|z|_a$ gerade: $xz\in L \leftrightarrow |xz|_a$ gerade $\leftrightarrow |x|_a$ gerade | ||||
| - $|z|_a$ ungerade: $xz\in L \leftrightarrow |xz|_a$ gerade $\leftrightarrow |x|_a$ ungerade | ||||
| also: $x R_L y \leftrightarrow |x|_a \equiv |y|_a$ | ||||
| 
 | ||||
| > Lemma: Sei $L \subseteq \sum^*$ eine Sprache | ||||
| > - die binäre Relation $R_L$ ist eine Äquivalenzrelation | ||||
| > - aus $x R_L y$ und $a\in\sum$ folgt $xa R_L ya$ | ||||
| 
 | ||||
| > Definition: Für eine Sprache L und ein Wort $x\in \sum^*$ ist $[x]_L=\{y\in\sum^* | x R_L y \}$ die Äquivalenzklasse von x. Ist L klar, so schreiben wir einfacher $[x]$. | ||||
| 
 | ||||
| Beispiel Äquivalentklassen für $R_L$ mit der Sprache $L=\sum^*\{abc\}$ | ||||
| - $[\epsilon]=\{w\in\{a,b,c}^* | kein nichtleerer Präfix von abc ist Suffix von w\}$ | ||||
| - $[a]=\{w\in\{a,b,c}^* | w endet auf a\}$ | ||||
| - $[ab]=\{w\in\{a,b,c}^* | w endet auf ab\}$ | ||||
| - $[abc]=\{w\in\{a,b,c}^* | w endet auf abc\}$ | ||||
| 
 | ||||
| 
 | ||||
| Der Index $index(R)$ von R ist die Anzahl der Äquivalenzklassen von R: $index(R)=|\{[x]:x \in A \} | \in \N \cup \{\infty\}$ | ||||
| 
 | ||||
| > Satz von Myhill-Nerode: Sei L eine Sprache. L ist regulär $\leftrightarrow index(R_L)< \infty$ | ||||
| (d.h. nur wenn die Myhill-Nerode-Äquivalenz endliche Klassen hat) | ||||
| 
 | ||||
| Beweis: | ||||
| - "$Rightarrow$": Sei L regulär -> es gibt DFA M mit $L(M)=L$; | ||||
| - "$Leftarrow$": sei $index(R_L)< \infty$; | ||||
| - "$Rightarrow$": Sei L regulär -> es gibt DFA M mit $L(M)=L$... | ||||
| - "$Leftarrow$": sei $index(R_L)< \infty$ -> Definiere einen DFA $M_L=(\{[x_1],...,[x_n]\},\sum,[\epsilon],\sigma,\{[w]|w\in L\})$ | ||||
|    | ||||
| 
 | ||||
| ## Minimalautomat | ||||
| Es gibt bekanntlich sehr verschiedene endliche Beschreibungen einer regulären Sprache. Diese können ineinander übersetzt werden aber eine einzelne Sprache kann auch durch verschiedene DFAs dargestellt werden. | ||||
| @ -442,7 +465,7 @@ Wenn in einem DFA M aus Startzustand X und Y dieselben Sprachen akzeptiert werde | ||||
| 
 | ||||
| Es bleibt zu zeigen, dass $\sigma'$ wohldefiniert ist $\rightarrow z\equiv z' \rightarrow \sigma (z,a)\equiv \sigma (z',a) \rightarrow [\sigma (z,a)]=[\sigma (z',a)]$. Also ist M' tatsächlich ein DFA. | ||||
| 
 | ||||
| > Definition: Seien $M_i$ DFAs und $f:Z_1 \rightarrow Z_2$ eine Funktion. Dann ist f ein Homomorphismus von $M_1$ auf $M_2$, falls gilt: | ||||
| > Definition: Seien $M_i$ DFAs (für $i\in\{1,2\}$) und $f:Z_1 \rightarrow Z_2$ eine Funktion. Dann ist f ein Homomorphismus von $M_1$ auf $M_2$, falls gilt: | ||||
| > - $f(l_1)=l_2$ | ||||
| > - $f(\sigma_1(z,a))=\sigma_2(f(z),a)$ für alle $z\in Z_1$ und $a\in \sum$ | ||||
| > - $z\in E_1 \leftrightarrow f(z)\in E_2$ für alle $z\in Z_1$ (bildet Endzustände aufeinander ab) | ||||
| @ -458,3 +481,78 @@ Es bleibt zu zeigen, dass $\sigma'$ wohldefiniert ist $\rightarrow z\equiv z' \r | ||||
| 
 | ||||
| > Folgerung: Seien $M_1$ und $M_2$ reduzierte DFAs mit $L(M_1)=L(M_2)$. Seien $M_1'$ und $M_2'$ die Quotienten bzgl $\equiv$. Dann sind $M_1'$ und $M_2'$ isomorph, d.h. für jede reguläre Sprache gibt es (bis auf Umbenennung der Zustände) genau einen minimalen DFA | ||||
| 
 | ||||
| Um den minimalen DFA zu erhalten bildet man den Quotienten eines beliebigen zur Sprache passenden DFA. | ||||
| 
 | ||||
| > Satz: Für einen reduzierten DFA M wird ein Paar ${z,z'}\subseteq Z$ mit $z\not = z'$ genau dann durch den Markierungsalgorithmus markiert werden, wenn $z\not \equiv z'$ | ||||
| 
 | ||||
| ### Algorithmus Minimalautomat | ||||
| Eingabe: reduzierter DFA M\\ | ||||
| Ausgabe: Menge der Paare erkennungsäquivalenter Zustände | ||||
| 1. Stelle eine Tabelle aller ungeordneten Zustandspaare $\{z,z'\}$ mit $z\not = z'$ auf | ||||
| 2. Markiere alle Paare $\{z,z'\}$ mit $z\in E$ und $z'\not\in E$ | ||||
| 3. Markiere ein beliebiges unmarkiertes Paar $\{z,z'\}$, für das es ein $a\in\sum$ gibt, sodass $\{\sigma(z,a),\sigma(z',a)\}$ bereits markiert ist (falls möglich) | ||||
| 4. Wiederhole den vorherigen Schritt, bis sich keine Änderung in der Tabelle mehr ergibt | ||||
| 
 | ||||
| > Satz: Für einen gegebenen reduzierten DFA M markiert der Minimierungsalgorithmus ein $\{z,z'\}(z,z'\in Z, z\not=z')$ genau dann, wenn $z\not\equiv z'$ | ||||
| 
 | ||||
| ## Entscheidbarkeit | ||||
| Fragestellungen/Probleme für reguläre Sprachen | ||||
| 
 | ||||
| ### Wortproblem | ||||
| Gilt $w\in L$ für eine gegebene reguläre Sprache L und $w\in\sum^*$ | ||||
| 
 | ||||
| Eingabe: DFA M und $w\in\sum^*$ | ||||
| 
 | ||||
| Verfahren: Verfolge die Zustandsübergänge von M, die durch die Symbole $a_1,...,a_n$ vorgegeben sind. | ||||
| 
 | ||||
| 
 | ||||
| ### Leerheitsproblem | ||||
| Gilt $L=\varemtpy$ für eine gegebene reguläre Sprache L? | ||||
| 
 | ||||
| Eingabe: NFA M | ||||
| 
 | ||||
| Verfahren: Sei $G=(Z,\rightarrow)$ der gerichtete Graph mit $z\rightarrow z' \leftrightarrow \exists a \in \sum: z'\in\sigma(z,a)$. Dann gilt $L(M)\not =\varemtpy$ genau dann, wenn es in dem Graphen G einen Pfad von einem Knoten aus S zu einem Knoten aus E gibt. Dies kann zB mit dem Algorithmus von Dijkstra entschieden werden. | ||||
| 
 | ||||
| 
 | ||||
| ### Endlichkeitsproblem | ||||
| Ist eine gegebene reguläre Sprache L endlich? | ||||
| 
 | ||||
| Eingabe: NFA M | ||||
| 
 | ||||
| Verfahren: Sei $G=(Z,\rightarrow)$ wieder der gerichtete Graph mit $z\rightarrow z' \leftrightarrow \exists a \in\sum:z'\in\sigma(z,a)$. Dann gilt L(M) ist genau dann unendlich, wenn es $z\in Z,z_0\in S$ und $z_1\in E$ gibt mit $z_0\rightarrow^* z \rightarrow^+ z \rightarrow^* z_1$. D.h. z liegt auf einem Zyklus, ist von einem Startzustand aus erreichbar und von z kann ein Endzustand erreicht werden. Dies kann wieder mit dem Algorithmus von Dijkstra entschieden werden. | ||||
| 
 | ||||
| ### Schnittproblem | ||||
| Gilt $L_1\cap L_2=\varempty$ für gegebene reguläre $L_1,L_2$? | ||||
| 
 | ||||
| Eingabe: NFAs $M_1$ und $M_2$ | ||||
| 
 | ||||
| Verfahren: Konstruiere aus $M_1$ und $M_2$ einen NFA M mit $L(M)=L(M_1)\cap L(M_2)$. Teste ob $L(M)=\varemtpy$ | ||||
| 
 | ||||
| ### Inklusionsproblem | ||||
| Gilt $L_1 \subseteq L_2$ für gegebene reguläre $L_1,L_2$? | ||||
| 
 | ||||
| Eingabe: NFAs $M_1$ und $M_2$ | ||||
| 
 | ||||
| Verfahren: Aus $M_1$ und $M_2$ kann ein NFA M mit $L(M)=\bar{L(M_2)}\cap L(M_1)$ konstruieren. Es gilt $L(M_1)\subseteq L(M_2)$ genau dann, wenn $L(M)=\varemtpy$. | ||||
| 
 | ||||
| ### Äquivalenzproblem | ||||
| Gilt $L_1=L_2$ für gegebene reguläre $L_1,L_2$? | ||||
| 
 | ||||
| Eingabe: NFAs $M_1$ und $M_2$ | ||||
| 
 | ||||
| Verfahren 1: es gilt $L(M_1)=L(M_2)$ genau dann, wenn $L(M_1)\subseteq L(M_2)$ und $L(M_2)\subseteq L(M_1)$. | ||||
| 
 | ||||
| Verfahren 2: bestimme zu $M_i (i\in\{1,2\})$ den äquivalenten minimalen DFA $N_i$. Dann gilt $L(M_1)=L(M_2)$ genau dann, wenn $N_1$ und $N_2$ isomorph sind (d.h. sie können durch Umbennenung der Zustände ineinander überführt werden). | ||||
| 
 | ||||
| ### Effizientbetrachtung | ||||
| Die Komplexität der oben beschriebenen Verfahren sehr unterschiedlich ausfallen. Bei Eingabe der regulären Sprache als NFA bzw DFA ergeben sich die folgenden Zeitschranken: | ||||
| 
 | ||||
| | Problem | NFA | DFA | | ||||
| | Wort~   | polynomiell | linear | | ||||
| | Leerheits~| polynomiell | polynomiell | | ||||
| | Endlichkeits~ | polynomiell | polynomiell | | ||||
| | Schnitt~ | polynomiell | polynomiell | | ||||
| | Inklusions~ | exponentiell | polynomiell | | ||||
| | Äquivalenz~ | exponentiell | polynomiell | | ||||
| 
 | ||||
| Es spricht viel dafür, dass die exponentiellen Zeitschranken nicht durch polynomielle ersetzt werden können. | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user