Pourquoi le modèle des automates finis ne suffit-il pas?
Alors que d'autres réponses ont déjà mentionné de nombreux aspects pertinents, je pense que le principal avantage des machines de Turing par rapport aux automates finis est la séparation des données et des programmes . Cela vous permet d'analyser un programme assez fini et de faire des déclarations sur la manière dont ce programme gérera différentes entrées, sans limiter la taille de l'entrée.
Bien qu’il soit théoriquement possible de décrire à la fois un ordinateur réel et quelque chose comme une machine de Turing avec une bande finie en tant que machine à états, cela n’est pas vraiment réalisable: le nombre d’états est exponentiel dans la quantité de mémoire dont dispose votre machine et le nombre fini Le formalisme d'automate d'état vous oblige à lister explicitement les transitions entre ces états. Donc, pour un automate général à états finis de cette taille, il est tout à fait impossible de faire des déductions basées sur une énumération complète de toutes les transitions d’états.
Bien sûr, dans un ordinateur réel, les transitions entre états ne peuvent pas se produire de manière arbitraire. Il n'y a pas de commande pour échanger un tiers des bits en mémoire en une seule étape du calcul. Vous pouvez donc essayer de proposer une spécification plus compacte pour les transitions d’état. Quelque chose comme la spécification du jeu d'instructions de votre architecture. Bien entendu, les architectures informatiques réelles sont complexes pour des raisons de performances. Vous pouvez donc simplifier davantage ce jeu d'instructions très simples, qui effectuent de très petites étapes en utilisant des entrées et des sorties très limitées. En fin de compte, votre architecture ressemblera peut-être à un interpréteur de machine de Turing: en utilisant quelques bits de code de programme et un bit d’entrée, générez un peu de sortie et déplacez-vous dans votre code de programme.
Une solution consisterait à utiliser les états d'un automate à états finis uniquement pour représenter les données en cours de traitement par le programme, tout en codant le programme lui-même dans les transitions d'état. Cela poserait le même problème de énumération de tous les états, et une représentation compacte pourrait à nouveau être proche de celle d’une machine de Turing.
Quel est l'intérêt d'étudier ces modèles beaucoup plus forts en ce qui concerne les ordinateurs réels?
Dans l'ensemble, je dirais qu'une machine de Turing à bande finie serait probablement un meilleur modèle pour les ordinateurs actuels. Mais pour de nombreuses questions scientifiques, la distinction entre une bande finie mais de grande taille et une bande infinie n’est pas pertinente. Il suffit donc de revendiquer une bande infinie pour rendre les choses plus faciles. Pour les autres questions, la quantité de bande utilisée est au cœur de la question, mais le modèle vous permet facilement de parler de la quantité d'utilisation de la bande sans avoir à spécifier précisément ce qui se passe si le calcul est à court de bande.