• Aucun résultat trouvé

TD : Classes de complexité P et NP

N/A
N/A
Protected

Academic year: 2022

Partager "TD : Classes de complexité P et NP "

Copied!
3
0
0

Texte intégral

(1)

TD : Classes de complexité P et NP

Exercice 11. La méthode naïve pour chercher le plus petit diviseur d non trivial d'un entier p impair consiste à tester tous les entiers d impairs inférieurs à p1/2, jusqu'à trouver un diviseur (en cas d'échec, on en déduit que p est premier). Exprimer la complexité de cet algorithme en utilisant la notation

"grand-O", d'abord en fonction de p, ensuite en fonction de la taille de p.

Exercice 12. Montrer qu'une expression O ( ln n ) est aussi O ( log2 n ), et vice-versa. Les notations O ( e n ) et O ( 2 n ) sont-elles équivalentes ?

Exercice 41.

1. Calculer la table de vérité de la formule :

= ( x ¬y ) ( y ¬z ) z

2. Trouver une formule de la forme x' y' z', avec x' = x ou ¬x, etc. telle que soit une tautologie.

3. Transformer ( x ¬y ) ( y ¬z ) en forme normale conjonctive.

Exercice 42. Transformer la formule ( x1 y1 ) ( x2 y2 ) ( xn yn ) en forme normale disjonctive.

Exercice 43.

1. Exprimer l'égalité y = ¬x sous forme de conjonction de clauses.

2. Même question pour z = x y . 3. Même question pour z = x y . Exercice 44.

1. Exprimer l'implication x ( ¬y ¬z ) sous forme de conjonction de clauses.

2. En déduire une formule en forme normale conjonctive, qui exprime que l'une des trois variables x, y, z vaut 1, et une seulement.

3. Généraliser au cas de n variables x1 , x2 , … , xn . Prouver directement, c'est-à-dire sans utiliser la question 1, que la formule obtenue est correcte.

Solutions

Exercice 11. La complexité de l'algorithme est assurément en O ( p1/2 ), même si, en moyenne, elle est beaucoup plus faible (la plupart des entiers ont un petit diviseur). En désignant par n la taille de p, la complexité est en O ( 2 n/2 ), car p est borné par 2n+1.

Le fait de tester seulement les diviseurs impairs divise par 2 le temps d'exécution, ce qui est appréciable en pratique, mais n'est pas visible dans la notation "grand-O", par définition de celle-ci.

Noter aussi qu'on suppose implicitement, ci-dessus, que le coût d'une division est constant, alors qu'il est en O ( n2 ), et donc la complexité est rigoureusement O ( n2 2 n/2 ) ; en pratique le terme exponentiel empêche n de devenir grand (par exemple il ne dépasse certainement pas 100), et donc le coût d'une division peut être considéré comme borné par une constante assez petite (sur un processeur standard, le coût d'une division dépend de la taille des entiers exprimée en mots de 32 bits, taille qui ne dépasse certainement pas 4 pour p, et 2 pour un diviseur d).

Chapitre 8 : Classes de complexité P et NP

(2)

Exercice 12. Par définition, n = 2 log2 n, d'où en prenant le logarithme népérien de chaque côté : ln n = ( log2 n ) ln 2 .

Par contre e n / 2 n = ( e / 2 ) n est loin d'être borné par une constante, donc une expression O ( e n ) n'est pas forcément O ( 2 n ) — mais l'inverse est vrai.

Exercice 41.

1. Table de vérité de = ( x ¬y ) ( y ¬z ) z :

2. = ¬x ¬y ¬z vérifie : est une tautologie.

3. Par distributivité on obtient :

( x ¬y ) ( y ¬z ) =

( x y ) ( x ¬z ) ( ¬y y ) ( ¬y ¬z ) La troisième clause est inutile (tautologie), il reste :

( x y ) ( x ¬z ) ( ¬y ¬z )

et on peut remarquer que la clause du milieu est redondante (examiner les tables de vérité, ou considérer successivement les cas y = 0 et y = 1). D'où finalement :

( x y ) ( ¬y ¬z )

Ces clauses correspondent aux lignes de la table de vérité pour lesquelles la formule de départ vaut 0, à savoir les lignes 1 et 2 ( x = 0, y = 0, d'où la clause x y, qui vaut 0 exactement pour ces deux lignes), et les lignes 4 et 8 ( y = 1, z = 1, d'où la clause ¬y ¬z, qui vaut 0 exactement pour ces deux lignes).

Exercice 42. En développant par distributivité, on obtient une disjonction de 2n conjonctions, chacune de la forme :

z1 z2 zn

où chaque zi vaut soit xi , soit yi . L'examen de la table de vérité montre que toute disjonction de conjonctions contient au moins chacune des conjonctions ci-dessus ; c'est un exemple d'explosion exponentielle de la taille d'une formule, lorsqu'on la transforme en forme normale disjonctive (resp.

conjonctive).

Exercice 43. Rappelons que l'égalité x = y est équivalente à ( x ¬y ) ( ¬x y ) ; on peut le vérifier en calculant la table de vérité de cette expression.

1. L'égalité y = ¬x est donc équivalente à ( x y ) ( ¬x ¬y ) .

2. L'égalité z = x y est équivalente à ( ¬ ( x y ) z ) ( ( x y ) ¬z ) ; soit, en appliquant la loi de Morgan au premier terme, et en développant le second par distributivité :

( ¬x ¬y z ) ( x ¬z ) ( y ¬z ) . x y z x ¬y y ¬z

0 0 0 0 0 0

0 0 1 0 0 1

0 1 0 0 1 1

0 1 1 0 0 1

1 0 0 1 0 1

1 0 1 1 0 1

1 1 0 0 1 1

1 1 1 0 0 1

(3)

3. L'égalité z = x y est équivalente à ( ¬ ( x y ) z ) ( ( x y ) ¬z ) ; soit, en appliquant la loi de Morgan au premier terme :

( ( ¬x ¬y ) z ) ( x y ¬z ) puis en développant le premier terme par distributivité :

( ¬x z ) ( ¬y z ) ( x y ¬z ) . Exercice 44.

1. x ( ¬y ¬z ) équivaut par définition à ¬x ( ¬y ¬z ) ; en développant par distributivité, on obtient :

( ¬x ¬y ) ( ¬x ¬z ) .

2. Formule exprimant que l'une des trois variables x, y, z vaut 1, et une seulement : ( x y z ) ( ¬x ¬y ) ( ¬x ¬z ) ( ¬y ¬z ) . 3. Généralisation au cas de n variables :

( x1 x2 xn )

( ¬x1 ¬x2 ) ( ¬x1 ¬xn ) ( ¬x2 ¬x3 ) ( ¬x2 ¬xn )

( ¬x3 ¬x4 ) etc.

La formule contient une clause ¬xi ¬xj pour chacun des n (n - 1) / 2 couples (i, j), avec i < j.

La première clause garantit que l'un des xi vaut 1. Supposons par exemple x1 = 1 ; alors chaque clause ¬x1 ¬xi se réduit à ¬xi , donc xi = 0, pour tout i > 1 ; les clauses restantes (celles qui ne contiennent pas la variable x1 ) sont alors toutes (doublement) vérifiées.

Références

Documents relatifs

Les joueurs jouent tour à tour, le joueur 1 commençant en premier ; à chaque tour, le joueur dont c’est le tour de jouer déplace le marqueur placé sur un sommet x sur un autre sommet

Pour montrer que PATH ∈ NL, on construit une MTN M telle que si l’entrée ne correspond pas à un encodage valide d’un triplet (G, s, t) avec G = (V, A) un graphe orienté et s, t ∈

Si l’on sait résoudre l’un des deux premiers problèmes, alors on sait factoriser N et donc résoudre les deux autres problèmes.. Pour le dernier problème, on va montrer qu’on

On suppose un ordre total sur les constantes du domaine, et que la base de données contient une relation S qui, pour toute base de données, contient la relation de successeur

Comme on l'a déjà mentionné, les problèmes dans NP sont en général plus difficiles à résoudre (du point de vue du temps de calcul) que les problèmes dans P, mais on verra dans

Bousculé, apostrophé, harcelé, l'auditeur ne sait plus si le bulletin météorologique qui annonce la neige a trait à la journée d'hier ou à celle de demain ; et il se retrouve en

On compte alors les inversions ( L, M ) qui peuvent être de deux types : soit L et M apparaissent dans le même sous-classement de Béatrice, soit L et M apparaissent dans deux

[r]