Sono abbastanza certo di non essere il primo a intrattenere l'idea che presenterò. Tuttavia, sarebbe utile se riuscissi a trovare qualsiasi letteratura relativa all'idea.
L'idea è di costruire una Turing Machine M con la proprietà che se P = NP allora M risolverà 3-SAT in tempo polinomiale. (La scelta di 3-SAT è arbitraria. Potrebbe essere davvero un problema in NP).
Giusto per essere chiari, questo non è un reclamo che P = NP. In effetti, credo il contrario. Dico semplicemente che se P = NP, allora M fornirà una soluzione a tempo polinomiale. Se stai cercando una soluzione efficiente, dovrei avvertire che questo è lungi dall'essere efficiente.
M è costruito come segue: in primo luogo, assumere una codifica canonica per tutte le macchine di Turing e applicare una numerazione a queste macchine. Quindi, c'è una Turing Machine numero 1, un numero 2, ecc. L'idea di una Universal Turing Machine in grado di leggere il formato per una macchina fornita e quindi simulare il funzionamento della macchina su input separati è piuttosto nota. M utilizzerà una macchina di Turing universale per costruire e simulare ciascuna macchina di Turing a turno.
Simula innanzitutto il funzionamento di Turing Machine 1 per un singolo passaggio.
Quindi esamina l'output di Turing Machine 1.
Simula il funzionamento di Turing Machine 1 per due passaggi e osserva l'output, quindi procede a simulare Turing Machine 2 per 2 passaggi. Continua e gira in questo modo, a sua volta eseguendo Turing Machine 1 per k passi poi 2 per k passi ... poi infine macchina k per k passi.
Dopo ogni corsa di simulazione, esamina l'output della corsa. Se l'output è un'assegnazione di variabili che soddisfano l'istanza del problema 3-SAT, M si ferma in uno stato di accettazione. Se, d'altra parte, l'output è una stringa di prova in un linguaggio di prova verificabile con il risultato comprovato che l'istanza del problema non è soddisfacente, M si ferma in uno stato di rifiuto. (Per un linguaggio di prova, potremmo ad esempio usare gli assiomi di Peano con la logica del secondo ordine e gli assiomi logici di base in stile Hilbert. Lascio che sia un esercizio per il lettore capire che se P = NP, un valido esiste un linguaggio di prova ed è verificabile in tempo polinomiale).
Qui dirò che M risolverà 3-SAT in tempo polinomiale se e solo se P = NP. Alla fine, l'algoritmo troverà una macchina di Turing magica con il numero K, che in tal caso è un risolutore efficiente per il problema del 3-SAT ed è in grado di fornire una prova dei suoi risultati in caso di successo o fallimento. Alla fine K verrà simulato eseguendo passi poli (strlen (input)) per alcuni polinomi. Il polinomio per M è approssimativamente il quadrato del polinomio per k nel fattore più grande, ma con alcune terribili costanti nel polinomio.
Per ribadire la mia domanda qui: voglio sapere se esiste una fonte letteraria che utilizza questa idea. Sono un po 'meno interessato a discutere l'idea stessa.