Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Gliederung 0. Motivation und Einordnung 1. Endliche Automaten

Ähnliche Präsentationen


Präsentation zum Thema: "Gliederung 0. Motivation und Einordnung 1. Endliche Automaten"—  Präsentation transkript:

1 Gliederung 0. Motivation und Einordnung 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 2.1. Chomsky-Grammatiken 2.2. Reguläre Sprachen (noch weiter) 2.3. Kontextfreie Sprachen

2 Exkurs: Reguläre Ausdrücke
Anwendungsgebiete Verwendung u.a. in Skript-Sprachen zur Unterstützung bei der Systemadministration spawn uusnap # Statusmeldungen einer Verbindung wird abgefragt expect { -re "uunet \[-a-zA-Z0-9 ]*((SENDING)|(RECEIVING))" {... # ok } -re "uunet \[-a-zA-Z0-9 ]*NO DEV" { ... # warten } -re "uunet \[-a-zA-Z0-9 ]*FAILED" { ... # noch mal probieren } } # end expect ... in Abhängigkeit vom Typ der Antwort werden bestimmte Aktionen ausgeführt (/* hierzu wird der Typ der Statusmeldung analysiert, d.h. es wird geprüft, zu welchem „Muster“ die Statusmeldung paßt */)

3 Exkurs: Reguläre Ausdrücke
Anmerkungen die Art und Weise relevante „Muster“ zu notieren, ist recht uneinheitlich (/* siehe Skript-Sprachen wie Perl, Python, Select, ... */) es gibt jedoch die folgenden Gemeinsamkeiten: die „Muster“ werden verwendet, um die Gemeinsamkeiten von Wörtern zu beschreiben jedes „Muster“ definiert de facto eine Sprache (also die Menge aller Wörter, die zum jeweiligen „Muster“ passen) die Menge der zulässigen „Muster“ ist induktiv definiert (es gibt einfache „Muster“ und Operatoren, um komplexe „Muster“ zu bilden)

4 Exkurs: Reguläre Ausdrücke
Reguläre Ausdrücke (/* in der Theoretischen Informatik */) sei  das zugrunde liegende Alphabet dann definieren wir: Die Zeichen  und  sowie jedes a   sind reguläre Ausdrücke über . wir lassen die Operatoren  (Verkettung), + (Auswahl) und * (Kleenesche Hülle) zu seien  und  reguläre Ausdrücke über  dann definieren wir: Dann sind auch , (+) und ()* reguläre Ausdrücke über .

5 Exkurs: Reguläre Ausdrücke
Beispiel sei  = { 0,1 } das zugrunde liegende Alphabet dann ist bspw. (((0+1))* 101)* ein regulärer Ausdruck über  Anwendung der induktiven Definition: um zu sehen, dass (((0+1))*101)* ein regulärer Ausdruck ist, setze  = ((0+1))*101 und untersuche, ob  ein regulärer Ausdruck ist um zu sehen, dass ((0+1))*101 ein regulärer Ausdruck ist, setze  = ((0+1))* und  = 101 und untersuche, ob  und  reguläre Ausdrücke sind um zu sehen, dass ((0+1))* ein regulärer Ausdruck ist, setze  = (0+1) und untersuche, ob  ein regulärer Ausdruck ist ... um zu sehen, dass 101 ein regulärer Ausdruck ist ...

6 Exkurs: Reguläre Ausdrücke
Anmerkung bevor wir definieren können, welche Sprache ein regulärer Ausdruck beschreibt, müssen wir zwei weitere Operationen mit Sprachen einführen die zweistellige Operation Verkettung (in Zeichen  ) die einstellige Operation Kleenesche Hülle (in Zeichen * )

7 Exkurs: Reguläre Ausdrücke
Einschub: Operationen mit Sprachen sei  das zugrunde liegende Alphabet seien L1, L2  * dann definieren wir: Die Sprache L1L2 enthält alle Wörter w  * für die gilt: es gibt ein u  L1 und ein v  L2, so dass w = uv gilt. Die Sprache (L1)* enthält alle Wörter w  * für die gilt: w =  oder es gibt ein k  N und u1,..,uk  L, so dass w = u1... uk gilt.

8 Exkurs: Reguläre Ausdrücke
Begriff: die durch einen regulären Ausdruck beschriebene Sprache sei  das zugrunde liegende Alphabet sei  ein regulärer Ausdruck über  dann definieren wir: Für die von  beschriebene Sprache L() gilt: L() = {  }, falls  =  gilt L() = , falls  =  gilt L() = { a }, falls  = a mit a   gilt L() = L() L(), falls  =  gilt L() = L()  L(), falls  = (+) gilt L() = (L())*, falls  = ()* gilt

9 Exkurs: Reguläre Ausdrücke
Beispiele sei  = { 0,1 } das zugrunde liegende Alphabet man sieht sofort, dass der reguläre Ausdruck  = ((0+1))* die Sprache * beschreibt dann gilt offensichtlich auch: L() = { w  * | w enthält das Teilwort 101 } für den regulären Ausdruck  = 101 L() = { w  * | w hat den Präfix 10 und den Suffix 01 } für den regulären Ausdruck  = 1001

10 Exkurs: Reguläre Ausdrücke
Beispiele (cont.) es sei  = { 0,1 } das zugrunde liegende Alphabet man kann sich sofort davon zu überzeugen, dass L() = { w  * | w enthält genau eine Null } für den regulären Ausdruck  = (1)*0(1)* gilt dann gilt auch: L() = { w  * | w enthält ungerade viele Nullen } für den regulären Ausdruck  = ()*

11 Exkurs: Reguläre Ausdrücke
Zwischenfazit reguläre Ausdrücke sind ein in der Praxis häufig benutzter Ansatz, um Sprachen zu beschreiben reguläre Ausdrücke lassen sich „einfacher“ notieren als Grammatiken (/* ein wenig Übung vorausgesetzt ... */) noch zu klären bleibt: ob man für jede Sprache, die man mit einem regulären Ausdruck beschreiben kann, das Wortproblem lösen kann und, wenn ja, wie effizient das geht ... das folgende Ergebnis gibt uns eine Antwort auf beide Teilfragen und macht deutlich, weshalb reguläre Ausdrücke in der Praxis so häufig benutzt werden

12 Exkurs: Reguläre Ausdrücke
zentrales Resultat es sei  das zugrunde liegende Alphabet und L  * dann gilt: Die folgenden Aussagen sind äquivalent: L ist eine reguläre Sprache. Es gibt einen regulären Ausdruck  mit L() = L. ... eigentlich ist nur der Teil „(2)  (1)“ wichtig (wir wissen, dass das Wortproblem für reguläre Sprachen mit Hilfe von (deterministischen) endlichen Automaten sehr effizient gelöst werden kann)

13 Exkurs: Reguläre Ausdrücke
Beweisidee („(2)  (1)“) wir können ausnutzen, dass die Menge der regulären Ausdrücke induktiv definiert ist, und verwenden folgende Herangehensweise: wir zeigen, dass jede Sprache, die durch einen (einfachen) regulären Ausdruck beschrieben werden kann, regulär ist beim Nachweis, dass jede Sprache regulär ist, die durch einen regulären Ausdruck der Form , (+) bzw. ()* beschrieben werden kann, können wir dann benutzen, dass die beiden Sprachen L() und L() regulär sind

14 Exkurs: Reguläre Ausdrücke
Anmerkungen um a) und b) zu beweisen, genügt es jeweils nichtdeterministische endlichen Automaten für die durch den jeweiligen regulären Ausdruck beschriebene Sprache anzugeben wie das für a) geht, sieht man auf der nächste Folie für b) reicht es aus, bestimmte Abgeschlossenheitseigenschaften für die Menge der regulären Sprachen zu zeigen wir werden nachweisen, dass die Vereinigung von zwei regulären Sprachen die Verkettung von zwei regulären Sprachen die Kleenesche Hülle einer regulären Sprache jeweils eine reguläre Sprache ist ... für die Operation Vereinigung ist nichts mehr zu tun

15 Exkurs: Reguläre Ausdrücke
... für (einfache) reguläre Ausdrücke wähle folgenden nichtdeterministischen endlichen Automaten für  =  : wähle folgenden nichtdeterministischen endlichen Automaten für  = : wähle folgenden nichtdeterministischen endlichen Automaten für  = a mit a  : z0 z0 a z0 z1

16 Exkurs: Reguläre Ausdrücke
weitere Abgeschlossenheitseigenschaften regulärer Sprachen seien L1, L2  * reguläre Sprachen dann gilt: Die Sprache L1L2 ist eine reguläre Sprache. Die Sprache (L1)* ist eine reguläre Sprache.

17 Exkurs: Reguläre Ausdrücke
Operation Verkettung (/* Idee *) sei  = { 0,1 } Automat A1 für L1 = { w  * | w hat den Präfix 1 }: 1,0 1,0 1 z0 z1 z2 Automat A2 für L2 = { w  * | w hat den Suffix 0 }: 1 1 q0 q1

18  Exkurs: Reguläre Ausdrücke Operation Verkettung (/* Idee *) (cont.)
um einen Automaten für die Sprache L1L2 zu konstruieren, genügt es A1 und A2 wie folgt zu „verbinden“, wobei die „Funktion“ der Zustände von A1 und A2 geeignet anzupassen ist: 1,0 1,0 1 1 1 z0 z1 z2 q0 q1 der Übergang (z1,,q0) bedeutet, dass dieser Automat vom Zustand z1 in den Zustand q0 gehen kann, ohne ein Zeichen auf dem Eingabeband zu lesen (/* wichtig, weil z1 ein akzeptierender Zustand von A1 ist */)

19  Exkurs: Reguläre Ausdrücke Operation Verkettung (/* Idee *) (cont.)
1,0 1,0 1 1 1 z0 z1 z2 q0 q1 den Übergang (z1,,q0) kann man äquivalent durch folgende Übergänge ersetzen: (z0,1,q0), (z1,0,q0) und (z1,1,q0)

20 1 0,1 Exkurs: Reguläre Ausdrücke
Operation Verkettung (/* Idee *) (cont.) anhand der gegebenen Automaten A1 für L1 und A2 für L2 kann man den folgenden nichtdeterministischen endlichen Automaten A‘ für die Sprache L1L2 konstruieren: 1 1,0 1,0 1 1 1 z0 z1 z2 q0 q1 0,1

21 Exkurs: Reguläre Ausdrücke
Beweisidee für die Operation Verkettung sei A1 = [Z,,z0,F1,1] ein endlicher Automat für L1 sei A2 = [Q,,q0,F2,2] ein endlicher Automat für L2 mit Z  Q =  definiere den nichtdeterministischen endlichen Automaten A‘ = [Z‘,,z0,F‘,‘] wie folgt: setze Z‘ = Z  Q setze F‘ = F2 setze ‘ = ‘1  ‘2  ‘3 mit: setze ‘1 = { (z,a,1(z,a)) | z  Z und a   } setze ‘2 = { (q,a,2(q,a)) | q  Q und a   } setze ‘3 = { (z,a,q0) | z  Z, a   und 1(z,a)  F1 } man kann sich nun leicht überlegen, dass L(A‘) = L(A1)L(A2) gilt

22 Exkurs: Reguläre Ausdrücke
Operation Kleenesche Hülle (/* Idee *) sei  = { 0,1 } Automat A1 für L1 = { u0 | u besteht aus ungerade vielen Einsen }: 1 1 z0 z1 z2 0,1 z4 1,0

23   Exkurs: Reguläre Ausdrücke
Operation Kleenesche Hülle (/* Idee *) (cont.) um einen Automaten für die Sprache (L1)* zu konstruieren, genügt es einen neuen Startzustand z‘0 einzuführen (der gleichzeitig ein akzeptierender Zustand ist) und A1 wie folgt mit sich selbst zu „verknüpfen“, wobei die Funktion der Zustände in A1 wieder geeignet anzupassen ist: 1 1 z‘0 z0 z1 z2 0,1 z4 1,0 die Übergänge (z‘0,,z0) und (z2,,z‘0) bedeuten, dass dieser Automat vom Zustand z‘0 in den Zustand z0 bzw. von z2 in z‘0 gehen kann, ohne ein Zeichen auf dem Eingabeband zu lesen

24   Exkurs: Reguläre Ausdrücke
Operation Kleenesche Hülle (/* Idee *) (cont.) 1 1 z‘0 z0 z1 z2 0,1 z4 1,0 die Übergänge (z‘0,,z0) und (z2,,z‘0) kann man äquivalent durch folgende Übergänge ersetzen: (z‘0,0,z4) und (z‘0,1,z1) bzw. (z1,0,z‘0)

25 1 Exkurs: Reguläre Ausdrücke
Operation Kleenesche Hülle (/* Idee *) (cont.) anhand des gegebenen Automaten A1 für L1 kann man den folgenden nichtdeterministischen endlichen Automaten A‘ für die Sprache (L1)* konstruieren: 1 1 z‘0 z0 z1 z2 1 0,1 z4 1,0

26 Exkurs: Reguläre Ausdrücke
Beweisidee für die Operation Kleenesche Hülle sei A1 = [Z,,z0,F1,1] ein (deterministischer) endlicher Automat für L1 definiere den folgenden nichtdeterministischen endlichen Automaten A‘ = [Z‘,,z‘0,F‘, ‘] wie folgt: setze Z‘ = Z  { z‘0 } setze F‘ = F  { z‘0 } setze ‘ = ‘1  ‘2  ‘3 mit: setze ‘1 = { (z,a,1(z,a)) | z  Z und a   } setze ‘2 = { (z‘0,a,1(z0,a)) | a   } setze ‘3 = { (z,a,z‘0) | z  Z, a   und 1(z,a)  F1 } man kann sich nun leicht überlegen, dass L(A‘) = (L(A1))* gilt


Herunterladen ppt "Gliederung 0. Motivation und Einordnung 1. Endliche Automaten"

Ähnliche Präsentationen


Google-Anzeigen