Solution. La première inégalité demandée vient en adaptant la question précédente à la jème étape.
En effet, il reste alors nj−1éléments non couverts et la solution optimale utilise k−jsous-ensembles
pour les couvrir, donc au moins un sous-ensemble contenant nj−1/(k−j)≥nj−1/k éléments encore
non couverts. Comme l’algorithme glouton est glouton il couvrira au moins ce nombre d’éléments et
nj< nj−1−nj−1/k.
Pour continuer on utilise l’inégalité bien connue 1−x<e−xpour x > 0, appliquée à nj≤
n(1 −1/k)j(déduite par récurrence de la précédente).
Enfin on déduit de nj< ne−j/k que nj= 0 si j > k log n: l’algorithme glouton s’arête après au
plus klog nétapes et utilise donc au plus log nfois plus d’ensembles que nécessaire.
Question 10 Montrer que pour des valeurs de nbien choisies (mais arbitrairement grande), il existe une
instance du problème précédent tel que : il y a néléments à couvrir ; le recouvrement optimal utilise
deux ensembles ; l’algorithme glouton utilise de l’ordre de log2nensembles.
Solution. Cherchons à construire le contre-exemple sur {1, . . . , n}: l’optimal doit être formé de deux
sous-ensembles, prenons le sous-ensembles Pdes entrées paires et celui Ides entrées impaires. Pour
tromper le glouton on va ajouter dans la collection des sous-ensembles un ensemble de taille en gros
n/2+2et recommencer avec les éléments restants. Pour simplifier les notations, on suppose que n=
2p+2pavec p > 1, et on considère l’ensemble des 2p−1+p+2 derniers entiers : comme 2p−1+p+2 >
bn/2c+ 1, glouton choisit ce sous-ensemble au lieu de Pou I. À l’étape suivante on est ramené à un
problème identique avec n= 2p−1+ 2(p−1) et le glouton continue de se tromper. Au final il utilise p
sous-ensembles au lieu de 2, soit de l’ordre de log2nsous-ensembles.
3 Satisfiabilité des formules de Horn
Une formule de la logique propositionnelle est une formule écrite à l’aide d’un ensemble de variables
et de connecteurs logiques ¬(la négation), ∧(le et logique) et ∨(le ou logique). Étant donnée une
formule on se demande s’il existe une façon de choisir une valeur vrai ou faux pour chaque variable de
sorte que la formule complète s’évalue à vrai. Ainsi la formule
(x∨y)∧(x∨z)∧(¬y∨ ¬z)
est satisfaite par l’affectation {x=V, y =F, z =V}, alors que la formule
(x∨y)∧(x∨z)∧(¬y∨ ¬z)∧ ¬x
n’est satisfaite par aucune affectation.
Question 11 Donner un algorithme de complexité m2npour déterminer si une formule de longueur m
sur nvariables est satisfiable.
Solution. Construire la table de vérité de la formule en l’évaluant pour toutes les 2naffectations pos-
sibles. Lorsqu’on aura vu le backtracking on pourra faire (un peu) mieux.
Appelons littéral une variable (littéral positif) ou une négation de variable (littéral négatif), et clause
une disjonction de littéraux. On écrit pour simplifier ¯xau lieu de ¬xpour les littéraux négatifs. Une
formule formée d’une conjonction de clauses (comme les exemples ci-dessus), est dite en forme normale
conjonctive. On peut montrer que toute formule de logique propositionnelle peut s’écrire en forme
normale conjonctive. Remarquons que satisfaire une formule en forme normale conjonctive revient à
trouver une affectation satisfaisant simultanément toutes les clauses de la formule, il est du coup naturel
de considérer une formule comme un ensemble de clauses.
On s’intéresse à une classe particulière de formules (en forme normale conjonctive), les formules de
Horn, dans lesquelles on se limite à deux types de clauses :
– les implications positives, de la forme : y∨¯x1∨ · · · ∨ ¯xk(ou de manière équivalente (x1∧ · · · ∧
xk)⇒y) où les x1, . . . , xket ysont des littéraux positifs
– les négations pures, de la forme : ¯x1∨· · ·∨ ¯xk, (ou de manière équivalente (x1∧· · ·∧xk)⇒faux).
4