31 maggio 2016, prova 08
Rispondi prima di leggere la spiegazione. I termini sottolineati offrono un aiuto rapido.
- 1
?
- 2
Esistono problemi risolubili nondeterministicamente in spazio ma non deterministicamente in spazio ?
- 3
Supponiamo che esista una riduzione da SCHÖNFINKEL-BERNAYS SAT a . ?
- 4
PSPACE non è strettamente contenuto in ?
- 5
?
- 6
: è noto un metodo per ridurre la probabilità di errore sotto una soglia prefissata in tempo polinomiale?
- 7
TSP(D) è NL-completo?
Programmare una MdT con oracolo SAT che decide SAT-UNSAT
| # | Stato | Legge₁ | Legge₂ | Nuovo stato | Scrive₁ | Mossa₁ | Scrive₂ | Mossa₂ | Commento | ||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 |
Prossima transizione (riga 1): δ(s, ▷, ▷) = (s, ▷, →, ▷, →) · supera l'inizio dei due nastri
La macchina deve accettare x;y se è soddisfacibile e non lo è. Copia sul nastro di query e interroga l'oracolo: se risponde no, rifiuta. Se risponde sì, cancella la query, copia e interroga di nuovo l'oracolo; accetta solo se questa volta risponde no.
L'oracolo SAT risponde in un passo alla domanda «questa formula è soddisfacibile?». La macchina scrive la formula sul secondo nastro ed entra in , e la risposta la porta in o senza spostare le testine.
Bastano due chiamate, quindi . Nella tabella indica un simbolo della formula, esclusi ;, e .
| Stato | letto₁ | letto₂ | nuovo stato | scritto₁, mossa₁ | scritto₂, mossa₂ | note |
|---|---|---|---|---|---|---|
| copia | ||||||
| "?" | ||||||
| insoddisfacibile | ||||||
| soddisfacibile: si passa a | ||||||
| cancella la query | ||||||
| query cancellata | ||||||
| copia | ||||||
| "?" | ||||||
| soddisfacibile | ||||||
| sì, no |
In tutti gli altri casi rigetta. La tabella è quella della dispensa, con al posto della sua per non confonderla con la formula . Le due chiamate si distinguono dal simbolo sul 1° nastro: dopo la prima la testina 1 è su ";", dopo la seconda è su .
Traccia per fasi, con soddisfacibile e no:
fase nastro 1 (input) nastro 2 (query) stato
copia x ▷ x [;] y ▷ x [⊔] s → q?
1ª domanda ▷ x [;] y ▷ x [⊔] q? → qYES (x è soddisfacibile)
cancella la query ▷ x [;] y [▷] ⊔ ⊔ r → a
copia y ▷ x ; y [⊔] ▷ y [⊔] a → q?
2ª domanda ▷ x ; y [⊔] ▷ y [⊔] q? → qNO (y non lo è)
fine yes
In generale, per la domanda 8 scrivi l'idea in due righe, poi la tabella : uno stato per ogni cosa da ricordare, le righe per i casi limite (, stringa vuota, overflow) e "in tutti gli altri casi rigetta". Sui numeri binari si lavora da destra, dopo il blocco "vai in fondo"; con più nastri si copia una parte dell'input sul 2° nastro e la si confronta. Prima di consegnare, simula la macchina riga per riga su un input piccolo.
Eseguila passo per passo
Prossima transizione: δ(s, ▷, ▷) = (s, ▷, →, ▷, →)
Mostra il codice della soluzione
s ▷ ▷ -> s ▷ R ▷ R s σ ⊔ -> s σ R σ R # copia x s ; ⊔ -> q? ; S ⊔ S # "x ∈ SAT?" s ⊔ ⊔ -> no ⊔ S ⊔ S # manca ";" (qui σ non comprende ⊔) qNO ; ⊔ -> no ; S ⊔ S # x insoddisfacibile qYES ; ⊔ -> r ; S ⊔ L # x soddisfacibile: si passa a y r ; σ -> r ; S ⊔ L # cancella la query r ; ▷ -> a ; R ▷ R # query cancellata a σ ⊔ -> a σ R σ R # copia y a ⊔ ⊔ -> q? ⊔ S ⊔ S # "y ∈ SAT?" qYES ⊔ ⊔ -> no ⊔ S ⊔ S # y soddisfacibile qNO ⊔ ⊔ -> yes ⊔ S ⊔ S # x sì, y no