Primitive Recursive Functions für Programmierer in der Praxis
(matklad.github.io)Primitive rekursive Funktionen: Ein Leitfaden für Programmierer in der Praxis
Programmierer verwenden oft den Begriff „Turing-Vollständigkeit“. In bestimmten Domänen gilt es bisweilen als Vorteil oder Anforderung, nicht turing-vollständig zu sein. Die meisten Diskussionen darüber beruhen jedoch auf Fehlinformationen. Was Nicht-Turing-Vollständigkeit tatsächlich bedeutet, ist etwas anderes. Turing-Vollständigkeit ist ein mathematischer Begriff mit einer sehr spezifischen Bedeutung. Ihn für andere Zwecke umzudeuten, ist nicht zulässig.
Teil I: Zusammenfassung
- Wenn ein in einer turing-vollständigen Sprache geschriebenes Programm schneller als O(22N) läuft, kann es auch in einer nicht turing-vollständigen Sprache implementiert werden.
- Die meisten praktischen Probleme sind schneller als „zwei hoch zwei hoch zwei“.
- Eine nicht turing-vollständige Sprache stellt in der Praxis keine Einschränkung dar.
- Ein Programm, das nicht terminiert, und eines, das erst nach extrem langer Zeit terminiert, werden gleich behandelt.
Teil II: Wie Maschinen funktionieren
Endliche Automaten (Finite State Machines)
- Endliche Automaten nehmen eine Zeichenkette als Eingabe und geben „Ja“ oder „Nein“ zurück.
- Sie haben eine endliche Anzahl von Zuständen.
- Die Zustandsübergangsfunktion nimmt den aktuellen Zustand und das nächste Eingabesymbol und liefert einen neuen Zustand zurück.
- Endliche Automaten können nicht in eine Endlosschleife geraten.
- Endliche Automaten haben die gleiche Ausdrucksmächtigkeit wie reguläre Ausdrücke.
Turing-Maschinen (Turing Machines)
- Turing-Maschinen sind etwas komplexer als endliche Automaten.
- Turing-Maschinen arbeiten mit einem veränderbaren Band.
- Die Zustandsübergangsfunktion nimmt den aktuellen Zustand und das aktuelle Symbol auf dem Band und liefert einen neuen Zustand, ein Symbol und eine Bewegungsrichtung zurück.
- Turing-Maschinen arbeiten als Funktionen und können in eine Endlosschleife geraten.
- Turing-Maschinen können endliche Automaten simulieren.
Programmierung von Turing-Maschinen
- Turing-Maschinen besitzen ein unendliches Band.
- Turing-Maschinen führen keine vom Benutzer bereitgestellten Programme aus. Das Programm ist in die Maschine fest eincodiert.
- Eine universelle Turing-Maschine kann andere Turing-Maschinen simulieren.
- Turing-Maschinen haben die gleiche Rechenleistung wie Sprachen wie Python.
Grenzen von Turing-Maschinen
- Es gibt Funktionen, die sich nicht mit Turing-Maschinen implementieren lassen.
- Man kann alle Turing-Maschinen aufzählen, aber nicht alle Funktionen.
- Bestimmte Probleme (z. B. das Halteproblem) lassen sich mit Turing-Maschinen nicht lösen.
- Die Stärke von Turing-Maschinen macht es unmöglich zu entscheiden, ob ein Programm terminiert.
Teil III: Zurück zu praktischen Problemen
Primitive rekursive Funktionen (Primitive Recursive Functions)
- Primitive rekursive Funktionen sind Funktionen, die ein Tupel natürlicher Zahlen als Eingabe nehmen und eine natürliche Zahl zurückgeben.
- Sie beginnen mit den Funktionen
zeroundsuccund konstruieren daraus weitere Funktionen. - Allgemeine Rekursion ist nicht erlaubt, aber eingeschränkte Formen von Schleifen sind zulässig.
- Operationen wie Addition, Multiplikation und Potenzierung lassen sich definieren.
- Logische Operatoren und Bedingungen lassen sich definieren.
- Zahlen werden verwendet, um Datenstrukturen darzustellen.
Zusammenfassung von GN⁺
- Dieser Artikel wurde geschrieben, um das Verständnis von Turing-Vollständigkeit und primitiven rekursiven Funktionen zu fördern.
- Er erklärt, was Nicht-Turing-Vollständigkeit in der Praxis bedeutet.
- Er erläutert die Unterschiede zwischen endlichen Automaten und Turing-Maschinen und diskutiert die Grenzen von Turing-Maschinen.
- Er beschreibt die Definition und Verwendung primitiver rekursiver Funktionen.
- Der Artikel wird Programmierern helfen, ihr Verständnis von Turing-Vollständigkeit und primitiven rekursiven Funktionen zu vertiefen.
- Projekte mit ähnlicher Funktionalität sind „reguläre Ausdrücke“ und „endliche Automaten“.
Noch keine Kommentare.