Un oracolo per separare NP dal coNP


12

Come provare che ? Sto solo cercando un simile oracolo TM M e un linguaggio ricorsivo L ( M ) = L per cui vale.NPAcoNPAML(M)=L

So che la prova in cui si mostra che non v'è un oracolo tale che P AN P A e un oracolo Un tale che P A = N P A . Ho un suggerimento che dovrei trovare un simile oracolo A estendendo la prova di P AN P A ma ovunque io cerchi e legga, è "ovvio" o "semplice" ovunque ma non vedo come dimostrarlo affatto .APANPAAPA=NPAAPANPA


6
Non è chiaro se hai seguito il suggerimento. Sono sorpreso di sapere che è ovvio, ma puoi trovare la prova in (ad esempio) Complessità computazionale: un approccio moderno di Arora e Barak. PANPA

Risposte:


9

Come Max ha detto che la modifica non è difficile, vi suggerisco di non leggere il resto di questa risposta e pensare al problema un po 'di più, c'è una sola parte che ha bisogno di modifiche e ricordando la definizione di quando un macchina accetta ti aiuterà a riparare quella parte.coNP

Spiegherò di seguito la modifica richiesta, ma prima diamo una breve panoramica della prova originale.

Nella prova originale è costruito in fasi in cui al punto ho con make sicuro che i esima macchina in P , M io , non decide la lingua { x | y A | x | = | y | } correttamente. Si noti che l'apparecchio è in N P A .A=nAniiPMi{xyA |x|=|y|}NPA

Raggiungiamo questo obiettivo simulando usando la parte di A che abbiamo costruito su uno 0 m dove m è abbastanza grande (la stringa è più lunga delle stringhe considerate nei passaggi precedenti). M i accetta, non aggiungiamo nulla, se si rifiuta aggiungiamo una stringa di lunghezza m che M io non fa una query per il set (Tale stringa esiste in quanto ci sono esponenzialmente molte stringhe di lunghezza m ma M i non posso chiederle tutte in tempo polinomiale). Non modificheremo questa parte di A in passi futuri (ovvero stringhe di lunghezza mMiA0mmMimMimMiAmo meno rimarrà lo stesso). Questo fa in modo che non deciderà correttamente la lingua e completa la dimostrazione.MiA

Ora, si supponga che le macchine erano in c o N P al posto di P . Abbiamo bisogno di modificare la prova per assicurarsi che M Un io non riconoscerà L . Se accetta, manteniamo A come prima e tutto funziona perfettamente come nella prova originale. Se rifiuta, dobbiamo aggiungere una stringa al set per assicurarci che non risponda correttamente. Siamo ancora in grado di simulare M ho con la parte di A che abbiamo, il problema è che M ho potuto interrogare tutte le stringhe di lunghezza n . Ecco il modo in cui un c oMicoNPPMiALAMiAMin macchina N P diventa importante. Accetta se e solo setuttii percorsi di calcolo accettano. Dal momento che rifiuta in questo caso, esiste un percorso di calcolo che rifiuta. Finché manteniamo intatto questo percorso, tutto funzionerà, quindi dobbiamo solo mantenere le risposte alle domande in quel percorso. Il numero di query in questo percorso è polinomiale (poiché la macchina viene eseguita in un tempo polinomiale), quindi ci sono stringhe di lunghezza m sulle quali il percorso non interroga, basta aggiungerne una ad A e il resto della prova funziona come prima.coNPmA

ADSpace(nω(1))


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.