23 giugno 2020, versione 5
Rispondi prima di leggere la spiegazione. I termini sottolineati offrono un aiuto rapido.
- 1
Supponiamo che . Dire se
- 2
Dire se è riducibile a STRATEGIC COMPANIES
- 3
È falso che
- 4
Dire se
- 5
Tutti i linguaggi che sono accettati da MdT nondeterministiche sono anche accettati da MdT deterministiche
- 6
Sia un problema in BPP. Dire se la probabilità di errore può essere ridotta sotto una soglia prefissata in tempo polinomiale
- 7
È vero che EXACT TSP non è -hard?
Programmare una MdT che divide una cifra binaria per 4
| # | Stato | Legge | Nuovo stato | Scrive | Mossa | Commento | ||
|---|---|---|---|---|---|---|---|---|
| 1 | ||||||||
| 2 | ||||||||
| 3 |
Da controllare
- Riga 3: lo stato q non ha righe: lì la macchina si blocca e rigetta
Prossima transizione (riga 1): δ(s, ▷) = (s, ▷, →) · supera l'inizio del nastro
La macchina deve calcolare la divisione intera per 4, scartando il resto. Per farlo cancella le ultime due cifre: , cioè con resto 2.
Se l'input ha una o due cifre, scrivi 0 invece di lasciare il nastro vuoto.
La macchina termina in . Nella tabella indica un bit qualsiasi e una cella vuota.
| commento | |||
|---|---|---|---|
| supera l'inizio del nastro | |||
| scorre l'input fino in fondo | |||
| fine input, torna sull'ultima cifra | |||
| cancella l'ultima cifra | |||
| cancella la penultima cifra | |||
| l'input aveva una sola cifra | |||
| è rimasta almeno una cifra: fine | |||
| non è rimasto niente… | |||
| …quindi scrive 0 |
Nella traccia ogni riga è un istante: tra parentesi quadre c'è la cella sotto la testina, a destra lo stato e cosa fa la macchina. Traccia su input 10110 (= 22) e sul caso limite 11 (= 3):
▷ 1 0 1 1 0 [⊔] s : fine input (dopo "vai in fondo"), torno indietro
▷ 1 0 1 1 [0] ⊔ q : cancello l'ultima cifra
▷ 1 0 1 [1] ⊔ ⊔ r : cancello la penultima cifra
▷ 1 0 [1] ⊔ ⊔ ⊔ t : è rimasta almeno una cifra: mi fermo (h)
risultato 101 = 5 = 22 : 4 (resto scartato) ✔
▷ 1 1 [⊔] s : fine input, torno indietro
▷ 1 [1] ⊔ q : cancello l'ultima cifra
▷ [1] ⊔ ⊔ r : cancello la penultima cifra
[▷] ⊔ ⊔ ⊔ t : non è rimasto niente
▷ [⊔] ⊔ ⊔ z : scrivo 0 e mi fermo (h)
risultato 0 = 3 : 4 ✔
Con input di una sola cifra (0 oppure 1) la macchina arriva su già nello stato e scrive 0 allo stesso modo. La macchina è stata verificata con un simulatore su tutti gli input fino a 8 bit.
Eseguila passo per passo
Prossima transizione: δ(s, ▷) = (s, ▷, →) · supera l'inizio del nastro
Mostra il codice della soluzione
s ▷ -> s ▷ R # supera l'inizio del nastro s b -> s b R # vai in fondo s ⊔ -> q ⊔ L # fine input, torna sull'ultima cifra q b -> r ⊔ L # cancella l'ultima cifra r b -> t ⊔ L # cancella la penultima cifra r ▷ -> z ▷ R # l'input aveva una sola cifra t b -> h b S # è rimasta almeno una cifra: fine t ▷ -> z ▷ R # non è rimasto niente… z ⊔ -> h 0 S # …quindi scrive 0