1 / 39

Karin Haenelt 14.5.2010

Überführung regulärer Ausdrücke in endliche Automaten Der Algorithmus von Glushkov und McNaughton/Yamada. Karin Haenelt 14.5.2010. Inhalt. Quelle Prinzip des Algorithmus Algorithmus Parsing des regulären Ausdrucks Erkennung Syntaxbaum

rowa
Download Presentation

Karin Haenelt 14.5.2010

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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

  3. Quelle • Der Algorithmus wurde unabhängig entwickelt von • Viktor M. Glushkov (1960, 1961) • Robert McNaughton und Hisao Yamada (1960)

  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

  5. Prinzip des Algorithmus • bestimmte Positionen des regulären Ausdrucksstehen inbestimmten 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

  6. Prinzip des AlgorithmusBeispiel -1- RE = dete? adje* nomn REp = dete?1adje*2nomn3#4 wie sehen dieZeichenketten aus,die dieser Ausdruck beschreibt? welchem Zeichen kann welches Zeichen folgen?

  7. Prinzip des AlgorithmusBeispiel -2- RE = dete? adje* nomn REp = dete?1adje*2nomn3#4 adje2 dete1 adje2(da dete1optional ist) nomn3(dete1 und adje2opt.) dete1 adje2 nomn3 dete1 nomn3 adje2 adje2 nomn3 #4 nomn3 dete1 adje2 nomn3 #4 adje2,nomn3 adje2, nomn3 #4 - • mögliche Startpositionen • mögliche Folgepositionen

  8. Prinzip des AlgorithmusBeispiel -3- RE = dete? adje* nomn REp = dete?1adje*2nomn3#4 adje2 dete1 adje2 nomn3 dete1 nomn3 adje2 adje2 nomn3 #4 adje2 nomn3 dete1 nomn3 1,2,3 2,3 4 adje2 nomn3

  9. Prinzip des AlgorithmusBeispiel -4- 1,2,3 Startzustand aus Positionsmenge {1,2,3} • Start- und Folgepositionen sind eindeutig bestimmt durch die Semantik der Operatoren • Wenn E= dete? adje* nomnin 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

  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

  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

  12. Algorithmus

  13. Der Syntaxbaum ● (a1|b2)*a3b4b5#6 ● # 6 ● b 5 ● b 4 * a 3 | a b 1 2 Aho/Sethi/Ullmann 1986: 139

  14. Die Funktionennullable, 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

  15. Die Funktionennullable, firstpos, lastpos und followpos Aho/Sethi/Ullmann 1986: 138 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

  16. | • c1 c1 c2 c2 Die Berechnung der Funktionennullable, firstpos, lastpos und followpos * c1

  17. Der annotierte Syntaxbaum {1,2,3} ● {6} (a1|b2)*a3b4b5#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

  18. | • c1 c1 c2 c2 * c1 Berechnung von followpos n

  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

  20. Beispiel zur Berechnung von followpos:Konkatenations-Knoten (a|b)*a n followpos(1).addAll( {3}) followpos(2).addAll ({3}) {1,2,3} ● {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

  21. a a 1 b b b # 3 4 5 6 a 2 b b b 1,2,3,6 1,2,3 1,2,3,4 1,2,3,5 a b b a a a Konstruktion der Automaten aus den followpos-Mengen NEA DEA Aho/Sethi/Ullmann 1986: 136-140

  22. Algorithmus von Gluskov bzw. McNaughton/Yamada: Konstruktion des DEA Aho/Sethi/Ullmann 1986: 141

  23. DEA b2 b2 1,2,3 1,2,3,4 1,2,3,5 1,2,3,6 a1,a3 b2,b4 b2,b5 a1,a3 a1,a3 a1,a3

  24. 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. nullable {i} firstpos {i} lastpos 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} {4} nomn 4 {1,2} | {1,2} {3} * {3} {1} {1} { } { } {3} {3} dete ε adje 1 3 2

  26. nullable {i} firstpos {i} lastpos 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} {3} nomn 3 {1} {1} ? {2} * {2} {1} {1} {2} {2} dete adje 1 2

  27. adje adje adje adje 1,2,3 1,2,3,4 2,3 3,4 4 5 dete dete nomn nomn start start nomn nomn Ein linguistisches Beispiel, 2a+b dete? adje* nomn Variante 2 für ? Variante 1 für ?

  28. 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. 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. Implementierung: TreeNode

  31. Definition der Knoten, 1 Brüggemann-Klein, 1992

  32. Definition der Knoten, 2 Brüggemann-Klein, 1992

  33. Definition der Knoten, 3 Brüggemann-Klein, 1992

  34. 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. 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

  36. 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, 1992

  37. Literatur • Quellen • Glushkov, Viktor M.(1961). The abstract theory of automata. In: Russian Mathematical Surveys 16, S. 1-53. • Glushkov, Viktor M.(1960). On Synthesis Algorithm for Abstract Automata, Ukr. Mathem. Zhurnal, 12(2), S.147-156 (in Russisch) • McNaughton, Robert und Hisao Yamada (1960). Regular expressions and state graphs for automata. In IEEE Transactions on Electronic Computers 9 (1): S. 39-47. • 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. 117-126. • 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, 1992. (Lecture Notes in Computer Science 583) Heidelberg: Springer Verlag.

  38. Versionen • 14.05.2010, 9.5.2010, 14.09.2007, 05.05.2007, 21.05.2006, 20.03.2005

More Related