Der Unterschied zwischen deterministischen und nicht deterministischen Turingmaschinen liegt in der Übergangsfunktion. In deterministischen Turingmaschinen die Übergangsfunktion eine Teilfunktion:δ
δ:Q×B→Q×B×{left,right}
Dies bedeutet, dass Sie bei einem bestimmten Status und einem Bandsymbol einen oder keinen Status haben, das Symbol rechts und die Bewegungsrichtung eingeben. In nicht deterministischen Turing-Maschinen sieht dies jedoch so aus (hier ist die Menge der Teilmengen einer Menge):P
δ:Q×B→P(Q×B×{left,right})
Dies bedeutet, dass Sie keinen oder mehrere Zustände, Bandsymbole zum Schreiben oder Anweisungen zum Bewegen haben. Dies gibt Ihrer Maschine die Möglichkeit, in einem solchen Zustand und Bandsymbol effektiv zwischen den verschiedenen möglichen "Zweigen" der Berechnung zu wählen.
In der Praxis bedeutet dies, dass wir verschiedene Ausgaben für dieselbe Eingabe berechnen können. Daher ist die Sprache einer nicht deterministischen Turing-Maschine die Menge von Wörtern, für die wir in den definierten Übergängen eine Ableitung finden. Ein bestimmter Lauf findet möglicherweise keine solche Ableitung, aber das Wichtigste ist, dass sie auftreten kann. Wenn Sie also "raten", wählen Sie nur einen der möglichen Berechnungszweige aus.
Anwendungsbeispiel
L={(M1,M2):there exists at least one word accepted by both TM at the same time}
In diesem Fall könnte man nur ein Wort „erraten“ und führen und auf Überprüfung , dass , wenn beide akzeptiert, sie zugleich akzeptieren. Das Erraten könnte funktionieren, indem ein Zustand mit Übergängen eingeführt wird, die auf ein Band s und / oder s schreiben und das durch Lesen eines beliebigen Symbols auf der allgemeinen Maschine beendet wird.M 1 M 2 w q 0 1wM1M2wq01
Um ehrlich zu sein, habe ich kein Beispiel für eine schlechte Verwendung dieser "Vermutung" gefunden. Wenn Sie jedoch überprüfen, ob diese Phrase jedes Mal korrekt verwendet wird, wird reduziert, um zu überprüfen, ob Sie mit dieser Struktur Automaten erstellen können, die die Vermutung simulieren.