Die Saiten von einer NTM akzeptiert M
ist die Sprache M
, stellte fest ,L(M)
Nehmen wir an, dass M
für jede Eingabe nicht garantiert wird, dass sie in allen Zweigen angehalten wird. Dann M
kann eindeutig kein Entscheider sein und ist somit nur ein Erkenner. M
erkennt die Sprache aller Zeichenfolgen, für die jeder Zweig von M
in einem akzeptierenden Zustand endet.
Da M
es sich um einen Erkenner handelt, wird garantiert, dass eine Zeichenfolge nur akzeptiert wird, wenn die Zeichenfolge aktiviert ist L(M)
. Bei einer Zeichenfolge, die nicht vorhanden ist L(M)
, wird die Zeichenfolge möglicherweise abgelehnt oder für immer wiederholt. Jeder NTM kann von einem DTM simuliert werden. Wenn NTM jedoch nur eine Sprache erkennt L
, erkennt auch der entsprechende DTM nur eine Sprache L
.
Wenn der NTM in allen Zweigen für eine Eingabe anhält, ist er ein Entscheider, dann tut der entsprechende DTM dasselbe und ist somit auch ein Entscheider.
Ein Prüfer ist nicht das, wonach Sie suchen. In Sipsers Buch Einführung in die Theorie der Berechnung wird der Verifizierer vorgestellt, wenn über die Komplexität von Algorithmen und Komplexitätsklassen gesprochen wird, da jede Sprache L
genau dann in NP ist, wenn sie einen Polynomzeitverifizierer hat.
Ein Verifizierer für eine Sprache L
wird als Eingabe einer Zeichenfolge w
in L
und ein Zertifikat c
(man denke an das Zertifikat als Lösung des Problems w
) und verifizieren , dass das Zertifikat in der Tat eine korrekte Lösung, wodurch w
in liegen L
.
Beispiel:
Für die Sprache
L = { w | w is an integer for which the product of some of the digits equals 12000 }
Sie können einen Prüfer machen V
, die einen String w
in L
einem Zertifikat c
, und prüft , ob die w
in in der Tat L
mit dem Zertifikat c
. c
könnte eine binäre Zeichenfolge sein, die die ganzen Zahlen angibt, w
für die das Produkt von 12000 entspricht.
V
Muss zum Beispiel die Eingabe ablehnen 1923423343, 0010111011
, weil2*4*2*3*4*3 = 576 != 12000
Für viele Probleme kennen wir nur einen Algorithmus, der sie lösen kann, wenn sie in exponentieller Zeit der Eingabegröße ausgeführt werden. Aus diesem Grund sind Verifizierer interessant, da es häufig der Fall ist, dass wir mit einer Lösung schnell feststellen können, ob diese Lösung richtig oder falsch ist.