Algoritmo il cui tempo di esecuzione dipende da P vs. NP


18

Esiste un esempio esplicito e noto di un algoritmo con la proprietà tale che se questo algoritmo non viene eseguito in tempo polinomiale e se viene eseguito in tempo polinomiale?PNPP=NP


9
Una specie di. Se P = NP, l'algoritmo di ricerca universale di Levin viene eseguito in tempo polinomiale sull'accettazione di istanze en.wikipedia.org/wiki/…
Emil Jeřábek supporta Monica il

@Emil: se P = NP quindi anche P = coNP, quindi non puoi simultaneamente cercare Levin sul complemento della tua lingua, dando così un algoritmo veramente poli-tempo su tutte le istanze?
Joshua Grochow,

3
@JoshuaGrochow Per esprimere il linguaggio come coNP, dovrei prima conoscere l'algoritmo polytime per NP, sconfiggendo l'intero scopo.
Emil Jeřábek sostiene Monica il

Risposte:


17

Se supponi che sia dimostrabile in PA (o ZFC), un esempio banale è il seguente:P=?NP

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

Un altro esempio - meno banale - che non si basa su alcun presupposto è il seguente:

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.

Se l'algoritmo presto o tardi - supponiamo sull'ingresso - troverà l'indice della macchina del Turing del tempo polinomiale (o una sua versione imbottita) che risolve SAT in e per tutti gli input maggiori di continuerà a simularlo e si fermerà in tempo polinomiale (si noti che il passaggio 2 può anche essere verificato in tempo polinomiale). In altre parole se l'algoritmo risolve SAT in tempo polinomiale su tutti tranne un numero finito di istanze.P=NPx0MSATO(|x||MSAT|)x0P=NP

Se l'algoritmo viene eseguito in tempo esponenziale.PNP


Come faccio a decidere se "I è una codifica valida di una prova di P = NP in PA (o ZFC)"?
user2925716

@ user2925716 Puoi farlo in tempo polinomiale (immagina che sia una stringa che rappresenta la prova completa in qualsiasi ragionevole sistema di detrazione). I
Marzio De Biasi,

2
Assunto alto.
Jirka Hanika,

1
Se P ≠ NP, il tempo di esecuzione dell'algoritmo incondizionato è superpolinomiale (come richiesto), ma se NP è solo leggermente superpolinomiale, non esponenziale. Possiamo cambiare l'algoritmo per renderlo io-esponenziale, ma dimostrandolo in modo esponenziale (al contrario del solo io-esponenziale) se P ≠ NP è probabilmente difficile quanto risolvere P = NP.
Dmytro Taranovsky,

1
Ho usato io-esponenziale per significare esponenziale per infinitamente molte dimensioni di input; io-esponenziale può ancora oscillare tra esponenziale e non esponenziale quando le dimensioni dell'ingresso cambiano. Inoltre, il commento di Emil Jeřábek appare corretto; una correzione per ottenere in modo dimostrabile il tempo superpolinomiale (se P use NP) è usare sempre almeno tempo; e per io-esponenziale - almeno ogni volta che aumentiamo i. 2 xx|Mi|2x
Dmytro Taranovsky,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.