Automaten und Sprachen: Theoretische Informatik für die Praxis
Mathematik, Anwendung, Intuition
- 2024
- Buch
- Verfasst von
- Andreas Müller
- Verlag
- Springer Berlin Heidelberg
Über dieses Buch
Dieses Lehrbuch entwickelt die theoretischen Grundlagen der Informatik mit möglichst direktem Anwendungsbezug: Es versteht die theoretische Informatik als einen Werkzeugkasten, der es Softwareingenieuren und -entwicklern erlaubt, informierte Designentscheidungen in ihren Entwicklungsprojekten zu fällen und eine entsprechende Intuition dafür zu entwickeln.
Das Buch richtet sich insbesondere an Studierende an Fachhochschulen bzw. Hochschulen für angewandte Wissenschaften, kann aber auch beim Quereinstieg oder zur Wissensauffrischung wertvolle Dienste leisten. Behandelt werden endliche Automaten und reguläre Ausdrücke, kontextfreie Grammatiken und Stackautomaten, Turing-Maschinen und Turing-Vollständigkeit, Entscheidbarkeit, Komplexität und NP-Vollständigkeit sowie Quantencomputer. Innerhalb der Kapitel sind Aufgaben zur Verständniskontrolle und am Ende jedes Kapitels abschließende Übungsaufgaben bereitgestellt – die Lösungen dazu sind jeweils per QR-Code verlinkt und online verfügbar. Letzteres gilt außerdem für den Anki-Lernkartenstapel, den der Autor als digitale Ergänzung zum Buch anbietet.
Inhaltsverzeichnis
-
Frontmatter
-
Kapitel 1. Reguläre Sprachen
Andreas MüllerZusammenfassungDeterministische endliche Automaten sind die einfachsten Arten von abstrakten Maschinen. Sie definieren aber bereits eine wichtige und praktisch nützliche Klasse von Sprachen, die sogenannten regulären Sprachen. Eine Vielzahl von Algorithmen stehen zur Konstruktion und Optimierung der endlichen Automaten für reguläre Sprachen zur Verfügung. -
Kapitel 2. Nicht reguläre Sprachen
Andreas MüllerZusammenfassungNicht jede Sprache ist regulär. Das Pumping-Lemma für reguläre Sprachen ist ein praktisch nützliches Werkzeug, welches erlaubt zu erkennen, wenn man den Bereich der regulären Sprachen verlässt. -
Kapitel 3. Nichtdeterministische endliche Automaten
Andreas MüllerZusammenfassungNichtdeterminismus ist ein mächtiges Werkzeug, mit dem die Konstruktion und das Studium von endlichen Automaten vereinfacht werden kann. -
Kapitel 4. Reguläre Operationen und reguläre Ausdrücke
Andreas MüllerZusammenfassungReguläre Operationen sind die natürlicheren Operationen als die Mengenoperationen von Kapitel 3. Aus ihnen lässt sich mit den regulären Ausdrücken auch eine sehr effiziente und intuitive Spezifikationssprache für reguläre Sprachen entwickeln, die vielfältige Anwendungen hat. -
Kapitel 5. Kontextfreie Grammatiken und Sprachen
Andreas MüllerZusammenfassungGrammatiken ermöglichen viele Sprachelemente zu spezifizieren, für die reguläre Sprachen nicht reichen. Der daraus abgeleitete Syntaxbaum eines Sprachausdrucks ermöglicht die Auswertung. -
Kapitel 6. Parsing
Andreas MüllerZusammenfassungGrammatiken sind das naheliegende Werkzeug zur Spezifikation einer formalen Sprache. Damit wird die Syntaxanalyse auf der Basis einer Grammatik die wichtigste Aufgabe des Parsers einer Programmiersprache. -
Kapitel 7. Stackautomaten
Andreas MüllerZusammenfassungDer CYK-Algorithmus zur Syntaxanalyse ist viel zu langsam und daher nicht sinnvoll praktisch einsetzbar. Stackautomaten bilden die Basis für ein erfolgreicheres Konzept, den LR-Parser. Fast alle modernen Programmiersprachen können mit einem solchen Parser analysiert werden. -
Kapitel 8. Nicht kontextfreie Sprachen
Andreas MüllerZusammenfassungGrammatiken und Stackautomaten sind nur anwendbar auf kontextfreie Sprachen. Das Pumping-Lemma für kontextfreie Sprachen ist ein handliches Werkzeug, um Sprachen als nicht kontextfrei zu erkennen. -
Kapitel 9. Abzählbar und überabzählbar unendlich
Andreas MüllerZusammenfassungSprachen basieren immer auf einem endlichen Alphabet und setzen sich aus endlichen Wörtern zusammen. Trotzdem können Sprachen unendlich viele Wörter haben. Es ist daher wichtig zu verstehen, was unendlich genau heißt. Die Menge aller Wörter ist abzählbar unendlich, die Menge aller Sprachen dagegen überabzählbar. -
Kapitel 10. Turing-Maschinen
Andreas MüllerZusammenfassungDie Turing-Maschine ist die mathematische Abstraktion eines Computers. Es zeigt sich, dass die vielen Varianten von Turing-Maschinen alle im Wesentlichen die gleichen Fähigkeiten haben und damit ein gutes Modell sind, um mathematische Aussagen über reale Computerprogramme zu erhalten. -
Kapitel 11. Entscheidbarkeit
Andreas MüllerZusammenfassungNicht jede Aufgabe lässt sich mit einem Computer lösen. Das von Alan Turing entdeckte Halteproblem ist wahrscheinlich das berühmteste solche Problem. Es steht aber nicht alleine, eine ganze Familie von Problemen sind nicht entscheidbar. -
Kapitel 12. Komplexität
Andreas MüllerZusammenfassungZu lange Laufzeit ist der häufigste Grund für unbefriedigende Leistung einer Anwendung in der Praxis. Oft ist nicht die Hardware schuld, sondern das Problem ist grundsätzlich schwierig. Die Komplexitätstheorie untersucht hardwareunabhängige Eigenschaften von Algorithmen, deren Performance nicht skalieren wird und gibt dem Praktiker damit ein Entscheidungswerkzeug in die Hand, wie er problematische Anwendungsteile von vornherein so gestalten, kann dass er diesen Schwierigkeiten aus dem Weg gehen kann. -
Kapitel 13. NP-Vollständigkeit
Andreas MüllerZusammenfassungUnter den NP-Problemen sind jene besonders interessant, auf die sich alle anderen polynomiell reduzieren lassen. Dass es solche Probleme überhaupt gibt, ist die überraschende Aussage des Satzes von Cook-Levin. Eine große Zahl von NP-vollständigen Problemen gibt dem Praktiker die Möglichkeit, durch Vergleich Skalierungsprobleme in Aufgabenstellung in der Praxis rechtzeitig zu erkennen. -
Kapitel 14. Programmiersprachen und Turing-Vollständigkeit
Andreas MüllerZusammenfassungIn der Praxis werden Turing-Maschinen mit höheren Programmiersprachen programmiert. Dabei besteht die Gefahr, dass wichtige Fähigkeiten der Turing-Maschine durch die verwendete Sprache eingeschränkt werden. Durch sorgfältig konstruierte primitive Programmiersprachen kann man herausfinden, welche Sprachelemente notwendig sind, um die Fähigkeiten einer Turing-Maschine zu erlangen. -
Kapitel 15. Quantencomputer
Andreas MüllerZusammenfassungQuantencomputer versprechen die Lösung gewisser besonders schwieriger Probleme. So wie klassische Computer eine physikalische Realisierung des mathematischen Konzepts der Turing-Maschine mit Hilfe der klassischen Physik sind, versucht ein Quantencomputer eine nach den Gesetzen dar mathematischen Theorie der Quantenberechnung ablaufende Berechnung mit quantenphysikalischen Messungen zu realisieren. Die Überlagerung von Teilchenzuständen ist dabei das zentrale Werkzeug, welches exponentielle Beschleunigung in gewissen Problemen ermöglichen könnte. -
Kapitel 16. Grundlagen und Bezeichnungen
Andreas MüllerZusammenfassungDie theoretische Informatik braucht die elementare mathematische Logik und die Mengenlehre als Grundlage. Im Anhang werden die im Buch benötigten Grundlagen zusammengestellt und die verwendete Schreibweise festgelegt. -
Backmatter
- Titel
- Automaten und Sprachen: Theoretische Informatik für die Praxis
- Verfasst von
-
Andreas Müller
- Copyright-Jahr
- 2024
- Verlag
- Springer Berlin Heidelberg
- Electronic ISBN
- 978-3-662-70146-1
- Print ISBN
- 978-3-662-70145-4
- DOI
- https://doi.org/10.1007/978-3-662-70146-1
Informationen zur Barrierefreiheit für dieses Buch folgen in Kürze. Wir arbeiten daran, sie so schnell wie möglich verfügbar zu machen. Vielen Dank für Ihre Geduld.