Pumping Lemm für reguläre Sprhen (1/2) Informtik II SS 2004 Teil 6: Sprhen, Compiler un Theorie 2 Ds Pumping Lemm ist eine Methoe, um herus zu finen, o eine Sprhe niht regulär. Prof. Dr. Dieter Hogrefe Dipl.-Inform. Mihel Ener Lehrstuhl für Telemtik Institut für Informtik 6.2-34 Pumping Lemm für reguläre Sprhen (2) Stz: Sei L eine reguläre Sprhe. Dnn git es eine Zhl (Konstnte) n, errt ss lle Wörter (Zeihenreihen) w in L mit w n gilt, ss wir in w rei Wörter w = xyz zerlegen können, für ie gilt: y 1 (oer y ε) xy n, Für lle k 0 gilt, ss ie Zeihenreihe xy k z uh in L enthlten ist. Beweis Jee Zeihenreihe, eren Länge niht kleiner ist ls ie Anzhl er Zustäne, muss ewirken, ss ein Zustn zweiml urhlufen wir (Shufhshluss). 6.2-35 6.2-36
Beispiele Rüklik Sin iese Sprhen (niht) regulär? w = n n w= Die Anwenung es Pumping Lemms ist ein kretiver Vorgng, es kein mehnishes Vorgehen für en Einstz git. vergleihe Aleitungsregeln us er Mthemtik (Anlysís) Reguläre Sprhen, reguläre Ausrüke, (eterministishe un nihteterministishe) enlihe Automten Wihtige Algorithmen Konvertierung von regulären Ausrüken zu nihteterministishen enlihen Automten (NFA) (inklusive Beweise) Konvertierung von nihteterministishen enlihen Automten zu eterministishen enlihen Automten (DFA) Tellensierte Simultion von DFAs un Snner Verwenen reguläre Ausrüke zur Definition er lexiklishen Struktur (Symole/Token) einer Sprhe Verwenen ie Theorie er regulären Sprhen zur Erzeugung eines Snners usgehen von er Beshreiung er lexiklishen Struktur einer Progrmmiersprhe nhn von regulären Ausrüken 6.2-37 6.2-38 Reguläre Ausrüke (1/3) Reguläre Ausrüke (2/3) Weren mit folgenen Ausrüken rekursiv usgerükt: Ein Zeihen us em Alphet Σ, oer er leeren Zeihenfolge ε, oer er Verkettung zweier regulärer Ausrüke, r1. r2, oer er Alterntive zweier regulärer Ausrüke, r1 r2, oer er Kleeneshe Hülle * (oe einfh Hülle oer Stern), r1*. Ein regulärer Ausruk ist geht um Zeihenketten us Zeihen us einem Alphet Σ zu erzeugen Die Menge ller urh einen regulären Ausruk R erzeugte Zeihenketten wir ie Sprhe von R gennnt un wir symolisiert urh L(R) Zeihenfolgen r= 123...n = 1.2.3...n Zeihenereihe r=[1-n] = 1 2 3... n Kleeneshe Hülle + r + = r.r* 6.2-39 6.2-40
Reguläre Ausrüke (3/3) Enlihe Automten (1/5) Reguläre Ausrüke if then else.( )*..( )*.( ). ( )*...( )* ( )*..( )*..( )*..( )* Erzeugt Die Zeihenketten if, then, or else. Alle Zeihenketten mit s, s un s, welhe mit einem eginnen un enen. Alle Zeihenketten mit s, s, un s, welhe mit einem eginnen un einem einzelnen enen. Alle Zeihenketten mit s, s un s, welhe ie Teilzeihenkette enthlten. Alle Zeihenketten mit s, s un s, welhe exkt rei s einhlten. Forml, ein enliher Automt M ist ein Quintupel M=(Q,Σ,q 0,F,δ), woei Q ist eine enlihe Menge von Symolen gennnt Zustäne (sttes) Σ ist eine enlihe Menge von Eingesymolen gennnt Alphet q 0 ist er Strtzustn F ist eine enlihe Menge von finlen oer kzeptierenen Zustänen. F ist eine, mögliherweise leere, Teilmenge von Q. δ ist eine Üergngsfunktion Ein enliher Automt ist geeignet um Zeihenketten us Zeihen us em Alphet Σ zu kzeptieren L(M), oer ie Sprhe von M, ist ie Menge von enlihen Zeihenketten von Symolen us em Alphet Σ welhe vom Automten M kzeptiert weren 6.2-41 6.2-42 Enlihe Automten (2/5) Enlihe Automten (3/5) Deterministishe enlihe Automten (DEA/DFA) Üergänge sin eterministish Üergng von einzelnem Zustn zu einzelnem Zustn δ D :Q x Σ -> Q Üergngsfunktionen können ls eine Telle oer Zustnsüergngsigrmm geshrieen weren 6.2-43 Beispiel DFA Q={,,,,} Σ={,} q 0 = F={} δ= {((,),),((,),), ((,),),((,),), ((,),),((,),), ((,),),((,),), ((,),),((,),)} Zustnsüergngsigrmm, Telle, 6.2-44
Enlihe Automten (4/5) Enlihe Automten (5/5) Nihteterministishe enlihe Automten (NEA/NFA) Üergänge sin nihteterministish Üergng von einzelnem Zustn zu einer Menge von möglihen Zustänen δ D :Q x Σ -> P(Q) ( P(Q) Potenzmenge von Q ) Ds Alphet ist erweitert um Üergänge er leeren Zeihenkette zu erluen Beispiel NFA Q={,,,,} Σ={,,} q 0 = F={} δ= { ((,),{,}), ((,),),((,),{,}), ((,),{}),((,),), ((,),),((,),), ((,),),((,),) } {,} Telle {},, {,} Zustnsüergngsigrmm 6.2-45 6.2-46 Reguläre Sprhen Reguläre Ausrüke nh NFA (1/2) Eine Sprhe L(X) ist Regulär wenn: Es git einen regulären Ausruk R so ss gilt L(R) = L(X), oer Es git einen DFA M D so ss gilt L(M D ) = L(X), oer Es git einen NFA M N so ss gilt L(M N ) = L(X) Regulärer Ausruk Chrkter: NFA Die Sprhen er regulären Ausrüke, DFA Sprhen un NFA Sprhen sin lle regulär Gegeen ist elieiger regulärer Ausruk R un ein NFA M N, mit L(R)=L(M N ) Wir können jeen regulären Ausruk in einen NFA konvertieren un umgekehrt Leere Zeihenkette: Alterntive: r1 r2 Verkettung: r1.r2 r1 r1 r2 r2 Gegeen ist ein elieiger NFA M N un DFA M D, mit L(M N ) = L(M D ) Wir können jeen NFA in einen DFA konvertieren un umgekehrt Kleeneshe Hülle: r* r 6.2-47 6.2-48
Reguläre Ausrüke nh NFA (2/2) NFAs nh DFAs (1/2) r= Fktor: r1= r2= r=r1.r2 r1: r2: Definition: -FZ(s) ist ie Menge ller Zustäne, welhe in s einhltet sin, plus ller von en Zustänen in s erreihren Zustäne unter usshließliher Verwenung es Üergnges Gegeen NFA M=(Q,Σ,q,F,δ) un DFA M D =(Q D,Σ,q D,F D,δ D ) Q D =P(Q), z.b., Q D ist ie Menge ller Untermengen von Q F D = {S: S Q D woei S F {} } q D = -FZ (q) ({,,,qk},) = -FZ(δ(,) δ(,) (δ(qk,)) r3: 6.2-49 6.2-50 NFAs nh DFAs (2/2) NFA,, Shritt 1: Der Strtzustn q D = -FZ({}) = {,,} Shritt 2: Zustn {,,} ({,,},) = -FZ(δ(,) δ(,) δ(,)) = -FZ( {}) = {,} DFA {,},, ({,,},) = -FZ(δ(,) δ(,) δ(,)) = -FZ({,} ) = {,,} {,,} {,,} Shritt 3: Zustn {,} Shritt 4: Zustn {,,} 6.2-51