la machine de turing - mmteklycee.mmtek.fr/docs/nsi_pre/cha03-machine-turing.pdfdésormais connue...

6
1 La machine de Turing « If a machine is expected to be infallible, it cannot also be intelligent. » Alan Turing I. Les machines à calculer 1 Machine d'Anticythère (87 av J.C.) Elle est considérée comme le premier calculateur analogique antique permettant de calculer des positions astronomiques. C'est un mécanisme de bronze comprenant des dizaines de roues dentées, solidaires et disposées sur plusieurs plans. Il est garni de nombreuses inscriptions grecques. Figure 1. Le fragment principal de la machine d'Anticythère (20 cm) La Pascaline conçue en 1642 par Blaise PASCAL (1623-1662) Elle permettait d'additionner et de soustraire deux nombres d'une façon directe et de faire des multiplications et des divisions par répétitions. Figure 2. Une Pascaline visible au musée des arts et métiers à Paris. 1

Upload: others

Post on 29-Mar-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: La machine de Turing - Mmteklycee.mmtek.fr/docs/nsi_pre/cha03-machine-turing.pdfdésormais connue sous le nom de « machine de Turing », une sorte de ruban avec des cases qui représente

1

La machine de Turing

« If a machine is expected to be infallible, it cannot also be intelligent. » Alan Turing

I. Les machines à calculer1

Machine d'Anticythère (87 av J.C.) Elle est considérée comme le premier calculateur analogique antique permettant de calculer des positions astronomiques. C'est un mécanisme de bronze comprenant des dizaines de roues dentées, solidaires et disposées sur plusieurs plans. Il est garni de nombreuses inscriptions grecques.

Figure 1. Le fragment principal de la machine d'Anticythère ( 20 cm)

La Pascaline conçue en 1642 par Blaise PASCAL (1623-1662) Elle permettait d'additionner et de soustraire deux nombres d'une façon directe et de faire des multiplications et des divisions par répétitions.

Figure 2. Une Pascaline visible au musée des arts et métiers à Paris.

1

Page 2: La machine de Turing - Mmteklycee.mmtek.fr/docs/nsi_pre/cha03-machine-turing.pdfdésormais connue sous le nom de « machine de Turing », une sorte de ruban avec des cases qui représente

Cours de NSI La machine de Turing

2

Charles BABBAGE (1791-1871) La machine analytique Une avancée fondamentale en matière d'automatisation des calculs fut réalisée par Charles Babbage entre 1834 et 1836. Il y définit les principaux concepts sur lesquels reposent les machines informatiques, soit :

- un dispositif d'entrée avec deux lecteurs de cartes perforées (programmes et données) - un organe de commande gérant le transfert des nombres et leur mise en ordre pour le

traitement - un magasin permettant de stocker les résultats intermédiaires ou finaux - un moulin chargé d'exécuter les opérations sur les nombres - trois types d'imprimantes.

Figure 3. Prototype (1871) non terminé de la machine analytique de Babbage, exposée au Science Museum de Londres.

La machine à différences Il présente un modèle de sa machine à différences à la Société royale d'astronomie en 1821. Le but de la machine est de calculer les polynômes en utilisant une méthode de calcul dite méthode différentielle. Il construit sa machine à calculer en exploitant le principe de Basile Bouchon (un Métier à tisser programmé à l'aide de cartes perforées).

Figure 4. Une partie de la machine à différences de Babbage.

L'IBM 601 L'entreprise Computing-Tabulating-Recording Company, le précurseur d'IBM, est fondée le 16 juin 1911. En 1935, IBM commercialise l'IBM 601, un calculateur à relais utilisant des cartes perforées capable de réaliser une multiplication en une seconde. Il en sera vendu 1500 exemplaires essentiellement pour les marchés scientifiques et comptables.

Page 3: La machine de Turing - Mmteklycee.mmtek.fr/docs/nsi_pre/cha03-machine-turing.pdfdésormais connue sous le nom de « machine de Turing », une sorte de ruban avec des cases qui représente

Cours de NSI La machine de Turing

3

Figure 5. L'IBM 601

II. Alan Turing

1912 (23 juin) Il naît à Londres. Très tôt, il montre des aptitudes exceptionnelles

pour les mathématiques.

1936 (28 mai) Il formule dans un article le fonctionnement de la machine

désormais connue sous le nom de « machine de Turing », une sorte de ruban

avec des cases qui représente la mémoire d'un ordinateur. Cette machine, dite

universelle, permet de réaliser des calculs en déplaçant le ruban et en changeant

les valeurs des cases. Les ordinateurs ne fonctionnent pas selon le principe de la

machine de Turing, qui est un modèle simplifié minimum, destiné à préciser la

notion de programme.

1938 Il est recruté par le gouvernement anglais pour participer au décodage de la machine Enigma utilisée par

l’armée allemande pour transmettre ses messages. Ses travaux sont décisifs dans la victoire des Alliés.

L’approche de Turing ne consiste plus à deviner un réglage choisi parmi 159 milliards de réglages disponibles,

mais d’avoir une logique fondée sur la connaissance du fonctionnement interne de la machine Enigma et de

s’aider des imprudences des chiffreurs allemands, pour en déduire le réglage de toutes les machines Enigma

d’un réseau pour la journée. Turing rédige les spécifications fonctionnelles d’une nouvelle « bombe », appelée

bombe de Turing, cette machine électromécanique est capable d'effectuer quotidiennement le travail de dix

mille personnes.

1950 Il a étudié l'intelligence artificielle et travaillé sur les premiers ordinateurs. Il a élaboré le « test de

Turing », une méthode qui permet de vérifier qu'un programme est capable de simuler les réponses d'un être

humain sans que celui-ci se rende compte qu'il parle avec un ordinateur. À l'heure actuelle, aucun ordinateur

n'est capable de tromper un être humain (c'est-à-dire qu'aucun ne passe le test de Turing) mais certains

programmes arrivent plus ou moins bien à simuler des conversations.

1952 Son homosexualité est découverte. Il est condamné à la castration chimique.

Page 4: La machine de Turing - Mmteklycee.mmtek.fr/docs/nsi_pre/cha03-machine-turing.pdfdésormais connue sous le nom de « machine de Turing », une sorte de ruban avec des cases qui représente

Cours de NSI La machine de Turing

4

1954 (7 juin) Il se suicide à Wilmslow en croquant une pomme plongée dans le cyanure, en référence à

Blanche-Neige, qu’il adorait, mais aussi probablement pour cacher à sa mère qu’il s’est donné la mort.

III. La machine de Turing2

C’est une machine abstraite qu’Alan Turing a inventée pour expliquer la notion de « procédure mécanique » : on parle d’algorithme. Cette machine est la plus élémentaire possible destinée à mettre en œuvre ces mécanismes de calcul, numériques ou symboliques, comme le font notamment les ordinateurs. Lorsqu’Alan Turing décrit sa machine dans un article en 1936, les ordinateurs n’existent pas encore. La machine imaginée par Turing est constituée de 3 parties :

Un ruban, de longueur infinie, découpée en cases. Dans une case, elle peut écrire un symbole et un seul. Les symboles sont en nombre fini. Pour que sa machine fonctionne comme une machine à calculer en binaire, Turing envisage le cas particulier où les symboles utilisés sont 0 et 1.

Un état, à un instant donné.

Une série de règles, indiquant à la machine que faire quand elle lit tel symbole sur le ruban et quand elle est dans tel état. Ces actions sont : modification éventuelle de la case courante et de l'état, ainsi qu'un éventuel déplacement du curseur sur la bande. La machine ne peut lire qu’une seule case à la fois, de même elle écrit dans une seule case et décale le ruban d’une seule case vers la gauche ou vers la droite.

On peut écrire des règles pour faire reconnaître une chaîne à la machine (celle-ci échouant en cas de non-reconnaissance), ou bien faire calculer la machine, par exemple une simple addition.

A. L'application3

Travail à faire

1. Découvrir le fonctionnement.

Aller à l'adresse : https://files.inria.fr/interstices/machine-turing/index.html

Tester l'exécution des 6 programmes avec différents nombres binaires.

L'entrée du programme est une liste de symboles binaires, écrits sur le ruban, matérialisé par les cases successives (en bas de l’animation). Une fois le calcul effectué, c’est sur ce ruban que sera écrit le résultat du calcul, la sortie du programme. À chaque instant, le ruban mémorise l’état du calcul. Voilà la forme la plus simple de mémoire mécanique ! À chaque programme correspond une description sous forme de table (à droite de l’animation). Chacune des lignes de cette table est associée à un état et spécifie les actions à effectuer quand la machine est dans cet état, en fonction du symbole présent sous la tête de lecture. Ces actions peuvent être l’écriture d’un symbole (ici un 0 ou un 1) et le déplacement du ruban d’une case à droite ou à gauche. La ligne spécifie également le nouvel état après l’exécution des actions. La machine s’arrête quand un état marqué comme final est atteint.

2 interstices.info

3 inria.fr

Page 5: La machine de Turing - Mmteklycee.mmtek.fr/docs/nsi_pre/cha03-machine-turing.pdfdésormais connue sous le nom de « machine de Turing », une sorte de ruban avec des cases qui représente

Cours de NSI La machine de Turing

5

Turing a également prévu que les programmes, tels qu’ils sont décrits par la table, puissent eux aussi être codés en binaire et inscrits sur un deuxième ruban. Chaque code correspond alors à une instruction possible. Le calcul se déroule automatiquement en passant d’une instruction à une autre. Comme il est possible d’inscrire sur ce deuxième ruban toutes sortes de programmes et de les exécuter, ce mécanisme va pouvoir faire tout ce qu’un ordinateur peut faire. On parle de machine de Turing universelle.

B. En python4

Travail à faire

2. La machine de Turing en Python.

Enregistrer les fichiers turing_machine.py et prog.py dans votre espace de travail.

Ouvrer le fichier prog.py avec Notepad++.

Exécuter le et comparer le programme « Ajouter 1 » de l'application avec celui-ci.

Quelques explications

Dans le programme python, Il n'y a pas d'état « e1 ». Le programme ne commence pas comme l'application sur la première case vide de droite mais sur la première casse non-vide de droite. Une version exacte de l'application pourrait être faite en ajoutant une case vide à droite du nombre de départ (input = " 1111 ").

Figure 6. Position de départ de l'application (en haut) et

du programme Python (en bas).

Les règles, dans le programme Python, sont écrites dans un dictionnaire (transition_function). Les clés et les valeurs de ce dictionnaire sont des tuples. Elles contiennent respectivement l'état et la valeur lue pour l'une et l'état, la valeur à écrire et le déplacement à effectuer pour l'autre.

figure 7. Une des règles.

Les déplacements sont différents. Dans l'application, le déplacement gauche-droite gérer le déplacement du ruban (la tête de lecture ne bouge pas) alors que dans le programme Python c'est la tête de lecture qui bouge. Dans le Programme Python il existe un déplacement supplémentaire « N » qui correspond à une absence de déplacement.

Travail à faire

3. Utilisation du programme.

Modifier le programme Python pour effectuer les 5 autres machines de Turing de l'application.

4 www.python-course.eu

Page 6: La machine de Turing - Mmteklycee.mmtek.fr/docs/nsi_pre/cha03-machine-turing.pdfdésormais connue sous le nom de « machine de Turing », une sorte de ruban avec des cases qui représente

Cours de NSI La machine de Turing

6

Travail à faire

4. Exercices.

Ecrire une machine de Turing qui permet de vérifier si un nombre est paire ou impaire (on utilisera l'état final).

Ecrire une machine de Turing qui permet de multiplier un nombre par 3 (11b).