Il teorema di Savitch

Il teorema di Savitch Nella teoria della complessità computazionale, Il teorema di Savitch, dimostrato da Walter Savitch in 1970, fornisce una relazione tra complessità spaziale deterministica e non deterministica. Lo afferma per qualsiasi funzione {displaystyle fin Omega (tronco d'albero(n))} , {stile di visualizzazione {matematica {NSPACE}}sinistra(deviato(giusto)Giusto)sottoseq {matematica {DSPACE}}sinistra(deviato(giusto)^{2}Giusto).} In altre parole, se una macchina di Turing non deterministica può risolvere un problema utilizzando {stile di visualizzazione f(n)} spazio, una macchina di Turing deterministica può risolvere lo stesso problema nel quadrato di quello spazio limitato.[1] Anche se sembra che il non determinismo possa produrre guadagni esponenziali nel tempo, questo teorema mostra che ha un effetto nettamente più limitato sui requisiti di spazio.[2] Contenuti 1 Prova 2 Corollari 3 Guarda anche 4 Appunti 5 Riferimenti 6 External links Proof The proof relies on an algorithm for STCON, il problema di determinare se esiste un percorso tra due vertici in un grafo orientato, che corre {stile di visualizzazione Oleft((registro n)^{2}Giusto)} spazio per {stile di visualizzazione n} vertici. L'idea di base dell'algoritmo è di risolvere ricorsivamente un problema un po' più generale, testare l'esistenza di un percorso da un vertice s a un altro vertice t che utilizza al massimo k archi, dove k è un parametro che viene dato come input all'algoritmo ricorsivo. STCON può essere risolto da questo problema impostando k su n. Per verificare un percorso k-edge da s a t, si può verificare se ogni vertice u può essere il punto medio del percorso s-t, ricercando ricorsivamente cammini di metà lunghezza da s a u e u a t. Usando lo pseudocodice (nella sintassi Python) possiamo esprimere questo algoritmo come segue: def k_edge_path(S, t, K) -> bool: """k inizialmente è uguale a n (che è il numero di vertici)""" se k == 0: return s == t if k == 1: Restituzione (S, t) in edges for u in vertices: se k_edge_path(S, tu, pavimento(K / 2)) e k_edge_path(tu, t, soffitto(K / 2)): return True return False This search calls itself to a recursion depth of {stile di visualizzazione O(registro n)} livelli, ognuno dei quali richiede {stile di visualizzazione O(registro n)} bit per memorizzare gli argomenti della funzione e le variabili locali a quel livello: k e tutti i vertici (S, t, tu) richiedere {stile di visualizzazione O(registro n)} bit ciascuno. La complessità totale dello spazio ausiliario è così {stile di visualizzazione Oleft((registro n)^{2}Giusto)} .[Nota 1] Sebbene descritto sopra sotto forma di un programma in un linguaggio di alto livello, lo stesso algoritmo può essere implementato con lo stesso spazio asintotico legato su una macchina di Turing.
Per vedere perché questo algoritmo implica il teorema, considera quanto segue. Per qualsiasi lingua {stile di visualizzazione Lin {matematica {NSPACE}}(f(n))} , c'è una macchina di Turing {stile di visualizzazione M} che decide {stile di visualizzazione L} nello spazio {stile di visualizzazione f(n)} . Assumi w.l.o.g. l'alfabeto è un alfabeto binario {stile di visualizzazione {0,1}} (cioè. {displaystyle Lsottoseteq {0,1}^{*}} ). Per qualsiasi parola di input {stile di visualizzazione xin {0,1}^{*}} , c'è un grafico orientato {stile di visualizzazione G_{X}^{M}} i cui vertici sono le configurazioni di {stile di visualizzazione M} durante l'esecuzione sull'ingresso {stile di visualizzazione x} . Ci possono essere infinite configurazioni di questo tipo; per esempio. quando {stile di visualizzazione M} continua a scrivere un simbolo sul nastro e spostando la testa a destra in un ciclo, all'infinito. Le configurazioni diventano quindi arbitrariamente grandi. Tuttavia, lo sappiamo al massimo {stile di visualizzazione deviato(giusto)} lo spazio è necessario per decidere se {stile di visualizzazione xin L} , quindi ci preoccupiamo solo delle configurazioni delle dimensioni al massimo {stile di visualizzazione deviato(giusto)} ; chiamare una tale configurazione ammissibile. Ci sono un numero finito di configurazioni ammissibili; vale a dire {stile di visualizzazione 2 ^{Oleft(f(n)Giusto)}} . Perciò, il sottografo indotto {stile di visualizzazione [G_{X}^{M}]} di {stile di visualizzazione G_{X}^{M}} contenente (Esattamente) le configurazioni ammissibili ha {stile di visualizzazione 2 ^{Oleft(f(n)Giusto)}} vertici. Per ogni ingresso {stile di visualizzazione xin {0,1}^{n}} , {stile di visualizzazione [G_{X}^{M}]} ha un percorso dalla configurazione iniziale a una configurazione accettante se e solo se {stile di visualizzazione xin L} . Pertanto, decidendo la connettività in {stile di visualizzazione [G_{X}^{M}]} , possiamo decidere l'adesione {stile di visualizzazione x} in {stile di visualizzazione L} . Con l'algoritmo di cui sopra questo può essere fatto deterministicamente nello spazio {stile di visualizzazione Oleft(sinistra(registro 2^{Oleft(f(n)Giusto)}Giusto)^{2}Giusto)=Osinistra(deviato(giusto)^{2}Giusto)} ; quindi {stile di visualizzazione L} è dentro {stile di visualizzazione {matematica {DSPACE}}sinistra(deviato(giusto)^{2}Giusto)} .
Dal momento che questo vale per tutti {displaystyle fin Omega (registro n)} e tutto {stile di visualizzazione Lin {matematica {NSPACE}}sinistra(deviato(giusto)Giusto)} , otteniamo l'affermazione del teorema: Per tutte le funzioni {displaystyle fin Omega (registro n)} , {stile di visualizzazione {matematica {NSPACE}}sinistra(deviato(giusto)Giusto)sottoseq {matematica {DSPACE}}sinistra(deviato(giusto)^{2}Giusto)} . ^ Nota che possono esserci fino a {stile di visualizzazione n^{2}} bordi nel grafico di input, ogni bordo che consuma {displaystyle 2log n} spazio, quindi il totale (cioè., non solo ausiliario) la complessità dello spazio è {stile di visualizzazione O(n^{2}registro n)} (e questo limite è stretto). Tuttavia, i bordi possono essere rappresentati implicitamente, tramite la macchina di Turing non deterministica sotto ispezione. Corollaries Some important corollaries of the theorem include: PSPACE = NPSPACE Questo segue direttamente dal fatto che il quadrato di una funzione polinomiale è ancora una funzione polinomiale. Si ritiene che una relazione simile non esista tra le classi di complessità temporale polinomiale, P e NP, anche se questa è ancora una questione aperta. NL ⊆ L2 STCON è NL-completo, e quindi anche tutte le lingue in NL sono nella classe di complessità {stile di visualizzazione {matematica {colore {Blu}l}}^{2}={matematica {DSPACE}}sinistra(sinistra(log a destra)^{2}Giusto)} . See also Exponential time hypothesis Immerman–Szelepcsényi theorem Notes ^ Arora & Barak (2009) p.86 ^ Arora & Barak (2009) p.92 Riferimenti Arora, Sanjeev; Barak, Boaz (2009), Complessità computazionale. Un approccio moderno, Cambridge University Press, ISBN 978-0-521-42426-4, Zbl 1193.68112 Papadimitriou, Cristo (1993), "Sezione 7.3: Il metodo di raggiungibilità", Complessità computazionale (1st ed.), Addison Wesley, pp. 149–150, ISBN 0-201-53082-1 Savitch, Walter J. (1970), "Relazioni tra complessità del nastro non deterministiche e deterministiche", Giornale di scienze informatiche e dei sistemi, 4 (2): 177–192, doi:10.1016/S0022-0000(70)80006-X, hdl:10338.dmlcz/120475 Sipser, Michael (1997), "Sezione 8.1: Il teorema di Savitch", Introduzione alla teoria del calcolo, Pubblicazione PWS, pp. 279–281, ISBN 0-534-94728-X External links Lance Fortnow, Fondamenti di complessità, Lezione 18: Il teorema di Savitch. Accesso 09/09/09. Richard J. Lipton, Il teorema di Savitch. Fornisce un resoconto storico su come è stata scoperta la prova. Categorie: Teoria della complessità strutturale Teoremi nella teoria della complessità computazionale
Se vuoi conoscere altri articoli simili a Il teorema di Savitch puoi visitare la categoria Structural complexity theory.
lascia un commento