Académique Documents
Professionnel Documents
Culture Documents
INTRODUCTION ................................................................................................................2
I. HISTORIQUE ..............................................................................................................3
II. PRESENTATION DES CLASSES ..............................................................................3
1. La classe P ..................................................................................................................4
2. La classe NP ...............................................................................................................4
3. La classe NP-Complet ................................................................................................4
III. THEORIE DE LA NP-COMPLETUDE ...................................................................5
1) Définition et principe………………………………………………………………..5
CONCLUSION ................................................................................................................... 25
BIBLIOGRAPHIE ............................................................................................................. 26
FICHE DE TRAVAUX DIRIGES ..................................................................................... 27
2
INTRODUCTION
I. HISTORIQUE
Le concept de NP-complétude a été introduit en 1971 par Stephen Cook dans une
communication intitulée The complexity of theorem-proving procedures (La complexité des
procédures de démonstration de problèmes), bien que le mot « NP-complet » n'apparaisse pas
explicitement dans l'article. Lors de la conférence à laquelle il a été présenté, une discussion
acharnée a eu lieu entre les chercheurs présents pour savoir si les problèmes NP-complets
pouvaient être résolus en temps polynomial sur machine de Turing déterministe. John
Hopcroft a finalement convaincu les participants que la question devait être remise à plus
tard, personne n'ayant réussi à démontrer ou infirmer le résultat.
La question de savoir si P = NP n'est toujours pas résolue. Elle fait partie des
problèmes du prix du millénaire, un ensemble de sept problèmes pour lesquels l'Institut de
mathématiques Clay offre un prix d'un million de dollars. Il « suffirait » de trouver un seul
problème NP qui soit à la fois NP-complet et P pour démontrer cette hypothèse, ou d'exhiber
un seul problème NP qui ne soit pas dans P pour démontrer sa négation.
Un problème de décision est un problème dont la réponse est OUI ou NON/ VRAI ou
FAUX (il pleut ? 3 est un nombre pair ?). Pour un problème P, notons O(P) l’ensemble des
instances de P dont la réponse est OUI. Ainsi selon la difficulté à résoudre efficacement un
problème et à vérifier la véracité de sa solution, on distingue :
4
1. La classe P
2. La classe NP
Théorème : 𝑷 ⊆ 𝑵𝑷
3. La classe NP-Complet
La classe NP-complet contient les problèmes les plus difficiles de NP. Ces problèmes
semblent vraiment ne pas faire partie de P (bien que à l’heure actuelle on ne possède pas une
réponse définitive, voir la question irrésolue P = NP ?). Si nous sommes capables de trouver
un moyen de résoudre efficacement (algorithme polynomial) un problème de NP-complet,
nous pouvons alors utiliser cet algorithme pour résoudre tous les problèmes de NP.
5
En effet, un problème X appartient à NP-complet s’il est dans NP et si tout autre problème
dans NP peut s’y réduire. On n’en déduit qu’une méthode “assez facile” pour prouver qu’un
nouveau problème appartient à NP-complet est de montrer d’abord qu’il est dans NP, ensuite
le réduire en un problème connu dans NP-complet. Par conséquent il est très utile de connaître
une variété de problèmes NP-complets.
1) Définition et principe
En théorie de la complexité, un problème NP-complet ou problème NPC (c'est-à-dire
un problème complet pour la classe NP) est un problème de décision vérifiant les propriétés
suivantes :
-il est possible de vérifier une solution efficacement (en temps polynomial) ; la classe
des problèmes vérifiant cette propriété est notée NP ;
-tous les problèmes de la classe NP se ramènent à celui-ci via une réduction polynomiale ;
cela signifie que le problème est au moins aussi difficile que tous les autres problèmes de la
classe NP.
Un problème NP-difficile est un problème qui remplit la seconde condition, et donc
peut être dans une classe de problème plus large et donc plus difficile que la classe NP.
Bien qu'on puisse vérifier rapidement toute solution proposée d'un problème NP-
complet, on ne sait pas en trouver efficacement. C'est le cas, par exemple, du problème du
voyageur de commerce ou de celui du problème du sac à dos.
Tous les algorithmes connus pour résoudre des problèmes NP-complets ont un temps
d'exécution exponentiel en la taille des données d'entrée dans le pire des cas, et sont donc
inexploitables en pratique même pour des instances de taille modérée.
≠ NP, une question ouverte qui fait partie des problèmes non résolus en mathématiques les
plus importants à ce jour.
La raison qui pousse le plus les théoriciens de l’informatique à croire que P ≠ NP est
sans doute l’existence de la classe des problèmes «NP-complets ». Cette classe possède une
propriété surprenante : si un problème NP-complet peut être résolu en temps polynomial,
alors tous les problèmes de NP peuvent être résolus en temps polynomial, autrement dit, P =
NP. Pourtant, malgré des années de recherches, aucun algorithme polynomial n’a jamais été
découvert pour quelque problème NP-complet que ce soit.
Les langages NP-complets sont, dans un sens, les langages les plus « difficiles » de NP. La
réductibilité en temps polynomial va donc nous permettre de comparer des problèmes.
2) Réduction polynomiale
Cette notion permettant de montrer qu’un problème n’est pas plus difficile ou plus facile
qu’un autre, s’applique même quand les deux problèmes sont des problèmes de décision.
Nous exploiterons cette idée dans la quasi-totalité des démonstrations de NP-complétude, et
ce de la façon suivante. Soit un problème de décision, disons A, que l’on voudrait résoudre en
temps polynomial. L’entrée d’un problème particulier est dite instance de ce problème ;
Supposons maintenant qu’il y ait un autre problème de décision, disons B, que nous savons
déjà comment résoudre en temps polynomial. Enfin, supposons que nous ayons une procédure
qui transforme toute instance a de A en une certaine instance b de B et qui a les
caractéristiques suivantes :
Une telle procédure porte le nom de réduction à temps polynomial et, comme le montre la
figure si dessous, elle donne un moyen de résoudre le problème A en temps polynomial :
Étant donnée une
Figure 1 : Utilisation d’une réduction à temps polynomial pour résoudre un problème de décision A
(α) en temps polynomial à partir d’un algorithme de décision à temps polynomial associé à un
autre problème B (β). En temps polynomial, on transforme une instance a de A en une instance b de
B, on résout B en temps polynomial, puis on utilise la réponse pour b comme réponse pour a.
Définition :
Réduction polynomiale
NP-complet
A est NP-Complet si :
- 𝑨 ∈ 𝑵𝑷
- A est aussi difficile que n’importe quel problème NP c’est-à-dire 𝑩 ≤𝑷 𝑨, 𝐵 ∈ 𝑁𝑃
Un circuit est dit satisfiable s’il existe une assignation aux valeurs d’entrées telles que le
circuit global produit « OUI » ou « 1 ».
Pour montrer que CUIRCUIT-SAT est NP-complet, nous allons d’abord :
Soit C un circuit constitué de n portes logiques et A une assignation qui satisfait le circuit.
Montrons que la vérification de A sur C se fait en temps polynomial.
Etant donné que CUIRCUIT-SAT est satisfaisable, on regarde simplement la porte qui
donne le résultat global du circuit, on exprime de manière récurrente chacune des entrées en
tant que formule. La formule correspondante au circuit est alors obtenue en écrivant une
expression qui applique la fonction de la porte aux formules de ces entrées.
Malheureusement cette méthode directe n’est pas une résolution en temps polynomial.
Les sous formules partagées peuvent faire croitre exponentiellement la taille de la formule
générée pour peu qu’il ait des portes donc les files de sorties est de facteur d’éventail de 2 ou
plus (croit de façon exponentielle). D’où la complexité dans le cas est de l’ordre
d’exponentielle.
• n variables booléennes : 𝑥1 , 𝑥2 , . . . , 𝑥𝑛 ;
• m connecteurs booléens : toute fonction booléenne avec une ou deux entrées et une
sortie, telle que ∧ (𝐸𝑇),∨ (𝑂𝑈), ¬ (𝑁𝑂𝑁), → (𝑖𝑚𝑝𝑙𝑖𝑐𝑎𝑡𝑖𝑜𝑛), ↔
(𝑠𝑖 𝑒𝑡 𝑠𝑒𝑢𝑙𝑒𝑚𝑒𝑛𝑡 𝑠𝑖) ; et
Il est facile d’écrire une formule booléenne f dans une longueur qui est polynomiale
en 𝑛 + 𝑚. Comme c’est le cas avec les circuits combinatoires booléens, une assignation de
vérité pour une formule booléenne f est un ensemble de valeurs pour les variables de f, et une
assignation satisfaisante est une assignation pour laquelle l’évaluation de la formule donne 1.
Une formule possédant une assignation satisfaisante est une formule satisfaisable. Le
problème de la satisfaisabilité consiste à savoir si une formule booléenne donnée est
satisfaisable ; en termes des langages formels, on dira
Exemple : La formule
11
𝜙 = (( 𝑥1 → 𝑥2 ) ∨ ¬((¬𝑥1 ↔ 𝑥3 ) ∨ 𝑥4 )) ∧ ¬ 𝑥2
= (1 ∨ ¬(1 ∨ 1)) ∧ 1
= (1 ∨ 0) ∧ 1
=1
Pour montrer que La satisfaisabilité d’une formule booléenne est un problème NP-
Complet. Nous allons :
a- 𝑺𝑨𝑻 ∈ 𝑵𝑷
On montre qu’un certificat consistant en une assignation satisfaisante pour une formule
f en entrée peut être validé en temps polynomial.
L’algorithme de vérification remplace tout simplement chaque variable de la formule
par sa valeur correspondante, puis évalue l’expression.
Ce travail peut facilement s’effectuer en temps polynomial. Si l’expression a pour
évaluation 1, la formule est satisfaisable.
Donc, 𝑺𝑨𝑻 ∈ 𝑵𝑷
appel à une récurrence pour exprimer un circuit combinatoire booléen quelconque comme une
formule booléenne.
On regarde simplement la porte qui produit le résultat du circuit, et on exprime de
manière récurrente chacune des entrées de la porte en tant que formules. La formule
correspondant au circuit est alors obtenue en écrivant une expression qui applique la fonction
de la porte aux formules de ses entrées.
Malheureusement, cette méthode directe n’est pas une réduction en temps
polynomial. Les sous-formules partagées peuvent faire croître exponentiellement la taille de
la formule générée, pour peu qu’il y ait des portes dont les fils de sortie aient des facteurs
d’éventail de 2 ou plus.
Donc, l’algorithme de réduction devra être un peu plus astucieux.
Étant donné un circuit C, il est immédiat de produire une telle formule f en temps
polynomial.
Pourquoi le circuit C est-il satisfaisable exactement quand la formule f est satisfaisable ?
Si C possède une assignation satisfaisante, chaque fil du circuit a une valeur bien définie et la
sortie du circuit est 1. Donc, l’assignation de valeurs de fil aux variables de f fait que chaque
clause de f est évaluée à 1, et donc que leur conjonction est aussi évaluée à 1.
Réciproquement, s’il existe une assignation qui donne une évaluation 1 pour f, le circuit C
est satisfaisable de par une démonstration analogue. On a donc montré que CIRCUIT-SAT
≤𝑷 𝑺𝑨𝑻.
On définit la satisfaisabilité 3-CNF à l’aide des termes suivants. Un littéral dans une
formule booléenne est une variable ou sa négation. Une formule booléenne se trouve dans sa
forme normale conjonctive, ou forme CNF, si elle est exprimée comme un ET de clauses,
chacune d’elles étant le OU d’un ou plusieurs littéraux. Une formule booléenne se trouve dans
sa forme normale conjonctive d’ordre 3, ou 3-CNF, si chaque clause comporte exactement
14
trois littéraux distincts. Par exemple, la formule booléenne est en forme 3-CNF. La première
de ses trois clauses est qui contient les trois littéraux.
a- 3-CNF-SAT ∈ 𝑵𝑷
La démonstration utilisée pour montrer que 𝑆𝐴𝑇 ∈ 𝑁𝑃 s’applique aussi pour montrer
que 3-CNF-SAT ∈ 𝑁𝑃.
∧ (𝑦2 ↔ (𝑦3 ∨ 𝑦4 ))
∧ (𝑦3 ↔ (𝑥1 → 𝑥2 ))
∧ (𝑦4 ↔ ¬𝑦5 )
∧ (𝑦5 ↔ (𝑦6 ∨ 𝑥4 ))
∧ (𝑦6 ↔ (¬𝑥1 ↔ 𝑥3 )) .
Observez que la formule 𝜙′ ainsi obtenue est une conjonction de clauses 𝜙′ 𝑖 possédant
chacune au plus 3 littéraux. La seule contrainte supplémentaire est que chaque clause soit un
OU de littéraux.
La deuxième étape de la réduction convertit chaque clause 𝜙 ′ 𝑖 dans sa forme normale
conjonctive. On construit une table de vérité pour 𝜙 ′ 𝑖 en évaluant toutes les assignations
possibles à ses variables. Chaque ligne de la table de vérité représente une assignation
possible des variables de la clause, et la valeur de la clause pour cette assignation. En utilisant
les éléments de la table de vérité qui sont évalués à 0, on construit une formule en forme
normale disjonctive (ou DNF), c’est à dire un OU de ET, qui est équivalente à ¬𝜙 ′ 𝑖 . Cette
formule est ensuite convertie en une formule CNF 𝝓′′ 𝒊 , en faisant appel aux lois de Morgan
pour complémenter tous les littéraux et changer les OU en ET et les ET en OU.
16
Chaque clause 𝝓′ 𝒊 de la formule 𝝓′ est maintenant convertie en une formule CNF 𝝓′′ 𝒊 ,et
𝝓′ est donc équivalente à la formule CNF 𝝓′′ composée de la conjonction des 𝝓′′ 𝒊 .Par ailleurs,
chaque clause de 𝝓′′ possède au plus 3 littéraux.
Par conséquent le problème de la satisfaisabilité des formules booléennes sous forme 3-CNF
est NP-complet.
Une clique dans un graphe non orienté G = (S, A) est un sous-graphe complet de G
c’est-à-dire que deux sommets quelconques de la clique sont toujours adjacents. La taille
d’une clique est le nombre de sommets qu’elle contient. Le problème de la clique est le
problème d’optimisation consistant à trouver une clique de taille maximale dans un graphe.
Le problème de décision associé est celui de savoir s’il existe une clique de taille K dans le
graphe. De manière formelle la définition d’une clique est:
Pour montrer que 𝑪𝑳𝑰𝑸𝑼𝑬 ∈ 𝑵𝑷, pour un graphe donné 𝑮 = (𝑺, 𝑨), on
utilise l’ensemble 𝑺’ ⊆ 𝑺 des sommets de la clique comme certificat pour G. Vérifier que S’
est une clique peut être accompli en temps polynomial, en testant si pour toute paire u, v ∈ S’
l’arête (u, v) appartient à A.
- D’abord, supposons que f est une assignation satisfaisante. Alors, chaque clause 𝑪𝒓
contient au moins un littéral 𝒍𝒓𝒊 ayant la valeur 1, et chaque littéral de ce type correspond à un
sommet 𝒗𝒓𝒊 . En prenant l’un de ces littéraux ayant la valeur vrai dans chaque clause, on
obtient un ensemble S de k sommets. Nous affirmons que S est une clique. Pour deux
sommets quelconques 𝒗𝒓𝒊 , 𝒗𝒔𝒋 ∈ S, où r s, l’assignation satisfaisante associe la valeur 1 aux
deux littéraux 𝒍𝒓𝒊 et 𝒍𝒔𝒋 correspondants, et les littéraux ne peuvent donc pas être compléments.
Donc, d’après la construction de G, l’arête (𝒗𝒓𝒊 , 𝒗𝒔𝒋 ) appartient à A. Le graphe précèdent
issu de la formule 3-CNF 𝒇 = 𝑪𝟏 ∧ 𝑪𝟐 ∧ 𝑪𝟑 , où 𝑪𝟏 = (𝒙𝟏 ∨ ¬𝒙𝟐 ∨ ¬𝒙𝟑 ), 𝑪𝟐 = (¬𝒙𝟏 ∨
𝒙𝟐 ∨ 𝒙𝟑 ) et 𝑪𝟑 = (𝒙𝟏 ∨ 𝒙𝟐 ∨ 𝒙𝟑 ), lors de la réduction de 3-CNF-SAT à CLIQUE.
L’assignation < 𝒙𝟏 = 0 𝑜𝑢 1, 𝒙𝟐 = 0, 𝒙𝟑 = 1 > est satisfaisante.
Cette assignation vérifie 𝑪𝟏 avec ¬𝒙𝟐 et vérifie 𝑪𝟐 et 𝑪𝟑 avec 𝒙𝟑 , ce qui correspond à la
clique dont les sommets sont en clair.
- Supposons maintenant que G contienne une clique de taille k. Comme les littéraux
d'une même clause ne sont pas reliés, cette clique contient un littéral exactement dans chaque
clause. Montrons alors qu'il existe une assignation qui rend tous ces littéraux vrais. Chaque
littéral de cette clique est égal à 𝒙𝒊 ou à ¬𝒙𝒊. Pour que ce littéral soit vrai, on impose la valeur
1 ou 0 à la variable correspondante 𝒙𝒊 . Comme tous les littéraux de la clique sont reliés par
une arête, ils ne sont pas contradictoires deux à deux. Ceci signifie que deux littéraux
20
En fait, on a montré que CLIQUE est NP-difficile uniquement pour ce cas particulier,
mais cette preuve suffit pour montrer que CLIQUE est NP-difficile pour des graphes
quelconques.
D’où le problème de la clique est NP-complet.
v) Couverture
Une couverture de sommets d’un graphe non orienté G = (S, A) est un sous-ensemble
S’⊆ S tel que si (u, v) ∈ A, alors u ∈ S’ou v ∈ S’(ou les deux). Autrement dit, chaque
sommet « couvre » ses arêtes incidentes et une couverture de sommets pour G est un
ensemble de sommets qui couvre toute les arêtes de A. La taille d’une couverture de sommets
est le nombre de sommets qui la composent. Par exemple, le graphe de la figure suivante a
une couverture de sommets {w, z} de taille 2.
L’algorithme de réduction prend en entrée |S|- k, une instance <G, k > du problème de
la clique. Il calcule le complémentaire G’, ce qui se fait facilement en temps polynomial. Le
résultat de l’algorithme de réduction est l’instance <G, |S|-k> du problème de la couverture de
sommets.
22
Pour compléter la démonstration, on montre que cette transformation est bien une
réduction : le graphe G possède une clique de taille k si et seulement si le graphe G’ possède
une couverture de sommets de taille |S| − k. Supposons que G ait une clique S’⊆ S avec |S’|=
k. Nous affirmons que S-S’ est une couverture de sommets de G’. Soit (u, v) une arête
quelconque de Ā. Alors, (u, v) ∉ A, ce qui implique qu’au moins un des sommets u et v
n’appartient pas à S’, puisque toute paire de sommets de S est reliée par une arête de A. De
manière équivalente, l’un au moins des sommets u ou v se trouve dans S – S’, ce qui signifie
que l’arête (u, v) est couverte par S – S’. Comme (u, v) a été choisi arbitrairement dans Ā,
toute arête de Ā est couverte par un sommet de S- S’. Donc, l’ensemble S – S’, qui a une taille
forme une couverture de sommets pour G’.
Réciproquement, supposons que G ait une couverture de sommets S’ ⊆ S, où |S’| = |S| - k.
Alors, quels que soient u, v ∈S, si (u, v) ∈ Ā, on a u ∈ S’ ou v ∈ S’ ou les deux. La contraposée de
cette implication est : quels que soient u, v ∈ S, si u ∉ S’ et v ∉ S’, alors (u, v) ∈ A. Autrement dit, S –
S est une clique et a une taille |S| - |S’| = k.
V.CONSEQUENCE SI P=NP
La factorisation des grands nombres, donc craquer les chiffrements RSA qui securisent pas
mal de communications et transactions sur internet
23
En trouvant un algorithme qui peut prouver que P=NP, nous permettrait aussi de gagner 1
million de dollars…
VI.APPLICATIONS DE LA NP-COMPLETUDE
▪ Diagnostic
Le diagnostic de systèmes statiques consiste à déterminer si un système a un comportement
défectueux étant donnée l'observation des entrées et sorties du système. Le modèle du système
peut être traduit en un ensemble de contraintes (disjonctions) : pour chaque composant du
système, une variable est créée qui est évaluée à vraie si le composant a un comportement
anormal (Abnormal). Les observations peuvent être également traduites par un ensemble de
disjonctions. L'assignation trouvée par l'algorithme de satisfaisabilité est un diagnostic.
▪ Planification classique
Le problème de planification classique consiste à trouver une séquence d'actions menant d'un
état du système à un ensemble d'états. Étant donnée une longueur maximale du plan et un
ensemble de variables d'état booléennes permettant de décrire l'état du système, on crée les
▪ Model checking
Une approche semblable a été utilisée pour le model checking (vérification de propriétés d'un
modèle). La principale différence est que le model checking s'applique à des trajectoires de
longueur infinie contrairement à la planification. Cependant, si l'espace d'états du système est
fini, toute trajectoire infinie boucle à un certain point et on peut borner la taille des trajectoires
qu'il est nécessaire de vérifier. Le bounded model checking tire parti de cette propriété pour
transformer le problème de model checking en un certain nombre de problèmes de
satisfaisabilité.
▪ Cryptographie
La complexité du problème SAT est une composante essentielle de la sécurité de tout système
de cryptographie.
Par exemple, une fonction de hachage sécurisée constitue une boîte noire pouvant être
formulée en un temps et un espace fini sous la forme d'une conjonction de clauses normales,
dont les variables booléennes correspondent directement aux valeurs possibles des données
d’entrée de la fonction de hachage, et chacun des bits de résultat devra répondre à un test
booléen d'égalité avec les bits de données d’un bloc de données d’entrées quelconque. Les
fonctions de hachages sécurisées servent notamment dans des systèmes d'authentification
(connaissance de données secrètes d’entrée ayant servi à produire la valeur de hachage) et de
signature (contre toute altération ou falsification « facile » des données d’entrée, qui sont
connues en même temps que la fonction de hachage elle-même et de son résultat).
La sécurité de la fonction de hachage dépend de la possibilité de retrouver un bloc de données
d'entrée arbitraire (éventuellement différent du bloc secret de données pour lequel une valeur
de hachage donnée a été obtenue) permettant d'égaliser la valeur binaire retournée par la
fonction de hachage. Une méthode d'exploration systématique de toutes les valeurs possibles
des données d'entrée et pour lesquelles on applique la fonction de hachage comme un oracle,
permet effectivement de satisfaire à la question de une valeur de hachage égale à celle
cherchée, mais sa complexité algorithmique sera exponentielle (en fonction de la taille
maximale en bits des données d’entrée de la fonction de hachage).
Chercher à égaliser une valeur de hachage avec des variables d'entrée de valeur inconnue
constitue un problème SAT (et comme en pratique les données d’entrée de la fonction de
hachage sont constituées de nombreux bits, ce sera un problème n-SAT avec n assez élevé (et
en tout cas supérieur ou égal à 3). On sait alors que ce problème est réductible en temps
polynomial à un problème 3–SAT, qui est NP-complet.
La sécurité de la fonction de hachage sera fortement liée au fait de l'impossibilité de la réduire
plus simplement (que par un algorithme NP-complet de complexité suffisante) en réduisant la
forme conjonctive des clauses qui la définissent simplement, pour y isoler des sous-ensembles
de variables d’entrées de taille plus restreinte, mais suffisante pour déterminer une partie du
résultat de la fonction de hachage dont l’ordre n sera alors très inférieur, et pour ne plus avoir
à explorer que les valeurs possibles de ces seuls sous-ensembles de variables pour satisfaire la
condition d'égalité du résultat, sans avoir à tester toutes les autres variables dont la valeur peut
25
être fixée arbitrairement à certaines valeurs déterminées par un algorithme plus simple
(apprentissage de clauses, approches prospectives ci-dessus).
▪ Logique modale
Le problème SAT peut être utilisé comme sous-routine pour résoudre le problème de
satisfiabilité de la logique modale
CONCLUSION
La perfection ne fait probablement pas partie de ce monde et même si elle y était, nos
ordinateurs (ainsi que nous-mêmes) seraient encore très loin de l’atteindre. Il n’existe donc
pas de technique exacte ou d’algorithme universel : à titre d’exemple, seul le filtrage par
consistances n’est pas suffisant pour aboutir à une solution quasi optimale pendant un temps
limité, ou encore, la simple application de quelque heuristique (comme le best first ou le first
failled) n’est pas la réponse définitive. Une règle d’informaticiens qui est toujours valide est
“chercher si une solution existe déjà avant de se pencher sur le problème’’ (Emmanuel
Kounalis). L’application du meilleur algorithme peut être parfois très coûteuse si l’on a
“gaspillé” énormément de temps pour le trouver, de plus que l’on pourrait remarquer par la
suite qu’il n’était pas le meilleur.
Il faut considérer chaque situation, le type et la quantité des donnés, les moyens et le
temps à notre disposition pour choisir les techniques et les heuristiques à appliquer. Souvent
le monde de l’industrie préfère une réponse approximative mais rapide et efficace plutôt que
l’utopique réponse parfaite
26
BIBLIOGRAPHIE
WEBOGRAPHIE
https://fr.m.wikipedia.org/wiki/Probl%C3%A8me_NP-
complet#:~:text=La%20NP%2Dcompl%C3%A9tude%20ne%20donne,un
e%20partie%20d'entre%20elles.
https://fr.slideshare.net/mobile/sanaaroussi3/chapitre-3-npcompltude
https://24pm.com/117-definitions/446-np-complet
27
Exercice 1 :
Montrer que la classe P, vue en tant qu’ensemble de langages, est fermée pour l’union,
l’intersection, la concaténation, le complément et l’opération Kleene étoile. Autrement dit, si
L1, L2 ∈ P, alors L1 ∪ L2 ∈ P,
ii- Réduction
Soient A, B et Q des problèmes de décision. Supposons que A est dans P, et
que B est NP-dur. Dire si les affirmations suivantes sont vraies ou fausses :
1. Si A se réduit polynômialement à Q, alors Q est dans P.
2. Si Q se réduit polynômialement à A, alors Q est dans P.
3. Si Q se réduit polynômialement à B, alors Q est NP −dur.
4. Si B se réduit polynômialement à Q, alors Q est NP –dur
Exercice 5 :
Montrer que le problème du chemin hamiltonien peut être résolu en temps polynomial sur les
graphes orientés sans circuits. Donner un algorithme efficace pour le problème.