12 luglio 2018
Rispondi prima di leggere la spiegazione. I termini sottolineati offrono un aiuto rapido.
- 1
Se , PH collassa a un livello finito?
- 2
?
- 3
È falso che ?
- 4
?
- 5
È vero che ?
- 6
CLIQUE si può risolvere in ?
- 7
?
Programmare una MdT deterministica che, dato un valore binario, restituisca
| # | 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 in complemento a due, mantenendo lo stesso numero di bit. Da destra, lascia invariati gli 0 finali e il primo 1, poi inverti tutti i bit che restano a sinistra.
Questo equivale a invertire tutti i bit e sommare 1: il riporto ripristina gli 0 finali e il primo 1, mentre i bit a sinistra restano invertiti.
| commento | |||
|---|---|---|---|
| fine input | |||
| copia gli 0 finali | |||
| copia il primo 1, poi inverte | |||
| , quindi | |||
| inverte | |||
| inverte | |||
| fine |
Traccia su input 0110 (= 6):
▷ 0 1 1 0 [⊔] s : fine input, torno indietro
▷ 0 1 1 [0] ⊔ c : 0 finale: lo copio
▷ 0 1 [1] 0 ⊔ c : primo 1: lo copio, da qui inverto
▷ 0 [1] 1 0 ⊔ i : 1 → 0
▷ [0] 0 1 0 ⊔ i : 0 → 1
[▷] 1 0 1 0 ⊔ i : sono all'inizio: mi fermo (h)
risultato 1010 = −6 ✔
Per , il numero più negativo, la macchina restituisce stesso, perché non si può scrivere con lo stesso numero di bit.
Nella tabella sono sottintese le righe del blocco «vai in fondo»: e . La macchina va in fondo all'input e, sulla prima cella vuota, comincia la parte propria di ogni esercizio.
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 ⊔ -> c ⊔ L # fine input c 0 -> c 0 L # copia gli 0 finali c 1 -> i 1 L # copia il primo 1, poi inverte c ▷ -> h ▷ R # x = 0, quindi −x = 0 i 0 -> i 1 L # inverte i 1 -> i 0 L i ▷ -> h ▷ R # fine