6.1 - Problème de décision et problème de calcul associés.

publicité
Problèmes de décision et problèmes de calcul
version du 21 novembre 2016
41
6 — PROBLÈMES DE DÉCISION ET PROBLÈMES DE CALCUL
§6.1 - Problème de décision et problème de calcul associés.
6.1 – Beaucoup de problèmes de décision posent une question sur l’existence d’un objet particulier.
Il n’est pas nécessaire pour résoudre un tel problème de produire cet objet.
Voir l’exemple de 2-SAT résolu via une question structurelle sur un graphe orienté associé (chapitre 4).
– Inversement, il y a des situations où on a besoin non seulement de savoir si un tel objet existe,
mais aussi de le connaître en détails.
Par exemple, dans le cas de SAT, on peut avoir besoin, si la famille de clauses peut être satisfaite, de savoir quelles
valeurs on peut affecter aux variables pour effectivement satisfaire toutes les clauses.
– Ainsi, dans la plupart des situations, un problème de calcul et un problème de décision peuvent
être naturellement associés.
6.2 – Exemple. – Le problème de décision précède le problème du calcul.
Dans le cas du problème de décision 2-SAT, le problème de calcul associé est
V2-SAT
Entrée
Question
n ∈ IN ∗ , F formule en n variables, sous forme f.n.c. avec clauses de degré 2.
Trouver, si elle existe, v fonction de vérité satisfaisant F .
:
:
6.3 – Exemple. – Le problème du calcul précède le problème de décision.
Un problème de calcul ne provient pas nécessairement du raffinement d’un problème de décision. Par exemple :
CFC
Entrées
Question
:
:
n ∈ IN ∗ , G graphe orienté d’ordre n et s un sommet
Quelle est la composante fortement connexe de s ?
Dans un graphe orienté, il est naturel de se demander quelle est la composante fortement connexe d’un sommet
particulier.
Le problème de calcul, ici, consiste à calculer une fonction.
L’image, par cette fonction, d’un sommet du graphe, est sa composante fortement connexe ; i.e. l’ensemble des
sommets qui sont sur un même circuit que le sommet considéré. Donc le problème de décision suivant est associé
au problème CFC.
CIRCUIT
Entrées
Question
:
:
n ∈ IN ∗ n, G graphe orienté d’ordre n et s, t deux sommets
Y a-t-il dans G un circuit passant par s et t ?
6.4 – Exemple.
On a vu que si on sait résoudre efficacement CFC alors on sait résoudre efficacement 2-SAT.
Mais il suffit de savoir résoudre rapidement le problème de décision CIRCUIT pour savoir résoudre rapidement
2-SAT. Car l’algorithme Donnée F formule sous f.n.c. avec clauses de degré 2
Algo
1 - Calculer le graphe d’implications GF de F .
2 - Pour chaque variable x de F , tester CIRCUIT(GF , x, x̄)
si oui −→ écrire non et fin.
3 - Écrire oui et fin.
résout efficacement 2-SAT en faisant appel à un algorithme rapide résolvant CIRCUIT.
6.5 – Remarques. – Attention, cet algorithme n’est pas une réduction, et ce n’est pas une preuve
du fait que 2-SAT6P CIRCUIT.
Mais la relation 2-SAT6P CIRCUIT est vérifiée puisque 2-SAT est dans P ∗ (proposition 2 page 38)
6.6 – Exemple (suite).
Dans le cas d’une réponse positive, l’algorithme décrit ci-dessus ne fournit pas de fonction de vérité qui satisfait F .
Pour en trouver une, on avait eu besoin de calculer les composantes fortement connexes de GF , i.e. de résoudre
CFC.
Le problème de calcul V2-SAT, associé au problème de décision 2-SAT, peut donc être résolu (efficacement) si on
sait résoudre (efficacement) CFC.
Ainsi, pour les problèmes de décision : CIRCUIT permet de résoudre 2-SAT.
pour les problèmes de calcul : CFC permet de résoudre V2-SAT.
42
Complexité Algorithmique – B. Mariou – Automne 2016
version du 21 novembre 2016
§6.2 - Résoudre le problème de décision et le problème de calcul associés.
6.7 – Exemples.
I Résoudre V2-SAT permet évidemment de résoudre 2SAT.
I Mais aussi CFC permet de résoudre CIRCUIT, grâce à l’algorithme suivant :
Données
G graphe orienté, s, t des sommets.
Algo
1 - Calculer C la composante fortement connexe de s : résoudre CF C(G, s)
2 - tester si t ∈ C.
si t ∈ C −→ écrire oui et fin.
si t ∈
/ C −→ écrire non et fin.
6.8 – Le problème de calcul est, a priori plus difficile que le problème de décision associé, mais le
problème de décision permet, en général, de résoudre le problème de calcul associé.
6.9 – Exemples.
I Résolution de CFC qui utilise une solution de CIRCUIT
Données
G graphe orienté, s un sommet
Algo
1 - C ← {s}
2 - Pour tout t ∈ G, t 6= s
lancer CIRCUIT(G, s, t).
si la réponse est oui, alors C ← C ∪ {t}.
I De même, on peut trouver une résolution de VSAT à partir d’une solution de SAT :
Donnée
F formule sous forme f.n.c.
1 - Tester si F est satisfaisable : ? SAT(F) ?
Algo
si non −→ écrire non et fin
2 - S = ensemble des clauses de F
3 - Considérer les variables de F : x1 , x2 , . . . , xn
4 - Pour 1 6 i 6 n, choisir entre v(xi ) = 0 et v(xi ) = 1 de la façon suivante :
pour essayer v(xi ) = 1, on fabrique un ensemble T de clauses à partir de S
- toute clause de S contenant xi est éliminée
- dans toute clause avec xi et sans xi , on supprime xi
- les autres clauses sont conservées
remarque : xi n’est pas une variable de T
tester si T est satisfaisable ? SAT(T) ?
si oui −→ on garde v(xi ) = 1 et S ← T
si non −→ on prend v(xi ) = 0 et S est modifié ainsi
- les clauses avec xi sont éliminées
- dans chaque clause avec xi et sans xi , on enlève xi
- on garde les autres clauses.
Dans le cas où F est satisfaisble, à chaque étape, S est modifié de sorte que le nouvel ensemble a une variable de
moins que le précédent et il est encore satisfaisable.
6.10 – On n’a pas vu ici des réductions, ni des réductions polynomiales, au sens strict. Mais dans
chaque exemple, si le temps calcul de l’algorithme connu est T (n), alors le temps de calcul de
l’algorithme fabriqué est de l’ordre de nT (n). En particulier, si T (n) est borné par un polynome,
alors nT (n) aussi.
§6.3 - Exemples.
Dans les exemples suivants, on peut appliquer des raisonnements similaires pour montrer que le
problème de décision permet de résoudre la problème de calcul associé, avec un temps de calcul
comparable.
6.11 – Le problème SAT concerne la satisfaisabilité d’une forme normale conjonctive F . Le problème de calcul
associé vSAT demande de fournir une fonction de vérité qui satisfait F , s’il en existe.
6.12 – De même, au problème de coloration en k couleurs, k-COL, est associé le problème de calcul k-COLc , qui
demande de fournir une k-coloration du graphe, s’il en existe.
6.13 – De même, au problème du mariage en m dimensions, m-MAR, est associé le problème m-MARc qui demande
de trouver un appariement maximal lorsqu’il en existe un.
La classe N P
43
version du 21 novembre 2016
6.14 – Le problème suivant est un problème de décision très classique.
HAMILTON
Entrées
Question
:
:
n entier naturel, G graphe non orienté d’ordre n
Existe-t-il, dans G, un cycle hamiltonien i.e. qui passe exactement
une fois par chaque sommet ?
Le problème de calcul qui lui est naturellement associé, HAMILTONc demande qu’on fournisse un cycle hamiltonien,
s’il en existe un.
6.15 – Exemple typique de problème d’optimisation (cas particulier de calcul) :
ENS INDEPmax
Entrées
Question
:
:
n entier naturel, G graphe non orienté d’ordre n.
Trouver un ensemble de sommets indépendants, i.e. sans arête,
de taille maximale.
Le problème de décison associé doit comporter un paramètre supplémentaire :
ENS INDEP
Entrées
Question
:
:
n entier naturel, G graphe non orienté d’ ordre n et k 6 n
Existe-t-il un ensemble de k sommets indépendants ?
On peut encore résoudre facilement le problème de calcul si on a des algorithmes rapides résolvant les problèmes de
décision associés (exercices ci-dessous).
§6.4 - Exercices.
Exercice 50 Expliquez en détail, comme cela a été fait en cours (page 42), comment un algorithme résolvant le
problème de décision SAT peut être utilisé pour fabriquer un algorithme résolvant le problème de calcul VSAT.
Exprimez la complexité de l’algorithme de calcul en fonction de celle de l’algorithme de décision.
Exercice 51 Inspirez-vous de l’exercice précédent pour imaginer comment on peut utiliser un algorithme résolvant le problème de décision m-MAR pour fabriquer un algorithme résolvant le problème de calcul m-MARc (voir
page 42).
Exercice 52 On veut obtenir un résultat analogue pour les problèmes HAMILTON (décision) et HAMILTONc
(calcul), relatifs aux circuits hamiltoniens dans un graphe non orienté (voir ci-dessus).
On imagine qu’on a un algorithme A permettant de déterminer si un graphe est hamiltonien ou pas (i.e. s’il a un
circuit hamiltonien) et on voudrait l’utiliser pour construire un algorithme qui trouve un chemin hamiltonien, quand
il y en a un.
On considère un graphe fini, non orienté, et un de ses sommets v. Toute la difficulté est de déterminer où se situe v
dans le parcours hamiltonien i.e. quel sommet le précède et quel sommet lui succède, ou encore par quelle arête on
peut arriver à v et par quelle arête on peut repartir de v.
a) Considérons deux voisins w0 , w1 de v. Considérons le graphe obtenu en supprimant toutes les arêtes portés par
v sauf (v, w0 ) et (v, w1 ), qu’on appelle G[w0 vw1 ] .
Montrez que si G[w0 vw1 ] est hamiltonien alors G aussi et G a un circuit hamiltonien passant par les arêtes (w0 , v)
et (v, w1 ).
b) Réciproquement, montrez que si G est hamiltonien alors il existe deux voisins w0 6= w1 de v tels que G[w0 vw1 ]
est aussi hamiltonien.
c) Si on choisit un sommet de départ v0 , montrez comment on peut trouver un circuit hamiltonien (s’il en existe
un), en devinant la liste de parcours des sommets, de proche en proche, grâce à l’algorithme de décision A.
Décrivez un algorithme B, qui utilise des appels à A, pour fabriquer, quand il en existe, un circuit hamiltonien.
Quelle est la complexité de B en fonction de celle de A.
Exercice 53 On se fixe le même objectif pour ENS INDEPmax (trouver un sous-graphe indépendant de taille
maximale) grâce à un algorithme A résolvant le problème de décision ENS INDEP (existence d’un sous-graphe
indépendant de taille k fixée, voir ci-dessus).
a) Soit G un graphe non orienté et fini. Montrez que, par itération de A, on peut déterminer la taille maximale K
d’un sous-graphe indépendant de G.
b) Soit v un sommet de G et k ∈ IN ∗ . Appelons G\v le graphe obtenu en supprimant dans G le sommet v et tous
ses voisins, ainsi que les arêtes qu’ils portent.
Montrez que v appartient à un sous-graphe indépendant d’ordre k de G ssi G\v a sous-graphe indépendant d’ordre
k − 1.
c) Proposez un algorithme B, utilisant des appels à A, et permettant de construire, sommet par sommet, un sousgraphe de G indépendant et de taille maximale. Évaluez la complexité de B par rapport à celle de A.
Téléchargement