Perché non possiamo invertire la risposta di un NDTM in modo efficiente?


11

Ho letto diverse volte che non è possibile capovolgere la risposta di un NDTM in modo efficiente. Tuttavia, non capisco perché. Ad esempio, dato un NDTM che gira in , questo testo (sezione 3.3) afferma che non è chiaro come un altro NDTM possa determinare nel tempo come invertire la risposta diO ( n )MO(n)O ( n 100 ) MTO(n100)M

Il mio problema è il seguente: un NDTM emette se esiste una sequenza di scelte non deterministiche che porta allo stato accettante. Inoltre, esiste un NDTM universale che può simulare ogni NDTM con un piccolo overhead (logaritmico). Quindi perché non possiamo costruire T come segue: in primo luogo, simulare M con l'NDTM universale che dovrebbe essere possibile nel tempo . Quindi emetti 1 - la risposta di M. Ciò significherebbe che possiamo capovolgere la risposta di qualsiasi NDTM lineare nel tempo .N U O ( n registro n ) O ( n registro n )1NUO(nlogn)O(nlogn)


Un NDTM non "emette" nulla. Modifica il tuo modello mentale di non determinismo.
Raffaello

Risposte:


15

Una macchina di Turing non deterministica accetta se almeno un percorso accetta; rifiuta solo se rifiutano tutti i percorsi. Questa asimmetria rende difficile "capovolgere le risposte".

Ad esempio, supponiamo di avere una macchina di Turing non deterministica  che ha due percorsi per l'input  w : uno accetta, l'altro rifiuta. M  ha almeno un percorso di accettazione per  w , quindi accetta. Supponiamo di voler produrre una macchina che accetti esattamente gli input che M  rifiuta. Il primo ovvio tentativo è di prendere  M e far rifiutare i suoi stati accettanti, e accettarne i suoi stati rifiutanti. M  ha un percorso di accettazione per  w e un percorso di rifiuto; questa nuova macchina  M ' ha un percorso di rifiuto e un percorso di accettazione. Quindi accetta ancora  w , che avrebbe dovuto rifiutare!MwMwMMMwMw

Una macchina non deterministica non può guardare tutti i suoi percorsi contemporaneamente e agire in base a ciò che fanno tutti quei percorsi. Se vuoi, puoi pensarlo come una forma di parallelismo in cui ai fili è proibito comunicare tra loro. Quando tutti i thread hanno terminato il programma deve porsi la seguente domanda: "Almeno uno dei miei thread ha accettato?" Se la risposta è sì, è legalmente obbligata ad accettare; se la risposta è no, è legalmente obbligata a rifiutare. Non può fare nient'altro.

Quando simuli una macchina non deterministica  usando un'altra, M , ogni percorso di  M simula un percorso di  M e vede solo quel percorso. Non può dire "Se tutti quegli altri percorsi rifiutati, accetterò" perché non riesce a vedere gli altri percorsi; può solo vedere se stesso. Quindi tutto ciò che si potrebbe dire sono cose come "Se il percorso che ho simulato accettato, lo rifiuterò" o "Se il percorso che ho simulato accettato, accetterò anch'io". Quindi, alla fine del calcolo, la macchina deve dire "Se accetto anche uno dei miei percorsi, accetterò anch'io", portando al problema che ho descritto sopra. Per invertire il comportamento di M , ogni percorso di M MM'MMMMdeve dire: "Se il percorso che ho simulato accettato, rifiuto; altrimenti, accetto" e, alla fine del calcolo, la macchina deve dire: "Se tutti i miei percorsi accettati, accetto; altrimenti, rifiuto ". Questo perché, se tutti i percorsi del simulatore sono stati accettati, ciò significa che tutti i percorsi di sono stati respinti, quindi M ha rifiutato, quindi il simulatore deve accettare. Ma il simulatore non è una macchina di Turing non deterministica valida perché non utilizza il criterio di accettazione obbligatorio per legge. Non può farlo.MM

L'unico modo in cui sappiamo per capire se una macchina non deterministica rifiuta il suo input è provare ogni possibile percorso e verificare che tutti rifiutino. Dopotutto, se anche uno di loro accettasse, la macchina accetterebbe l'input. Ma provare ogni possibile percorso è esponenzialmente più lento del provare solo uno.


2

Il problema è che gli NDTM sono intrinsecamente non simmetrici: il tempo significa che hanno passi O ( n ) per indovinare un percorso di accettazione, se esiste, e rifiuteranno altrimenti (se non esiste un percorso di accettazione).O(n)O(n)

Il problema è che se la macchina è veramente in O ( n l o g ( n ) ) , vuol dire che indovina in n l o g ( n ) passi testimone che M rifiuta l'ingresso. Questo potrebbe non essere possibile, perché non ci sono testimoni del rifiuto di M , ma solo testimoni dell'accettazione. Il rifiuto è l'assenza di testimonianza, quindi non è facile dimostrare il rifiuto in breve tempo.NUO(nlog(n))nlog(n)MM


-3

=?=?


1
In realtà, sta chiedendo qualcosa di simile a co-NP = NP : è perfettamente possibile che P e NP siano diversi, ma gli NDTM possono essere negati in modo efficiente.
David Richerby,
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.