Académique Documents
Professionnel Documents
Culture Documents
des problèmes
Globalement il y a 3 grands types de problèmes selon leurs complexités :
1. les problèmes de « complexité raisonnable ». Ces problèmes sont résolvables par
des algorithmes déterministes de complexité polynomiale ou moins. Ils
appartiennent à la classe P.
2. les problèmes de « complexité non raisonnable ». Ces problèmes ne peuvent être
résolus que par des algorithmes de complexité « non raisonnable »
(exponentielles). Ils appartiennent à la classe NP-Dur (ou NP-difficile).
Généralement on ne cherche pas à résoudre ce type de problèmes.
3. les problèmes de « complexité semi-raisonnable ». Ces problèmes ont la
particularité d’être résolus par des algorithmes de complexité polynomiale
seulement si on utilise des algorithmes Non Déterministes. Mais on ne sait pas
les résoudre par des algorithmes déterministes polynomiaux. Ils forment la classe
NP-C (Non déterministes Polynomiaux – Complets). Ce sont des problèmes très
importants à résoudre en informatique. On utilise pour cela des stratégies
algorithmiques avancées pour contrôler l’explosion de leurs complexités.
L’objectif de cette partie du cours est de classé les problèmes dans des classes
d’équivalences selon leur complexité (c-à-d selon la complexité des algorithmes qui les
résolvent).
Plus particulèrement, on va s’intéresser aux problèmes NP-C et comment on peut
démontrer qu’un problème est NP-C.
Le temps de calcul de M sur un mot u , noté TCM(u), est la longueur d’exécution de M sur u.
C-à-d le nombre de transitions nécessaires à M pour décider (ou accepter) le mot u
( à partir de l’état initial q0 jusqu’à l’arrêt sur un état final qf)
Si le mot u n’est pas accepté, on prend TCM(u)=1. Ceci permet de ne pas tenir compte dans
le calcul de la complexité des mots qui n’appartiennent pas au langage.
Complexité des machines de Turing
Définition
Soit M une MT qui s’arrête toujours. La complexité en temps de M est la fonction TM(n)
TM (n) = max{k, u Ʃ* tq |u|=n et k = TCM(u)}
Cette définition est valable pour le cas des MT déterministes et des MT non déterministes.
Définition
Une machine de Turing M est dite polynomiale si sa complexité en temps TM(n) est de
l’ordre d’un polynôme.
Complexité des machines de Turing
Théorème
Soit M une MT Non déterministe polynomiale, alors il existe M’ une MT déterministe et un
polynôme Q(n) tels que :
M’ est équivalente à M (décide le même langage)
TM’(n)=O(2Q(n)) (complexité exponentielle)
Les langages polynomiaux, ceux qui sont décidés par une MT déterministe polynomiale.
On note par P l’ensemble des langages polynomiaux.
Les langages non déterministes polynomiaux, ceux qui sont acceptés par une MT
déterministe mais non polynomiale. On note par NP l’ensemble des langages Non
déterministes Polynomiaux.
On a bien P ⊆ NP
Liens entre langages et problèmes
• On va définir les différentes notions de complexité en temps sur des problèmes décision (c-à-d les
problèmes dont le réponse est soit « oui » soit « non »). Mais tous les résultats restent valables
dans le cas des problèmes de calcul.
• On appelle instances d’un problème Q , les valeurs réels qu’on donne aux différentes données en
entrée du problème Q. Les instances positives , sont les instances pour lesquelles le problème Q
donne « oui » en sortie. Et les instances négatives , sont les instances pour lesquelles on a une
réponse « non ».
• Tout problème Q est encodé (ou décrit) par un langage formel L.
• Toutes les instances positives d’un problème Q sont donc les mots du langage L qui l’encode. Et
toute les instances pour lesquelles l’algorithme qui résout le problème P donne « oui » sont donc
des mots décidés par la machine de Turing qui accepte le langage L. Et vis vers ça.
• Donc on peut parler indifféremment de problèmes ou de langages. Comme on peut parler
indifféremment d’algorithmes ou de MT.
Les langages P et NP
Donc on peut parler indifféremment de problèmes ou de langages. Comme on peut parler
indifféremment d’algorithmes ou de MT.
Un problème est polynomial s’il est résolvable par un algorithme déterministe polynomial.
On note par P l’ensemble des problèmes polynomiaux.
Un problème est non déterministe polynomial, s’il est résolvable par algorithme non
déterministe polynomial. On note par NP l’ensemble des problèmes Non déterministes
Polynomiaux.
• Pour montrer qu’un problème n'est pas dans P, on utilise la technique des
transformations polynomiales.
x. f
f(L)
. f(x)
Transformation polynomiale
Instances positives de problème P1 Instances positives de problème P2
P1 α P2
x. f f(P1)
. f(x)
Lemme 1
Si L1 α L2 alors
1. Si L2 P alors L1 P
2. Si L1 P alors L2 P
Si L1 α L2 et L2 α L3 alors L1 α L3
Exemple de transformation polynomiale
Problème HC Problème TS
- Ensembles des villes V = S
G = (S,E) f
- Distances entre les villes
d(vi,vj) = 1 si (vi,vj) E
=2 sinon
- Le constante b = nombre de sommets
On a :
1. La transformation f est calculable en un temps polynomial
2. x HC ssi f(x) TS
Donc HC α TS
Interprétation de HC α TS
L1 L1 p L2 L2
g
f
Équivalence polynomiale
Nous avons montré que HC α TS. On peut aussi montrer que TS α HC (mais c’est plus compliqué).
Donc HC p TS
On peut déduire alors que les problèmes HC et TS sont « équivalents » du point de vue complexité.
Si l’un deux est polynomial alors l’autre l’est forcément. Et s’il n’existe pas d’algorithme polynomial
pour résoudre l’un , alors il n’ y a pas d’algorithme polynomial pour résoudre l’autre.
HC P ssi TS P et HC P ssi TS P
HC et TS sont donc dans la même classe d’équivalence polynomiale {TS, HC, …} et appartiennent
tous les deux à NP.
Équivalence polynomiale
Remarque
Grâce à la transitivité de l’équivalence polynomiale, pour montrer qu’un problème L
appartient à une classe qu’équivalence polynomiale C, il suffit de trouver deux
membres L1 et L2 de cette classe tels que L α L1 et L2 α L
Donc pour monter qu’un troisième problème X est dans la même classe {TS, HC}, on
peut faire par exemple X α HC et TS α X .
On aura donc TS, HC et X dans la même classe {TS, HC, X}.
Comme ça on peut petit à petit agrandir cette classe {TS, HC, X1, X2, X3 …}
Équivalence polynomiale
On peut aussi définir un ordre partiel, du point de vue complexité, sur les
différentes classes d’équivalences polynomiales.
Définition
Une classe d’équivalence polynomiales C1 est « inférieure » à une classe
d’équivalence C2 ; on note C1 ≼ C2 ; s’il existe une transformation polynomiale de
tout problème de C1 vers tout problème de C2.