# Berechenbarkeitstheorie

Die Berechenbarkeitstheorie (auch Rekursionstheorie) ist ein Teilgebiet der theoretischen Informatik und der mathematischen Logik, die sich mit dem Begriff der Berechenbarkeit befasst, insbesondere damit, welche Probleme mit Hilfe einer Maschine (genauer: eines mathematischen Modells einer Maschine) oder eines anderen mathematischen Modells der Berechenbarkeit lösbar sind. Sie ist eng verwandt mit der formalen Semantik, richtet aber die Aufmerksamkeit mehr auf die Terminiertheit von Programmen und Algorithmen.
Die zentrale Frage der Rekursionstheorie ist, welche Funktionen (bzw. Mengen) sich mit welchem Berechenbarkeitsmodell berechnen lassen. Es werden dazu Modelle für die Berechenbarkeit und deren Leistungsfähigkeit untersucht. Aus der Art der betrachteten Berechnungsmodelle ergibt sich eine unscharfe Abgrenzung zur Komplexitätstheorie, in der vor allem Berechnungsmodelle mit Ressourcenbeschränkung betrachtet werden. Schwerpunkt vieler Untersuchungen in der Rekursionstheorie ist die relative Berechenbarkeit von Funktionen, d. h., welche Funktionen lassen sich mit einer gegebenen Funktion unter Verwendung eines bestimmten Berechnungsmodells berechnen (siehe zum Beispiel unter Turinggrade).

## Hauptfragen

Wie kann man den Begriff der intuitiven Berechenbarkeit formalisieren? Als weitgehend anerkannte Antwort hat sich die Turingmaschine als mögliches Model durchgesetzt (Church-Turing-These). Es wurde erkannt, dass die Berechnungsfähigkeit der Turingmaschine gleichmächtig zu vielen anderen Berechnungsmodellen ist.
Welche Art Aufgaben kann welche Klasse von Maschinen lösen? Insbesondere werden deterministische und nichtdeterministische Varianten folgender Modelle untersucht:
* endlicher Automat
* Kellerautomat
* linear beschränkte Turingmaschine (LBA)
* Turingmaschine
* Registermaschine
Welche Art von Problemen benötigt leistungsfähigere Maschinen?

## Welche Art Aufgaben kann eine Turingmaschine lösen?

Ein Problem heißt entscheidbar, wenn es durch einen Algorithmus, der nach endlich vielen Schritten terminiert, gelöst werden kann. Viele Probleme sind entscheidbar, es sind aber auch viele unentscheidbare Probleme bekannt. Beispielsweise sind nach dem Satz von Rice alle (nichttrivialen) semantischen Eigenschaften von Programmen unentscheidbar.
Zum Beispiel kann das Problem der Gültigkeit prädikatenlogischer Formeln nicht algorithmisch gelöst werden: Gegeben ist eine Aussage der Prädikatenlogik erster Stufe. Aufgabe ist es herauszubekommen, ob die Aussage wahr ist. Dieses Problem ist auch als das Entscheidungsproblem (im engeren Sinn) bekannt. Church und Turing haben unabhängig voneinander nachgewiesen, dass dieses Problem nicht gelöst werden kann.
Ein weiteres Problem ist das Halteproblem. Es seien ein Algorithmus und eine Eingabe gegeben. Es wird gefragt, ob der Algorithmus für die Eingabe schließlich hält (terminiert). Turing wies die Unentscheidbarkeit dieser Frage nach.

## Andere Modelle für Berechenbarkeit mit gleicher Leistungsfähigkeit

* Turingmaschine mit mehreren Bändern
* Turingmaschine mit einem zweidimensionalen „Band“
* Registermaschine
* erweiterter Kellerautomat mit zwei Kellerspeichern
* endlicher Automat mit zwei Zählern
* Typ-0-Grammatik
* Lambda-Kalkül
* rekursive Funktion
* erweitertes Petri-Netz mit Sperrkanten
* Markow-Algorithmus
* Termersetzungssystem
* die meisten modernen Programmiersprachen

## Welche Aufgaben können durch weniger leistungsfähige Maschinen gelöst werden?

Die Chomsky-Hierarchie beschreibt diejenigen formalen Sprachen, die durch vier Klassen von Algorithmen erkannt werden können. Sie alle setzen einen nichtdeterministischen endlichen Automaten voraus mit einem Speicher. Wenn der Speicher unendlich groß ist, dann entspricht die Situation der Turingmaschine. Wenn der Speicher proportional zur Größe der Eingabezeichenkette ist, dann können kontextabhängige Sprachen erkannt werden. Wenn der Speicher nur einen Stapel umfasst, dann können kontextfreie Sprachen erkannt werden. Wenn die Maschine nur einen endlichen Speicher hat, dann können nur Sprachen, die durch reguläre Ausdrücke definiert sind, erkannt werden.

## Zusammenhang mit der Physik

Dem Physiker Richard Feynman fiel auf, dass Computer ziemlich schlecht darin sind, Problemstellungen aus der Quantenmechanik zu berechnen. Ein wichtiger Vortrag von ihm hierzu aus dem Jahre 1981 hatte den Titel
    Can (quantum) physics be (efficiently) simulated by (classical) computers?
Offenbar kann die Natur den Ausgang eines quantenmechanischen Experimentes schneller „ausrechnen“, als wir dies mit einem Computer können. Daher schlug er vor, einen besonderen Computer zu bauen, einen Quantenprozessor. Dessen Rechenwerk sollte quantenmechanische Prozesse nutzen, um Ergebnisse für quantenmechanische Probleme effizienter zu berechnen. Dabei wurde dann irgendwann klar, dass die einfachen mathematischen Modelle der theoretischen Informatik eigentlich nur mit einer Teilklasse der realen Computer korrespondieren können, weil man nicht alle physikalischen Möglichkeiten ausgeschöpft hatte. Diese neue Klasse von Computern wird als Quantencomputer bezeichnet. Trotzdem sind Quantencomputer im Sinne der Berechenbarkeitstheorie nicht mächtiger als Turingmaschinen (sie können exakt die gleichen Probleme lösen), jedoch könnte sich eventuell ein erheblicher Geschwindigkeitsvorteil ergeben.