Exercice 3.1 : La plus courte super-suite commune.
Donnée: u1, ..., unnmots –l’alphabet est fixé
kun entier, k < |u1|+... +|un|
Sortie: oui, si il existe une supersuite de longueur kdes nmots ui( i.e. un mot ude longueur ktel que les ui
soient sous-mots de u)
Q 1. Montrer que le problème est NP .
Q 2. Dans le cas où n= 2, proposer un algorithme polynomial Supersuite(u,v) qui retourne une Supersuite
commune à uet vde longueur minimale.
Q 3. Soit l’algorithme suivant:
Super=u_1;
pour i de 2 à n Super=SuperSuite(Super,u_i);
Cet algorithme produit-il bien une supersuite des ui? Produit-il toujours la supersuite la plus courte?
Exercice 3.2 : Processus
Soit un système temps réel avec nprocessus asynchrones et mressources. Quand un processus est actif, il
bloque un certain nombre de ressources et une ressource ne peut être utilisée que par un seul processus. On
cherche à activer simultanément kprocessus. Le problème de décision DecProc est donc:
Donnée: n, le nombre de processus
m, le nombre de ressources
pour chaque processus i, la liste Pides ressources qu’il bloque.
kle nombre de processus que l’on souhaite activer
Sortie: Oui, si on peut activer kprocessus simultanément, non sinon.
Par exemple si n= 4,m= 5, et P1={1,2}, P2={1,3}, P3={2,4,5}, P4={1,2,4}on peut activer
simultanément les processus 2et 3et donc la réponse est Oui pour k= 2 mais la réponse est N on pour k= 3.
Q 1. Montrer que le problème DecProc est NP .
Exercice 3.3 : Le problème de recouvrement (SET_COVERING)
Donnée: un ensemble E de cardinal n
psous-ensembles de E,(Ei)i=p
i=1, qui forment un recouvrement de E(i.e. E=Sp
1Ei).
un entier k
Sortie: oui, si il existe un recouvrement de cardinal k(J⊂[1..p]de cardinal k tq Si∈JEi=E), non, sinon.
Q 1. Soit E= [1..8], E1={1,3,5,7}, E2={3,5,8}, E3={1,2,3}, E4={6,7}, E5={4,5}. Y-a-t-il une
solution pour k=4? Pour k=3?
Q 2. Montrer que la propriété est NP. Quelle serait la complexité d’une méthode par recherche exhaustive?
Exercice 3.4 : Le Sudoku
Soit le Sudoku généralisé: une grille est un carré de côté k2pour un certain k, qu’on peut diviser en k2carrés
de k2cases, le but étant de remplir avec les entiers de 1àk2avec les règles suivantes: un entier doit apparaître
une et une seule fois dans chaque ligne, dans chaque colonne, dans chaque carré.
Q 1.Soit le problème de décision:
Donnée: un entier ket une grille k2∗k2partiellement remplie par des entiers de 1àk2.
Sortie: Oui, Ssi la grille peut être complétée en respectant les règles.
Montrer qu’il est NP.1
Q 2. Que pensez-vous de la complexité de ce problème de décision:
Donnée: un entier ket une grille k2∗k2partiellement remplie par des entiers de 1àk2.
Sortie: Oui, Ssi il existe au plus une complétion correcte de la grille.
1Le problème est N P −dur, mais dans le cas k= 3, il existe bien sûr des algorithmes dont l’exécution est très rapide.
2