Perché il modello di automi finito non è abbastanza?
Mentre altre risposte hanno già menzionato molti aspetti rilevanti, ritengo che il forte vantaggio delle macchine Turing rispetto agli automi finiti sia la separazione di dati e programma . Ciò consente di analizzare un programma abbastanza finito e fare dichiarazioni su come quel programma gestirà input diversi, senza limitare le dimensioni dell'input.
Mentre è teoricamente possibile descrivere sia un computer reale sia qualcosa di simile a una macchina di Turing con nastro finito come una macchina a stati, ciò non è realmente fattibile: il numero di stati è esponenziale nella quantità di memoria della vostra macchina e il finito generale Il formalismo dell'automa statale richiede di elencare esplicitamente le transizioni tra questi stati. Quindi per un automa a stati finiti generale di quelle dimensioni è abbastanza impossibile fare delle deduzioni basate su un elenco completo di tutte le transizioni di stato.
Naturalmente, in un vero computer, le transizioni degli stati non possono avvenire in modo arbitrario. Non esiste alcun comando per scambiare un terzo dei bit in memoria in un singolo passaggio del calcolo. Quindi potresti provare a trovare una specifica più compatta per le transizioni di stato. Qualcosa come la specifica del set di istruzioni della tua architettura. Ovviamente, le architetture di computer reali sono complicate per motivi di prestazioni, quindi è possibile semplificare ulteriormente questo, ad un set di istruzioni molto semplice, che esegue solo piccoli passi usando input e output molto limitati. Alla fine potresti scoprire che la tua architettura assomiglia a qualcosa di simile a un interprete di una macchina Turing: usando alcuni bit di codice di programma e un bit di input, genera un po 'di output e spostati nel tuo codice di programma.
Un'alternativa sarebbe usare gli stati di un automa a stati finiti solo per rappresentare i dati elaborati dal programma, mentre codifica il programma stesso nelle transizioni di stato. Ciò implicherebbe lo stesso problema di come enumerare tutti gli stati e una rappresentazione compatta potrebbe essere di nuovo vicina a ciò che fa una macchina di Turing.
Qual è lo scopo di studiare questi modelli molto più forti rispetto ai computer reali?
Nel complesso, direi che una macchina Turing a nastro finito sarebbe probabilmente un modello migliore per i computer reali. Ma per molte questioni scientifiche, la distinzione tra un nastro finito ma grande e un nastro infinito è irrilevante, quindi solo rivendicare un nastro infinito rende le cose più facili. Per altre domande, la quantità di nastro utilizzata è al centro della domanda, ma il modello consente facilmente di parlare della quantità di utilizzo del nastro senza la seccatura di specificare cosa succede se il calcolo si esaurisce.