P, NP e macchine di Turing specializzate


13

Sono un po 'nuovo, ma molto interessato al campo dell'informatica e della teoria della complessità, e voglio chiarire la mia comprensione su come classificare i problemi e quanto fortemente i problemi si collegano alla macchina utilizzata per risolverli.

La mia comprensione

  • Macchina di Turing standard - una macchina di Turing che ha un alfabeto finito, un numero finito di stati e un singolo nastro infinito a destra
  • Turing-Equivalent Machine - una macchina di Turing che, può emulare ed essere emulata da una macchina di Turing standard (abbastanza spesso con un certo compromesso tra spazio e tempo raggiunto dall'emulazione)
  • P - la classe di problemi che possono essere risolti in tempi polinomiali usando una macchina di Turing standard (definita sopra)
  • NP - la classe di problemi che possono essere verificati in tempo polinomiale utilizzando una macchina di Turing standard
  • NP-complete- i problemi più difficili che sono ancora presenti NP, a cui tutti i NPproblemi possono essere convertiti in tempo polinomiale

La mia domanda

Sono le classi di complessità ( P, NP, NP-complete, ecc) relativi all'algoritmo, o l'algoritmo e la macchina?

Detto in altro modo, se potessi creare una Macchina equivalente Turing (che può risolvere tutti i problemi che una TM standard può fare, ma in una diversa quantità di tempo / spazio) e questa nuova macchina potrebbe risolvere un NP-completeproblema nel tempo che cresce come un polinomio rispetto all'input, ciò implicherebbe P=NP?

O il NP-completeproblema deve essere risolvibile su tutte le possibili macchine di Turing in tempi polinomiali da considerare P?

O capisco male qualcosa di fondamentale sopra?

Ho dato un'occhiata (forse non con i termini di ricerca corretti, non conosco abbastanza bene il gergo) ma sembra che la maggior parte delle lezioni / appunti, ecc. Si concentrino su macchine standard, ma dico che le macchine personalizzate hanno spesso un po 'di tempo / velocità nello spazio a scapito dello spazio / tempo, senza dire come ciò influisca sulle classi di complessità. Non ho ancora abbastanza familiarità con il gergo in questo campo ancora per trovare documenti che spiegano questo.


Penso che la tua risposta sia molto simile alla risposta di questo post: in termini di base, qual è la definizione di P, NP, NP-Complete e NP-Hard? Date un'occhiata a questo.
Reza

Risposte:


9

Gli algoritmi e le macchine non sono definiti nella tua domanda e non credo che siano necessari per chiedere quello che vuoi chiedere.

Le classi di complessità sono definite usando le macchine di Turing. Questa è la loro definizione. Se vuoi provare qualcosa devi usare queste definizioni. Tutto ciò che riguarda qualsiasi altro modello non è correlato a meno che non si provi una corrispondenza tra quel modello e le macchine di Turing.

Consentitemi di aggiungere che esiste un'ipotesi secondo la quale un "calcolo" "efficiente" in qualsiasi "macchina" "ragionevole" catturerà le stesse funzioni teoriche. Tuttavia non è un'affermazione dimostrabile a meno che non si definiscano i termini citati. Possiamo dimostrarlo per molte macchine, ma non per tutte le macchine. Essendo l'equivalente di macchine di Turing non è sufficiente, vogliamo che siano fortemente così, cioè dovremmo essere in grado di simulare quelle macchine con macchine di Turing e viceversa in modo efficiente. La cosa bella di e N PPNPè che sono classi molto robuste, cioè piccole e grandi differenze nei modelli di macchine non cambiano la classe. Tuttavia è vero tutto il tempo. Ad esempio, posso definire un semplice nuovo modello di calcolo dove ho un'operazione di base che in tempo costante risolve un problema che è insolubile in . Quindi è ovvio che questo modello non sarà fortemente equivalente alle macchine di Turing.P

L'esempio sopra era artificiale. Tuttavia in questo momento abbiamo un modello di calcolo, che sembra più vicina al calcolo efficiente in pratica dalle macchine di Turing polinomiali: probabilistico delimitata-error / randomizzato Turing macchine, algoritmi efficienti in quel modello sono indicati come .BPP

BPP=P

BQPPP


PNPNP


Quindi, se la tua macchina personalizzata può risolvere i problemi in modo efficiente, ma non può essere emulata in modo efficiente da una macchina di Turing standard, questo risultato non è rilevante per P? = NP (anche se posso costruire questa macchina nella vita reale)?
Bingo

Si, è corretto.
Kaveh,

E quindi questo violerebbe la tesi estesa di Church-Turing?
Bingo

Non necessariamente.
Kaveh,

6

Solo una banale nota per sottolineare che la simulazione efficiente di una macchina di Turing significa non solo che può simulare il calcolo di una macchina di Turing e viceversa in modo efficiente (rallentamento del tempo polinomiale); ma anche che i suoi input / output devono essere convertiti in modo efficiente da un modello all'altro.

Un esempio banale: se trovi un dispositivo equivalente di Turing che può risolvere un problema SAT in tempo costante, ma usa come input un mucchio di biglie (unario), allora non puoi concludere nulla. Lo stesso se il tuo dispositivo utilizza un input binario ma ha impiegato un numero esponenziale di passaggi per convertire un'istanza di SAT nel formato di input utilizzato da esso.


3

La tua comprensione è molto buona! Puoi anche trovare maggiori informazioni in un testo se sei interessato, ad esempio Introduzione di Sipser alla teoria del calcolo.

C'è questa idea chiamata Thesis Church-Turing che dice che tutto ciò che può essere calcolato in qualche modo, può essere calcolato usando una Macchina di Turing. (Non è provabile, ma solo un'idea o una sorta di legge della natura che riteniamo sia vera).

Ne parlo perché esiste anche la "Extended Church Turing Thesis" che afferma che tutto ciò che può essere calcolato in qualche modo nel tempo polinomiale, può essere calcolato in un tempo polinomiale usando una Macchina di Turing.

C'è una buona ragione per dubitare di questa congettura perché conosciamo algoritmi di calcolo quantistico che ottengono una velocità migliore del polinomio rispetto agli algoritmi classici più conosciuti. Tuttavia, a parte questo, si pensa che qualsiasi macchina classica che si possa costruire (certamente qualsiasi variante su una macchina di Turing) non può essere esponenzialmente più veloce di una macchina di Turing. Quindi se la tua "Turing-Equivalent Machine" potrebbe eseguire un algoritmo che ha risolto un problema NP-Complete in tempo polinomiale, allora P = NP perché potrei convertirlo in un algoritmo polinomiale per lo stesso problema su una TM.

Ma se pensassi a una sorta di Macchina Turing-equivalente, probabilmente una delle prime cose che faresti è capire come simularla con una TM classica, e questo ti direbbe se hai una conversione al tempo polinomiale o non. E la risposta sarebbe quasi sicuramente sì, tranne che forse il tuo potrebbe essere esponenzialmente più lento (ma non più veloce - pensiamo, a meno che non sia quantico, quindi forse).

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.