Les fornisce una risposta concisa e corretta: le definizioni matematiche sono il più concise possibile e includere esplicitamente un nastro infinito in una definizione di una macchina di Turing renderebbe la sua definizione molto meno concisa, quindi non lo facciamo.
Questo non risponde alla domanda: perché ? Come può la definizione escludere il nastro infinito quando ne abbiamo bisogno?
La risposta: noi no. In un certo senso, le macchine di Turing in realtà non richiedono nastri infiniti e la loro definizione lo rende chiaro.
Per definizione, il movimento di una macchina Turing porta la macchina da una configurazione all'altra; una configurazione include una stringa finita , che consideriamo un frammento finito di nastro scritto. Ciascuna mossa sposta la testina di una posizione o sovrascrive il simbolo sotto la testina. Tuttavia - e questo è essenziale per il suo funzionamento:
- B
- possiamo farlo all'infinito spesso .
nn
Un modo per riformulare questo è dire: la macchina opera su un nastro infinito, interamente riempito di spazi vuoti, ad eccezione di un frammento finito su cui si trova la sua testina. Questo è ciò che dice la maggior parte delle spiegazioni.
Un altro modo di riformulare questo è dire: la macchina funziona su un nastro finito, esteso con spazi vuoti ogni volta che la sua testa si sposta dal nastro alle due estremità.
Questi sono entrambi modi validi per concettualizzare il funzionamento della macchina: in entrambi i casi, se in realtà una macchina funzionasse in quel modo, implementerebbe correttamente una macchina di Turing.
Se tutto ciò che ti interessa è insegnare agli studenti come funzionano le macchine di Turing, probabilmente non importa quale concettualizzazione scegli.
Tuttavia, penso che la prima concettualizzazione sia un errore, per due motivi:
- Non è realistico . Non possiamo effettivamente costruire una macchina con un nastro infinito. Siamo in grado di costruire una macchina con un nastro finita esteso su richiesta.
- È controintuitivo. Non pensiamo che le macchine che svolgono attività arbitrariamente spesso contengano una quantità infinita di risorse. Ad esempio, non pensiamo che una fotocopiatrice contenga una quantità infinita di carta da copia. Le macchine di Turing modellano l'attività dell'informatica. Modellano cosa accadrebbe se sostituissimo un computer (che, al momento della sua invenzione, era una donna che eseguiva calcoli su carta) con una macchina in grado di eseguire calcoli programmabili arbitrari. Non pensiamo a quella donna come a contenere una quantità infinita di carta. Piuttosto, supponiamo che le verrà fornita tutta la quantità di carta di cui ha bisogno, e consideriamo un fallimento nel farlo come un fallimento dell'ambiente, piuttosto che dire che una donna del genere non può esistere. Perché non fare lo stesso per la macchina?
- Invita conclusioni fuorvianti. L'ho visto molto. Per esempio:
- La gente dice che le macchine di Turing non possono essere effettivamente costruite, mentre le macchine a stati finiti possono farlo. Bene, non possiamo costruire arbitrarie macchine a stati finiti più grandi di quanto non possiamo fornire quantità arbitrarie di nastro a una macchina di Turing.
- La gente dice che le macchine di Turing non modellano correttamente i computer, mentre le macchine a stati finiti lo fanno. Questo serve a fare un punto importante: se tutto ciò che ci interessa è usare una macchina per decidere le lingue di input, allora un computer che funziona solo sulla sua memoria interna (fissa) può implementare completamente qualsiasi macchina a stati finiti fino a una certa dimensione, mentre non può implementare completamente la maggior parte delle macchine Turing, poiché rimarrà a corto di memoria interna per molte di esse. Tuttavia, questo è spesso generalizzato dicendo: i computer sono macchine a stati finiti, il che è fuorviante:
- Non dipinge un'immagine realistica della maggior parte della programmazione per computer. In effetti, la programmazione del flusso di dati è in realtà basata su macchine a stati finiti, ma la programmazione imperativa tradizionale non lo è; utilizza programmi molto più vicini alle istanze di macchine di Turing.
- In pratica, i computer interagiscono anche con fonti esterne di input, output e storage di dimensioni non fisse.
- Le macchine di Turing non dovrebbero in primo luogo modellare i computer; modellano il calcolo arbitrario.
Riassumendo: l'idea delle macchine di Turing che usano o contengono un nastro infinito serve a enfatizzare un importante punto tecnico, ma non è necessariamente il modo più intuitivo di pensare alle macchine di Turing e invita alcune conclusioni errate. Usare con cautela.