λ Teoria del calcolo

Complessità spaziale: PSPACE, teorema di Savitch e giochi

Come si misura la memoria usata da un algoritmo, il teorema di Savitch, il problema TQBF PSPACE-completo, il legame con i giochi e le classi logaritmiche.

Il tempo non è l'unica risorsa che conta. Un algoritmo può essere veloce ma richiedere troppa memoria, oppure lento ma frugale. La complessità spaziale studia quanta memoria serve per risolvere un problema. I risultati sono diversi, e per certi versi più netti, di quelli sul tempo: lo spazio si può riutilizzare, mentre il tempo, una volta speso, è perso. Questa semplice osservazione cambia molte cose.

Le definizioni

Per una macchina di Turing che si ferma su ogni input, lo spazio usato è il numero massimo di celle del nastro visitate su un input di lunghezza n.

  • SPACE(f(n)): linguaggi decisi da una macchina deterministica in spazio O(f(n)).
  • NSPACE(f(n)): lo stesso per macchine non deterministiche, in cui ogni ramo usa al più quello spazio.
  • PSPACE: unione di SPACE(nᵏ) per ogni k, cioè i problemi risolvibili con memoria polinomiale.

Per lo spazio sublineare, come log n, si usa un modello a due nastri: un nastro di input a sola lettura, che non viene contato, e un nastro di lavoro, che è l'unico misurato. Altrimenti già leggere l'input occuperebbe n celle.

Relazioni con il tempo

Due osservazioni collegano tempo e spazio:

  1. Lo spazio non supera il tempo. In t passi una macchina visita al più t celle. Quindi P ⊆ PSPACE e NP ⊆ PSPACE.
  2. Il tempo è al più esponenziale nello spazio. Una macchina che usa s celle ha un numero di configurazioni distinte limitato da 2^O(s). Se si ferma, non può ripetere una configurazione, altrimenti andrebbe in ciclo. Quindi PSPACE ⊆ EXPTIME.

Mettendo tutto insieme:

P ⊆ NP ⊆ PSPACE ⊆ EXPTIME

Sappiamo che P ≠ EXPTIME, ma non quale delle inclusioni intermedie sia stretta.

Perché NP sta in PSPACE

Il primo punto si vede anche direttamente per SAT. Si provano tutti i 2ⁿ assegnamenti uno dopo l'altro, riusando sempre lo stesso spazio: si scrive un assegnamento, si valuta la formula, si cancella e si passa al successivo. Il tempo è esponenziale, ma la memoria resta lineare.

Il teorema di Savitch

Per il tempo non sappiamo se il non determinismo si possa eliminare a costo polinomiale. Per lo spazio sì:

per ogni f(n) ≥ log n, NSPACE(f(n)) ⊆ SPACE(f(n)²).

Il non determinismo costa al più un quadrato in spazio. Di conseguenza PSPACE = NPSPACE.

L'idea della dimostrazione

Si vuole sapere se una macchina non deterministica può passare dalla configurazione iniziale a quella accettante in al più t passi. Si definisce una procedura RAGGIUNGI(c₁, c₂, t):

  1. se t = 1, controlla direttamente se c₂ segue da c₁ in un passo;
  2. altrimenti, per ogni possibile configurazione intermedia m: - se RAGGIUNGI(c₁, m, t/2) e RAGGIUNGI(m, c₂, t/2) sono entrambe vere, rispondi sì;
  3. se nessuna m funziona, rispondi no.

Il tempo è enorme, perché si provano tutte le configurazioni intermedie. Ma lo spazio è contenuto: la profondità della ricorsione è log t, e ogni livello memorizza solo poche configurazioni di dimensione O(f(n)). Poiché t è al più 2^O(f(n)), la profondità è O(f(n)) e lo spazio totale O(f(n)²).

Il punto chiave è che le due chiamate ricorsive riusano lo stesso spazio: prima si esegue la prima, si cancella il lavoro, poi si esegue la seconda.

Un problema PSPACE-completo: TQBF

Una formula booleana quantificata pienamente ha tutte le variabili legate da quantificatori:

∀x ∃y [(x ∨ y) ∧ (¬x ∨ ¬y)]

Questa formula è vera: per ogni valore di x esiste un y, il suo opposto, che soddisfa la parte fra parentesi.

TQBF = {⟨φ⟩ : φ è una formula booleana pienamente quantificata vera}

TQBF è PSPACE-completo: sta in PSPACE e ogni problema in PSPACE vi si riduce in tempo polinomiale.

  • TQBF ∈ PSPACE: si valuta ricorsivamente. Per ∃x si provano x = 0 e x = 1 e basta che uno funzioni; per ∀x devono funzionare entrambi. La profondità della ricorsione è il numero di variabili, e ogni livello usa spazio costante.
  • Completezza: la riduzione riprende l'idea del teorema di Savitch, codificando la procedura RAGGIUNGI con quantificatori che evitano di duplicare la formula a ogni livello.

Il legame con i giochi

L'alternanza ∃∀∃∀ ricorda una partita a due: «esiste una mia mossa tale che per ogni tua risposta esiste una mia mossa…». Per questo molti giochi generalizzati a scacchiera n × n sono PSPACE-completi o ancora più difficili. Un esempio classico è la geografia generalizzata: su un grafo orientato i due giocatori muovono a turno una pedina lungo gli archi senza ripassare per un nodo già visitato, e perde chi non può muovere. Decidere se il primo giocatore ha una strategia vincente è PSPACE-completo.

Spazio logaritmico: L e NL

All'estremo opposto ci sono le classi con memoria minuscola:

  • L = SPACE(log n): bastano pochi contatori e puntatori nell'input;
  • NL = NSPACE(log n): la versione non deterministica.

Il problema della raggiungibilità in un grafo orientato è NL-completo. Per Savitch sta in SPACE(log² n). Un altro risultato notevole, il teorema di Immerman-Szelepcsényi, mostra che NL = coNL: a differenza di quanto si congettura per NP, la classe è chiusa per complemento. Valgono L ⊆ NL ⊆ P, e anche qui le inclusioni strette restano aperte.

In sintesi

  • Lo spazio si riutilizza, e per questo le classi spaziali si comportano diversamente da quelle temporali.
  • P ⊆ NP ⊆ PSPACE ⊆ EXPTIME, con P ≠ EXPTIME.
  • Il teorema di Savitch mostra che il non determinismo costa al più un quadrato in spazio: PSPACE = NPSPACE.
  • TQBF è PSPACE-completo, e molti giochi generalizzati lo sono per la stessa struttura alternata.
  • Nello spazio logaritmico, la raggiungibilità è NL-completa e vale NL = coNL.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche