111 | Marquage du début du tableau |
0100101000100 | (1, 1, 1, b, R) * |
11 | Séparation entre 2 règles |
010101000100 | (1, 0, 1, b, R) * |
11 | Séparation entre 2 règles |
01000101000100 | (1, b, 1, b, R) * |
111 | Marquage de la fin du tableau |
* (Etat présent, Symbole présent, Nouvel état, Nouveau symbole, Mouvement) |
États | |
Le nombre de zeros est le numéro de l'état. | |
Symboles | |
0 | 0 |
00 | 1 |
000 | b |
Mouvement | |
0 | L |
00 | R |
Z | Marquage du début du tableau |
(1, 1, 1, b, R)* | 001x1x001xbxR |
Y | Séparation entre 2 règles |
(1, 0, 1, b, R)* | 001x0x001xbxR |
Y | Séparation entre 2 règles |
(1, b, 1, b, R)* | 001xbx001xbxR |
Z | Marquage de la fin du tableau |
* (Etat présent, Symbole présent, Nouvel état, Nouveau symbole, Mouvement) |
États | |
La valeur décimale du chiffre binaire est le numéro de l'état. | |
Symboles | |
0 | 0 |
1 | 1 |
b | b |
Mouvement | |
L | L |
R | R |
Contrairement à la machine à états finis de la semaine passée, il est ici possible de généraliser la machine de Turing pour un nombre arbitraire de jeu de parenthèses. En effet, le ruban d'une machine de Turing est de taille infinie. Une mémoire de taille infinie est donc à disposition sur le ruban.
Il existe plusieurs solutions à ce problème. Une des solutions possibles est l'algorithme suivant :
Attention, à chaque fois qu'une parenthèse est rencontrée, elle doit être marquée pour pas être comptée plusieurs fois.
On peut facilement convertir cet algorithme en une machine de Turing. Les conventions suivantes sont utilisées :
Voici les règles de jeu. Elles reprennent presque littéralement
l'algorithme donné ci-dessus à quelques différences près.
Un état supplémentaire de départ est nécessaire.
(L'état de départ est obligatoirement 1 dans notre applet.)
Il vérifie que l'expression commence avec
un '!', à savoir que l'on se trouve bien au début de l'expression
et s'arrête avec une erreur si ce n'est pas le cas.
Les états 1-3 dans l'algorithme ci-dessus sont donc
représentés par les états 2-4 dans la
machine ci-dessous.
L'état 5 est un état d'arrêt.
Machine de Turing pour la vérification de suites de parenthèses | ||||||
Règle # | Etat courant | Entrée | Etat suivant | Ecrit sur ruban | Mouvement | Commentaire |
1. | 1 | ( | 5 | E | R | État de départ |
2. | 1 | ) | 5 | E | R | |
3. | 1 | X | 5 | E | R | |
4. | 1 | ! | 2 | X | R | |
5. | 2 | ( | 3 | X | R | Cherche ( en allant à droite |
6. | 2 | ) | 5 | 0 | R | |
7. | 2 | X | 2 | X | R | |
8. | 2 | ! | 5 | 1 | L | |
9. | 3 | ( | 3 | ( | R | Cherche ) en allant à droite |
10. | 3 | ) | 4 | X | L | |
11. | 3 | X | 3 | X | R | |
12. | 3 | ! | 5 | 0 | L | |
13. | 4 | ( | 3 | X | R | Cherche ( en allant à gauche |
14. | 4 | ) | 4 | ) | L | |
15. | 4 | X | 4 | X | L | |
16. | 4 | ! | 2 | ! | R |
Décidable | de Décision | |
Halting problem
Vérification qu'un programme A appliqué à une entrée X se termine | non | oui |
Tri d'une liste de chaînes de charactères | oui | non |
Vérification de programme
Vérification qu'un programme A peut résoudre un problème P | non | oui |
Tiling problem
Vérification que l'on peut couvrir à partir d'un nombre fini de différents types de carreaux un espace infini | non | oui |
Nombre premier
Vérification si un nombre est premier ou non | oui | oui |
Problème du voyageur de commerce
Recherche du chemin le plus court reliant N villes (N est un nombre fini) | oui | non |
Il y a quelques remarques que l'on peut faire par
rapport à ce que dit cet étudiant.
Une propriété essentielle du cerveau humain est
la créativité. C'est ce qui entre autre nous distingue d'un ordinateur.
Cette remarque est donc valable. Par contre, il n'est pas entièrement correct de dire
qu'un cerveau est plus puissant qu'un
ordinateur. Par exemple, une tâche très simple
comme approximer 22 / 7 avec une
précision de 10 décimales est une tâche difficile pour l'homme.
La puissance d'un instrument dépend donc toujours
du problème qu'il essaie de résoudre.
Cependant, la puissance de calcul n'est pas la
caractéristique qui distingue l'homme de la machine.
Cela dit, il n'est pas possible de déterminer pour n'importe quel programme s'il converge ou non (halting problem). Le fait de démontrer qu'un programme SPECIFIQUE s'arrête ne suffit pas. La tâche algorithmique est de le déterminer pour n'importe quel programme, soit pour TOUTES LES ENTREES LEGALES. Or il n'existe pas de tel algorithme. Par exemple, on peut facilement montrer que le chiffre 14358 n'est pas une nombre premier, mais cela ne veut pas dire qu'on a résolu le problème algorithmique de dire pour chaque nombre s'il est premier ou non. Similairement, on peut montrer que le programme suivant s'arrête.
x=3 set x=x-2 if x=1 then stopMais on ne peut pas montrer pour n'importe quel programme s'il s'arrête ou non.
Finalement, la déclaration de cet étudiant contient des idées intéressantes, mais globalement, elle n'est pas correcte.
S110x1ZY000x1x111x1x1Y100x1x111x1x1Y110x1x111x1x1Z
La position initiale de la tête de lecture est sur le premier Z.
L'état initial est l'état L toute à gauche sur le graph au tableau.
SBBAxBZY000x1x111x1x1Y100x1x111x1x1Y110x1x111x1x1Z
S1BAxBZY000x1x111x1x1Y100x1x111x1x1Y110x1x111x1x1Z
SBBAxBZYAAAxBxBBBxBxBY100x1x111x1x1Y110x1x111x1x1Z
S1BAxBZYAAAxBxBBBxBxBYB00x1x111x1x1Y110x1x111x1x1Z
Ensuite elle retourne à S sans changement du ruban.
SBBAxBZYAAAxBxBBBxBxBYBAAxBxBBBxBxBY110x1x111x1x1Z
Une machine de copie est l'une des deux machines nécessaires pour construire une machine de Turing universelle. L'autre est une machine de recherche des adresses (address finding machine).