Calculabilité, Complexité et Algorithmique

publicité
Calculabilité, Complexité et Algorithmique
Lhouari Nourine
Université Blaise Pascal, CNRS, LIMOS
Janvier, 2013 – Fès maroc
C’est quoi?
2/1
Quels sont les problèmes qu’une machine peut résoudre?
I
Trier un tableau ayant une taille fixée
I
Colorier un graphe
I
Vérifier si un programme en C++ est syntaxiquement correct
I
Vérifier si un programme en C++ est correct !
I
Vérifier si un programme C++ s’arrête indépendament de
l’entrée!
ë Plusieurs problèmes importants en informatique ne sont
résolvables ou traitables sur des machines mécaniques
Quelques obstacles
3/1
1. Taille des ensembles considérés
ëN
ë Le nombre de programmes C++ est infini
2. Peut-on les parcourir?
ë Afficher N, Z, Q.
ë Afficher R
ë Afficher tous les programmes C++
Dans quels domaines se trouvent ces difficultés
4/1
ë Génie Logiciel (Vérification, génération de tests,...)
ë Systèmes à transitions (Composition de web services, Artifacts,
Modèle orienté données)
ë Logique
ë Optimisation combinatoire
Plan du cours
5/1
ë
ë
ë
ë
ë
Ensembles dénombrables (Récursivement Enumérables)
Modèles du calcul
Notion d’algorithme (décidabilité)
Complexité d’un algorithme
Complexité d’un problème
Ensembles dénombrables
ë Deux ensembles A et B ont la même cardinalité, notée A w B
s’il y a une bijection entre A et B.
Quelques exemples :
I
Npair w Nimpair . La bijection est :
f (n) =
I
n
2
N w Npair . La bijection est :
f (n) = 2 ∗ n
I
N w Z. La bijection est :
(
f (n) =
6/1
(1)
n
2
− n+1
2
si n est pair
si n est impair
(2)
(3)
Ensembles dénombrables
Definition
Un ensemble A est dénombrable s’il est fini ou A w N; sinon il est
dit indénombrable.
I
N est dénombrable (puisque N w N).
I
Z est dénombrable (puisque N w Z).
Algorithme 1 : Afficher les entiers
début
i = 0;
tant que 1 faire
Afficher (i);
i = i + 1;
fin
7/1
Ensembles dénombrables
Theorem
Un ensemble A et l’ensemble de ses parties 2A = {B | B ⊆ A}
n’ont pas la même cardinalité, i.e. A 6w 2A .
Proof.
Supposons qu’il y une bijection f : A → 2A .
On définit un ensemble C tel que C = f (a) est violée. Soit
C = {b ∈ A | b 6∈ f (b)}.
C est une image de f . Supposons que C = f (a). Alors
a ∈ C ssi (par definition de C ) a 6∈ f (a) ssi (par C = f (a))
a 6∈ C .
ë Diagonalisation
8/1
Ensembles dénombrables
9/1
I
2N n’est pas dénombrable. Puisque 2N n’est pas fini et
N 6w 2N .
I
R w 2N
I
R w [0, 1]
Questions
10/1
ë Pouquoi la preuve par récurrence marche!!
ë Peut-on toujours faire une preuve par induction?
Construction des ensembles
11/1
ë Comment construire des ensembles? Construction inductive
Eléments de base + règles de construction
ë Exemple de la construction de N:
I
Base : 0 ∈ N
I
Règle : Si n ∈ N alors n + 1 ∈ N
Construction inductive
12/1
Soit L l’ensemble des langages réguliers sur un alphabet Σ.
1. ∈ L
2. ∅ ∈ L
3. Si a ∈ Σ alors a ∈ L
4. Si L1 , L2 ∈ L alors L1 .L2 ∈ L
5. Si L1 , L2 ∈ L alors L1 ∪ L2 ∈ L
6. Si L ∈ L alors L∗ ∈ L
7. Tout langage de L est obtenu par un nombre fini
d’applications des règles précédentes.
Construction inductive
Soit A l’ensemble des arbres binaires.
1. NIL∈ A
2. Si A1 , A2 ∈ A et x un nouveau sommet alors l’arbre obtenu en
mettant A1 et A2 comme fils de la racine x appartient à A.
3. Tout arbre de A est obtenu par un nombre fini d’applications
des règles 1. et 2.
13/1
Construction inductive
14/1
Preuve d’une propriété sur un ensemble construit inductivement :
1. Prouver la propriété pour les éléments de base.
2. Prouver que les règles de construction préservent la propriété.
Questions
15/1
ë C’est quoi calculer?
ë C’est quoi programmer?
Modèles du calcul
16/1
Un modèle du calcul est un ensemble de fonctions de base et des
règles de construction pour définir d’autres fonctions plus
complexes.
Par exemple :
1. Automate d’états fini (Pile, file, arbre,...)
2. Petri nets
3. Machine de Turing (mémoire infini)
4. RAM
5. Fonctions récursives
6. .....
Modèles du calcul : Fonctions récursives
Definition
L’ensemble des fonctions primitives recursives est défini par :
I Les fonctions de base sont:
I
I
I
I
zero : N0 → N, avec zero() = 0.
succ : N → N, avec succ(n) = n + 1.
πik : Nk → N, avec 1 ≤ i ≤ k et πik (a1 , ..., ak ) = ai ,
(a1 , ..., ak ) ∈ Nk .
Règles de Construction.
I
I
Composition : Soient les fonctions primitives récursives
g : Nm → Nn et fi : Nk → N, pour i ∈ [1, m]. Alors la fonction
g (f1 (x1 , ..., xk ), ..., fm (x1 , ..., xk )) est récursive primitive.
Récursion primitive : Soient les fonctions récursives primitives
g : Nk → Nm et h : Nk+m+1 → Nm , k, n, m ∈ N. Alors la
fonction f : Nk+1 → Nm définie par :
−
−
f (→
x , 0) = g (→
x)
−
−
−
f (→
x , y + 1) = h(→
x , y , f (→
x , y ))
17/1
Modéles du calcul : Fonctions récursives
18/1
Soit add : N2 → N avec add (x, y ) = x + y .
add (x, 0) = x = π12 (x, 0)
add (x, y + 1) = (x + y ) + 1 = succ o π33 (x, y , add (x, y ))
Algorithme 2 : add (x, y )
début
r = x;
pour i = 0 à y − 1 faire
r = succ(r );
fin
Modéles du calcul : Fonctions récursives
19/1
Soit moins : N2 → N avec moins(x, y ) = x − y si x > y et 0 sinon.
moins(x, 0) = x = π12 (x, 0)
moins(x, y + 1) = moins(x, y ) − 1 =
pred o π33 (x, y , moins(x, y ))
Algorithme 3 : moins(x, y )
début
r = x;
pour i = 0 à y − 1 faire
r = pred (r );
fin
Modéles du calcul : Fonctions récursives
20/1
Est-ce-que toutes les fonction calculables sont primitives récursives?
Modéles du calcul : Fonctions récursives
21/1
Une autre règle de construction.
I
minimisation : Soit g : Nn+1 → N une fonction récursive.
Alors la fonction f : Nn → N définie par :
−
−
f (→
x ) = µy [g (→
x , y ) = 0]
est récursive.
−
−
ë f (→
x ) est le plus petit y pour lequel g (→
x , y ) = 0 et
→
−
g ( x , z) est définie pour tout z < y .
Algorithme 4 : f (x1 , ..., xk )
début
y = 0;
tant que g (x1 , ..., xk , y ) 6= 0 faire
y = y + 1;
Retourner(y);
fin
Modéles du calcul : Fonctions récursives
1. racine(x) = µy [(y + 1)2 > x)]
2.
(p
(x)
µy [y 2 = x) =
indefini
3.
(
µy [2y = x] =
22/1
si x est un carré parfait
sinon
(4)
si x est pair
sinon
(5)
x
2
indefini
Modéles du calcul : Question
23/1
ë Que peut-on programmer si on enlève Tant que et Répéter de
C++?
Modèles du calcul : Machine de Turing
Une machine de Turing déterministe (MT) est un 7-tuplé
M = (Q, Σ, Γ, δ, q0 , B, F )
24/1
I
Q un ensemble fini d’états.
I
Γ est un ensemble fini de symboles, appelé alphabet du travail.
I
B ∈ Γ, un symbole spécial blanc associé à une case vide.
I
Σ ⊆ Γ − {B} est l’ensemble des symboles avec lesquels les
entrées sont exprimées.
I
q0 ∈ S, l’état initial.
I
F ⊆ Q est l’ensemble des états finaux.
I
δ : Q × Γ → Q × Γ × {←, →} est la fonction de transition.
Modèles du calcul : Machine de Turing
25/1
Opération de base d’un MT. Soit la transition δ(q, a) = (q 0 , a0 , D) :
I
Si la MT est dans l’état q, et le symbole au dessous de la tête
de lecture est a, alors
I
I
I
I
I
L’état est changé par q 0 ,
le symbole en cette position est changé par a0 ,
Si D =→, la tête se déplace à droite d’une position,
Si D =←, la tête se déplace à gauche d’une position,
Une machine de Turing M accepte un mot w écrit dans son
alphabet d’entrée Σ ssi M s’arrête dans un état final.
Modéles du calcul : Machine de Turing
ë Une configuration de la MT peut être décrite par une chaîne de
caractères :
X1 X2 ....Xi−1 qXi ....Xn
q est l’état actuel et la tête lit le ième caractère.
ë Supposons que δ(q, Xi ) = (p, Y , ←) alors la nouvelle
configuration est
X1 X2 ....Xi−1 qXi ....Xn ` X1 X2 ....Xi−2 qXi−1 YXi+1 ....Xn
ë Il ya deux exceptions pour le déplacement à gauche:
1. Si i = 1 : qX1 X2 ....Xn ` qBYX2 ....Xn
2. Si i = n et Y = B : X1 X2 ....Xn−1 qXn ` X1 X2 ....X n − 1qXn−1
26/1
Modèles du calcul : Machine de Turing
Soit la machine de Turing
M = ({q0 , q1 , q2 , q3 , q4 }, {0, 1}, {0, 1, X , Y , B}, δ, q0 , B, {q4 })
Q ×Γ
0
1
X
Y
B
q0
(q1 , X , →)
(q3 , Y , →)
q1
(q1 , 0, →) (q2 , Y , ←)
(q1 , Y , →)
q2
(q2 , 0, ←)
(q0 , X , →) (q2 , Y , ←)
q3
(q3 , Y , →) (q4 , B, →)
q4
La séquence complète de déplacements de M pour le mot 0011 est :
q0 0011 ` Xq1 011 ` X 0q1 11 ` Xq2 0Y 1 ` q2 X 0Y 1 ` Xq0 0Y 1 `
XXq1 Y 1 ` XXYq1 1 ` XXq2 YY ` Xq2 XYY ` XXq0 YY `
XXYq3 Y ` XXYYq3 B ` XXYYBq4 B
27/1
Modèles du calcul : Machine de Turing
ë Langage accepté par une MT
Soit M = (Q, Σ, Γ, δ, q0 , B, F ) une MT.
On note par L(M) = {w ∈ Σ∗ | q0 w `∗ αpβ, p ∈ F , α, β ∈ Γ∗ }.
L’ensemble des langages qu’on peut accepter par une MT est
appelé les langages récursivement énumérables (RE).
28/1
Modèles du calcul : Machine de Turing
I
Un langage L ⊆ Σ∗ est semi-calculable s’il existe une machine
de Turing M telle que l’ensemble des mots sur Σ acceptés est
exactement L.
ë Semi-algorithme ou Semi-décidable ou Récursivement
énumérable
I
L est calculable si de plus M s’arrête sur tous les mots w ∈ Σ∗ .
ë Algorithme ou Décidable ou Récursif
29/1
Modèles du calcul : Machine de Turing non déterministe
30/1
I
La différence entre une MT non-déterministe (NMT) et une
MT déterministe est la fonction de transition :
δ(q, X ) = {(q1 , Y1 , D1 ), ..., (qk , Yk , Dk )}.
I
Une NMT accepte une donnée w s’il existe une séquence de
choix de déplacements qui mène d’un état initial à un état
final.
I
Si MN est une NMT alors il existe une MT MD tel que
L(MN ) = L(MD ).
Complexité d’un algorithme
31/1
Definition
Un algorithme est une séquence d’opérations élémentaires fini,
s’arrête en un temps fini et qui fournit un résultat répondant à un
problème donné.
ë Une opération élémentaire est
I
une transition dans la MT.
I
une opération arithmitique ou logique,... dans le modèle RAM.
Complexité d’un algorithme
32/1
ë La notation O permet une analyse sans tenir compte de facteurs
constants.
ë Les fonctions considérées sont du type : g (n) : N → N.
I
g (n) = O(f (n)), s’il existe deux constantes strictement
positives c et n0 telles que cf (n) est une borne supérieure de
g (n) pour tout n > n0 (ie. g (n) ≤ cf (n), ∀ n > n0 ).
I
g (n) = Ω(f (n)), s’il existe deux constantes strictement
positives c et n0 telles que cf (n) est une borne inférieure de
g (n)pour tout n > n0 (ie. g (n) ≥ cf (n), ∀ n > n0 ).
I
g (n) = Θ(f (n)) si g (n) = O(f (n)) et g (n) = Ω(f (n)).
Complexité d’un algorithme
33/1
Soient A un algorithme ayant une entrée de taille n et g (n) son
temps d’exécution. ALors A est dit
I
logarithmique si g (n) ∈ O(logn).
I
linéaire si g (n) ∈ O(n).
I
quadratique si g (n) ∈ O(n2 ).
I
plynomial si g (n) ∈ O(nk ), k une constante
I
exponentiel si g (n) ∈ O(2n )..
Complexité d’un problème
La théorie de complexité considère que les problèmes de décision.
Probleme (CHEMIN)
Instance : Soient G = (X , E ) un graphe orienté, x, y ∈ X , k un
entier;
Question : Existe-t-il un chemin de x à y de longueur au plus k?
Probleme (HAM)
Instance : Soit G = (X , E ) un graphe non orienté;
Question : G est-il un hamiltonien?
34/1
Complexité d’un problème
Definition
Un problème de décision Q est une fonction de IQ vers {0, 1}, avec
IQ l’ensemble des instances de Q.
35/1
I
Une instance pour le problème CHEMIN est < G , x, y , k >.
I
Langage CHEMIN
L(CHEMIN) = {< G , x, y , k > | G = (X , E ) est un graphe
orienté, x, y ∈ X , k est un entier, et il existe un chemin de x à
y de longueur au plus k}.
Complexité d’un problème
36/1
ë Pourquoi les problèmes de décision alors qu’en pratique sont des
problèmes d’optimisation?
I
Si un problème d’optimisation est facile alors le problème de
décision associé est aussi facile.
I
Si un problème de décision est difficile alors le problème
d’optimisation associé est difficile.
ë La complexité étudie la difficulté des problèmes
Complexité d’un problème
Definition
La classe P est l’ensemble des problèmes de décision qu’on peut
résoudre par un algorithme déterministe en temps polynomial.
37/1
Complexité d’un problème
Definition
La classe NP est l’ensemble des problèmes de décision qu’on peut
résoudre par un algorithme non-déterministe en temps polynomial.
Definition
La classe NP est la classe des problèmes de décision qui peuvent
être vérifiés par un algorithme déterministe polynomial.
38/1
Complexité d’un problème
39/1
ë P ⊆ NP.
ë NP ⊆ P est toujours ouvert.
ë Tout problème de décision dans NP, peut être résolu par un
algorithme déterministe exponentiel.
ë Hypothèse : P 6= NP
Complexité d’un problème
40/1
Une transformation polynomiale d’un problème de décision Q1 en
un problème de décision Q2 , notée Q1 <<p Q2 , est une fonction
f : IQ1 → IQ2 , vérifiant les deux propriétés suivantes :
1. f est calculable en un temps polynomial.
2. Pour tout i ∈ IQ1 , i ∈ L(Q1 ) ssi f (i) ∈ L(Q2 ).
ë La relation <<p est transitive.
ë Quelle est l’intérêt de la transformation polynomial?
Complexité d’un problème
41/1
I
Si Q1 <<p Q2 alors Q2 ∈ P implique Q1 ∈ P.
I
Si Q1 <<p Q2 alors Q1 6∈ P implique Q2 6∈ P.
Algorithme 5 : AQ1 (i ∈ IQ1 )
début
i 0 = f (i);
AQ2 (i 0 );
fin
Complexité d’un problème
ë Deux problèmes de décision Q et Q 0 sont dits équivalents si
Q <<p Q 0 et Q 0 <<p Q.
Probleme (STABLE-MAX)
Instance : Soient G = (X , E ) un graphe non orienté et k un entier;
Question : G contient-il un stable de taille au moins k?
Probleme (CLIQUE-MAX)
Instance : Soient G = (X , E ) un graphe non orienté et k un entier;
Question : G contient-il une clique de taille au moins k?
ë STABLE-MAX et CLIQUE-MAX sont équivalents.
42/1
Complexité d’un problème
43/1
Definition
Un problème Q est dit NP-complet si :
1. Q ∈ NP.
2. Pour tout Q 0 ∈ NP, Q 0 <<p Q.
Q est dit NP-difficile s’il satisfait la seconde condition.
ë La classe NP-complets est donc composée des problèmes
difficiles de la classe NP.
Complexité d’un problème
Property
Un problème NP-complet Q est dit NP-complet si :
1. Q ∈ NP.
2. Q 0 << Q avec Q 0 un problème NP-complet.
ë Quel est le premier problème NP-complet?
Theorem
SAT et 3-SAT sont NP-complets.
44/1
Complexité d’un problème
Theorem
STABLE − MAX et CLIQUE − MAX sont NP-complets.
45/1
Complexité d’un problème
Probleme (ISO-SOUS-GRAPHE)
Instance : Soient G = (X , E ) et H = (Y , F ) deux graphes non
orientés;
Question : Existe-t-il une application φ : Y → X telle que
(y , y 0 ) ∈ F ssi (φ(y ), φ(y 0 )) ∈ E ;
Probleme (LONG-CHEMIN)
Instance : Soient G = (X , E ) et k ≤ |V | un entier positif;
Question : G contient-il un chemin élémentaire ayant au moins k
arêtes. ?
46/1
Complexité d’un problème
47/1
ë Hypothèse : P=NP, P versus NP.
I
On dispose d’un algorithme déterministe (oracle) polynomial
pour tout problème de NP.
ë Peut-on trouver un algorithme déterministe polynomial pour la
version optimisation?
Complexité d’un problème
48/1
ë Exemples.
I
CLIQUE-MAX.
I
LONG-CHEMIN
I
SAT
Ce qu’il faut retenir
49/1
ë La calculabilité est de savoir s’il existe un algorithme pour
rédoudre un problème.
ë La complexité est classer les problèmes suivant la difficulté de
résolution
ë Pourqoui on s’intéresse aux problèmes de décision?
Dans quels domaines se trouvent ces problèmes
50/1
I
Génie Logiciel (Vérification, Tests,...)
I
Web services
I
Logique.
I
Optimisation
Y-a-t-il encore des problèmes intéressants et ouverts
51/1
ë La plupart des instances en pratique ne sont pas difficiles
(Solveur SAT, Cplex,...)
ë Intégration, data-exchange, Privacy, Base de données
incomplètes
ë .......
Téléchargement