31 maggio 2016, prova 03
Rispondi prima di leggere la spiegazione. I termini sottolineati offrono un aiuto rapido.
- 1
è riducibile a HAMILTON PATH?
- 2
PRIMES è riducibile a TSP(D)?
- 3
?
- 4
Le risposte ai test di soddisfacibilità di knowledge base SHOIQ (OWL-2) ammettono disqualifiers succinti?
- 5
CIRC SAT è riducibile a ?
- 6
Per ripristinare in ambito quantistico la complessità classica degli attacchi a forza bruta alla crittografia simmetrica, basta raddoppiare la lunghezza delle chiavi?
- 7
Supponiamo . È vero che HAMILTON PATH non è -completo?
Programmare una MdT nondeterministica che controlla se una stringa è palindroma
| # | 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, nondeterministica e a 2 nastri, deve riconoscere una stringa palindroma. Copia l'inizio dell'input sul secondo nastro e indovina dove termina la prima metà; se la lunghezza è dispari salta il bit centrale, se è pari non saltare nulla. Poi confronta il resto dell'input con la copia letta all'indietro. Un ramo accetta se tutti i confronti coincidono e le due metà finiscono insieme, cioè con sul primo nastro e sul secondo.
| Stato | letto₁ | letto₂ | nuovo stato | scritto₁, mossa₁ | scritto₂, mossa₂ | note |
|---|---|---|---|---|---|---|
| scelta 1: copia , la prima metà continua | ||||||
| scelta 2: è il centro (lunghezza dispari), lo salta | ||||||
| scelta 3: la prima metà finisce prima di (lunghezza pari) | ||||||
| fine dell'input senza scelte: accetta solo la stringa vuota | ||||||
| cifre simmetriche uguali | ||||||
| finite insieme: palindroma |
In tutti gli altri casi rigetta, cioè quando trova due cifre diverse oppure quando un nastro finisce prima dell'altro (il punto scelto non era la metà). è un bit qualsiasi, riscritto uguale.
La macchina accetta se almeno un ramo accetta. Se è palindroma accetta il ramo che sceglie la metà giusta; se non lo è, ogni ramo trova due cifre diverse o finisce i nastri in momenti diversi, e rigetta. Ogni ramo si ferma entro passi, mentre la macchina deterministica del file (sotto) ne fa . È stata verificata con un simulatore su tutte le stringhe fino a 10 bit.
Traccia passo passo: il ramo che accetta su x = 101 e su x = 0110
stato nastro 1 nastro 2
s [▷] 1 0 1 ⊔ [▷] ⊔ ⊔
s ▷ [1] 0 1 ⊔ ▷ [⊔] ⊔ scelta 1: copio 1
s ▷ 1 [0] 1 ⊔ ▷ 1 [⊔] scelta 2: 0 è il centro, lo salto
m ▷ 1 0 [1] ⊔ ▷ [1] ⊔ 1 = 1
m ▷ 1 0 1 [⊔] [▷] 1 ⊔ finiti insieme
yes
s [▷] 0 1 1 0 ⊔ [▷] ⊔ ⊔
s ▷ [0] 1 1 0 ⊔ ▷ [⊔] ⊔ scelta 1: copio 0
s ▷ 0 [1] 1 0 ⊔ ▷ 0 [⊔] scelta 1: copio 1
s ▷ 0 1 [1] 0 ⊔ ▷ 0 1 [⊔] scelta 3: la metà finisce qui
m ▷ 0 1 [1] 0 ⊔ ▷ 0 [1] ⊔ 1 = 1
m ▷ 0 1 1 [0] ⊔ ▷ [0] 1 ⊔ 0 = 0
m ▷ 0 1 1 0 [⊔] [▷] 0 1 ⊔ finiti insieme
yes
Gli altri rami rigettano. Su 101, per esempio, il ramo che fa la scelta 3 davanti allo 0 confronta 0 con 1, mentre quello che copia tutte e tre le cifre arriva a e trova sul 2° nastro una cifra invece di .
La soluzione del file è una MdT deterministica a 2 nastri che copia l'input, riavvolge il 1° nastro e confronta: è la palindrome deterministica. Va bene anche quella, perché una MdT deterministica è un caso particolare di nondeterministica in cui ogni configurazione ha una sola mossa.
Eseguila passo per passo
Prossima transizione: δ(s, ▷, ▷) = (s, ▷, →, ▷, →)
Mostra il codice della soluzione
s ▷ ▷ -> s ▷ R ▷ R s b ⊔ -> s b R b R # scelta 1: copia b, la prima metà continua s b ⊔ -> m b R ⊔ L # scelta 2: b è il centro (lunghezza dispari), lo salta s b ⊔ -> m b S ⊔ L # scelta 3: la prima metà finisce prima di b (lunghezza pari) s ⊔ ⊔ -> m ⊔ S ⊔ L # fine dell'input senza scelte m b b -> m b R b L # cifre simmetriche uguali m ⊔ ▷ -> yes ⊔ S ▷ R # finite insieme: palindroma