Karin Haenelt 14.5.2010

Click here to load reader

  • date post

    23-Feb-2016
  • Category

    Documents

  • view

    33
  • download

    1

Embed Size (px)

description

Ü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 - PowerPoint PPT Presentation

Transcript of Karin Haenelt 14.5.2010

Endliche Automaten. Einfhrung in den Themenbereich

1

berfhrung regulrer Ausdrcke in endliche Automaten

Der Algorithmus von Glushkov und McNaughton/Yamada

Karin Haenelt

14.5.2010InhaltQuellePrinzip des AlgorithmusAlgorithmusParsing des regulren AusdrucksErkennungSyntaxbaumFunktionen nullable, firstpos, lastpos und followposKonstruktion des AutomatenEin linguistisches BeispielImplementierungKomplexitt Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

2QuelleDer Algorithmus wurde unabhngig entwickelt vonViktor M. Glushkov (1960, 1961) Robert McNaughton und Hisao Yamada (1960)3 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

InhaltQuellePrinzip des AlgorithmusAlgorithmusParsing des regulren AusdrucksErkennungSyntaxbaumFunktionen nullable, firstpos, lastpos und followposKonstruktion des AutomatenEin linguistisches BeispielImplementierungKomplexitt4 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Prinzip des Algorithmusbestimmte Positionen des regulren Ausdrucksstehen inbestimmten Folgerelationen in den zugehrigen Zeichenkettendie Folgerelationen sind eindeutig bestimmt berdie Abfolge undDefinition der Operatoren des regulren Ausdrucksdie Folgerelationen legen die Menge der mglichen Zustnde und die zeitliche Ordnung der Zustnde festes geht also darumdie Folgerelationen zu berechnenaus dem Ergebnis der Berechnung den DEA zu konstruieren

5 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Prinzip des AlgorithmusBeispiel -1- wie sehen dieZeichenketten aus,die dieser Ausdruck beschreibt?welchem Zeichen kann welches Zeichen folgen?6RE = dete? adje* nomnREp = dete?1 adje*2 nomn3 #4 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Prinzip des AlgorithmusBeispiel -2- mgliche Startpositionen

mgliche Folgepositionen7RE = dete? adje* nomnREp = dete?1 adje*2 nomn3 #4dete1adje2nomn3dete1adje2adje2nomn3#4adje2nomn3nomn3dete1adje2nomn3#4adje2, nomn3adje2, nomn3#4- dete1adje2 (da dete1 optional ist)nomn3 (dete1 und adje2 opt.) Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Prinzip des AlgorithmusBeispiel -3- 8RE = dete? adje* nomnREp = dete?1 adje*2 nomn3 #4dete1adje2nomn3dete1adje2adje2nomn3#4adje2nomn3nomn31,2,32,34dete1adje2adje2nomn3nomn3 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Prinzip des AlgorithmusBeispiel -4-Start- und Folgepositionen sind eindeutig bestimmt durch die Semantik der OperatorenWenn E= dete? adje* nomn in eine Zeichenkette aus L(E) umgewandelt wird, kann das erste Zeichen der Zeichenkette seindeteweil es vorne stehtadjewegen des ?-Operators ber detenomnwegen des Stern-Operators ber adje91,2,3Startzustand aus Positionsmenge {1,2,3} Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Prinzip des AlgorithmusWie berechnet man die Start- und Folgepositionen?Erkennung des Ausdrucks mit dem Algorithmus von Hopcroft/Ullman 1988Aufbau eines binren SyntaxbaumesBltter: Positioneninnere Knoten: OperatorenBerechnung der Abfolgen whrend der bottom-up-Konstruktion des SyntaxbaumesWie erzeugt man den Automaten?auf der Basis der Abfolgeinformation nach dem Algorithmus von Glushkov bzw. MacNaughton/Yamada10 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

InhaltQuellePrinzip des AlgorithmusAlgorithmusParsing des regulren AusdrucksErkennungSyntaxbaumFunktionen nullable, firstpos, lastpos und followposKonstruktion des AutomatenEin linguistisches BeispielImplementierungKomplexitt11 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Algorithmus12

Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Der Syntaxbaum13(a1|b2)*a3b4b5#6ababb#|*123456Aho/Sethi/Ullmann 1986: 139 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Die Funktionennullable, firstpos, lastpos und followposDer Automat wird aufgebaut aus den Ergebnissen von firstpos(root) und followpos(i)Zur Ermittlung von followpos(i)wird firstpos(n) und lastpos(n) bentigtZur Ermittlung von firstpos(n) und lastpos(n)wird nullable(n) bentigtnullable(n) ist knotenspezifisch definiertDie Funktionen werden bottom-up auf den Syntaxbaum angewendet

14 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Die Funktionennullable, firstpos, lastpos und followposDef Sei E der Teilausdruck, der durch den Syntaxbaum mit Wurzel n reprsentiert wird, und E ein regulrer 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 14.5.2010

Die Berechnung der Funktionennullable, firstpos, lastpos und followpos16

c1c2|c1c2c1* Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Der annotierte Syntaxbaum17(a1|b2)*a3b4b5#6{1,2,3}ababb#|*{1}{1}123456{2}{2}{1,2}{1,2}{3}{3}{1,2,3}{3}{4}{4}{4}{5}{5}{5}{6}{6}{6}{1,2}{1,2}{1,2,3}{1,2,3}firstposlastposnullableAho/Sethi/Ullmann 1986: 139 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Berechnung von followpos18c1c2|c1c2c1*n Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Beispiel zur Berechnung von followpos:Stern-Knoten19ab|*{1}{1}12{2}{2}{1,2}{1,2}{1,2}{1,2}nfollowpos(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 14.5.2010

Beispiel zur Berechnung von followpos:Konkatenations-Knoten20

(a|b)*aaba|*{1}{1}123{2}{2}{1,2}{1,2}{3}{3}{3}{1,2}{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 14.5.2010

Konstruktion der Automaten aus den followpos-Mengen211,2,3,61,2,31,2,3,41,2,3,5aaaabbbb123456abb#bbaa

NEADEAAho/Sethi/Ullmann 1986: 136-140 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Algorithmus von Gluskov bzw. McNaughton/Yamada: Konstruktion des DEA22

Aho/Sethi/Ullmann 1986: 141 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

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

24

1,2,3,61,2,31,2,3,41,2,3,5a1,a3a1,a3a1,a3a1,a3b2b2b2,b4b2,b5DEA Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

InhaltQuellePrinzip des AlgorithmusAlgorithmusParsing des regulren AusdrucksErkennungSyntaxbaumFunktionen nullable, firstpos, lastpos und followposKonstruktion des AutomatenEin linguistisches BeispielImplementierungKomplexitt25 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Ein linguistisches Beispiel, 1a{1,2,3}#{1}45*{3}{3}{1,2,3}{4}{4}{4}{5}{5}{5}{1,2,3,4}{1,2,3,4}|{1}1{ }{ }{1,2}{1,2}dete3{3}{3}adjenomndete? adje* nomnVariante 1: Darstellung von a? durch (a|) bei Automatenkonstruktion werden fr keine Kanten konstruiert (nur fr Eingabe- Symbole a)2nullablefirstposlastpos{i}{i}26 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Ein linguistisches Beispiel, 1b{1,2}#{1}34*{2}{2}{1,2}{3}{3}{3}{4}{4}{4}{1,2,3}{1,2,3}?{1}1{1}dete2{2}{2}adjenomndete? adje* nomnVariante 2:direkte Angabe von Regeln fr ?: nullable(n) := true firstpos (n) := firstpos(left) lastpos(n) := lastpos(left){1}nullablefirstposlastpos{i}{i}27 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Ein linguistisches Beispiel, 2a+b

dete? adje* nomn1,2,32,34startadjedetenomnnomnadje

1,2,3,43,45startadjedetenomnnomnadjeVariante 2 fr ?Variante 1 fr ?28 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

InhaltQuellePrinzip des AlgorithmusAlgorithmusParsing des regulren AusdrucksErkennungSyntaxbaumFunktionen nullable, firstpos, lastpos und followposKonstruktion des AutomatenEin linguistisches BeispielImplementierungKomplexitt29 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

ImplementierungEinfgen der Konstruktionsschritte fr einen Parsebaum bzw. SyntaxbaumZuordnung von Baumkonstruktoren zu den Elementen des regulren AusdrucksTerminalsymbole (Zeile 21)Klammern (Zeile 23, 27)unre Operatoren (*,+,?) (Zeile 31)

binre Operatoren (, |) (Zeile 4, 13)*|30 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Implementierung: TreeNode31 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Definition der Knoten, 1

Brggemann-Klein, 199232 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Definition der Knoten, 2

Brggemann-Klein, 199233 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Definition der Knoten, 3

Brggemann-Klein, 199234 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

InhaltQuellePrinzip des AlgorithmusAlgorithmusParsing des regulren AusdrucksErkennungSyntaxbaumFunktionen nullable, firstpos, lastpos und followposKonstruktion des AutomatenEin linguistisches BeispielImplementierungKomplexitt35 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Komplexitt: Platzmaximale Anzahl der Zustnde: 2p+1,p = Anzahl der Positionen(Anzahl mglicher Teilmengen, die aus p Objekten gebildet werden knnen, betrgt 2p)max. Anzahl wird in der Praxis kaum erreicht:der reg. Ausdruck schrnkt Anzahl der mglichen Teilmengen sehr stark einAlgorithmus konstruiert nur die tatschlich vorkommenden Teilmengen(lazy implementation der Teilmengen)minimale Anzahl der Zustnde: p+1(falls nur Konkatenation von Symbolen vorkommt)Glushkov, 1961McNaughton/Yamada, 196036 Karin Haenelt,RegEx FSA: Glushkov und MacNaughton/Yamada 14.5.2010

Komplexi