Die Saiten von einer NTM akzeptiert Mist die Sprache M, stellte fest ,L(M)
Nehmen wir an, dass Mfür jede Eingabe nicht garantiert wird, dass sie in allen Zweigen angehalten wird. Dann Mkann eindeutig kein Entscheider sein und ist somit nur ein Erkenner. Merkennt die Sprache aller Zeichenfolgen, für die jeder Zweig von Min einem akzeptierenden Zustand endet.
Da Mes 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 Lgenau dann in NP ist, wenn sie einen Polynomzeitverifizierer hat.
Ein Verifizierer für eine Sprache Lwird als Eingabe einer Zeichenfolge win Lund 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 win 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 win Leinem Zertifikat c, und prüft , ob die win in der Tat Lmit dem Zertifikat c. ckönnte eine binäre Zeichenfolge sein, die die ganzen Zahlen angibt, wfür die das Produkt von 12000 entspricht.
VMuss 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.