Si può determinare se la lingua L si trova in NP?


15

Dato un linguaggio L definito da una macchina di Turing che lo decide, è possibile determinare algoritmicamente se L si trova in NP?


Contrassegnato alla teoria della complessità. Non sono sicuro di cosa abbia a che fare con NP-Completeeness.
Aryabhata,

1
FWIW, nonostante i voti sul sito della proposta, penso che questa domanda sia più mirata di quella sul factoring proprio perché la domanda sul factoring verrebbe coperta nella maggior parte dei corsi di introduzione alla complessità, ma questa non è nemmeno coperta in molti laureati corsi di complessità.
Joshua Grochow,

1
Questo non è coperto da corsi introduttivi sulla calcolabilità come tipica applicazione del teorema di Rice?
Moritz,

3
Moritz - sebbene la risposta sì / no a questa domanda sia coperta dal Teorema di Rice, vedi la mia risposta di seguito per risultati più interessanti. Forse, per favore, dovresti cambiare la domanda in "Qual è la complessità dell'insieme {i: L (M_i) è in NP}?"?
Joshua Grochow,

Secondo la risposta di Joshua qui. La risposta può essere ovvia quando la lingua è specificata da una Turing Machine, ma la risposta è la stessa (e forse non del tutto evidente) se permettiamo che la lingua venga specificata in un formato arbitrario.
Anand Kulkarni,

Risposte:


24

No. Innanzitutto, secondo il Teorema di Rice, questa è una proprietà delle TM che dipende solo dalla lingua che calcolano, quindi non può essere calcolabile.

Ma, più di questo, è noto che l'insieme di indici di (ovvero l'insieme di TM che calcolano le lingue in ) è ( nella gerarchia aritmetica della calcolabilità, non il gerarchia polinomiale).NPNPΣ30Σ30

Domande come questa sono state indagate per la prima volta da Hajek . Per di più, vedi ad esempio questo articolo di Ken Regan.

Alcune altre grandi pepite dal giornale di Hajek:

  • L'insieme di indici di è .PΣ30
  • {io:PL(Mio)NPL(Mio)} è -completeΠ20
  • C'è una macchina di Turing totale (si ferma su tutti gli ingressi) tale che ma l'istruzione " " è indipendente (dove ). Allo stesso modo per le relativizzazioni in cui .MioPLio=NPLioPLio=NPLioLio=L(Mio)PNP

1
Qui la domanda sembra essere un problema di decisione promettente (la lingua data viene promessa da un TM, non solo riconosciuta) in contrapposizione a un problema di decisione totale. Il teorema di Rice sarà ancora applicabile qui allora? Ricordiamo che la dimostrazione del teorema di Rice impiega l'indecidibilità di fermarsi, quindi l'indecidibilità è essenziale lì.
Zeyu,

2
Nella domanda posta il linguaggio L è stato "dato da una macchina che lo decide". Così è stato davvero: data una macchina di Turing M, si può determinare se L (M) è in NP. Se la lingua L non fosse specificata da una TM, ma semplicemente data come un sottoinsieme dei numeri naturali, cosa significherebbe decidere algoritmicamente se L è in NP? In particolare, come possiamo pensare a L come input per un algoritmo quando L stesso non è dato da una descrizione finita?
Joshua Grochow,

1
Si, lo so. Ma nel Teorema di Rice è possibile che la MT non decida una lingua, cioè non calcoli una funzione totale.
Zeyu,

2
È euristico generale che, data una proprietà semantica delle macchine di Turing, come "M definisce un linguaggio NP", si dovrebbe prima tentare di esprimere questa proprietà nella logica del primo ordine. Questo pone la proprietà in un livello della Gerarchia aritmetica; l'euristico è che la proprietà è di solito completa per quel livello della gerarchia. Vorrei chiedere se vi sono notevoli controesempi a questa euristica.
Andy Drucker,

2
Ridimensionando alla Gerarchia polinomiale, le cose hanno meno probabilità di comportarsi così bene. Ad esempio, considera la proprietà "C è un circuito booleano di dimensioni minime (per la funzione che calcola)". Questo problema è NP-difficile e può essere inserito nella Gerarchia polinomiale, ma è aperto se è completo per il livello in cui risiede naturalmente. (tali risultati sono noti per alcune classi ristrette di circuiti, ad esempio DNF; vedere l'indagine in due parti "Completezza nella gerarchia polinomiale" di Schaefer e Umans.)
Andy Drucker,

5

La risposta alla tua domanda letterale è no, come ha sottolineato Joshua Grochow.

Tuttavia, come affermato da Holger, è possibile verificare in tempo lineare se la macchina di Turing non deterministica (NTM) "si auto-sveglia" e si ferma dopo n ^ k passi per qualche costante k, attraverso un modo standard di simulazione di un orologio (come il codice sotto). Spesso quando un documento o un libro suggerisce (erroneamente) che è possibile determinare se un NTM è tempo polinomiale, questo è ciò che realmente significano. Forse è per questo che hai posto la domanda? (Ho avuto la stessa domanda quando ho appreso per la prima volta la teoria della complessità e da qualche parte ho visto l'affermazione che è possibile verificare se una MT è un poli-tempo.) La vera domanda è perché si potrebbe desiderare di fare questo, che discuterò di seguito dopo aver spiegato come .

Esistono molti modi per aggiungere una tale funzione di orologio. Ad esempio, immagina sull'input x di lunghezza n, eseguendo alternativamente un'istruzione dell'algoritmo primario in fase di clock, e quindi un'istruzione dell'algoritmo seguente, che termina in (qualcosa di simile a) passaggi n ^ k:

per i_1 = 1 a n
  per i_2 = 1 a n
...
        per i_k = 1 a n
          no-op;
ritorno;

Se il codice sopra riportato ritorna prima che l'algoritmo primario si interrompa, quindi interrompere l'intero calcolo (diciamo, con rifiuto).

L'algoritmo che decide se un NTM è di questa forma, se interpretato come un tentativo di un algoritmo per decidere se il suo input è un NTM polifunzionale, segnalerà alcuni falsi negativi: alcuni NTM sono garantiti per arrestarsi in tempo polinomiale, anche se non si alternano eseguendo un'istruzione di un algoritmo con un'istruzione di un orologio come il codice sopra (quindi verrebbero rifiutati nonostante fossero poli-tempi).

Ma non ci sono falsi positivi. Se un NTM supera il test, si arresta definitivamente nel tempo polinomiale, quindi definisce un linguaggio NP. Tuttavia, forse il comportamento del suo algoritmo primario sottostante è alterato, se l'orologio a volte si esaurisce prima che l'algoritmo primario si interrompa, causando il rifiuto del calcolo anche se l'algoritmo primario potrebbe aver accettato se fosse stato concesso il tempo sufficiente per terminarlo. Pertanto il linguaggio deciso può essere diverso da quello dell'algoritmo primario. Ma, e questa è la chiave, se l'algoritmo primario in esecuzione è in realtà un algoritmo del tempo polinomiale in esecuzione nel tempo p (n) e se la costante k nell'orologio è abbastanza grande da n ^ k> p (n), allora l'algoritmo primario si fermerà sempre prima che scada il tempo. In questo caso, la risposta dell'algoritmo primario non viene modificata, quindi l'algoritmo primario e il NTM con clock che lo simula decidono quindi lo stesso linguaggio NP.

Perché questo è importante? Ciò significa che è possibile "enumerare tutti i linguaggi NP" (che, come ho detto, è spesso inesatto nella letteratura dichiarata come "decidere se un dato NTM è un poli-tempo" o "enumerare tutti i poli-tempo NTM"). Più precisamente, è possibile enumerare un elenco infinito di M_1 M_2 di NTM, ..., con le proprietà che

  1. Ogni M_k viene eseguito in un tempo polinomiale (ad esempio, collegando un orologio ^ k-time a M_k), quindi decide un linguaggio NP e
  2. Ogni lingua NP è la lingua decisa da alcuni M_i nell'elenco.

Ciò che non accade è che ogni NTM polinomiale è nell'elenco. Ma ogni linguaggio NP ha un numero infinito di NTM che lo rappresentano. Pertanto, si garantisce che ogni linguaggio NP abbia almeno alcuni dei suoi NTM rappresentativi nell'elenco, in particolare tutti quelli NTM con un indice k abbastanza grande che n ^ k supera il tempo di esecuzione di M_k.

Ciò è utile per eseguire trucchi come la diagonalizzazione, che richiedono un elenco algoritmico di elenchi infiniti (o illimitati) di tutti i linguaggi NP. E, naturalmente, tutta questa discussione si applica a molti altri tipi di macchine oltre alle NTM poli-tempo, come le TM deterministiche poli-tempo.


3

p(n)


2
Funziona solo se si tratta di una TM non deterministica con clock . Se ti do solo una TM con clock (anche una che gira in tempo esponenziale), è ancora indecidibile se la lingua che decide sia o meno in NP. Tuttavia, se N_1, N_2, ... è un elenco di TM con clock esponenziali, l'insieme {i: L (N_i) è in NP} probabilmente non è più completo Sigma_3, poiché sei già sicuro che gli N_i siano totale, ma sicuramente non è calcolabile.
Joshua Grochow,
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.