CSI 3505 / Automne 2005: Conception et Analyse des Algorithmes I. Plan du Cours Introduction (Chapitre 1) Techniques de résolution: Diviser pour régner (Chapitre 2) Techniques de résolution: Programmation dynamique(Chapitre 3) Techniques de résolution: Algorithmes voraces(Chapitre 4) Introduction a la théorie de Complexité du calcul(Chapitre 9) 5/5/2019
CSI 3505 La théorie de Complexité Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets Definitions 5/5/2019
CSI 3505 La théorie de Complexité Les problèmes qui vont nous servir d’exemple: Sac à dos Commis voyageur Coloration d'un graphe Problème de Clique Definitions Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets 5/5/2019
CSI 3505 Le commis voyageur: Soit un graphe complet et pondéré (poids non négatifs) à n sommets, trouver un tour de poids minimal. Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets 5/5/2019
CSI 3505 Coloration d'un graphe Soit G = (V,E) un graphe orienté dont on veut colorer les sommets avec la condition suivante: Deux sommets reliés par une arête, ont deux couleurs différentes. Problème: Étant donnée un graphe G, trouver un algorithme qui colore proprement G et qui utilise le nombre minimum possible de couleurs 5/5/2019
Étant donnée un graphe G, trouver une clique de taille maximal Problème “Clique”: C est une Clique dans un graphe G si toutes les paires de sommets dans C sont adjacentes. Étant donnée un graphe G, trouver une clique de taille maximal G contient une clique de taille 4 5/5/2019
CSI 3505 les problèmes de décisions On ne va considèrer que: les problèmes de décisions Un problème est dit de décision si pour tout input, l’unique output possible est de type: “OUI” ou “NON” Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets 5/5/2019
CSI 3505 les problèmes de décisions Tout problème d’optimisation à un problème correspondant de décision Il suffit d’ajouter une borne K sur la valeur à optimiser et changer la question: Existe-t-il une solution dont la valeur est au plus K (Pour les problèmes de minimisation) Existe-t-il une solution dont la valeur est au moins K (Pour les problèmes de maximisation) 5/5/2019
Sac à dos version décision Optimisation: Trouver le profit maximal qu’il est possible d’obtenir en choisissant un sous-ensemble d’objets avec la contrainte d’un cout à ne pas dépasser Décision: Soit P un nombre positif. Est-il possible de choisir un sous-ensemble d’objets dont le profit total sera au moins P en respectant la contrainte de cout ? 5/5/2019
Le commis voyageur: version décision Optimisation : Trouver un tour de poids minimal sur le graphe G Décision: Soit d un nombre positif. Est-ce que le graphe G possède un tour de poids d ? 5/5/2019
Coloration d'un graphe version décision Optimisation: Étant donnée un graphe G, trouver un algorithme qui colore proprement G et qui utilise le nombre minimum possible de couleurs Décision: Étant données un graphe G et un entier positif k, est-ce qu'il existe une coloration qui utilise au plus k couleurs ? 5/5/2019
Clique version décision Optimisation: Trouver une clique de taille maximale dans un graphe G Décision: Étant donné un nombre positif k dans un graphe G , existe-t-il une clique de taille k dans G ? 5/5/2019
CSI 3505 Déf: Algorithme Polynomial Un algorithme est polynomial si sa complexité dans le pire cas est inférieure ou égale à (p(n)), où p(n) est un polynôme en n. (n est la taille de l'input). Ex. (n2) oui (n4) oui (nn) non (n!) non (n200000) oui 5/5/2019
CSI 3505 Déf: ensemble P P est l’ensemble des problèmes de décisions résolvable par un algorithme polynomial Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets 5/5/2019
CSI 3505 Déf: Algorithme efficace Un algorithme est efficace (polynomial) si sa complexité dans le pire cas est O(p(n)) ou n est la taille de l’input du problème. efficace = polynomial 5/5/2019
CSI 3505 Déf: ensemble P Donc, P est l’ensemble de tous les problèmes de décisions résolvables par un algorithme efficace 5/5/2019
CSI 3505 La théorie de Complexité Personne n’a jamais trouvé un algorithme efficace pour résoudre nos quatre exemples: Sac à dos Commis voyageur Coloration des graphes Clique Personne n’a jamais démontré qu’il n’existe pas d’algorithme efficace pour résoudre nos quatre exemples 5/5/2019
Donc, personne ne sait si nos quatre problèmes examples se trouvent dans l’ensemble P 5/5/2019
CSI 3505 Déf : problème tractable Un problème est tractable si l'on connaît un algorithme polynomial pour le résoudre. Il existe de nombreux problèmes pour lesquels aucun algorithme polynomial n'est connu. Pour certains d'entre eux, des algorithmes polynomiaux existent mais aucun n'a encore été découvert. Pour d'autres, nous avons une forte impression qu'aucun algorithme polynomial ne peut être trouvé. 5/5/2019
CSI 3505 La théorie de Complexité Un problème est non tractable s’il n’y a aucun algorithme polynomial qui le résout. 5/5/2019
Si le problème est non tractable: ne sert a rien d’essayer de chercher un algorithme efficace. Changer la stratégie en utilisant des approximations, heuristiques, etc. Quelque fois on a besoin de résoudre des versions restreintes du problème. La version restreinte pourrait être tractable 5/5/2019
On à donc 3 types de pblèmes: Problèmes non tractables. Problèmes dans P ???? (nos examples) La plupart des problèmes en informatique sont du 1er ou du 2ième type 5/5/2019
On à donc 3 types de pblèmes: Problèmes non tractables. 5/5/2019
CSI 3505 La théorie de Complexité Non décidable problème impossible à résoudre : il ne peut jamais exister un algorithme. Turing a montré qu’il existe des problèmes qu’on ne pourra jamais résoudre: non décidable Exemple: Problème d’arrêt 5/5/2019
CSI 3505 La théorie de Complexité Problème d’arrêt: Algorithm P Donnée X P va-t-il s’ arrêter pour la donnée X OUI P(X) NON (ne s’arrêtera jamais) 5/5/2019
Algorithme non-déterministe 1) Guessing (partie non-déterministe) retourne un string S pour une instance I donnée du problème 2) Vérification (partie déterministe) retourne oui/non pour l'instance I et le string S (ou bien ne s'arrête pas) Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets 5/5/2019
CSI 3505 sac à dos : vérification Algorithme de vérification pour le problème du sac à dos : Vérification si un ensemble d’objet représente une solution: Vérifier que le poid total est plus petit que W. Vérifier que le profit total est au moin K. Il y a un algorithme polynomial qui fait cette vérification 5/5/2019
CSI 3505 commis voyageur : vérification Algorithme de vérification pour le problème du commis voyageur : Vérification si un ensemble de sommets représente une solution: Vérifier que c’est un cycle. Vérifier que sa longueur est au plus K. Il y a un algorithme polynomial qui fait cette vérification 5/5/2019
CSI 3505 Coloration : vérification Algorithme de vérification pour le problème COLORATION : Vérification si une coloration des sommets représente une solution: Vérifier que le nombre de couleurs utilisées est au plus K. Pour chaque arête (u, v) dans le graphe, Vérifier que u et v sont colorés différemment. Il y a un algorithme polynomial qui fait cette vérification. 5/5/2019
CSI 3505 Clique : vérification Algorithme de vérification pour le problème Clique : Vérification si un ensemble de sommets représente une solution: Vérifier que le nombre de sommet dans l’ensemble est au moins K. Pour que chaque sommet est relié à chaque autre sommet Il y a un algorithme polynomial qui fait cette vérification. 5/5/2019
Théorème: P NP CSI 3505 Classe NP Classe NP: classe des problèmes pour lesquels on est capable de vérifier dans un temps polynomial si S (une proposition de solution) est ou non une solution. Théorème: P NP Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets 5/5/2019
Donc, nos quatre problèmes examples se trouvent dans l’ensemble NP 5/5/2019
CSI 3505 La théorie de Complexité Est ce que P = NP? Une question ouverte (personne n’a pu la résoudre) 5/5/2019
Transformations polynomiales Réduction des problèmes: Problème P1 Input X Problème P2, Input T(X) Transformation T (algorithme) La transformation doit se faire en temps polynomial La réponse correcte de P1 pour x est ‘OUI’ ssi la réponse correcte de P2 pour T(x) est aussi ‘OUI’ Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets 5/5/2019
Réduction de problème Si la fonction T peut être calculer en temps polynomial, P1 est polynomialement réductible en P2 ( P1 P2) P1 P2 :s’il existe une fonction T qui transforme tout input x de P1 en T(x), un input de P2, de telle sorte que la réponse correcte de P1 pour x soit "oui" si et seulement si la réponse correcte de P2 pour T(x) est aussi "oui". 5/5/2019
CSI 3505 La théorie de Complexité P1 P2 P2 est au moins, aussi difficile à résoudre que P1 La composition de la fonction T et de l'algorithme résolvant P2 nous donne un algorithme pour résoudre P1. T Algorithme pour P2 T(x) input x (input pour P1) Réponse OUI ou NON 5/5/2019
CSI 3505 La théorie de Complexité Exemple d’un problème qui peut s'exprimer en termes de coloration d'un graphe: Un graphe dont les sommets sont tous les cours, et on met une arête entre u et v s’il existe au moins un étudiant qui prends les cours u et v en même temps. CSI 3505 Phy 1500 ENG 1000 ENG 3300 CSI 3503 5/5/2019
CSI 3505 NP-complets La classe des problèmes NP-complets est l’ensemble de tous les problèmes M vérifiant les propriétés suivantes: M est dans NP. Il existe une algorithme polynomial pour résoudre M ssi pour tout problème Q dans la classe NP il existe un algorithme polynomial pour résoudre Q. Besoin de savoir koi ca veut dire: Problème de décisions La classe des problèmes P Algorithmes non déterministes La classe des problèmes NP Le concept de transformations polynomiales La classe des problèmes NP-complets 5/5/2019
CSI 3505 La théorie de Complexité Prouver qu’un problème Q est NP-complet ? Prouver que Q est dans NP Trouver un problème NP-complet R et trouver une réduction polynomial de Q à R 5/5/2019
Quelqu’un voit un problème ? NP-complet Quelqu’un voit un problème ? 5/5/2019
Forme normale conjonctive Définition: Forme normale conjonctive (FNC) Littéral = variable booléenne ou sa négation (x ou x) Clause = littéral ou une disjonction de littéraux () Une expression booléenne est en Forme normale conjonctive (FNC) si elle est une clause ou une conjonction () de clauses (x1 x2 x3 ) (x1 x4 ) (x2 x3 x4 ) 5/5/2019
Problème de Satisfaisabilité sat, k-sat Problème de Satisfaisabilité Une expression booléenne est satisfaisable s'il existe (au moins) une assignation de valeurs a ses variables booléenne qui la rende vraie SAT: Problème de décider, étant donnée une expressions booléenne, si elle est satisfaisable K-SAT: Problème de décider, étant donnée une expressions booléenne avec k littéraux, si elle est satisfaisable 5/5/2019
CSI 3505 La théorie de Complexité Theorème de Cook: SAT-FNC est un problème NP-complet La preuve démontre que si SAT-FNC est dans P, alors la question ouverte est résolue et: P = NP On ne sait bien sur toujours pas si SAT-FNC est dans P ou non Mais on sait que SAT-FNC est NP-complet 5/5/2019
Exemple de preuve CLIQUE est NP-complet Clique est dans NP Vérification si un ensemble de sommet représente une solution: Vérifier que ce ensemble contient k sommets. Vérifier que ce ensemble de sommets représente une clique “toutes les paires sont reliées”. C’est polynomial donc Clique est dans NP 5/5/2019
CSI 3505 La théorie de Complexité Réduire 3-SAT au probléme CLIQUE 3-SAT CLIQUE Transformer une expression booléenne 3-FNS en un graphe tel que ce graphe contient une clique de taille k si est seulement si l’expression booléenne est satisfaisable. 5/5/2019
CSI 3505 La réduction 3-SAT CLIQUE B = C1 C2 … Ck une formule en 3-CNF, avec k clauses, contenant chacune 3 littéraux distincts. Pour chaque clause on crée 3 sommets, un pour chaque littéral dans la clause. On relie deux sommets s’ils proviennent de deux clauses différentes et que leurs littéraux sont consistents “l’un n’est pas la négation de l’autre” Exemple: B = (x y z) (x y z ) (x y z ) 5/5/2019
CSI 3505 La théorie de Complexité Exemple: E = (x y z) (x y z ) (x y z ) x1 y1 z1 x3 y3 z3 x2 y2 z2 5/5/2019
CSI 3505 La théorie de Complexité Preuve: Si E est satisfaisable, alors chaque clause a au moins un littéral “sommet” avec une valeur “Vraie” Prends le sommet correspondant de chaque littéral. Ça doit former une clique de taille k. (Pourquoi?) Si G a une clique V’ de taille k, alors V’ contient un sommet (littéral) dans chacune des clause de E. (Pourquoi?) Il suffit de donner la valeur “Vraie” pour ces littéraux. Ceci satisfait la formule E, sans risque d’avoir des contradictions. 5/5/2019
CSI 3505 La théorie de Complexité Exemple: E = (x y z) (x y z ) (x y z) x1 y1 z1 x2 y2 z2 x3 y3 z3 X = Vrai Y= Vrai Z= Faux 5/5/2019
En resumé: Tous les problèmes Arrêt Problèmes NP Problèmes NP-Complets TSP Arrêt Problèmes P TRI 5/5/2019