Une description instantanée d’une machine est un triplet (u, q, v): l’état courant de la machine est q, le
contenu de la bande à gauche de la tête de lecture est u, le contenu à droite (y compris le symbole pointé par
la tête de lecture) est v.
Un pas de calcul, noté (u, q, xv)`(u0, q, v0), est défini par:
si δ(q, x)=(q0, x0, L),u=u0y, v0=yx0v
si δ(q, x)=(q0, x0, S),u=u0, v0=x0v
si δ(q, x)=(q0, x0, R),u=ux0, v0=v
Un calcul (u, q, xv)`∗(u0, q, v0)est une suite de pas de calculs.
Un calcul réussi pour l’entrée uest un calcul (, q0, u)`∗(u0, q, v0)avec qun état final.
Le langage accepté par la machine Mest l’ensemble L(M)des mots pour lesquels il existe un calcul réussi.
Remarque: on peut supposer que la machine Ms’arrête dès qu’elle atteint un état final. Donc, si un mot
est accepté, la machine s’arrête sur l’entrée u. Par contre, si un mot n’est pas accepté, le calcul peut être infini.
Si la machine Ms’arrête pour toute entrée, on dit qu’elle décide le langage L(M).
4 Vocabulaire
4.1 Langages récursivement énumérables, langages récursifs
Définition 2 Un langage est dit récursivement énumérable (r.e.) si il est accepté par une machine de Turing.
Il est dit récursif, si il est décidé par une machine de Turing, i.e. reconnu par une machine de Turing qui
s’arrête pour toute entrée.
On peut réécrire cette définition en utilisant un modèle d’algorithme quelconque:
Définition 3 Un langage est dit récursivement énumérable (r.e.) si il existe un semi-algorithme qui prend en
entrée un mot uet s’arrête et sort “oui” si le mot est dans L, boucle ou sort “Non” si un’est pas dans L. Il est
dit récursif, si il existe un algorithme qui prend en entrée un mot uet s’arrête et sort “oui” si le mot est dans
L, s’arrête et sort “Non” si un’est pas dans L.
Remarque: Le modèle de machine de Turing -d’algorithme- présenté ici est déterministe; on peut définir
une notion de machine de Turing non déterministe: on aura alors un ensemble d’états intiaux et la fonction de
transition associera à un (q, x)un sous-ensemble de QXΓX{L, S, R}. On peut montrer que les deux modèles
ont la même puissance de reconnaissance.
4.2 La notion de décidabilité
Rappel: A une propriété P, on peut associer le langage (des représentations pour un codage donné) des objets
vérifiant la propriété.
Définition 4 Une propriété est dite décidable si le langage associé est récursif; elle est dite indécidable sinon.
On peut parler de propriété semi-décidable si le langage associé est récursivement énumérable.
Exercice: Comparez le cardinal de l’ensemble des programmes dans un langage donné et celui de l’ensemble
des langages sur un alphabet donné? Qu’en déduire?
4.3 La notion de calculabilité
On peut voir une machine de Turing -ou tout modèle de calcul- non seulement comme un reconnaisseur mais
aussi comme un "calculateur", en considérant la sortie comme le contenu de la bande à la fin du calcul.
Définition 5 Une fonction est dite ("Turing-")calculable si elle peut être calculée par une machine de Turing
ou un algorithme, i.e. il existe une machine -un algorithme- qui pour toute valeur de son domaine, s’arrête et
la valeur calculée correspond bien à la valeur de la fonction, et pour toute valeur hors du domaine soit s’arrête
dans un état "erreur", soit ne s’arrête pas.
3
5 La machine Universelle et un exemple de langage r.e. non récursif
On peut coder la définition d’une machine de Turing comme un mot.
Une machine universelle de Turing est une machine qui accepte en entrée le code d’une machine de Turing
Met une donnée det qui simule (interprète) cette machine Msur la donnée d.
Le langage accepté par cette Machine est donc récursivement énumérable mais non récursif par l’indécidabilité
du problème de l’arrêt.
6 D’un modèle à l’autre
Il existe de nombreux autres modèles de calcul. Par exemple, la RAM est un modèle des machines séquentielles
de Von Neumann qui "correspond assez bien à la réalité". Une RAM dispose d’un nombre fini fixé de registres
et d’un nombre non borné de mots de mémoire, chacun pouvant contenir un entier quelconque. La donnée de la
machine peut être vue comme un programme en langage machine: on dispose des instructions élémentaires sur
les entiers, du test, et le contrôle se fait via des états ou des "étiquettes". La RAM, contrairement à la machine
de Turing qui est à accès séquentiel, est une machine à accès direct. On peut simuler une RAM par une Machine
de Turing et vice-versa; de plus, cette simulation peut se faire de façon relativement efficace, puisqu’elle peut se
faire polynomialement: i.e. une RAM de complexité temporelle t(n)et spatiale s(n)≤t(n)peut être simulée
par une machine de Turing de complexité t4(n).
Remarque: si les modèles sont équivalents au niveau de l’expressivité -un modèle peut en simuler un autre
et vice-versa-, ils ne le sont pas forcément au niveau de la complexité. En effet, si les modèles classiques de
machines séquentielles sont polynomialement équivalents: - donc par exemple, un algorithme peut être dit
polynomial sans que l’on précise le modèle (classique) de calcul-, le modèle récent des ordinateurs quantiques
est peut-être “d’une certaine façon” plus rapide.
7 Comment prouver qu’une propriété est indécidable?
Il y a de nombreux exemples de problèmes qu’on ne peut résoudre par algorithme; les preuves sont souvent
de deux types: soit "directes" en supposant la décidabilité et en conduisant à un paradoxe en utilisant des
techniques de diagonalisation (cf ci-dessus), soit, -plus fréquemment- par réduction: on sait déjà qu’on ne peut
pas trouver d’algorithme pour Truc; on montre que si on en avait un pour Machin, on en aurait un pour Truc;
donc on ne peut pas trouver d’algorithme pour Machin! Un peu plus formellement:
Définition 6 Soient deux propriétés P1et P2et les langages L1et L2associés (resp. sur Σ1,Σ2). On dit que
P1se réduit en P2si il existe une fonction totale calculable red de Σ∗
1dans Σ∗
2telle que uest dans L1Ssi red(u)
est dans L2.
Donc si P1se réduit en P2et si L2est récursif, L1est récursif: en effet, si L2est récursif, il existe un
algorithme Aqui décide si uest dans L2: comme red est calculable, il existe un algorithme qui décide si red(u)
est dans L2, i.e. si uest dans L1.
C’est la notion de réduction vue dans le cadre de NP mais sans contrainte sur sa complexité! Si P1se réduit
en P2, d’une certaine façon P1est plus "facile" que P2: si il existe un algorithme pour décider P2, il y en a
un pour P1; si il n’y en a pas pour décider P1, il n’y en a pas pour P2. Voici quelques exemples classiques de
propriétés indécidables; il n’existe pas d’algorithme pour "décider":
. si, étant donnés k,u1, ..., uket v1, ..., vk, il existe n > 0,i1, ..., intels que ui1...uin=vi1...vin. C’est le célèbre
problème de POST.
. si une grammaire algébrique engendre tous les mots (sur un alphabet donné), si deux grammaires algébriques
engendrent le même langage.
. si deux programmes sont équivalents.
. si une équation diophantienne ( une équation de la forme P(x1, ..., xn)=0avec Ppolynôme à plusieurs
variables à coefficients entiers) a une solution entière (c’est le célèbre 10ème problème de Hilbert auquel
a répondu Yuri Matiyasevich en 1970 ).
4