TODO
- 1b und 1c genauer ausarbeiten
- Grammatik 1b wiederholen, vorallem das mit aaaab
- Chomsky-Hierarchie nochmal üben
- Syntaxbäume VL 1c
- Rechts und Linksableitung
- Typen lernen typ1, typ2,typ3
- Entscheidungsprobleme lernen
- Problem vs Sprachen
Geplanter Inhalt dieser VL
- Vorlesung 1a: Begrüßung, Organisatorisches, Inhaltsübersicht und Grundlagen
- Vorlesung 1b: Grammatiken und die Chomsky-Hierarchie
- Vorlesung 1c: Weitere Grammatikbegriffe sowie Eigenschaften von Sprachen
Organisatorisches:
- Zentralübung alle 2 Wochen Mittwochs um 12-14 Uhr in A240
- BONUSPUNKTE!! Immer eine Woche Zeit für (Bonuspunkte wurden abgeschafft aufgrund von rechtlichen Unklarheiten)
- Klausur: 5. August 2024 ab 15:00
- Das Datum der Nachholklausur ist noch nicht bekannt.
Ziel des Moduls
Ziel der Veranstaltung
Das Ziel dieses Moduls ist es, sowohl Theorie also auch Fähigkeiten zu vermitteln:
Theorie
- Was Computer können und was nicht: Die Theorie erklärt, wie schnell und effizient bestimmte Problem durch Computer gelöst werden können und welche Problem außerhalb ihrer Reichweite liegen.
- Praktische Anwendungen: Viele theoretische Konzepte finden Anwendung in der Praxis.
- Ästhetik der Theorie: Theoretische Informatik ist nicht nur nützlich, sondern auch in gewisser Weise ästhetisch ansprechend.
Fähigkeiten
- Umgang mit abstrakten Konzepten: Sie werden lernen, abstrakte Theorien zu verstehen und anzuwenden.
- Sorgfältige und präzise Arbeit: Das Module lehrt Sie, präzise und detailorientiert zu arbeiten.
- Entwicklung von Beweisführungskompetenzen: Sie werden Fähigkeiten entwickeln, um wissenschaftliche Beweise zu führen und zu verstehen.
Inhalte der Veranstaltung
Die theoretische Informatik umfasst drei große Themenbereiche:
-
Formale Sprachen und Automatentheorie
- Darstellung von Entscheidungsproblemen: Wie können Problem formal und verständlich für Automaten ausgedrückt werden?
- Erkennung von Programmiersprachen: Methods zur Erkennung und Analyse von Programmiersprachen und anderen formalen Sprachen.
-
Berechenbarkeitstheorie
- Algorithmische Lösbarkeit: Untersuchung, welche Problem grundsätzlich mit Algorithmen oder Computern gelöst werden können.
-
Komplexitätstheorie
- Lösbarkeit in annehmbarer Zeit: Erforschung, welche Problem effizient, also in praktisch annehmbarer Zeit, gelöst werden können.
Themen
- Formale Sprachen und Automatentheorie
- Darstellung von Entscheidungsproblemen
- Erkennung von Programmiersprachen und ähnlichen Strukturen
- Schlüsselkonzepte:
- Formale Sprachen und Entscheidungsprobleme
- Reguläre Ausdrücke (z.B. für Lexer)
- Grammatiken (z.B. für Parser)
- Automaten
- Berechenbarkeitstheorie
- Welche Problem können algorithmisch gelöst werden?
- Schlüsselkonzepte:
- Intuitive Berechenbarkeit
- Turing-Berechenbarkeit
- Imperative Programme (LOOP, WHILE, GOTO)
- Recursive Funktionen
- Unentscheidbarkeit
- Komplexitätstheorie
- Welche Problem können in akzeptabler Zeit gelöst werden?
- Schlüsselkonzepte:
- Die Klassen und
- -Schwere, -Vollständigkeit
- Konkrete -vollständige Problem
Vorlesung 1a: Begrüßung, Organisatorisches, Inhaltsübersicht und Grundlagen
Grundlagen: Wörter
Definition DefinitionDefinition
Ein Alphabet ist eine endliche nicht leere Menge von Zeichen (oder Symbolen).
Z.B
Definition DefinitionDefinition
Ein Wort w über ist eine endliche Folge von Zeichen aus .
Beispiele:
- bade ist ein Wort über {a,b,c,d,e}
- baden ist kein Wort über {a,b,c,d,e} (n fehlt in Menge)
Weitere Notationen zu Wörtern:
- Das leere Wort wird also notiert.
- Für ist die Länge des Wortes.
- Für ist das Zeichen an der -ten Position in .
- Für und ein Wort über sei die Anzahl an Vorkommen des Zeichens im Wort .
- Beispiele:
- Es gilt und für alle .
- Für ist
- .
- Für ist , und undefiniert.
Konkatenation und Kleene-Stern (REFRACTOR)
Definition DefinitionDefinition
Das Wort (alternativ ) entsteht, indem Wort hinten an Wort angehängt wird.
Die Konkatenation hilft folgende Mengen von Wörtern über zu definieren:
Definition DefinitionDefinition
Sei ein Alphabet, dann definieren wir:
Beachte: und .
Beispiele für Konkatenation und Kleene-Stern:
- ist definiert also die Menge, die nur das leere Wort enthält. Da das leere Wort kein Zeichen enthält, ist es das “neutrale Element” der Wortkonkatenation. Für erhalten wir .
-
, für ein gegebenes , enthält alle Wörter der Länge . Das bedeutet, dass wir jede Kombination von Zeichen aus nehmen und diese zu Wörtern der Länge zusammensetzen. Zum Beispiel:
- Für , weil wir jedes Zeichen aus nehmen, das ein Wort der Länge 1 bildet.
- Für bilden wir alle möglichen Kombinationen von zwei Zeichen: .
- ist die Kleene-Stern-Operation und umfasst alle Wörter beliebiger Länge, einschließlich des leeren Wortes . Es ist die Vereinigung aller für . Für enthält also alle möglichen Wörter, die mit ‘a’ und ‘b’ gebildet werden können, wie .
- ist ähnlich wie , enthält jedoch nicht das leere Wort . Es umfasst alle nicht-leeren Wörter, die aus dem Alphabet gebildet werden können. Für beinhaltet die Mengen für alle . Das bedeutet, wir haben alle Wörter wie , aber nicht .
Beachten Sie, dass beim Übergang von zu , jedes Wort aus mit jedem Zeichen aus konkateniert wird, um die Wörter der Länge zu bilden.
Weitere Notationen und Begriffe
Für Wörter über einem Alphabet gelten die folgenden Notationen und Begriffe:
- Wenn ein Wort über ist, dann wird durch das Wort bezeichnet, das durch -maliges Konkatenieren von entsteht, das heißt:
- ist das leere Wort, und für ist , also das Wort , -mal wiederholt.
- Das rückwärts gelesene Wort von wird mit bezeichnet. Es gilt also:
- und für ist .
- Ein Wort ist ein Palindrom, genau dann wenn , das bedeutet, das Wort ist vorwärts wie rückwärts gelesen gleich.
Beispiele für Palindrome sind:
- “anna"
- "reliefpfeiler"
- "lagerregal"
- "annasusanna”
Palindrome sind in der theoretischen Informatik ein interessanter Fall, weil sie oft in der Automatentheorie zur Demonstration der Eigenschaften von speziellen Automaten oder zur Illustration von Grenzen bestimmter Arten von Automaten verwendet werden.
Sprechweisen: Präfix, Suffix, Teilwort
Seien Wörter über einem Alphabet .
- ist ein Präfix von , wenn es ein Wort gibt mit .
- ist ein Suffix von , wenn es ein Wort gibt mit .
- ist ein Teilwort von , wenn es Wörter gibt mit . Präfix und Suffix impliziert Teilwort!
Beispiel: Sei .
- ist ein Präfix, Suffix und Teilwort von .
- ist ein Präfix, Suffix und Teilwort von .
- ist ein Präfix und Teilwort von , aber kein Suffix von .
- ist ein Teilwort von , aber weder ein Präfix noch ein Suffix.
-
- w ist ein Präfix, Suffix und Teilwort von w.
- aba ist ein Präfix, Suffix und Teilwort von w. (WARUM TEILWORT??) !!! Präfix und Suffix impliziert Teilwort!
- ababb ist ein Präfix und Teilwort von w, aber kein Suffix von w.
- bab ist ein Teilwort von w, aber weder ein Präfix noch ein Suffix.
-
- Das ganze Wort ababbaba ist ein Präfix, Suffix und Teilwort von w.
- ababbaba ist ein Präfix, Suffix und Teilwort von w, gefunden am Anfang, am End und in der Mitte des Wortes.
- ababbaba ist ein Präfix und Teilwort von w, gefunden am Anfang und in der Mitte des Wortes, aber kein Suffix.
- abababbaba ist ein Teilwort von w, gefunden in der Mitte des Wortes, aber weder ein Präfix noch ein Suffix.
Grundlagen: Formale Sprache
Formale Sprachen sind ein grundlegendes Konzept in der Informatik und der theoretischen Computerwissenschaft, das zur Beschreibung und Analyse von Syntax und strukturellen Mustern von Daten und Anweisungen verwendet wird. Sie bestehen aus Alphabeten, die die Grundbausteine der Sprachen sind, und Regeln, die definieren, wie Zeichen zu gültigen Strings oder „Wörtern“ kombiniert werden können. Diese Sprachen werden oft verwendet, um die Syntax von Programmiersprachen zu definieren, aber auch in der Automatentheorie, der Komplexitätstheorie und der Logik.
Definition DefinitionDefinition
Eine (formale) Sprache über dem Alphabet ist eine Teilmenge von d.h Kann leeres Wort enthalten z.B kann eine Textdatei leer sein
Beachte: L steht für “Language”
Definition DefinitionDefinition
Seien , , formale Sprachen über dem Alphabet . Dann sind folgende Operationen definiert:
- Vereinigung:
- Die Vereinigung von und ist definiert also
- oder
- Schnitt:
- Der Schnitt von und ist definiert also
- und
- Komplement:
- Das Komplement zu ist definiert also
- Product:
- Das Product von und ist definiert also
- und
Eine (formale) Sprache über dem Alphabet ist eine Teilmenge von , d.h. .
Beispiel
Beispiele für Operationen auf formalen Sprachen
Gegeben sei das Alphabet und zwei formale Sprachen und .
- ist die Sprache der Wörter, die nur aus ‘s oder nur aus ‘s bestehen. ist inkludiert da epsilon a und auch b ist
- , wobei das leere Wort darstellt und zeigt, dass beide Sprachen das leere Wort enthalten.
- ist die Sprache der Wörter, die mindestens ein enthalten.
- ist die Sprache, die aus allen Kombinationen von ‘s gefolgt von ‘s besteht.
- ist die Sprache, die aus allen Kombinationen von ‘s gefolgt von ‘s besteht.
- zeigt, dass die Konkatenation von mit sich selbst die Sprache nicht verändert.
Kleenescher Abschluss
Sei eine Sprache. Dann ist der Kleenesche Abschluss von , benannt nach Stephen Cole Kleene, definiert also:
Beispiel
Z.B L = Englisch dann L^5 fünf englische Wörter
Gegeben sei die Sprache .
Das bedeutet, ist die Sprache, die nur das leere Wort enthält. Dies ist in der Definition des Kleeneschen Abschlusses enthalten und repräsentiert die -fache Konkatenation von Wörtern aus , also kein Wort.
ist gleich , da die einmalige Konkatenation eines Wortes aus mit dem leeren Wort das ursprüngliche Wort ergibt. Deshalb ist die Sprache selbst.
entspricht der zweifachen Konkatenation der Wörter aus . Jedes Wort aus wird mit jedem Wort aus kombiniert, was die Sprache ergibt, die aus allen möglichen Kombinationen von zwei Wörtern aus besteht.
Analog dazu ist die dreifache Konkatenation der Wörter aus . Jedes Wort aus wird mit jedem Wort aus kombiniert. Dadurch entstehen längere Wörter, die aus drei Segmenten bestehen, die jeweils aus stammen.
In diesen Beispielen zeigt sich, dass mit steigendem , eine Sprache darstellt, die aus Wörtern besteht, die durch -fache Konkatenation der Wörter aus gebildet werden. Der Kleenesche Abschluss umfasst dann alle diese Möglichkeiten einschließlich des leeren Wortes.
Weitere Beispiele für Operationen auf formalen Sprachen
Im Kontext formaler Sprachen können komplexe Strukturen wie Zeitangaben oder Zahlenreihen durch die Verknüpfung einfacherer Sprachen konstruiert werden. Hier sind zwei Beispiele dafür:
-
Die Sprache aller gültigen Uhrzeiten lässt sich ausdrücken also:
Diese Sprache beschreibt die Kombination von Stunden und Minuten, wobei Stunden von 00 bis 23 und Minuten von 00 bis 59 abgedeckt werden. Das Zeichen steht dabei also Trennzeichen zwischen Stunden und Minuten.
-
Die Sprache aller natürlichen Zahlen kann repräsentiert werden durch:
Hierbei beschreibt der erste Teil die Zahl Null, und der zweite Teil die natürlichen Zahlen beginnend mit einer Ziffer von 1 bis 9, gefolgt von beliebig vielen Ziffern von 0 bis 9, was allen natürlichen Zahlen außer der Null entspricht.
Vorlesung 1b: Grammatiken und die Chomsky-Hierarchie
Grundlagen der Grammatiken
Grammatiken ermöglichen die Definition formaler Sprachen, die aus Wörtern bestehen, welche gemäß spezifischer Regeln gebildet werden.
Definition einer Grammatik
Definition
Eine Grammatik ist definiert also ein 4-Tupel , wobei:
- eine endliche Menge von Variable ist, auch Nichtterminale genannt.
- ein Alphabet von Terminalsymbolen ist, das disjunkt zu ist ().
- eine endliche Menge von Produktionsregeln ist, wobei jede Regel eine Form hat.
- das Startsymbol ist.
Beispiel
Grammatik für einfache arithmetische Ausdrücke:
- enthält Regeln wie:
Syntaxbäume
Syntaxbäume visualisieren, wie Sätze aus der Grammatik abgeleitet werden können, und illustrieren die Anwendung von Produktionsregeln in einer hierarchischen Struktur.
Chomsky-Hierarchie
Die Chomsky-Hierarchie klassifiziert Grammatiken nach der Komplexität ihrer Produktionsregeln.
Definition
- Typ 0 (Rekursiv aufzählbar): Keine Einschränkungen für die Produktionsregeln.
- Typ 1 (Kontextsensitiv): Alle Regeln erfüllen , was bedeutet, dass die Länge der linken Seite kleiner oder gleich der rechten Seite ist.
- Typ 2 (Kontextfrei): Jede Regel ist von der Form , mit und .
- Typ 3 (Regulär): Regeln sind von der Form oder , mit und .
Beispiele für Grammatiken in der Chomsky-Hierarchie
Reguläre Grammatiken erzeugen einfache Sprachen, typisch für viele Textverarbeitungsaufgaben:
- Grammatik für das Erkennen von Kennworten mit Buchstaben gefolgt von Zahlen.
Weitere Begriffe und Definitionen
Definition
- Satzform: Ein Wort über , das durch das Startsymbol beginnt und durch Anwenden von Regeln aus abgeleitet wird.
- Ableitung: Ein Process, bei dem durch Anwenden von Produktionsregeln aus einer Satzform schrittweise Wörter über erzeugt werden.
- Linksableitung: Eine Ableitung, bei der immer das linkeste Nichtterminal ersetzt wird.
Abschluss und Weiterführende Themen
Die nächste Vorlesung behandelt spezielle Typen von Grammatiken und ihre Anwendung in der Analyse und Erzeugung von Programmiersprachen. Weitere Themen umfassen die Entscheidbarkeitstheorie und die Automatentheorie, die in der theoretischen Informatik von zentraler Bedeutung sind.
Vorlesung 1c: Weitere Grammatikbegriffe sowie Eigenschaften von Sprachen
Wiederholung: Definition einer Grammatik
Note
Eine Grammatik ist ein 4-Tupel , wobei:
- eine endliche Menge von Variable (alternativ Nichtterminalen) ist,
- ein Alphabet von Zeichen (alternativ Terminalen) ist, das disjunkt zu ist ,
- eine endliche Menge von Produktionsregeln ist, von der Form mit und ,
- das Startsymbol (alternativ Startvariable) ist.
Die Chomsky-Hierarchie
Note
- Typ 0 (Rekursiv aufzählbar): Keine Einschränkungen für die Produktionsregeln.
- Typ 1 (Kontextsensitiv): Für alle ist .
- Typ 2 (Kontextfrei): wobei .
- Typ 3 (Regulär): Für alle gilt oder für und , d.h. die rechten Seiten sind Wörter aus .
Syntaxbäume
Note
Der Syntaxbaum zeigt, wie ein Wort durch Anwendung der Produktionsregeln einer Grammatik generiert wird. Die Wurzel des Baumes ist das Startsymbol , und die Blätter sind die Terminale, die das Wort bilden. Die innere Struktur des Baumes repräsentiert die Anwendung der Produktionsregeln.
Beispiel eines Syntaxbaums
Die Grammatik mit Regeln wie und kann den Ausdruck mit unterschiedlichen Ableitungen darstellen, die jedoch denselben Syntaxbaum nutzen:
E
/ \
M M
/ \
1 2
Links- und Rechtsableitungen
Links- und Rechtsableitungen beschreiben, wie das linkeste oder rechteste Nichtterminal in einer Satzform schrittweise ersetzt wird, um ein Wort in der Sprache zu generieren.
Beispiel für Linksableitung
E
⇒ E + M
⇒ M + M
⇒ M * Z + M
⇒ 1 * Z + M
⇒ 1 * 2 + M
⇒ 1 * 2 + Z
⇒ 1 * 2 + 3
Erweiterte Backus-Naur-Form (EBNF)
Note
EBNF ist eine Notation für kontextfreie Grammatiken, die es erlaubt, Regeln kompakter auszudrücken:
- Alternativen:
- Optionale Elemente:
- Wiederholungen:
Anwendungen von kontextfreien Grammatiken
Kontextfreie Grammatiken werden häufig zur syntaktischen Analyse in der Programmierung verwendet. Tools wie YACC, ANTLR und PLY nutzen diese Grammatiken, um Parser für verschiedene Programmiersprachen zu generieren. Diese Werkzeuge transformieren grammatikbasierte Spezifikationen direkt in den Quellcode von Parsern, die dann in der Softwareentwicklung eingesetzt werden können.
Beispiel: ANTLR Grammatik
Ein typisches ANTLR Grammatikbeispiel sieht wie folgt aus:
prog: (expr NEWLINE)*;
expr: expr (’*’ | ’/’) expr | expr (’+’ | ’-’) expr | INT | ’(’ expr ’)‘;
Diese Definition erlaubt die Erkennung und syntaktische Analyse von einfachen mathematischen Ausdrücken.
Abgeschlossenheit von Sprachen
Die Abgeschlossenheit einer Sprachklasse bezieht sich darauf, ob die Klasse under bestimmten Operationen wie Vereinigung, Schnitt, Komplement und Produktbildung geschlossen ist. Das heißt, das Ergebnis der Operation fällt immer noch in dieselbe Klasse.
Entscheidbarkeit und Problem
Bestimmte Eigenschaften wie Entscheidbarkeit sind zentral für das Verständnis der Berechenbarkeitstheorie. Eine Sprache ist entscheidbar, wenn es möglich ist, mit einem endlichen Verfahren (Algorithmus) zu bestimmen, ob ein beliebiges Wort zur Sprache gehört.
> Entscheidbarkeit: Eine Sprache ist entscheidbar, wenn es einen Algorithmus gibt, der in endlicher Zeit entscheidet, ob ein gegebenes Wort zur Sprache gehört oder nicht.
Zusammenfassung der Chomsky-Hierarchie
Die Chomsky-Hierarchie ordnet Sprachen basierend auf ihren grammatikalischen Einschränkungen in vier Typen. Diese Hierarchy hilft nicht nur, die theoretischen Grundlagen der Sprachverarbeitung zu verstehen, sondern auch praktische Parsing-Strategien zu entwickeln.