Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Ü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: "1 Ü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 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) 3© 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 4© 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 5© 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? 6 RE = dete? adje* nomnRE p = dete? 1 adje* 2 nomn 3 # 4 © Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

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

8 Prinzip des Algorithmus Beispiel RE = dete? adje* nomnRE p = dete? 1 adje* 2 nomn 3 # 4 dete 1 adje 2 nomn 3 dete 1 adje 2 nomn 3 #4#4 adje 2 nomn 3 1,2,3 2,34 dete 1 adje 2 nomn 3 © 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 deteweil es vorne steht adjewegen des ?-Operators über dete nomnwegen des Stern-Operators über adje 9 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 10© 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 11© Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

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

13 Der Syntaxbaum 13 (a 1 |b 2 )*a 3 b 4 b 5 # 6 ab a b b # | * 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 14© 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 15 Aho/Sethi/Ullmann 1986: 138 © Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

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

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

18 Berechnung von followpos 18 c1c1 c2c2 | c1c1 c2c2 c1c1 * n © Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

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

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

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

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

23 23© Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

24 24 1,2, 3,6 1,2, 3 1,2,3, 4 1,2,3, 5 a 1,a 3 b2b2 b2b2 b 2,b 4 b 2,b 5 DEA © 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 25© Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

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

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

28 Ein linguistisches Beispiel, 2a+b dete? adje* nomn 1,2, 3 2,3 4 start adje dete nomn adje 1,2, 3,4 3,4 5 start adje dete nomn adje Variante 2 für ?Variante 1 für ? 28© 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 29© 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) * | 30© Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

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

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

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

34 Definition der Knoten, 3 Brüggemann-Klein, © 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 35© Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

36 Komplexität: Platz maximale Anzahl der Zustände: 2 p +1, p = Anzahl der Positionen (Anzahl möglicher Teilmengen, die aus p Objekten gebildet werden können, beträgt 2 p ) 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, © 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 Brüggemann-Klein, © Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

38 Literatur Quellen 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.Regular Expressions into Finite Automata 38© Karin Haenelt, RegEx FSA: Glushkov und MacNaughton/Yamada

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


Herunterladen ppt "1 Ü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