Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Überführung regulärer Ausdrücke in endliche Automaten Der Algorithmus von Glushkov und McNaughton/Yamada Karin Haenelt 14.5.2010.

Ähnliche Präsentationen


Präsentation zum Thema: "Überführung regulärer Ausdrücke in endliche Automaten Der Algorithmus von Glushkov und McNaughton/Yamada Karin Haenelt 14.5.2010."—  Präsentation transkript:

1 Überführung regulärer Ausdrücke in endliche Automaten Der Algorithmus von Glushkov und McNaughton/Yamada Karin Haenelt

2 Inhalt Quelle Prinzip des Algorithmus Algorithmus
Parsing des regulären Ausdrucks Erkennung Syntaxbaum Funktionen nullable, firstpos, lastpos und followpos Konstruktion des Automaten Ein linguistisches Beispiel Implementierung Komplexität © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

3 Quelle Der Algorithmus wurde unabhängig entwickelt von
Viktor M. Glushkov (1960, 1961) Robert McNaughton und Hisao Yamada (1960) © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

4 Inhalt Quelle Prinzip des Algorithmus Algorithmus
Parsing des regulären Ausdrucks Erkennung Syntaxbaum Funktionen nullable, firstpos, lastpos und followpos Konstruktion des Automaten Ein linguistisches Beispiel Implementierung Komplexität © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

5 Prinzip des Algorithmus
bestimmte Positionen des regulären Ausdrucks stehen in bestimmten Folgerelationen in den zugehörigen Zeichenketten die Folgerelationen sind eindeutig bestimmt über die Abfolge und Definition der Operatoren des regulären Ausdrucks die Folgerelationen legen die Menge der möglichen Zustände und die zeitliche Ordnung der Zustände fest es geht also darum die Folgerelationen zu berechnen aus dem Ergebnis der Berechnung den DEA zu konstruieren © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

6 Prinzip des Algorithmus Beispiel -1-
wie sehen die Zeichenketten aus, die dieser Ausdruck beschreibt? welchem Zeichen kann welches Zeichen folgen? RE = dete? adje* nomn REp = dete?1 adje*2 nomn3 #4 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

7 Prinzip des Algorithmus Beispiel -2-
mögliche Startpositionen mögliche Folgepositionen RE = dete? adje* nomn REp = dete?1 adje*2 nomn3 #4 dete1 adje2 nomn3 #4 dete1 adje2 (da dete1 optional ist) nomn3 (dete1 und adje2 opt.) dete1 adje2 nomn3 #4 adje2, nomn3 #4 - © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

8 Prinzip des Algorithmus Beispiel -3-
RE = dete? adje* nomn REp = dete?1 adje*2 nomn3 #4 dete1 adje2 nomn3 #4 1,2,3 2,3 4 dete1 adje2 nomn3 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

9 Prinzip des Algorithmus Beispiel -4-
Start- und Folgepositionen sind eindeutig bestimmt durch die Semantik der Operatoren Wenn E= dete? adje* nomn in eine Zeichenkette aus L(E) umgewandelt wird, kann das erste Zeichen der Zeichenkette sein dete weil es vorne steht adje wegen des ?-Operators über dete nomn wegen des Stern-Operators über adje 1,2,3 Startzustand aus Positionsmenge {1,2,3} © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

10 Prinzip des Algorithmus
Wie berechnet man die Start- und Folgepositionen? Erkennung des Ausdrucks mit dem Algorithmus von Hopcroft/Ullman 1988 Aufbau eines binären Syntaxbaumes Blätter: Positionen innere Knoten: Operatoren Berechnung der Abfolgen während der bottom-up-Konstruktion des Syntaxbaumes Wie erzeugt man den Automaten? auf der Basis der Abfolgeinformation nach dem Algorithmus von Glushkov bzw. MacNaughton/Yamada © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

11 Inhalt Quelle Prinzip des Algorithmus Algorithmus
Parsing des regulären Ausdrucks Erkennung Syntaxbaum Funktionen nullable, firstpos, lastpos und followpos Konstruktion des Automaten Ein linguistisches Beispiel Implementierung Komplexität © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

12 Algorithmus © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

13 Der Syntaxbaum (a1|b2)*a3b4b5#6 ● ● # 6 ● b 5 ● b 4 * a 3 | a b 1 2
Aho/Sethi/Ullmann 1986: 139 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

14 Die Funktionen nullable, firstpos, lastpos und followpos
Der Automat wird aufgebaut aus den Ergebnissen von firstpos(root) und followpos(i) Zur Ermittlung von followpos(i) wird firstpos(n) und lastpos(n) benötigt Zur Ermittlung von firstpos(n) und lastpos(n) wird nullable(n) benötigt nullable(n) ist knotenspezifisch definiert Die Funktionen werden bottom-up auf den Syntaxbaum angewendet © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

15 Die Funktionen nullable, firstpos, lastpos und followpos
Def Sei E der Teilausdruck, der durch den Syntaxbaum mit Wurzel n repräsentiert wird, und E’ ein regulärer Ausdruck, in dem jedes Symbol durch seine Position ersetzt ist, dann ist Aho/Sethi/Ullmann 1986: 138 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

16 Die Berechnung der Funktionen nullable, firstpos, lastpos und followpos
| c1 c2 * c1 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

17 Der annotierte Syntaxbaum
(a1|b2)*a3b4b5#6 {1,2,3} {6} {1,2,3} {5} {6} # {6} 6 nullable {1,2,3} {4} {5} b {5} 5 {1,2,3} {3} {4} b {4} 4 {1,2} * {1,2} {3} a {3} 3 {1,2} | {1,2} firstpos lastpos {1} a {1} {2} b {2} 1 2 Aho/Sethi/Ullmann 1986: 139 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

18 Berechnung von followpos
| c1 c2 c1 * © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

19 Beispiel zur Berechnung von followpos: Stern-Knoten
(a|b)* followpos(1).addAll( {1,2}) followpos(2).addAll ({1,2}) n {1,2} * {1,2} {1,2} | {1,2} followpos(1) = {1,2} followpos(2) = {1,2} {1} a {1} {2} b {2} 1 2 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

20 Beispiel zur Berechnung von followpos: Konkatenations-Knoten
(a|b)*a n {1,2,3} {3} followpos(1).addAll( {3}) followpos(2).addAll ({3}) {1,2} * {1,2} {3} a {3} 3 {1,2} | {1,2} followpos(1) = {1,2,3} followpos(2) = {1,2,3} {1} a {1} {2} b {2} 1 2 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

21 Konstruktion der Automaten aus den followpos-Mengen
1 2 3 4 5 6 a b # NEA DEA 1,2,3,6 1,2,3 1,2,3,4 1,2,3,5 a b Aho/Sethi/Ullmann 1986: © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

22 Algorithmus von Gluskov bzw. McNaughton/Yamada: Konstruktion des DEA
Aho/Sethi/Ullmann 1986: 141 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

23 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada 14. 5

24 DEA 1,2,3,6 1,2,3 1,2,3,4 1,2,3,5 a1,a3 b2 b2,b4 b2,b5 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

25 Inhalt Quelle Prinzip des Algorithmus Algorithmus
Parsing des regulären Ausdrucks Erkennung Syntaxbaum Funktionen nullable, firstpos, lastpos und followpos Konstruktion des Automaten Ein linguistisches Beispiel Implementierung Komplexität © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

26 Ein linguistisches Beispiel, 1a
dete? adje* nomn {1,2,3,4} {5} Variante 1: Darstellung von a? durch (a|ε) bei Automatenkonstruktion werden für ε keine Kanten konstruiert (nur für Eingabe- Symbole a) {1,2,3,4} {4} {5} # {5} 5 {1,2,3} {1,2,3} {4} nomn {4} 4 {1,2} | {1,2} {3} * {3} {1} dete {1} { } ε { } {3} adje {3} nullable firstpos lastpos {i} 1 2 3 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

27 Ein linguistisches Beispiel, 1b
dete? adje* nomn {1,2,3} {4} Variante 2: direkte Angabe von Regeln für ?: nullable(n) := true firstpos (n) := firstpos(left) lastpos(n) := lastpos(left) {1,2,3} {3} {4} # {4} 4 {1,2} {1,2} {3} nomn {3} 3 {1} ? {1} {2} * {2} {1} dete {1} {2} adje {2} nullable firstpos lastpos {i} 1 2 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

28 Ein linguistisches Beispiel, 2a+b
dete? adje* nomn Variante 2 für ? Variante 1 für ? 1,2,3,4 3,4 5 start adje dete nomn 1,2,3 2,3 4 start adje dete nomn © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

29 Inhalt Quelle Prinzip des Algorithmus Algorithmus
Parsing des regulären Ausdrucks Erkennung Syntaxbaum Funktionen nullable, firstpos, lastpos und followpos Konstruktion des Automaten Ein linguistisches Beispiel Implementierung Komplexität © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

30 Implementierung Einfügen der Konstruktionsschritte für einen Parsebaum bzw. Syntaxbaum Zuordnung von Baumkonstruktoren zu den Elementen des regulären Ausdrucks Terminalsymbole (Zeile 21) Klammern (Zeile 23, 27) unäre Operatoren (*,+,?) (Zeile 31) binäre Operatoren (·, |) (Zeile 4, 13) * | © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

31 Implementierung: TreeNode
© Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

32 Definition der Knoten, 1 Brüggemann-Klein, 1992
© Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

33 Definition der Knoten, 2 Brüggemann-Klein, 1992
© Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

34 Definition der Knoten, 3 Brüggemann-Klein, 1992
© Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

35 Inhalt Quelle Prinzip des Algorithmus Algorithmus
Parsing des regulären Ausdrucks Erkennung Syntaxbaum Funktionen nullable, firstpos, lastpos und followpos Konstruktion des Automaten Ein linguistisches Beispiel Implementierung Komplexität © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

36 Komplexität: Platz maximale Anzahl der Zustände: 2p+1, p = Anzahl der Positionen (Anzahl möglicher Teilmengen, die aus p Objekten gebildet werden können, beträgt 2p) max. Anzahl wird in der Praxis kaum erreicht: der reg. Ausdruck schränkt Anzahl der möglichen Teilmengen sehr stark ein Algorithmus konstruiert nur die tatsächlich vorkommenden Teilmengen (lazy implementation der Teilmengen) minimale Anzahl der Zustände: p+1 (falls nur Konkatenation von Symbolen vorkommt) Glushkov, 1961 McNaughton/Yamada, 1960 © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

37 Komplexität: Zeit Implementierungen mit kubischer Zeit
Aho/Sethi/Ullman, 1986 Berry/Sethi, 1986 Implementierung mit quadratischer Zeit für allgemeine Ausdrücke (d.h. auch ambige) Brüggemann-Klein, 1992 Implementierung mit linearer Zeit für deterministische Ausdrücke © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

38 Literatur Quellen Erläuterungen weitere Literatur
Glushkov, Viktor M.(1961). The abstract theory of automata. In: Russian Mathematical Surveys 16, S Glushkov, Viktor M.(1960). On Synthesis Algorithm for Abstract Automata, Ukr. Mathem. Zhurnal, 12(2), S (in Russisch) McNaughton, Robert und Hisao Yamada (1960). Regular expressions and state graphs for automata. In IEEE Transactions on Electronic Computers 9 (1): S Erläuterungen Aho, Alfred V.; Sethi, Ravi und Jeffrey D. Ullman (1986). Compilers. Principles, Techniques and Tools. Addison-Wesley Publishing Company. weitere Literatur Berry, Gérard und Ravi Sethi (1986). From regular expressions to deterministic automata. In: Theoretical Computer Science 48 (3), S Brüggemann-Klein, Anne (1992). Regular Expressions into Finite Automata, Proceedings of Latin '92, 1st Latin American Symposium on Theoretical Informatics, São Paulo, Brazil, April 6-10, (Lecture Notes in Computer Science 583) Heidelberg: Springer Verlag. © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada

39 Versionen , , , , , © Karin Haenelt, RegEx → FSA: Glushkov und MacNaughton/Yamada


Herunterladen ppt "Überführung regulärer Ausdrücke in endliche Automaten Der Algorithmus von Glushkov und McNaughton/Yamada Karin Haenelt 14.5.2010."

Ähnliche Präsentationen


Google-Anzeigen