Sei sulla pagina 1di 2

Relazione Franco Mario Macchina di Turing

Descrizione Algoritmo Utilizzato


- Spostamento A, B in nastri
L’algoritmo è stato definito su una Macchina di Turing a 4 nastri, di cui il primo contiene l’input.
Esso parte da uno stato iniziale q0 in cui viene letto il carattere iniziale “f” simboleggiante appunto
la funzione, e iniziando quindi lo spostamento/shift dei due numeri, A e B, per cui bisognerà fare la
sottrazione in seguito; lo spostamento avviene sequenzialmente, per cui in q1 viene spostato A nel
secondo nastro T2, in q2 viene spostato B nel terzo nastro mentre C verrá momentaneamente
ignorato per poi utilizzarlo in seguito per il confronto finale.
- Sottrazione chiusa
Una volta ritrovatosi sull’= nel primo nastro e alla fine del secondo e terzo nastro, inizia la
sottrazione prendendo cifra per cifra verso sinistra.
La sottrazione viene effettuata principalmente in q4, q5 e q6:
in q4, vengono realizzati i calcoli che non hanno bisogno di resto, tramite transizioni ricorsive
in q5 e q6 viene invece effettuato il calcolo per il resto e si ritorna in q4 ogni volta.
La sottrazione viene effettuata anche nel caso in cui A < B, ma in questo caso viene interrotta
l’operazione appena si nota che le cifre di A sono minori rispetto a quelle di B, e di seguito in q7
viene cancellata la sottrazione finora calcolata, e viene sostituita con 0, cioè il risultato giusto.
Nel caso in cui invece la sottrazione è avvenuta con successo, elimino gli 0 extra (caso esempio:
01000) dal risultato in q13, e dopo di che vado in q8 per assicurare il risultato della sottrazione in
tutti i casi.
Dopo di che, controllo anche gli 0 extra in C per effettuare il confronto senza errori.
- Confronto
In q9 inizia il confronto, in cui ricorsivamente si controlla cifra per cifra l’uguaglianza tra il primo
(dalla prima cifra di C) e ultimo nastro (prima cifra del risultato della sottrazione).
Nel caso in cui, tutte le cifre sono corrispondenti, si va in q11 per segnalare il confronto positivo e
assegnare come risultato nel primo nastro “1”.
Invece, se le cifre non sono corrispondenti, si va in q10 per segnalare il confronto negativo e
assegnare come risultato nel primo nastro “0”.
- Accettazione
La macchina accetta con il primo nastro sulla posizione in cui è presente l’ “=”.

Calcolo Complessità Temporale Computazionale


Se definiamo i 4 nastri con T1, T2, T3 e T4, la macchina realizzata compie n passi per copiare l’input
sui nastri e quindi per questo si ha complessità di tempo pari a O(n).
Definiamo i tre numeri come A, B, e C.
Sui tre nastri, la macchina compie n-4 + 1(non considerando i caratteri aggiuntivi M ( ) = e
considerando il blank), quindi complessità O(n).
La complessità di tutta la macchina sarà quindi O(n) + O(n) = O(2n) = O(n) (questo perché siamo in
una macchina a multi nastro).

Calcolo Complessità Spaziale Computazionale


Se s(n) sono le celle della nostra macchina, la macchina deve scrivere su s(n) – n di esse almeno
una volta (visto che n celle sono già occupate dall’input)
Visto che abbiamo una macchina multi nastro, e quindi possiamo scrivere su al più di una cella
ogni passo, abbiamo che, di conseguenza, TEMPO(f(n)) ⊆ SPAZIO(f(n))
(Ove TEMPO(f(n)) è complessità temporale e SPAZIO(f(n)) è complessità spaziale.

Potrebbero piacerti anche