ift-66975 complexité et np-complétude

24
IFT-66975 Complexité et NP-complétude Chapitre 0 Rappels

Upload: teresa

Post on 14-Jan-2016

29 views

Category:

Documents


0 download

DESCRIPTION

IFT-66975 Complexité et NP-complétude. Chapitre 0 Rappels. Quelques définitions. Un alphabet est un ensemble fini non-vide. On appelle ses éléments des symboles . Exemples:  binaire = {0,1}  latin = {a,b, …, z}  ADN = {A,C,T,G}. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: IFT-66975 Complexité et  NP-complétude

IFT-66975Complexité et NP-complétude

Chapitre 0Rappels

Page 2: IFT-66975 Complexité et  NP-complétude

Quelques définitions

Un alphabet est un ensemble fini non-vide. On appelle ses éléments des symboles. Exemples:

binaire = {0,1}

latin = {a,b, …, z}

ADN = {A,C,T,G}

Page 3: IFT-66975 Complexité et  NP-complétude

Un mot sur l’alphabet est une séquence finie de symboles.

|w| dénote la longueur de w (nombre de symboles) et le mot vide ( ou ) est le mot de longueur 0.

L’ensemble de tous les mots sur est dénoté *.

Un langage sur l’alphabet est un ensemble de mots de *.

Page 4: IFT-66975 Complexité et  NP-complétude

Quelques exemples de langages: Mots de {a,b}* contenant plus de

a que de b. Les mots de {0,1}* qui sont

l’encodage binaire d’un nombre premier.

Les mots de {0,1}* qui sont l’encodage d’un graphe qui contient un chemin de longueur 8.

Page 5: IFT-66975 Complexité et  NP-complétude

Terminologie

Problème de calcul (ou problème algorithmique): 1. Un ensemble d’entrées valides, chacune de ces entrées

pouvant être décrites à l’aide d’un mot fini.2. Une fonction qui associe à chaque entrée possible un

ensemble non-vide de sorties valides, chacune de ces sorties pouvant être décrites à l’aide d’un mot fini.

Exemple: Le problème du commis-voyageur est un problème de calcul. Les entrées valides sont constitués d’un ensemble de villes et d’un tableau de distance. Les sorties valides correspondent à un circuit de coût minimal pour ces villes.

Page 6: IFT-66975 Complexité et  NP-complétude

Terminologie (suite)

Instance d’un problème: Une instance du problème de calcul C est simplement une

entrée valide pour ce problème.

Problème de décision: Problème de calcul qui consiste à déterminer si une certaine

entrée w fait partie d’un langage L. En pratique on ne fera pas la différence entre un langage et un problème de décision.

Exemple: Langage des mots de {0,1}* qui décrivent un graphe acyclique.

Problème de décision: étant donné un graphe répondre oui si le graphe est acyclique ou non sinon.

Page 7: IFT-66975 Complexité et  NP-complétude

Machines de Turing Le modèle de référence depuis Turing (années 30).

0 11 10 0 1 …

Contrôlefini

À chaque étape, la machine peut en fonction de l’état du contrôle fini et du symbole lu:

• Changer l’état du contrôle fini.• Réécrire sous la tête de lecture.• Déplacer la tête vers la gauche ou la droite d’une case.• S’arrêter.

Page 8: IFT-66975 Complexité et  NP-complétude

Formellement, une machine de Turing est un quintuplet M = (Q,,,q0,,Q’) avec

Q un ensemble fini d’états. q0 Q l’état initial. Q’ Q des états d’arrêt. un alphabet d’entrée. un alphabet de ruban qui contient

et au moins un symbole blanc b. : Q Q {-1,0,1} une

fonction de transition.

Page 9: IFT-66975 Complexité et  NP-complétude

Initialement, le ruban contient un mot d’entrée w * suivi de symboles blancs. La tête de lecture est sur la première case du ruban et l’état est q0.

À chaque étape, si la machine se trouve dans l’état q Q’, lit le symbole a sur la case j tel que (q,a) = (q’,a’,d) alors la machine remplace le symbole a de la case j par a’, passe à l’état q’ et déplace sa tête de lecture sur la case max{j+d,0}.

Le calcul se poursuit jusqu’à ce qu’on atteigne un état d’arrêt.

Page 10: IFT-66975 Complexité et  NP-complétude

Si la machine s’arrête, alors on appelle sortie le contenu du ruban jusqu’à la première case contenant un symbole blanc.

La fonction calculée par une machine de Turing M est la fonction partielle f: * * telle que f(w) = sortie de M sur l’entrée w.

Cette fonction est partielle car il se peut que M ne s’arrête jamais pour certains w.

Un problème de calcul C est résolu par une machine M si pour chaque instance w de C la sortie de M est une sortie valide.

Page 11: IFT-66975 Complexité et  NP-complétude

Calculabilité

Une fonction f: * * est calculable si elle est calculée par une machine de Turing. De même un problème de calcul est calculable s’il existe une m.t. qui le résoud.

Pour et donnés, il existe un nombre dénombrable de m.t. mais un nombre indénombrable de fonctions de * dans * donc certaines fonctions sont incalculables.

Page 12: IFT-66975 Complexité et  NP-complétude

Thèse de Church-Turing

N’importe quel modèle raisonnable de calcul est de puissance équivalente aux machines de Turing.

Malgré leur apparente simplicité, les m.t. sont donc aussi puissantes que n’importe lequel de nos ordinateurs. Pour montrer qu’une fonction est calculable, il suffit de décrire un algorithme dans la forme qui nous convient.

Page 13: IFT-66975 Complexité et  NP-complétude

Soit M une m.t. qui s’arrête pour chaque entrée.

Le temps d’exécution de M sur l’entrée w est le nombre d’étapes nécessaires à M pour atteindre un état d’arrêt.

Le temps d’exécution de M est la fonction tM: N N telle que f(n) = temps d’exécution maximal de M sur une entrée de longueur n.

Nous cherchons à comprendre le comportement asymptotique de tM.

Page 14: IFT-66975 Complexité et  NP-complétude

Rappel de la notation asymptotique:Soit f et g deux fonctions de N dans

N.

f O(g) limn f(n)/g(n) < f o(g) limn f(n)/g(n) = 0 f (g) limn f(n)/g(n) = c

pour un c 0. f (g) limn f(n)/g(n) > 0 f (g) limn f(n)/g(n) =

Page 15: IFT-66975 Complexité et  NP-complétude

Thèse étendue de Church-Turing

Soient R1 et R2 des modèles raisonnables de calcul et pour toutes notions raisonnables de temps d’exécution de ces modèles, il existe un polynôme p, tel que t étapes d’un calcul sur une entrée de longueur n dans le modèle R1 peut être simulée par p(n,t) étapes dans le modèle R2.

Page 16: IFT-66975 Complexité et  NP-complétude

Une première classe de complexité

Pour toute fonction t: N N, on dénote DTIME(t) la classe des problèmes de décision (ou des langages) calculables en temps O(t) et FDTIME(t) la classe des fonctions calculables en temps O(t).

À noter que ces classes ne sont pas très robustes. Si l’on change légèrement notre définition de machine de Turing, les classe DTIME(t) et FDTIME(t) ne sont peut-être plus les mêmes.

Page 17: IFT-66975 Complexité et  NP-complétude

Définitions: La classe de complexité P est un ensemble de problèmes de décision défini par P = k N DTIME(nk).

De la même façon, on définit FP = k N FDTIME(nk).

À cause de la thèse de Church-Turing étendue, cette classe est très robuste.

Page 18: IFT-66975 Complexité et  NP-complétude

L’importance de P

En général, on considère que les problèmes dans P (ou FP) sont des problèmes pour lesquels il existe un algorithme efficace. (Mais on exagère…)

Certainement, si un problème n’est pas dans P (ou FP), alors il n’existe pas d’algorithme efficace pour le résoudre.

Page 19: IFT-66975 Complexité et  NP-complétude

Que contient P?

Malheureusement, on ne sait pas précisément!

Une liste partielle existe dans tous les livres d’algorithmique… Opérations sur les entiers, algèbre matricielle, problèmes de tri, problème de flot, construction d’un arbre de recouvrement etc.

Page 20: IFT-66975 Complexité et  NP-complétude

Fonctions en dehors de P?

On peut aisément reprendre la stratégie permettant de montrer l’indécidabilité du problème de l’arrêt opur montrer qu’il existe un langage décidable qui n’est pas dans P.

Page 21: IFT-66975 Complexité et  NP-complétude

Quel est le langage accepté par la machine de Turing suivante?

D = « entrée x;1. Calculer |x| et initialiser un

compteur c de |x| bits.2. Vérifier si x = 0k 1Met rejeter

sinon;3. Simuler M sur l’entrée x pendant au

plus 2|x| étapes. Si M accepte x alors D rejette x. Si M rejette x alors D accepte x. »

Page 22: IFT-66975 Complexité et  NP-complétude

Note: la machine D s’arrête sur toutes les entrées. Donc L = L(D) est décidable.

Supposons que L P. Alors il existe une machine N telle que L(N) = L et tN = O(nd) pour un d N. On a tN = o(2n) donc il existe un n0 tel que tN(n) < 2n

pour tout n n0.

Que fait la machine D lorsque son entrée est x = 0n01N? La machine exécute simule N pendant 2|x| étapes et donc atteint la fin du calcul de N.

Ainsi D accepte x si N rejette x et D rejette x si N accepte x. Donc L(D) L(N). Contradiction!

Donc L(D) est décidable mais L(D) P.

Page 23: IFT-66975 Complexité et  NP-complétude

Théorème de hiérarchie de temps

Pour toute fonction f: N N (temps-constructible), et pour toute fonction

g = o(f / log f), il existe un langage L DTIME(f) – DTIME(g).

Page 24: IFT-66975 Complexité et  NP-complétude

Quel est le langage accepté par la machine de Turing suivante?

Df = « entrée x;1. Calculer f(|x|) et initialiser un

compteur c de longueur f(|x|) / log f(|x|);

2. Vérifier si x = 0k 1Met rejeter sinon;

3. Simuler M sur l’entrée x pendant au plus c étapes. Si M accepte x alors Df rejette x. Si M rejette x alors Df accepte x. »