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 ë .......