96
KONTEXTFREIE GRAMMATIK Theoretische Informatik: Formale Sprachen/Automaten

KONTEXTFREIE GRAMMATIK

  • Upload
    awen

  • View
    107

  • Download
    3

Embed Size (px)

DESCRIPTION

Theoretische Informatik: Formale Sprachen/ A utomaten. KONTEXTFREIE GRAMMATIK. Planung. Kontextfreie Grammatik & context free art KFG  formale Sprachen & Automaten Endliche Automaten und regular expressions Kellerautomaten & die Erfindung des Stack Turing Maschinen & Berechenbarkeit. - PowerPoint PPT Presentation

Citation preview

Page 1: KONTEXTFREIE GRAMMATIK

KONTEXTFREIE GRAMMATIKTheoretische Informatik: Formale Sprachen/Automaten

Page 2: KONTEXTFREIE GRAMMATIK

Planung

1. Kontextfreie Grammatik & context free art2. KFG formale Sprachen & Automaten3. Endliche Automaten und regular expressions4. Kellerautomaten & die Erfindung des Stack5. Turing Maschinen & Berechenbarkeit

Page 3: KONTEXTFREIE GRAMMATIK

Das Theorem derDas Theorem derInfinite Monkeys:Infinite Monkeys:

Wenn unendlich viele Affen unendlich lange zufällig auf einer Schreibmaschine herumtippt, dann wird fast sicher irgendwann Shakespeares Hamlet dabei herauskommen.

Page 4: KONTEXTFREIE GRAMMATIK

Das Theorem derDas Theorem derInfinite Monkeys:Infinite Monkeys:

Page 5: KONTEXTFREIE GRAMMATIK

Das Programm AFFE_0.1

Mit welchen Strategien könnte man bewirken, dass ein Computer grammatikalisch wohlgeformte Texte generiert?

Page 6: KONTEXTFREIE GRAMMATIK

AFFE_1.0

S AfAf Hoppla! | Geh! | Autsch! | Nicht!

StartsymbolStartsymbolErsetzungsregeln (transitions)Ersetzungsregeln (transitions)

Terminals (Endsymbole)Terminals (Endsymbole)

SS

AfAf

Hoppla!, Geh!, Autsch!, Nicht!

Ableitungs-baum:

Page 7: KONTEXTFREIE GRAMMATIK

AFFE_1.1

S Af S N V Af Hoppla! | Geh! | Autsch! | Nicht! N Anna | Fred | Supermann | ErV lebt | isst | rennt

SS

AfAf

Hoppla!, Geh!, Autsch!, Nicht!

SS

NN

lebt, isst, rennt

Ableitungs-bäume:

VV

Anna, Fred, Supermann, Er

Page 8: KONTEXTFREIE GRAMMATIK

AFFE_1.2

S AfS N Vitr

S N Vtr NAf Hoppla! | Geh! | Autsch! | Nicht! N Anna | Fred | Supermann | ErVitr lebt | isst | renntVtr mag | sieht | trifft

Ableitungsbäume?

Page 9: KONTEXTFREIE GRAMMATIK

AFFE_1.3

S AfS Nnom Vitr

S Nnom Vtr_akk Nakk

Af Hoppla! | Geh! | Autsch! | Nicht! Nnom Anna | Fred | Supermann | ErNakk Anna | Fred | Supermann | IhnVitr lebt | isst | renntVtr_akk mag | sieht | trifft

Ableitungsbäume?

Page 10: KONTEXTFREIE GRAMMATIK

Rekursion

(0) Der Hund rennt.(1) Der schwarze Hund rennt.(2) Der schwarze böse Hund rennt.(3) Der schwarze böse grosse Hund rennt.(4) ...

(0) Anna rennt.(1) Anna, die Fred mag, rennt.(2) Anna, die Fred, der Supermann sieht, mag, rennt.

(0) Anna rennt.(1) Anna rennt und Fred isst.(2) Anna rennt und Fred isst aber Supermann lebt.

Page 11: KONTEXTFREIE GRAMMATIK

AFFE_2.0

S N Vitr

S N Vitr Konj S //hier ist die RekursionS . //hier ist das StoppsymbolN Anna | Fred | Supermann | ErVitr lebt | isst | renntKonj und | aber | weil

Ableitungsbäume?

Page 12: KONTEXTFREIE GRAMMATIK

Context-Free Art (CFA) entdecken

• Ressourcen (in CFA Material)– EinführungsTutorial.cfdh (deutsch)

– Beispiel1(-8).cfdg (selbst experimentieren!!!)

– Weitere Beispiele im CFA Applet unter „Examples“ oder unter „Help“

– http://www.contextfreeart.org/ (documentation, gallery, forum)

– CFnutshell.pdf

Page 13: KONTEXTFREIE GRAMMATIK

AFFE_1.3 + AFFE_2.0 = AFFE_3.0 soll all diese Sätze generieren können!

Page 14: KONTEXTFREIE GRAMMATIK

AFFE_3.0

S Nnom VP | Nnom VP Konj SVP Nnom Vitr | Nnom Vtr Nakk

Nnom Anna | Fred | Supermann | ErNakk Anna | Fred | Supermann | IhnVitr lebt | isst | rennt | lebtVtr mag | sieht | trifftKonj und | aber | weil | denn

Ableitungsbäume?

Page 15: KONTEXTFREIE GRAMMATIK

DIE CHOMSKY HIERARCHIETheoretische Informatik: Formale Sprachen/Automaten

Page 16: KONTEXTFREIE GRAMMATIK

Überblick

1. Contextfree Art Basar2. Übung zum kontextfreien Krähen (a – c)3. Abschluss der Exkursion in die Linguistik4. KFGs und Formale Sprachen

– Gesamtüberblick– Einordnung und Abgrenzung von KFGs– Üben

Page 17: KONTEXTFREIE GRAMMATIK

Kontextfreie Grammatiken

• Aus einem endlichen Vokabular können mit einer KFG (durch Rekursion) eine potentiell unendliche Anzahl „grammatischer“ Sätze gebildet werden (dieses „unendlich“ ist übrigens kleiner als das mit der Affentaktik erzielte)

• Wenn wir viel Aufwand in ein grosses Vokabular und komplizierte Produktionsregeln stecken (für die ganzen Kongruenzen) ...

... könnten wir so die Syntax der Deutschen Sprache erfassen?

Page 18: KONTEXTFREIE GRAMMATIK

Sind natürliche Sprachen kontextfrei?

• Es gab jahrzehntelange Diskussionen über die Frage, ob KFGs im Prinzip für natürliche Sprachen mächtig genug sind

• Die Frage konnte erst 1985 endgültig (negativ) beantwortet werden. Zwei Sprachen waren gefunden worden, die nachweisbar den Rahmen von KFGs sprengen:

Zürichdeutsch und Bambara

P.S: Bambara ist eine Mande-Sprache, die in Mali in Westafrika gesprochen wird. Sie zählt gemeinsam mit Dioula und Malinke zum Dialektkontinuum des Manding.Quelle: Wikipedia

Page 19: KONTEXTFREIE GRAMMATIK

**

• erlauben Zentraleinbettungen

Jan sagt, dass wir Hans ein Haus anstreichen helfen

Die meisten Sprachen (z.B. Standard-Deutsch)...

• aber keine Cross-Serial-Dependencies

* Jan sagt, dass wir Hans ein Haus helfen anstreichen

Quellen: http://www.brawer.ch/prolog/sprachenhierarchie.pdfW. J. Savitch, E. Bach, W. Marsh [eds.]: The Formal Complexity of Natural Language. Studies in Linguistics and Philosophy, vol. 33. 1987.

Page 20: KONTEXTFREIE GRAMMATIK

• erlaubt Zentraleinbettungen

De Jan säit, dass mer em Hans es Huus aastriiche hälfed

Zürichdeutsch ...

• und Cross-Serial-Dependencies

De Jan säit, dass mer em Hans es Huus hälfed aastriiche

Quellen: http://www.brawer.ch/prolog/sprachenhierarchie.pdfW. J. Savitch, E. Bach, W. Marsh [eds.]: The Formal Complexity of Natural Language. Studies in Linguistics and Philosophy, vol. 33. 1987.

Page 21: KONTEXTFREIE GRAMMATIK

Kontextsensitive Grammatik

• Eine Kontextfreie Grammatik (KFG) kann nicht gleichzeitig beiden Arten von Verschachtelung abbilden, dazu braucht es eine Kontextsensitive Grammatik (KSG)

• Eine KSF funktioniert genau wie eine KFG. Zusätzlich erlaubt sie aber auch Ersetzungsregeln, die auf der linken Seite mehr als ein Symbol haben

z.B.: Np Vp Np S Vp

Page 22: KONTEXTFREIE GRAMMATIK

Was ist eigentlich eine Grammatik?Schulgrammatik | Kontextfreie Grammatik | Grammatik im Gehirn

• geht es um Produktion oder Rezeption?• beispielhaft oder funktional?• deskriptiv oder präskriptiv/normativ?• empirisch oder abstrakt?• angeboren oder erlernt?• kann man Syntax und Semantik trennen?

– (und was ist mit Morphologie?)

Page 23: KONTEXTFREIE GRAMMATIK

Noam Chomskys Ansatz

• Vorteil:– Linguistik wird funktional (exakt)

• Probleme:– Kompetenz/Performanz Unterscheidung

Chomskys Theorie ist nicht empirisch falsifizierbar– Semantik? – Lernbarkeit?– KFG reicht nicht, KSG ist zu mächtig, und es gibt

andere Arten, Syntax zu formalisieren

Page 24: KONTEXTFREIE GRAMMATIK

Formale Sprachen und Automaten

Kontextfreie GrammatikKontextsensitive Grammatik

Reguläre Grammatik

Allgemeine (Phrasenstruktur-)Grammatik

Kellerautomat

Turingmaschine

Endlicher AutomatLinear beschränkte Turingmaschine

Wie gehören diese Begriffe

zusammen?www.herr-rau.de/wordpress/2009/01/formale-sprachen-teil-1-die-chomsky-hierarchie.htm

Page 25: KONTEXTFREIE GRAMMATIK

Chomsky Hierarchie: L(0) L(1) L(2) L(3)∈ ∈ ∈

rekursiv aufzählbare Sprachen (Typ 0)

kontextsensitive Sprachen (Typ 1)

kontextfreie Sprachen (Typ 2)

kontext-freie G.

Keller-automat

reguläre Sprachen (Typ 3)

reguläre Grammatik

endlicher Automat

Page 26: KONTEXTFREIE GRAMMATIK

post_rau_fragen.docx (Partnerarbeit)

1. Wie heisst ein Ausdruck, den eine Formale Sprache hervorbringt oder prüft? 2. Worin unterscheiden sich Sprache, Grammatik und Automat?3. Was ist das Verhältnis zwischen regular expressions und endlichen Automaten?4. Welche Übergänge eines endlichen Automaten zeichnet Herr Rau mit Bleistift?5. Wie lange braucht ein endlicher Automat, um das Wortproblem zu beantworten?6. Für welche Arten von Ausdrücken reicht eine reguläre Sprache nicht aus?7. Was genau bedeutet kontext-sensitiv?8. Warum heissen Sprachen vom Typ 0 semi-entscheidbar?9. Warum sind Typ 1 Sprachen entscheidbar?10. Worin unterscheiden sich die verschiedenen Sprachtypen in Bezug auf die

Produktionsregeln?11. Können sie jetzt die beiden verbleibenden Fragen (d & e) im Aufgabenblatt zum

kontextfreien Krähen beantworten?12. Warum beschäftigt sich die Informatik mit formalen Sprachen?

Page 27: KONTEXTFREIE GRAMMATIK

ENDLICHE AUTOMATENTheoretische Informatik: Formale Sprachen/Automaten

Page 28: KONTEXTFREIE GRAMMATIK

Überblick Formale Sprachen

Formale SprachenChomsky-Hierarchie

Sprachtyp Grammatikart Akzeptierende Maschine

Typ 0 rekursiv aufzählbare Sprachen

allgemeine (Phrasen-struktur-)Grammatik

Turingmaschine

Typ 1 kontextsensitive Sprachen

kontextsensitive Grammatik

linear beschränkte Turingmaschine

Typ 2 kontextfreie Sprachen kontextfreie Grammatik Kellerautomat

Typ 3 reguläre Sprachen reguläre Grammatik endlicher Automat

Hierarchische (Einschluss-)BeziehungSprachen werden zunehmend allgemeiner und mächtiger,

aber auch komplizierter und ressourcenhungriger

Äquivalenzbeziehung, jede Grammatikart kann in einen entsprechenden Automaten umgewandelt werden (und umgekehrt)

kann auch als RegEx formuliert werden,

wenn Akzeptor

kann auch als RegEx formuliert werden,

wenn Akzeptor

Page 29: KONTEXTFREIE GRAMMATIK

Formale Definition reguläre Sprache

L(3) = {T, N, S, E, P}L: Language (in Klammern steht oft der Typ)T: endliche Menge der TerminalsymboleN: endliche Menge der nicht-Terminalen SymboleS: Startsymbol; S N∈(E: Endsymbol; E T)∈P: endl. M. von Produktionsregeln; P N ⊆ T [N]L(Typ) definiert eine (meist unendliche) Menge von Worten dieser Sprache und ermöglicht es in endlicher Zeit zu berechnen, ob ein gegebenes Wort zu dieser Sprache gehört ( = Wortproblem)

L(Typ) definiert eine (meist unendliche) Menge von Worten dieser Sprache und ermöglicht es in endlicher Zeit zu berechnen, ob ein gegebenes Wort zu dieser Sprache gehört ( = Wortproblem)

Page 30: KONTEXTFREIE GRAMMATIK

Formale Definition endlicher Automat

M = {Q, Σ, S, E, δ}M: Maschine, AutomatQ: endliche Menge von ZuständenΣ: Alphabet, endliche Menge von ZeichenS: Startzustand des Automaten; s Q∈E: endliche Menge von Endzuständen; s Q∈δ: endl. M. von Übergangsrelationen; δ Q × Σ × Q⊆

Für jeden Automaten M gibt es eine äquivalente Sprache L und umgekehrt. Akzeptierende Endliche Automaten, bzw. reguläre Sprachen, können auch als regular expressions formuliert werden

Für jeden Automaten M gibt es eine äquivalente Sprache L und umgekehrt. Akzeptierende Endliche Automaten, bzw. reguläre Sprachen, können auch als regular expressions formuliert werden

Page 31: KONTEXTFREIE GRAMMATIK

Formales: Grammatiken

• Produktionsregeln (Ersetzungsregeln, transitions):x y (x :: y, x := y, x = y)

• Markierung von Terminalen: ‘x‘ (“x“, <x>)

• Vereinfachungen auf der rechten Seite:x | y bedeutet x ODER y[x] bedeutet optional (0 oder 1 x){x} bedeutet 0, 1 oder n x

Page 32: KONTEXTFREIE GRAMMATIK

Formales: Endlicher Automat als Zustandsdiagramm/Übergangsgraph

Startzustand(„es kann nur

Einen geben!“)

Startzustand(„es kann nur

Einen geben!“)

Kreise = ZuständeKreise = Zustände Doppelkreis = Stoppzustand,wird erreicht

durch Eingabe ε

Doppelkreis = Stoppzustand,wird erreicht

durch Eingabe ε

Pfeile = Übergänge;Label = Eingabe, die diesen

Übergang bedingt

Pfeile = Übergänge;Label = Eingabe, die diesen

Übergang bedingt

Page 33: KONTEXTFREIE GRAMMATIK

Formales: Regular expressions

• Minimalsyntax (alles weitere lässt sich hieraus ableiten):| bedeutet ODER* bedeutet 0 bis n mal (das vorhergehende Zeichen)

() Gruppierungε leeres Zeichen

• Beispiele:a|b* steht für {ε, a, b, bb, bbb, ...}(a|b)* steht für {ε, a, b, aa, ab, ba, bb, aaa, ...}ab*(c|ε) steht für {a, ac, ab, abc, abb, abbc, ...}

Page 34: KONTEXTFREIE GRAMMATIK

Was tut diese reguläre Sprache?

Zustandsdiagramm:

Grammatik:

Regular Expression: (b|ab*a)*

S ‘b‘ S | ‘a‘ X | ‘b‘ X ‘b‘ X | YY ‘a‘ | ‘a‘ S

Lösungshilfe: a durch 1 ersetzen, und b durch 0Lösungshilfe: a durch 1 ersetzen, und b durch 0

Page 35: KONTEXTFREIE GRAMMATIK

Exorciser (s. Link im Wiki)

Löse jeweils 2-3 der einfachen Aufgaben zu: •Automatenkonstruktion•RegEx Endlicher Automat•Endlicher Automat RegEx

Page 36: KONTEXTFREIE GRAMMATIK

Endliche Automaten überall

Page 37: KONTEXTFREIE GRAMMATIK

Definiere, mit dem jeweils praktischsten Formalismus ...

1. Die (reguläre) Sprache aller gültigen E-Mail-Adressen in den TLDs ch, de und com

2. Einen Automaten, der Tickets für CHF 1.50 verkauft und Münzen zu 1 und ½ Franken, sowie 20 und 10 Rappen annimmt

3. Die Funktionen der max. zwei Knöpfe (d)einer digitalen Armband- oder Stoppuhr

Page 38: KONTEXTFREIE GRAMMATIK

Noch ein Beispiel:

• T = { ’h’, ’a’, ’l’, ’e’, ’u’, ’j’} • N = { FROHLOCKE, HA, LE, LU, JA } • S = FROHLOCKE • P = { Frohlocke HA ’l’ LE LU JA

HA ’h’ ’a’ {HA} LE ’l’ ’e’ {LE} LU ’l’ ’u’ {’u’} JA ’j’ ’a’ }

Sprachtyp ?

Sprachtyp ?

Page 39: KONTEXTFREIE GRAMMATIK

Frohlocke

1. Leite 3 gültige Worte ab und überprüfe sie auf www.pns-berlin.de/fortbildungen/tisep06/frohlocke/frohlocke.html

2. Schreibe die Produktionsregeln für die Sprache „Frohlocke“ so um, dass sie den Anforderungen an eine reguläre Sprache entsprechen

3. Formuliere die Sprache „Frohlocke“ als Zustandsdiagramm eines Endlichen Automaten

4. Formuliere die Sprache „Frohlocke“ als RegExp

Frohlocke HA ’l’ LE LU JA HA ’h’ ’a’ {HA} LE ’l’ ’e’ {LE} LU ’l’ ’u’ {’u’}JA ’j’ ’a’

Frohlocke HA ’l’ LE LU JA HA ’h’ ’a’ {HA} LE ’l’ ’e’ {LE} LU ’l’ ’u’ {’u’}JA ’j’ ’a’

Page 40: KONTEXTFREIE GRAMMATIK

Frohlocke-Automat

Das ist die umständliche Version, mit Silben als Zeichen (z.B. ‘ha‘, ‘le‘, ...) wird es etwas einfacher

Page 41: KONTEXTFREIE GRAMMATIK

Programmieren

1. jUnit-Tests (test-driven development)2. GUI-Programming (basics)3. Datenstrukturen (stack)4. evtl. Interfaces

Page 42: KONTEXTFREIE GRAMMATIK

Exkurs Software Development

Page 43: KONTEXTFREIE GRAMMATIK

Linear Development (Wasserfallmodell)

Page 44: KONTEXTFREIE GRAMMATIK

Iterative Development (Spiralmodell)

Initial IdeaInitial Idea

DeploymentDeployment

Iteration

Page 45: KONTEXTFREIE GRAMMATIK

Test Driven Development

Initial IdeaInitial Idea

DeploymentDeployment

Page 46: KONTEXTFREIE GRAMMATIK

jUnit-Tests in NetBeans

Page 47: KONTEXTFREIE GRAMMATIK

Test Driven Programming

• Warum?– man weiss immer genau, was das nächste Ziel ist, und wann man es erreicht– man ist gezwungen, diese Nahziele präzise festzulegen– man bemerkt, wenn etwas nicht mehr funktioniert, das schon ging– man spart sich eine Menge Testen „von Hand“

... als jUnit-Tests formulieren

... als jUnit-Tests formulieren

Code schreiben oder umschreiben

und STÄNDIG TESTEN

Code schreiben oder umschreiben

und STÄNDIG TESTEN

Anforderungen an das Programm

identifizieren und ...

Anforderungen an das Programm

identifizieren und ...

Fehler reproduzieren

und ...

Fehler reproduzieren

und ...

Alle Tests grün

Alle Tests grün

Bugs gefunden

Bugs gefunden

Page 48: KONTEXTFREIE GRAMMATIK

Zusammenfassung:

• Als Erstes: Anforderungen als Tests formulieren• Tests für alle nicht trivialen Methoden

(besonders boundary cases!)• Tests nacheinander (einzeln) abarbeiten• Nach jeder nicht-trivialen Änderung testen• Bei nicht-trivialen Problemen/Bugs: Test

schreiben zum Nachweis, dann erst korrigieren• Erst wenn alle Tests grün sind über die nächsten

Schritte nachdenken als Tests formulieren

Page 49: KONTEXTFREIE GRAMMATIK

Der Haleluja-Automat (Vorlage im WIKI)

1. Test-Klassen anschauen und verstehen– evtl. Zusatzinfo zu jUnit-Tests im Netz suchen

2. Methoden der beiden Parser-Klassen implementieren, bis alle Tests grün sind– ggf. weitere Tests hinzufügen

3. GUI-Funktionalität implementieren – es fehlt nur eine Methode, s. TODO & comment

4. Selbständig erweitern oder mich fragen

Page 50: KONTEXTFREIE GRAMMATIK

KELLERAUTOMATENTheoretische Informatik: Formale Sprachen/Automaten

Page 51: KONTEXTFREIE GRAMMATIK

Klammergebirge

‚That the same computer that solved a problem could prepare its own instructions was a critical moment in the birth of software‘

(Paul E. Ceruzzi, 1998)

Page 52: KONTEXTFREIE GRAMMATIK

Aber wie arbeitet man solche Instruktionen ab?

• Rüthishausers Algorithmus (1951)1. suche die höchste schliessende Klammer2. gehe rückwärts bis zur öffnenden Klammer3. berechne den Ausdruck dazwischen4. lösche die Klammern und fang von vorne an

Problem: O(n2)d.h. der Aufwand wächst mit dem Quadrat der Länge des Ausdrucks

Page 53: KONTEXTFREIE GRAMMATIK

Die Lösung des Problems

• Wofür ist Patent de1094019?• Wofür bekam Friedrich Bauer 1988 den IEEE

Computer Pioneer Award zugesprochen(sozusagen der Nobel Preis der Informatik)

• Und was hat das mit Kellerautomaten zu tun?

Page 54: KONTEXTFREIE GRAMMATIK

Der Stack (Stapelspeicher/Kellerspeicher)

• Eine Datenstruktur• LIFO-Prinzip

(Last-In-First-Out)

• Operationen: –push–pop

Kellerautomat:Das Klammergebirge kann so von links nach rechts abgearbeitet werden O(n)

Kellerautomat:Das Klammergebirge kann so von links nach rechts abgearbeitet werden O(n)

Page 55: KONTEXTFREIE GRAMMATIK

Klammerung verifizieren

L = {anbn} = {ab, aabb, aaabbb, ... }•Ein Endlicher Automaten als Akzeptor?

•... bräuchte unendlich viele Zustände

Um die Sprache zu erkennen, muss sich der Automat die Anzahl der bereits gelesenen a‘s merken im Stack

Page 56: KONTEXTFREIE GRAMMATIK

Programmieraufgabe

1. Eigenen Stack als Klasse implementieren– muss eigentlich nur mit STRINGS funktionieren– Erweiterung 1: weitere Datentypen– Erweiterung 2: Stack als verkettete Liste (von „Items“)

2. Kellerautomat implementieren – soll die Stack-Klasse benutzen– soll (allgemeine) Palindromsprache akzeptieren– Erweiterung 1: soll Klammerung verifizieren: () [] & {}– Erweiterung 2: GUI für den Automaten

Page 57: KONTEXTFREIE GRAMMATIK

Einen Stack implementierenKonstruktor myStack()

Nachher Ein leerer Stapel ist erzeugt.

Methode isEmpty(): boolean

Nachher Die Methode liefert den Wert true, wenn der Stapel keine Elemente enthalt, sonst liefert sie den Wert false.

Methode push (Object pObject)

Vorher Der Stapel ist erzeugt.

Nachher pObject liegt oben auf dem Stack.

Methode pop(): Object

Vorher Der Stapel ist nicht leer

Nachher Das oberste Element wird zurückgegeben und vom Stapel entfernt.

Methode peek(): Object

Vorher Der Stapel ist nicht leer.

Nachher Das oberste Element wird zurückgegeben, aber nicht vom Stapel entfernt.

Page 58: KONTEXTFREIE GRAMMATIK

Basierend auf JAVA-Array

• String[] keller = new String[4]; //default value is NULL

• int topPos = -1;

• Achtung: Arrays habe fixe Länge! – was tun, wenn der Stack zu gross wird?

• Achtung: Arrays speichern nur Variablen eines Typs!

– wie hält man den Typ möglichst allgemein?

topPos = 0

Page 59: KONTEXTFREIE GRAMMATIK

Programmieraufgabe

1. Eigenen Stack als Klasse implementieren– muss eigentlich nur mit STRINGS funktionieren– Erweiterung 1: weitere Datentypen– Erweiterung 2: Stack als verkettete Liste (von „Items“)

Page 60: KONTEXTFREIE GRAMMATIK

Stack als linked list

• private Klasse „Item“ (oder „Node“)– mit Inhalt und Pointer auf nächstes Item Items können verschiedene Datentypen haben

Page 61: KONTEXTFREIE GRAMMATIK

Palindromsprache

Version 1:S ε | ‘a‘ {S} ‘a‘ | ‘b‘ {S} ‘b‘ | ...

(soll mit beliebigen Zeichen als Terminalsymbole funktionieren)

Version 2:S ε | {S} ‘a‘ {S} ‘a‘ {S} | {S} ‘b‘ {S} ‘b‘ {S} | ...

(soll mit beliebigen Zeichen als Terminalsymbole funktionieren)

Bemerkung:Die allgemeinere Version 2 ist einfacher zu implementieren Version 1 als Erweiterung

Page 62: KONTEXTFREIE GRAMMATIK

Programmieraufgabe

2. Kellerautomat implementieren – sollte deine Stack-Klasse benutzen

notfalls java.util.Stack– soll (allgemeine) Palindromsprache akzeptieren

zuerst Tests schreiben– Erweiterung 1: soll Klammerung verifizieren: () [] & {}– Erweiterung 2: GUI für den Automaten

Page 63: KONTEXTFREIE GRAMMATIK

Datenstrukturen in JAVA: Collections

Page 64: KONTEXTFREIE GRAMMATIK
Page 65: KONTEXTFREIE GRAMMATIK

Take home message

• Datenstrukturen sind nützlich– selbst als Klasse schreiben oder– JAVA Collections benutzen

• Stacks werden viel gebraucht– Parsen/kompilieren eines Programms– Ausführungsreihenfolge (runtime stack bei error)

• Kellerautomaten programmieren ist einfach– wenn man einen Stack hat

Page 66: KONTEXTFREIE GRAMMATIK

Ein Kellerautomat ...... kann entscheiden, ob ein gegebenes (JAVA-)Programm syntaktisch korrekt ist ansonsten compile-time-Error

!Achtung:– Die Menge aller (JAVA-)Programme ist

kontextfrei– Aber nicht die Menge der in JAVA

ausdrückbaren Berechnungen

Page 67: KONTEXTFREIE GRAMMATIK

Turing MaschinenTheoretische Informatik: Formale Sprachen/Automaten

Page 68: KONTEXTFREIE GRAMMATIK

Turing Maschine

Page 69: KONTEXTFREIE GRAMMATIK

http://aturingmachine.com

WIKI: ab_turingmaschine.docxWIKI: busybeaver.docx

Page 70: KONTEXTFREIE GRAMMATIK

TM für binäres Inkrementieren☐☐ ☐ ☐ ☐ ☐

Page 71: KONTEXTFREIE GRAMMATIK

Berechenbarkeit & KomplexitätTheoretische Informatik:

Page 72: KONTEXTFREIE GRAMMATIK

Lernziele

1. Was besagt die Church-Turing-These?2. Wie kann die Nicht-Berechenbarkeit eines

Problems bewiesen werden?3. Worum geht es bei der Bestimmung der

Komplexität eines Algorithmus?4. Was ist das P-NP-Problem?5. Was ist die Relevanz des P-NP-Problems?

Page 73: KONTEXTFREIE GRAMMATIK

Was ist ein Algorithmus?• KURT GÖDEL: Ein Algorithmus ist eine Folge von Regeln zur

Bildung mathematischer Funktionen aus einfacheren mathematischen Funktionen.

• ALONZO CHURCH: Er verwendete einen ähnlichen Formalismus, den er λ-Kalkül nannte.

• EMIL POST: Er ersann einen Mechanismus, der Symbole manipuliert und den er Produktionssysteme nannte.

• STEPHEN KLEENE: Er definierte eine Klasse mathematischer Objekte, die er rekursive Funktionen nannte.

• ALAN TURING: Ein Algorithmus ist das, was auf der nach ihm benannten Turing-Maschine ausführbar ist

Page 74: KONTEXTFREIE GRAMMATIK

Church-Turing-These (1)

Überraschenderweise stellte sich im Laufe der Zeit heraus, dass alle auf den ersten Blick so verschiedenen Ansätze gleichwertig sind. Als Folge dieser Gleichwertigkeit wurde die folgende Aussage eine weitverbreitete Annahme:

•Alle vernünftigen Definitionen von „Algorithmus“, sind gleichwertig und gleichbedeutend.

Page 75: KONTEXTFREIE GRAMMATIK

Church-Turing-These (2)

Wenn alle Formulierungen gleichwertig sin, dann können wir uns auch gleich auf ein „Referenzmodell“ festlegen:

•Turingmaschinen sind formale Modelle von Algorithmen, und kein Berechnungsver- fahren kann „algorithmisch“ genannt werden, das nicht von einer Turingmaschine ausführbar ist.

Page 76: KONTEXTFREIE GRAMMATIK

Church-Turing-These (3)

Eine Reformulierung zeigt den Wert dieser These:•Jedes algorithmische Problem, das in irgendeiner Programmiersprache programmiert und auf irgendeinem dafür geeigneten Computer ausgeführt werden kann (sogar auf Computern, die noch nicht gebaut sind, aber prinzipiell gebaut werden könnten), und selbst wenn es unbeschränkt viel Zeit und Speicherplatz für immer größere Eingaben benötigt — jedes solche Problem ist auch durch eine Turing-Maschine lösbar!•Und alles, was mit einer Turing-Maschine nicht berechenbar ist, lässt sich überhaupt nicht berechnen.

Page 77: KONTEXTFREIE GRAMMATIK

Church-Turing-These (original)

„Die Klasse der Turing-berechenbaren Funktionen ist genau die Klasse der intuitiv berechenbaren

Funktionen“•Diese These ist kein mathematischer Satz und sie kann auch nicht bewiesen werden. •Bis heute ist aber kein einleuchtendes Gegenbeispiel erbracht worden. alle Turing-mächtigen Rechenmodelle sind gleichwertig was eine Turingmaschine nicht berechnen kann, kann prinzipiell nicht berechnet werden

Page 78: KONTEXTFREIE GRAMMATIK

TM = allgemeines Rechenmodell• Vorteile

– Simulation aller bekannter Formalismen

– einfach, mechanisch umsetzbar

– anschaulich• Nachteile

– unendlich langes Band (?!)– Programmierung kompliziert– Ablauf wird aus Struktur

nicht ersichtlich– ineffizient, schlechte Laufzeit

Random Access Maschine

Turing Maschine

Page 79: KONTEXTFREIE GRAMMATIK

Die Grenzen der Berechenbarkeit

Das Halteproblem für Java-Programme:•Gibt es ein Java-Programm, mit dessen Hilfe man für jedes beliebige Java-Programm entscheiden kann, ob es mit jeder beliebigen Eingabe nach endlich vielen Schritten terminiert oder nicht?

Page 80: KONTEXTFREIE GRAMMATIK

Umformulieren zum Umformulieren zum SelbstanwendbarkeitsproblemSelbstanwendbarkeitsproblem

• Gibt es ein Java-Programm, das von Gibt es ein Java-Programm, das von jedem beliebigen Java-Programm, jedem beliebigen Java-Programm, das sich selbst als Eingabe hat, das sich selbst als Eingabe hat, entscheidet, ob es nach endlich entscheidet, ob es nach endlich vielen Schritten anhält oder nicht?vielen Schritten anhält oder nicht?

Page 81: KONTEXTFREIE GRAMMATIK

der hypothetische Stopptester

class Stopptester {

static boolean esStoppt;

public static void main(String args[]) {

// hier wird das eingegebene Programm

// untersucht und je nach Ergebnis

// die Variable esStoppt gesetzt.

if (esStoppt)

Out.println("Das Programm ist selbststoppend.");

else

Out.println("Das Programm ist nicht selbststoppend.");

}

}

Page 82: KONTEXTFREIE GRAMMATIK

daraus abgeleitet: Seltsamclass Seltsam {

static boolean esStoppt;

public static void main(String args[]) {

// hier wird das eingegebene Programm untersucht und je nach

// Ergebnis die Variable esStoppt gesetzt.

// Alles so wie in Stopptester.

if (esStoppt) {

Out.println("Das Programm ist selbststoppend.");

while (true)

{ // Endlosschleife }

} else {

Out.println("Das Programm ist nicht selbststoppend.");

}

}

}

Page 83: KONTEXTFREIE GRAMMATIK

Ein äquivalenter Beweis aus der Aussagenlogik:

Kann es einen Menschen geben, der immer die Wahrheit spricht? (egal, was er sagt)

Die Antwort ist: Nein

Beweis durch Widerspruch:Wir legen ihm die Aussage „ich lüge immer“ in den MundEntweder ist die Aussage wahr, was ja bedeutet, dass er eben nicht immer die Wahrheit sagtOder er sagt immer die Wahrheit, dann ist aber diese Aussage nicht wahr

Page 84: KONTEXTFREIE GRAMMATIK

Zusammenfassung1. Nimm an, es kann ein Programm

Stopptester geschrieben werden. 2. Benutze es, um damit ein Programm Seltsam zu schreiben. 3. Zeige, dass das Programm Seltsam irgendeine undenkbare Eigenschaft

hat (hier: es kann weder selbststoppend noch nicht-selbststoppend sein). 4. Folgere, dass die Annahme in Schritt 1 falsch ist.

Allgemein kann man zeigen, dass es kein Programm geben kann, das für ein beliebiges anderes Programm eine beliebige nicht-triviale Eigenschaft testet

Damit ist auch bewiesen, dass es wohlformulierte Probleme gibt, die prinzipiell nicht gelöst werden können

Illustration des Halteproblems für Turing Maschinen:

http://www.th.schule.de/th/lfk-informatik/alteSeite/material/tb6/halteprob.swf

Page 85: KONTEXTFREIE GRAMMATIK

Berechenbarkeit von Algorithmen

Können wir alles, was theoretisch berechenbar ist, auch tatsächlich berechnen?

was heisst hier „praktisch“?

Page 86: KONTEXTFREIE GRAMMATIK

Turm von Hanoi (original mit 64 Scheiben)

Anzahl Züge:

3 Scheiben7 Züge

n Scheiben 2n-1 Züge

Page 87: KONTEXTFREIE GRAMMATIK

Komplexitätsabschätzung

Es geht um asymptotische Laufzeit (Speicherbedarf)

•Konstanten und geringere Faktoren ignorieren•grosse Eingaben/Parameter•Worst, best & average case

Abschätzen, wie sich der Rechenaufwand des besten Algorithmus für ein Problem im ungünstigsten Fall mit immer grösser werdenden Eingaben verändert

Page 88: KONTEXTFREIE GRAMMATIK

Komplexitätsabschätzung

Wie verhält sich die asymptotische Laufzeit für folgende Algorithmen? (wie ändert sich die Anzahl der Rechenschritte, wenn man die Anzahl der Elemente im Array verdoppelt)

1.Suchen eines Elements im Array

2.Sortieren der Elemente des Arrays

3.Alle möglichen Permutationen ausgeben

Page 89: KONTEXTFREIE GRAMMATIK

Komplexitätsklassen

Page 90: KONTEXTFREIE GRAMMATIK

Komplexitätsklassen

noch praktikabel

nicht mehr praktikabel

Page 91: KONTEXTFREIE GRAMMATIK

NP: Komplexität unbekannt

http://en.wikipedia.org/wiki/List_of_NP-complete_problems

Page 92: KONTEXTFREIE GRAMMATIK

Formale Sprachen & Komplexität

Formale Sprachen

Chomsky-Hierarchie Rechnermodell Komplexität

Typ 0 Turingmaschine unlösbar: max O(∞)

NP: max O(?) P: max O(nk)Typ 1 linear beschränkte

Turingmaschine

Typ 2 Kellerautomat max O(n3)

Typ 3 endlicher Automat max O(n)

Komplexität

Komplexität

Page 93: KONTEXTFREIE GRAMMATIK

NP-vollständige Probleme• Sie sind entscheidbar (=berechenbar). • Sie besitzen Lösungen in exponentieller Zeit. • Für keines dieser Problem wurde je ein Algorithmus

mit Polynomialzeit gefunden. • Niemand konnte bisher beweisen, ob sie exponentielle

Zeit benötigen müssen.• Alle diese Probleme sind miteinander verwandt:

– Sollte jemals für ein einziges Problem ein Algorithmus mit Polynomialzeit gefunden werden, dann ergäben sich sofort Polynomialzeit-Algorithmen für alle anderen Probleme.

– Umgekehrt gilt das allerdings auch (Beweis, dass NP≠P)

http://en.wikipedia.org/wiki/List_of_NP-complete_problems

Page 94: KONTEXTFREIE GRAMMATIK

P == NP ?

Das P-NP-Problem gilt als eines der wichtigsten offenen Probleme der Informatik und wurde vom Clay Mathematics Institute in die Liste der Millennium-Probleme aufgenommen – auf seine Lösung ist eine Preis von 1 Million $ ausgesetzt.

Frage: Rein finanziell gesehen wäre man bescheuert, den Preis in Anspruch zu nehmen, falls man einen Beweis für die Vermutung P == NP gefunden hätte. Warum?

Page 95: KONTEXTFREIE GRAMMATIK

Lernziele

1. Was besagt die Church-Turing-These?2. Wie kann die Nicht-Berechenbarkeit eines

Problems bewiesen werden?3. Worum geht es bei der Bestimmung der

Komplexität eines Algorithmus?4. Was ist das P-NP-Problem?5. Was ist die Relevanz des P-NP-Problems?

Page 96: KONTEXTFREIE GRAMMATIK

Themen für die Probe

1. Praktische Aufgaben wie im Unterricht– Grammatiken; EA, KA & TM; basic RegExp– Exorciser-Übungen (nicht CFA)

2. Theoretische Konzepte– Chomsky Hierarchie, etc. (s. Skript von Herrn Rau)

– Berechenbarkeit & Komplexität (grob, s. Lernziele)

3. Programmieren (Theorie)– test-driven development– Datenstrukturen (Stack)