1 La notion d`algorithme 2 Un exemple introductif mais fondamental

UFR IEEA
AAC- Cours
2012–2013
Master1 d’Informatique
S.Tison
Calculabilité, Décidabilité: quelques notions élémentaires
2012: l’année Turing
Alan Turing, mathématicien britannique est né le 23 juin 2012. Il a eu un rôle
essentiel dans la formalisation de la notion d’algorithme et de calculabilité. Dans son
article "On computable numbers, with an application to the entscheidungsproblem",
paru en 1936, il formalise la notion de calculabilité en définissant les "computing
machines", et répond au problème posé par Hilbert, Cet article est considéré comme
fondateur de la science informatique. Alan Turing, visionnaire, mort en 1954, s’est
illustré également durant la seconde guerre avec ses travaux pour décoder les codes
Enigma. Il a travaillé sur les premiers ordinateurs et a posé la question fondamentale
de l’aptitude d’un ordinateur à penser en proposant le test de Turing, il a entrepris
sur ses travaux sur la morphogénèse, ...
Une question fondamentale se pose naturellement, quand on est informaticien : Que peut-on “calculer par
ordinateur"? Quels sont les problèmes qu’on peut résoudre par algorithme? Cette question, étudiée bien avant
l’existence de l’informatique, comme par exemple par Hilbert et son célèbre "Entscheidungsproblem" (début du
20ème siècle) soulève une question préliminaire: Qu’est-ce qu’un algorithme?
1 La notion d’algorithme
Algorithme(dictionnaire): procédé de calcul mis en œuvre pour obtenir un résultat par un nombre fini d’applications
de règles.
Algorithme(étymologie supposée): tiré de Al-Khowarizmi (mathématicien du 9eme siécle après JC)
Algorithme( D. Knuth, The art of computer programming, vol. 1): ensemble fini de règles qui donne une suite
d’opérations pour résoudre un certain type de problèmes; un algorithme a cinq particularités importantes:
Finitude: un algorithme doit toujours terminer en un nombre fini d’étapes.
Il est défini: chaque pas d’algorithme doit être défini précisément.
Entrée: un algorithme a 0 ou plusieurs entrées, "prises" dans des ensembles spécifiés d’objets.
Sortie: un algorithme a 0 ou plusieurs sorties, i.e. quantités qui sont en relation de façon spécifiée avec
les entrées.
Effectivité: chaque opération doit être suffisamment basique pour pouvoir être exécutée en un temps fini
par un homme utilisant... un crayon et un papier.
De nombreux chercheurs, mathématiciens, logiciens, informaticiens ont proposé des modèles de la notion
d’algorithme ou de calcul: machines à registres, machines de Turing, λ-calcul, systèmes de Post, fonctions
récursives, ... Il a été prouvé que tous ces modèles sont équivalents du point de vue de leur expressivité: ce qu’on
peut "calculer" dans un modèle, peut l’être dans un autre. De plus Church a émis la thèse généralement acceptée
-Thèse de Church-Turing- , selon laquelle il existe une notion intrinsèque d’algorithme qui correspond à la
notion intuitive d’algorithme ( tout du moins pour les algorithmes séquentiels). On peut prendre, par exemple,
comme modèle d’algorithme un programme C, JAVA, HASKELL, ou un algorithme écrit en pseudo-langage...
qui s’arrête pour toute donnée du domaine (mais attention, sans limitation de mémoire de la machine utilisée)
ou pour toute instance du problème et calcule la réponse attendue.
2 Un exemple introductif mais fondamental: l’impossible quête de la ter-
minaison des programmes
Prenons donc pour modèle d’algorithme les programmes écrits dans un pseudo-langage (ou prenez votre langage
de programmation préféré!). Supposons qu’il existe un programme ARRET(Pr,Do: mot) qui sort "vrai" si Pr
est un programme correct qui s’arrête pour la donnée Do, qui sort "faux" sinon. On pourrait alors écrire:
procedure PARADOXE(Pr: mot) is
debut
si ARRET(Pr,Pr)
alors boucle; --while true do null; end while;
sinon null;
fin PARADOXE;
Que donne l’exécution de PARADOXE sur le texte de PARADOXE?: si elle s’arrête, alors elle boucle et
réciproquement: il y a contradiction! L’hypothèse d’existence du programme ARRET est donc fausse: il n’existe
pas de programme qui permette de tester l’arrêt d’un programme sur une donnée: l’arrêt d’un programme est
dit indécidable.
Quelques remarques:
Le raisonnement utilisé qui aboutit à une contradiction est un raisonnement diagonal classique et est
basé sur le fait d’autoréférence: un programme peut être appliqué à lui-même. (Ici, tout est “mot”). On
peut rapprocher ce raisonnement du paradoxe du menteur: "Ceci est un mensonge" ou du barbier de
Russel: “le barbier ne rase que ceux qui ne se rasent pas eux-mêmes; se rase-t-il?” Russel a aussi émis un
célèbre paradoxe en théorie des ensembles: Soit A={x/x 6∈ x},l’ensemble des ensembles xtels que x
n’appartient pas à x: est-ce que Aappartient à A?
On peut bien sûr lancer le programme sur la donnée: si ça s’arrête, on le vérifiera ... au bout d’un
certain temps. Si ça ne s’arrête pas, on ne sait pas si le calcul est en cours et va s’arrêter ou si il boucle
indéfiniment! Le problème est semi-décidable.
Le résultat est important! On peut montrer aussi que l’arrêt uniforme d’un programme (i.e. le pro-
gramme s’arrête pour toute donnée) est indécidable. On peut en déduire facilement qu’on ne peut décider
l’équivalence de deux programmes et donc qu’on ne peut décider en général si un programme vérifie
une spécification donnée, ou encore qu’on ne peut décider si le programme ne provoquera pas d’erreur à
l’exécution. Plus généralement le théorème de Rice dit en quelque sorte que pour aucune propriété in-
téressante (non triviale) portant sur le résultat final d’un programme, il n’existe d’algorithme permettant,
au vu du code source d’un programme, de décider s’il satisfait cette propriété.
Attention, cela ne signifie pas qu’on ne peut pas prouver l’arrêt d’un programme donné mais juste qu’il
n’y a pas de méthode "automatique" uniforme qui marche à tous les coups: cela justifie d’une certaine
façon la difficulté éprouvée à prouver l’arrêt d’un programme...
3 Un modèle de calcul: Les machines de Turing
Le modèle des machines de Turing a été introduit par Alan Turing en 1936 et a de nombreuses variantes. Le
modèle de base a un contrôle fini, une bande infinie à droite, une tête de lecture/écriture. Le contenu de la
bande est limité par un symbole spécial, le blanc: le dernier symbole du contenu de la bande est le symbole
non-blanc le plus à droite. A chaque pas de calcul, la lettre pointée par la tête de lecture est lue: en fonction de
celle-ci et de l’état de contrôle, la lettre peut être modifiée et la tête de lecture peut se décaler d’un caractère
à gauche ou à droite ou rester stationnaire. L’état de contrôle peut aussi être modifié. Si il est final, l’entrée
initiale est acceptée.
Définition 1 Une machine de Turing Mest la donnée de:
.Qun ensemble (fini) d’états
.Γun alphabet fini de bande
.B, un symbole de Γ, le "blanc"
.Σ, un sous-ensemble de Γ− {B}: l’alphabet d’entrée
2
.δune fonction de Q×Γdans Q×Γ× {L, S, R}, la fonction de transition.
.q0, un état de Q, l’état initial
.F, un sous-ensemble de Q, – les états "finaux"
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 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 l’ensemble des couples (machine, donnée) tels que la machine
s’arrête sur la donnée: il est 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 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
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !