• Aucun résultat trouvé

Complexité algorithmique

N/A
N/A
Protected

Academic year: 2022

Partager "Complexité algorithmique"

Copied!
168
0
0

Texte intégral

(1)

Complexité algorithmique

Université de Toulouse

Année 2018/2019

1 / 65

(2)

Problèmes algorithmiques

Problèmes algorithmiques 2 / 65

(3)

Codage

Un objet informatique est codé par une suite de caractères appelé mot.

Alphabet Ensemble fini (par exemple : B={0,1} est l’alphabet binaire, A={a,b,c, . . . ,z} un alphabet à 26 lettres.) Mot Suite finie d’éléments de Aon le note u=u1u2. . .un et n

est la longueur du mot u, notée|u|.

Mot vide Le mot vide est noté ε.

Problèmes algorithmiques Notion de Codage 3 / 65

(4)

Exemples de codage

Exemples usuels :

entiers codés enbinaire(l’entier 12 sera coder 1100) ;

rationnels : le numérateur et le dénominateur sont séparé par un symbole spécial (43 sera coder 100#11) ;

matrices: liste de coefficients séparés par des délimiteurs ; graphes : matice d’adjacence ;

polynôme: liste des coefficients séparés par des délimiteurs...

Exemples moins usuels :

entiers codés enunaire(l’entier 5 sera coder 11111) ;

unpolynôme de degréd codé par la liste des valeurs qu’il prend sur les entiers de 0 àd.

Problèmes algorithmiques Notion de Codage 4 / 65

(5)

Codage d’un couple

On aura régulièrement besoin de parler de codage d’un couple (ou d’un n-uplets) de mots. Soitx,y ∈ A, il y a plusieurs façon de coder (x,y) :

Si l’alphabet peut être augmenter :

I (x,y)peut être coder par le motx#y sur l’alphabetA ∪ {#} la taille est alors|x|+|y|+1 ;

I on peut obtenir la taille|x|+|y|en doublant l’alphabet (par exemple si x=aabety =babb on code(x,y)paraabBABB.

Si l’alphabet ne peut pas être augmenter (par exempleA={0,1}) :

I six=x1x2. . .xn ety =y1. . .ym alors(x,y)est codé par x10x20x30. . .0xn1y1. . .ym

Le codage de(x,y)est de taille 2|x|+|y|.

I pour un codage plus compact on code la taillet =t1t2. . .tk dex en binaire et(x,y)est codé part10t20t30. . .0tk1xy. Le codage de(x,y) est de taille|x|+|y|+2blog(1+|x|)c.

Problèmes algorithmiques Notion de Codage 5 / 65

(6)

Définition : Problèmes

Problème

Un problème P est composé d’uneentrée(ouinstance) et d’une question ou d’une tâche à réaliser dont la sortie est codée par un mot.

P :A → B

Lorsque la sortie est{true,false} on à unproblème de décision.

Tri

Entrée : une liste d’entiers l Tâche : trier l par ordre croissant Primalité (Prime)

Entrée : un entier N Question : N est il premier ?

Problèmes algorithmiques Notion de Problèmes 6 / 65

(7)

Exemples de problèmes

Longueur de chemin

Entrée : Un graphe orienté G = (V,E)et deux sommets s ett Tâche : Donner la longueur du plus court chemin entres et t

(éventuellement ∞) Accessibilité

Entrée : Un graphe orienté G = (V,E)et deux sommets s ett Question : Existe-t-il un chemin reliant s àt?

Plusieurs codages possibles de G = (V,E) :

on code n le nombre de sommets puis les marrêtes comme un couple de sommet : '(2m+1)log(n+1) bits ;

On code n le nombre de sommets puis la matrice d’adjacence : 'log(n+1) +n2.

Problèmes algorithmiques Notion de Problèmes 7 / 65

(8)

Problèmes de décision vs langages

Définitons : Langage

Un langage L sur un alphabetAest un ensemble de mot.

Un langage L ⊂ A définit le problème de décision dont les instances positives sont exactement les mots de L.

Dans la suite, nous étudierons les problèmes de décisions mais il est souvent possible de passer d’un problème de décision à un problème dévaluation.

Exemple : Pour "trouver le plus petit diviseur non trivial deN", on met en place un algorithme pour résoudre le problème de décision ”existe-t-il un diviseur de N inférieur àk" puis on approche la valeur par dichotomie.

Problèmes algorithmiques Notion de Problèmes 8 / 65

(9)

Des problèmes non-calculables, ça existe !

Combien de mots binaires y a-t-il ?

Autant que des entiers positifs (N={0,1,2, . . .}). On dit que l’ensemble{0,1} estdénombrable.

Les mots binaires peuvent être énumérés, par exemple : 0,1,00,01,10,11,000, . . .

Combien de programmes/algorithmes existe-t-il ?

On peut coder chaque programmeP par un mot en binaire

wP ∈ {0,1}, il suffit de choisir son codage préféré. Ensuite, on peut énumérer les programmes, en énumérant les mots {0,1} représentant des programmes.

L’ensemble des programmes est doncdénombrableégalement

Combien de fonctions f :N→N existe-t-il ?

Autant que des nombres réels (ensemblenon-dénombrable).

Proposition

Il existe des fonctions f :N→Nnon-calculables.

Problèmes algorithmiques Notion de Problèmes 9 / 65

(10)

Des problèmes non-calculables, ça existe !

Combien de mots binaires y a-t-il ?

Autant que des entiers positifs (N={0,1,2, . . .}). On dit que l’ensemble{0,1} estdénombrable.

Les mots binaires peuvent être énumérés, par exemple : 0,1,00,01,10,11,000, . . .

Combien de programmes/algorithmes existe-t-il ?

On peut coder chaque programmeP par un mot en binaire

wP ∈ {0,1}, il suffit de choisir son codage préféré. Ensuite, on peut énumérer les programmes, en énumérant les mots {0,1} représentant des programmes.

L’ensemble des programmes est doncdénombrableégalement

Combien de fonctions f :N→N existe-t-il ?

Autant que des nombres réels (ensemblenon-dénombrable).

Proposition

Il existe des fonctions f :N→Nnon-calculables.

Problèmes algorithmiques Notion de Problèmes 9 / 65

(11)

Des problèmes non-calculables, ça existe !

Combien de mots binaires y a-t-il ?

Autant que des entiers positifs (N={0,1,2, . . .}). On dit que l’ensemble{0,1} estdénombrable.

Les mots binaires peuvent être énumérés, par exemple : 0,1,00,01,10,11,000, . . .

Combien de programmes/algorithmes existe-t-il ?

On peut coder chaque programmeP par un mot en binaire

wP ∈ {0,1}, il suffit de choisir son codage préféré. Ensuite, on peut énumérer les programmes, en énumérant les mots {0,1} représentant des programmes.

L’ensemble des programmes est doncdénombrableégalement Combien de fonctions f :N→N existe-t-il ?

Autant que des nombres réels (ensemblenon-dénombrable).

Proposition

Il existe des fonctions f :N→Nnon-calculables.

Problèmes algorithmiques Notion de Problèmes 9 / 65

(12)

Des problèmes non-calculables, ça existe !

Combien de mots binaires y a-t-il ?

Autant que des entiers positifs (N={0,1,2, . . .}). On dit que l’ensemble{0,1} estdénombrable.

Les mots binaires peuvent être énumérés, par exemple : 0,1,00,01,10,11,000, . . .

Combien de programmes/algorithmes existe-t-il ? On peut coder chaque programmeP par un mot en binaire

wP ∈ {0,1}, il suffit de choisir son codage préféré. Ensuite, on peut énumérer les programmes, en énumérant les mots {0,1} représentant des programmes.

L’ensemble des programmes est doncdénombrableégalement

Combien de fonctions f :N→N existe-t-il ?

Autant que des nombres réels (ensemblenon-dénombrable).

Proposition

Il existe des fonctions f :N→Nnon-calculables.

Problèmes algorithmiques Notion de Problèmes 9 / 65

(13)

Des problèmes non-calculables, ça existe !

Combien de mots binaires y a-t-il ?

Autant que des entiers positifs (N={0,1,2, . . .}). On dit que l’ensemble{0,1} estdénombrable.

Les mots binaires peuvent être énumérés, par exemple : 0,1,00,01,10,11,000, . . .

Combien de programmes/algorithmes existe-t-il ? On peut coder chaque programmeP par un mot en binaire

wP ∈ {0,1}, il suffit de choisir son codage préféré. Ensuite, on peut énumérer les programmes, en énumérant les mots {0,1} représentant des programmes.

L’ensemble des programmes est doncdénombrableégalement Combien de fonctions f :N→N existe-t-il ?

Autant que des nombres réels (ensemblenon-dénombrable). Proposition

Il existe des fonctions f :N→Nnon-calculables.

Problèmes algorithmiques Notion de Problèmes 9 / 65

(14)

Des problèmes non-calculables, ça existe !

Combien de mots binaires y a-t-il ?

Autant que des entiers positifs (N={0,1,2, . . .}). On dit que l’ensemble{0,1} estdénombrable.

Les mots binaires peuvent être énumérés, par exemple : 0,1,00,01,10,11,000, . . .

Combien de programmes/algorithmes existe-t-il ? On peut coder chaque programmeP par un mot en binaire

wP ∈ {0,1}, il suffit de choisir son codage préféré. Ensuite, on peut énumérer les programmes, en énumérant les mots {0,1} représentant des programmes.

L’ensemble des programmes est doncdénombrableégalement Combien de fonctions f :N→N existe-t-il ?

Autant que des nombres réels (ensemblenon-dénombrable).

Proposition

Il existe des fonctions f :N→Nnon-calculables.

Problèmes algorithmiques Notion de Problèmes 9 / 65

(15)

Des problèmes non-calculables, ça existe !

Combien de mots binaires y a-t-il ?

Autant que des entiers positifs (N={0,1,2, . . .}). On dit que l’ensemble{0,1} estdénombrable.

Les mots binaires peuvent être énumérés, par exemple : 0,1,00,01,10,11,000, . . .

Combien de programmes/algorithmes existe-t-il ? On peut coder chaque programmeP par un mot en binaire

wP ∈ {0,1}, il suffit de choisir son codage préféré. Ensuite, on peut énumérer les programmes, en énumérant les mots {0,1} représentant des programmes.

L’ensemble des programmes est doncdénombrableégalement Combien de fonctions f :N→N existe-t-il ?

Autant que des nombres réels (ensemblenon-dénombrable).

Proposition

Il existe des fonctions f :N→Nnon-calculables.

Problèmes algorithmiques Notion de Problèmes 9 / 65

(16)

Modèles de calculs

Modèles de calculs 10 / 65

(17)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF q0

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . . . .

q0

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(18)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q1

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 . . .

q1

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(19)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q1

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 1 . . .

q1

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(20)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q2

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 10 1 . . .

q2

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(21)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF q0

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 10 11 . . .

q0

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(22)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q1

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 101 11 . . .

q1

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(23)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q2

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 101 110 . . .

q2

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(24)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q2

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 101 110 1 . . .

q2

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(25)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q2

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 101 1101 1 . . .

q2

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(26)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF q0

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1011 1101 1 . . .

q0

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(27)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q1

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 1011 1101 1 . . .

q1

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(28)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q2

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 10110 1101 1 . . .

q2

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(29)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF q0

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 10110 11011 1 . . .

q0

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(30)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q1

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 101101 11011 1 . . .

q1

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(31)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q2

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 101101 110110 1 . . .

q2

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(32)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF q0

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 101101 110110 11 . . .

q0

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(33)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q1

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 101101 1101101 11 . . .

q1

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(34)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q2

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 101101 1101101 110 . . .

q2

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(35)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

q2

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 101101 1101101 110 1 . . .

q2

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(36)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF q0

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 101101 1101101 1101 1 . . .

q0

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0.

Modèles de calculs Modèles de calculs 11 / 65

(37)

Calcul d’une machine de Turing

Unemachine de TuringMest définit par :

Q : un nombre fini d’état ; q0: l’état initial ;

qF : l’état final ; Aun alphabet fini ; ] /∈ Aun symbole blanc δ:Q× A →Q× A × {←,→}

une fonction de transition.

q0

q1

q2

qF

qF

0/],1, 1,1,

0/],1,

1,0,

0/],1, 1,1,

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

. . . 1 101101 1101101 1101 1 . . .

qF

Soit un ruban R ∈ΓZ, la tête est dans la positioni ∈Zet l’étatq ∈Q. La machine de Turing réalise la transition δ(q,Ri) = (q0,a, ), elle écrit donc a à la position i, ce déplace à la positioni+et rentre dans l’état q0. Cette machine s’arête après 20 étapes de calculs et visiter 5 cases.

Modèles de calculs Modèles de calculs 11 / 65

(38)

Quelques remarques

Le nombre d’états d’une machine de Turing est fini : un ordinateur a un nombre fini de registres.

La bande représente la mémoire de la machine. Elle est infinie : sur un ordinateur, on peut ajouter des périphériques mémoire (disques. . . ) de façon quasi-illimitée.

L’accès à la mémoire est séquentiel : la machine peut bouger sa tête à droite ou à gauche d’une case à chaque étape.

Un compilateur peut être vu comme une machine de Turing universelle

Modèles de calculs Modèles de calculs 12 / 65

(39)

Exemples de machines de Turing

Machine qui effectuewhile(true).

Machine qui efface son entrée et s’arrête.

Machine qui accepte 01

Machine qui accepte {a2n;n≥0}.

Machine qui accepte {anbn;n≥0}.

Machine qui accepte {anbncn;n≥0}.

Machine qui accepte {ww;w ∈ A}.

Machine qui interprête son entrée comme un entier n, le remplace par bn2cet s’arrête.

Machine qui effectue l’incrément en binaire.

Machine qui effectue l’addition de deux entiers en unaire.

Machine qui effectue la multiplication de deux entiers en unaire.

Modèles de calculs Modèles de calculs 13 / 65

(40)

Modèles de calculs Modèles de calculs 14 / 65

(41)

Thèse de Church-Turing

Il existe de nombreux autres modèles équivalent : Machine de Turing sur l’alphabet{0,1}

Machine de Turing àk rubans Automate à deux piles

Machine RAM

Fonctions récursives primitives et non primitives...

Proposition

Tout programme écrit dans un langage composé de variables entièresxi (en nombre non borné), d’opération d’affectation ←, d’addition +, de

multiplication ×, de tests d’égalité= et d’inégalité≤, d’instruction conditionnelles Si...alors...Sinon...et de bouclestant que, peut être simulé par une machine de Turing.

Modèles de calculs Modèles de calculs 15 / 65

(42)

Thèse de Church-Turing

Il existe de nombreux autres modèles équivalent : Machine de Turing sur l’alphabet{0,1}

Machine de Turing àk rubans Automate à deux piles

Machine RAM

Fonctions récursives primitives et non primitives...

Proposition

Tout programme écrit dans un langage composé de variables entièresxi (en nombre non borné), d’opération d’affectation ←, d’addition +, de

multiplication ×, de tests d’égalité= et d’inégalité≤, d’instruction conditionnellesSi...alors...Sinon...et de boucles tant que, peut être simulé par une machine de Turing.

Modèles de calculs Modèles de calculs 15 / 65

(43)

Problèmes indécidables

Problèmes indécidables 16 / 65

(44)

Problème de l’arrêt

Problème de l’arrêt (Halt)

Entrée : Un programme Met une entrée x

Question : Est ce que l’exécution deMsur x s’arrête ? Langage associé :Halt={hM,xi:M s’arrête sur l’entréex} Théorème (Turing 1937)

Le problème de l’arrêt est indécidable (mais semi-décidable).

Problèmes indécidables Théorème de l’arrêt 17 / 65

(45)

Problème de l’arrêt

Problème de l’arrêt (Halt)

Entrée : Un programme Met une entrée x

Question : Est ce que l’exécution deMsur x s’arrête ? Langage associé :Halt={hM,xi:M s’arrête sur l’entréex} Théorème (Turing 1937)

Le problème de l’arrêt est indécidable (mais semi-décidable).

Supposons qu’un programmeSuperProgrésolve le problème :

SuperProg(P,w) =

®

"yes" siP(w) s’arrête

"no" sinon

Considérons le programme :Bug(P) =

®

"yes" siSuperProg(P,P)="no"

fait une boucle sinon

Problèmes indécidables Théorème de l’arrêt 17 / 65

(46)

Problème de l’arrêt

Problème de l’arrêt (Halt)

Entrée : Un programme Met une entrée x

Question : Est ce que l’exécution deMsur x s’arrête ? Langage associé :Halt={hM,xi:M s’arrête sur l’entréex} Théorème (Turing 1937)

Le problème de l’arrêt est indécidable (mais semi-décidable).

Supposons qu’un programmeSuperProgrésolve le problème :

SuperProg(P,w) =

®

"yes" siP(w) s’arrête

"no" sinon

Considérons le programme :Bug(P) =

®

"yes" siSuperProg(P,P)="no"

fait une boucle sinon

Bug(Bug)="yes"⇐⇒SuperProg(Bug,Bug)="no"⇐⇒Bug(Bug) ne s’arrête pas

Problèmes indécidables Théorème de l’arrêt 17 / 65

(47)

Problème de l’arrêt

Problème de l’arrêt (Halt)

Entrée : Un programme Met une entrée x

Question : Est ce que l’exécution deMsur x s’arrête ? Langage associé :Halt={hM,xi:M s’arrête sur l’entréex} Théorème (Turing 1937)

Le problème de l’arrêt est indécidable (mais semi-décidable).

Problème de l’arrêt sur l’entrée vide (Halt∅) Entrée : Un programme M

Question : Est ce que l’exécution deMsur s’arrête sur l’entrée vide ? Langage associé :Halt∅={hMi:Ms’arrête sur l’entrée ∅}

Théorème (Turing 1937)

Le problème de l’arrêt sur l’entrée vide est indécidable.

On prouve ce théorème en réduisant au probème de la halte.

Problèmes indécidables Théorème de l’arrêt 17 / 65

(48)

Notion de réduction

Réduction

Soient L ⊂ A etL0 ⊂ B deux langages. On dit queLse réduit àL0, noté L ≤mL0, s’il existe une fonction calculable totale f :A → B telle que

x ∈ L ⇐⇒f(x)∈ L0

Proposition

m est un préordre sur l’ensemble des langages SiL ≤mL0 et L0 décidable alorsL est décidable.

SiL ≤mL0 et L indécidable alorsL est indécidable.

Application :

Halt≤mHalt∅ Donc Halt∅ est indécidable.

Problèmes indécidables Théorème de l’arrêt 18 / 65

(49)

Quelques problèmes indécidables sur les programmes

HALT: étant donnés un programmeP et un entier n, est-ce que P s’arrête surn?

HALT : étant donné un programme P, est-ce que P s’arrête sur 0 ? UTILE : étant donnés un programmeP et une instructionI, est-ce que P utilise l’instructionI sur l’entrée 0 ?

HALT : étant donné un programme P, est-ce que P s’arrête sur au moins une entrée ?

HALT : étant donné un programme P, est-ce que P s’arrête sur toute entrée ?

EQUIV : étant donnés deux programmesP1 etP2, est-ce queP1 et P2 acceptent les mêmes mots ?

Remarques : Les 4 premières questions sontsemi-décidables, les deux dernières ne le sont pas.

Problèmes indécidables Théorème de l’arrêt 19 / 65

(50)

Deux problèmes décidables sur les programmes

Problème de l’arrêt borné (HaltExp)

Entrée : Un programme M, une entrée x et un entierk codé en binaire

Question : Est ce que l’exécution deMsur x s’arrête en k étapes ?

Problème des valeurs bornées

Entrée : Un programme M, une entrée x et un entierk codé en binaire

Question : Est ce que l’exécution deMsur x avant que la taille des variables dépassent la valeur k?

Problèmes indécidables Théorème de l’arrêt 20 / 65

(51)

Problème du domino

Jeu de tuile Un pavage associé

Problème du domino

Etant donné un jeu de tuile P, est ce qu’il est possible de paver le plan ?

Problèmes indécidables Théorème de l’arrêt 21 / 65

(52)

Problème du domino

Jeu de tuile Un pavage associé

Problème du domino

Etant donné un jeu de tuile P, est ce qu’il est possible de paver le plan ?

Problèmes indécidables Théorème de l’arrêt 21 / 65

(53)

Problème du domino

Jeu de tuile Un pavage associé

Problème du domino

Etant donné un jeu de tuile P, est ce qu’il est possible de paver le plan ?

Problèmes indécidables Théorème de l’arrêt 21 / 65

Références

Documents relatifs

plus à droite Diode Lampe Bouton poussoir ouvertM. Diode Moteur

courriers = 48 heurs. marge Intervalle du temps entre deux opération, qui permet d’observer un retard d’exécution de la premier opération. - la déférence entre le délai

Vous aurez aussi besoin d'un chier image de votre choix que vous copierez dans le même dossier que votre programme, par exemple forty-licks.png dans ce dossier.. [IMAGINEPP_ROOT] est

Dans un chier corde.h, écrivez une structure Corde, comprenant un tableau de float (les valeurs y des points) et le nombre d'intervalles n4. Dans corde.cpp, implémentez des

Dans le chier diagramme.h, écrivez la structure Diagramme avec 3 champs : n (le nombre d'automates, un entier), nmax (taille maximum du diagramme) et un tableau d'automates6.

[r]

Programmer une fonction décidant, de façon approchée après un nombre maximum d'itérations, si un complexe appartient à M.. Dessiner ces points d'une couleur intermédiaire entre noir

Le but de l’exercice demandé est de générer et de dessiner tous les chemins possibles entre deux points en utilisant une fonction récursive.. 1.2