Orakel-Turingmaschine
Eine Orakel-Turingmaschine ist eine Turingmaschine, die mit einem Orakel verbunden ist. Bildhaft kann man sich ein Orakel als eine black box vorstellen, die von der Turingmaschine befragt werden kann und ein Problem in einem Schritt löst. Der Begriff der Orakel-Turingmaschine dient in der Theoretischen Informatik dazu, Hierarchien von Berechenbarkeiten und Komplexitäten zu definieren und deren Eigenschaften zu studieren.
Durch geeignete Orakel kann man die Berechenbarkeit verstärken oder die Komplexität verringern. Zum Beispiel können Turingmaschinen mit dem Halteproblem als Orakel das Halteproblem für Turingmaschinen lösen. Turingmaschinen mit SAT als Orakel können jedes Problem aus NP in polynomialer Zeit lösen. Orakel werden auch verwendet, um Nichtdeterminismus deterministisch zu modellieren. Eine nichtdeterministische Turingmaschine kann nämlich als Schar von deterministischen Orakel-Turingmaschinen wiedergegeben werden. Der Scharparameter, das Orakel, drückt dabei die Folge der nichtdeterministischen Entscheidungen aus.
Inhaltsverzeichnis |
[Bearbeiten] Definition
Sei
eine Sprache über dem Alphabet
. Eine Orakel-Turingmaschine mit Orakel
ist eine Turingmaschine
mit einem zusätzlichen Eingabeband (Orakelband) und drei ausgezeichneten Zuständen:
. Schreibt
ein Wort
auf das Orakelband und geht in den Zustand
über, so befragt
das Orakel: Der Nachfolgezustand von
sei
falls
gilt und andernfalls
. Anschließend wird das Orakelband gelöscht.
Wenn
und
Klassen von Sprachen sind, dann bezeichnet
die Klasse der Sprachen, die von Turingmaschine
mit Orakel
akzeptiert werden, wobei
und
sind. Typische Klassen sind einelementige Klassen, Komplexitätsklassen wie P oder NP, oder auch die Klasse aller rekursiv aufzählbaren Sprachen.
Beispiele:
bezeichnet die Klasse der Sprachen, die von einer deterministischen, polynomiell zeitbeschränkten Turingmaschine mit Orakel
akzeptiert werden.
bezeichnet die Klasse der Sprachen, die von einer nichtdeterministischen, polynomiell zeitbeschränkten Turingmaschine mit Orakel aus der Klasse
akzeptiert werden.
Diese Komplexitätsklassen werden unter anderem dazu genutzt, um die Polynomialzeithierarchie zu definieren.
[Bearbeiten] Eigenschaften
- Für zwei Komplexitätsklassen
,
und eine Sprache
gilt
, falls folgende Bedingungen erfüllt sind:
ist
-vollständig bezüglich einer Reduktion 
- Die
zugrundeliegende Klasse von Turingmaschinen ist mächtig genug, die Reduktion
zu berechnen
Beispielsweise gilt
, da
-vollständig bezüglich Polynomialzeitreduktion ist.
- Jede Orakel-Turingmaschine hat mindestens die Fähigkeiten seiner Turingmaschine, seines Orakels und der Komplementsprache seines Orakels. Es gilt daher
,
und
für alle Klassen
und
. Letztere Eigenschaft ergibt sich, wenn man die Zustände
und
vertauscht interpretiert. Insbesondere gilt also 
- Es gilt
und
, da die Turingmaschine anstatt das Orakel zu befragen, sich die Antwort des Orakels selber berechnen kann. Die Aussage lässt sich nicht auf nichtdeterministische Komplexitätsklassen verallgemeinern. Grund dafür ist die notwendige Eigenschaft
der Orakelklasse
. Beispielsweise würde aus
die bislang ungeklärte Beziehung
folgen
.
[Bearbeiten] Zum Halteproblem
Man beachte, dass das Orakel in keiner Weise beschränkt ist. Auch Sprachen, die nicht entscheidbar sind, kommen als Orakel in Frage. Also kann man zum Beispiel das Halteproblem als Orakel verwenden. Solche Halteorakel-Turingmaschinen können offensichtlich das Halteproblem von Turingmaschinen (ohne Orakel) lösen. Das steht natürlich nicht im Widerspruch zum Unentscheidbarkeitresultat des Halteproblems, denn dieses besagt ja nur, dass es keine Turingmaschine ohne Orakel gibt, die das Problem löst. Allerdings ist auch das Halteproblem von Halteorakel-Turingmaschinen nicht durch Halteorakel-Turingmaschinen lösbar.
Die Konstruktion von immer stärkeren Orakel-Turingmaschinen führt zur arithmetischen Hierarchie und den Turinggraden.
[Bearbeiten] Literatur
- John E. Hopcroft, Jeffrey D. Ullman: Einführung in die Automatentheorie, formale Sprachen und Komplexitätstheorie. 4. durchgesehene Auflage. Oldenbourg, München u. a. 2000, ISBN 3-486-25495-2.
- Christos H. Papadimitriou: Computational Complexity. Addison-Wesley, Reading MA u. a. 1994, ISBN 0-201-53082-1.
bezeichnet die Klasse der Sprachen, die von einer deterministischen, polynomiell zeitbeschränkten Turingmaschine mit Orakel
akzeptiert werden.
bezeichnet die Klasse der Sprachen, die von einer nichtdeterministischen, polynomiell zeitbeschränkten Turingmaschine mit Orakel aus der Klasse
akzeptiert werden.
,
und eine Sprache
gilt
, falls folgende Bedingungen erfüllt sind:
ist 
,
und
für alle Klassen
und
vertauscht interpretiert. Insbesondere gilt also 
und
, da die Turingmaschine anstatt das Orakel zu befragen, sich die Antwort des Orakels selber berechnen kann. Die Aussage lässt sich nicht auf nichtdeterministische Komplexitätsklassen verallgemeinern. Grund dafür ist die notwendige Eigenschaft
der Orakelklasse
die bislang ungeklärte Beziehung
folgen
.