Histoire de l'ordinateur

Machines de Turing et théorie de la calculabilité

Machines de Turing et théorie de la calculabilité

La machine de Turing est la construction théorique centrale en informatique. La machine de Turing est un modèle mathématique abstrait de calcul. L'utilisation de machines de Turing permet d'expliquer ce qu'est le calcul en délimitant ce qu'on appelle les « fonctions calculables."

Les premières recherches d'Alan Turing sur la logique se sont concentrées sur un célèbre problème non résolu connu sous le nom de Entscheidungsproblem. Le Entscheidungsproblem (grossièrement traduit de l'allemand par le problème de la décision) a été proposé par le philosophe et mathématicien David Hilbert en 1928. Le problème demandait s'il y avait un algorithme qui déciderait de chaque déclaration dans un langage formel.

Un langage formel est un système d'axiomes et de règles d'inférence telles que celles de l'arithmétique ou de la logique du premier ordre. Les axiomes peuvent être n'importe quel symbole, et les règles d'inférence peuvent être n'importe quelle liste de règles pour manipuler ces symboles.  « Décider chaque énoncé » signifiait soit indiquer si l'énoncé était vrai/faux, soit indiquer si l'énoncé était dérivable/dérivable. Le théorème de complétude de Kurt Godel a prouvé qu'un algorithme décidant de la validité équivaut à une procédure efficace décidant de la dérivabilité. L'article d'Alan Turing de 1936 « On Computable Numbers, with an Application to the Entscheidungsproblem », a prouvé un résultat négatif, qu'il était impossible de décider algorithmiquement chaque déclaration dans un système formel.

Alain Turing

Pour prouver un résultat négatif pour le problème Entscheidungs, Turing avait besoin de formaliser la notion d'algorithme. La formalisation d'un algorithme par Turing était un modèle mathématique de calcul qui devint plus tard connu sous le nom de machine de Turing. Une machine de Turing a un ensemble fini d'états dans lesquels la machine peut être. La machine de Turing a une bande infiniment longue qui est divisée en carrés. Sur chaque carré de la bande, il y a un symbole tiré d'un ensemble fini de symboles. A tout moment du calcul, la machine de Turing lit le symbole sur un carré de la bande. La machine de Turing peut remplacer ce symbole par un autre symbole et se déplacer vers le carré à droite ou le carré à gauche. L'action de la machine de Turing est automatiquement déterminée par l'état dans lequel se trouve la machine. Une fois que le symbole de remplacement et le déplacement vers un autre carré ont eu lieu, la machine de Turing peut passer à un état différent. Chaque état différent a un ensemble de règles différent sur la façon de remplacer les symboles et dans quelle direction se déplacer.

Une implémentation physique rare de la conception de la machine de Turing (sans bande infinie)

La formulation canonique de la machine de Turing consiste généralement en un alphabet binaire composé exclusivement de 0 et de 1. Cette formulation correspond à l'intuition des programmeurs informatiques modernes, étant donné que tous les ordinateurs modernes utilisent. En fait, les machines de Turing sont neutres par rapport à la taille de l'alphabet de symboles. Une machine de Turing peut également utiliser n'importe quel symbole, qu'il soit numérique ou tiré de tout autre type d'alphabets tels que les symboles picturaux ou l'alphabet latin. Toute formulation de chaque alphabet fini possible est réductible à une machine de Turing binaire.

Les machines de Turing supposent qu'une quantité infinie de mémoire est disponible. Aucune vraie machine physiquement instanciée ne peut répondre à cette exigence d'être une machine de Turing. Une machine de Turing suppose également qu'un temps potentiellement infini peut être passé à calculer la fonction. Ces hypothèses ont été faites pour générer la classe la plus vaste de fonctions possibles pour la définition de Turing des fonctions calculables. Les fonctions calculables de Turing sont toutes les fonctions qui peuvent être calculées par une machine de Turing. Beaucoup de ces fonctions calculables peuvent ne jamais être calculables par une machine physiquement instanciée car elles nécessitent trop de temps ou de mémoire.

La thèse de Church-Turing affirme l'équivalence des fonctions calculables et des fonctions qui peuvent être calculées par une machine de Turing. Cela implique que toutes les fonctions non calculables par les machines de Turing ne peuvent pas être calculées par une autre méthode. David Hilbert s'attendait à une réponse positive au problème Entscheidungs, ce qui signifierait que tous les problèmes sont calculables. Le résultat de Turing a conduit à la découverte de nombreux problèmes incalculables.

Le problème incalculable le plus connu est le problème d'arrêt. Le problème de l'arrêt est le problème de la création d'un algorithme qui peut, dans le cas général, décider si un programme informatique avec son entrée s'arrêtera ou continuera indéfiniment. Bien qu'il existe des cas spécifiques où le problème d'arrêt peut être résolu, il ne peut pas être résolu pour chaque programme informatique avec n'importe quelle entrée. Ce résultat a eu des conséquences importantes pour la programmation informatique, car les programmeurs informatiques doivent être conscients de la possibilité de boucles infinies et de l'impossibilité de détecter toutes les boucles infinies avant d'exécuter leurs programmes.

Une autre implication de la machine de Turing est la possibilité de machines de Turing universelles. Implicite dans la conception de Turing est le concept de stockage du programme qui modifie les données à côté des données qu'il modifie. Cela a suggéré la possibilité d'ordinateurs à usage général et reprogrammables. Les ordinateurs modernes sont généralement des machines de Turing universelles dans le sens où ils peuvent être programmés pour exécuter n'importe quel algorithme. Cela a éliminé le besoin de matériel différent pour chaque programme informatique potentiel et a introduit la distinction matériel/logiciel.

Le modèle de la machine de Turing a directement conduit à l'invention des ordinateurs, mais ce n'est pas le même modèle utilisé pour concevoir les ordinateurs modernes. L'architecture von Neumann utilisée comme modèle pour les ordinateurs modernes utilise le concept de programme stocké implicite dans le modèle de machine de Turing, mais diffère du reste du modèle de machine de Turing de plusieurs manières importantes. Les plus grandes différences sont que l'architecture von Neumann n'utilise pas de tête de lecture-écriture et comprend à la place plusieurs registres, une mémoire vive, des bus de données, un petit ensemble d'instructions machine de base et des capacités de traitement de plusieurs bits. L'architecture von Neumann permet également explicitement des périphériques d'entrée et de sortie spécialisés tels que des claviers et des moniteurs.

Le modèle de la machine de Turing a été le premier modèle mathématique de calcul. Il a conduit directement à l'invention des ordinateurs physiques. Les ordinateurs physiques ont tous les mêmes capacités que les machines de Turing, en supposant une mémoire limitée et des contraintes de temps sur le calcul réel. La formulation de Turing joue toujours un rôle central dans l'étude du calcul. Les informaticiens sont toujours activement impliqués dans la recherche si des fonctions spécifiques sont calculables par les machines de Turing.

Tutoriel Bataille pour Wesnoth
The Battle for Wesnoth est l'un des jeux de stratégie open source les plus populaires auxquels vous pouvez jouer en ce moment. Non seulement ce jeu es...
0 A.ré. Didacticiel
Sur les nombreux jeux de stratégie disponibles, 0 A.ré. parvient à se démarquer comme un titre complet et un jeu tactique très profond bien qu'il soit...
Tutoriel Unity3D
Introduction à Unity 3D Unity 3D est un puissant moteur de développement de jeux. C'est une plateforme multiplateforme qui vous permet de créer des je...