Gibt es ein bekanntes, explizites Beispiel für einen Algorithmus mit der Eigenschaft, dass dieser Algorithmus , wenn nicht in Polynomzeit und wenn dann in Polynomzeit ausgeführt wird?
Gibt es ein bekanntes, explizites Beispiel für einen Algorithmus mit der Eigenschaft, dass dieser Algorithmus , wenn nicht in Polynomzeit und wenn dann in Polynomzeit ausgeführt wird?
Antworten:
Wenn Sie annehmen, dass in PA (oder ZFC) nachweisbar ist, ist ein triviales Beispiel das folgende:
Input: N (integer in binary format)
For I = 1 to N do
begin
if I is a valid encoding of a proof of P = NP in PA (or ZFC)
then halt and accept
End
Reject
Ein weiteres - weniger triviales - Beispiel, das sich auf keine Annahme stützt, ist das Folgende:
Input: x (boolean formula)
Find the minimum i such that
1) |M_i| < log(log(|x|)) [ M_1,M_2,... is a standard fixed TM enumeration]
2) and M_i solves SAT correctly
on all formulas |y| < log(log(|x|))
halting in no more than |y|^|M_i| steps
[ checkable in polynomial time w.r.t. |x| ]
if such i exists simulate M_i on input x
until it stops and accept/reject according to its output
or until it reaches 2^|x| steps and in this case reject;
if such i doesn't exist loop for 2^|x| steps and reject.
Wenn der Algorithmus bald oder später - angenommen bei Eingabe von - den Index der Polynomzeit finden. Turing-Maschine (oder eine gepolsterte Version davon) , die SAT in löst und für alle Eingaben größer als wird es weiterhin simuliert und in der Polynomzeit angehalten (beachten Sie, dass Schritt 2 auch in der Polynomzeit überprüft werden kann). Mit anderen Worten, wenn ist, löst der Algorithmus SAT in Polynomzeit auf allen außer einer endlichen Anzahl von Instanzen.
Wenn , läuft der Algorithmus in exponentieller Zeit.