Vous êtes sur la page 1sur 8

Complexit des algorithmes et notation grand O

Ce texte sur lefcacit des algorithmes se divise en deux parties. Notre premier but est de pouvoir comparer lefcacit de diffrents algorithmes. Comment y arriver ? Il faut reprsenter la complexit de chacun des algorithmes par une fonction. (Ce travail est fait la section 2.3 du livre de Rosen et nous nous y attarderons pas ici.) La notation grand O indique en quelque sorte lordre de grandeur des fonctions. Cela permet ensuite de comparer rapidement les fonctions pour savoir laquelle correspond un algorithme plus efcace. Dans un deuxime temps, nous nous poserons dautres questions trs importantes : Est-ce que chaque problme peut tre rsolu par un algorithme ? Parmi les problmes rsolubles, quels sont ceux qui peuvent ltre par un algorithme efcace ? Puis nous discuterons des problmes NP-complets et de la question un million de dollars ce sujet.

Mesure de la complexit (en temps)


Le temps dexcution dun algorithme donn dpend principalement de la machine utilise : langage, OS, compilateur... les donnes auxquelles lalgorithme est appliqu. Nous allons utiliser une mesure plus abstraite, qui ne dpend pas de la machine ni des donnes ellesmmes, mais plutt de la taille des donnes (taille de linput). Par exemple, le temps dexcution dun algorithme de tri dpend de la longueur de la liste trier. On utilisera donc une fonction pour dcrire la complexit dun algorithme.

temps ou nombre doprations

fonction complexit

taille des donnes

Exemple 1 En analysant lalgorithme de fouille linaire (voir exemple 2, section 2.3), on constate que lalgorithme ncessite au plus1 f (n) = 2n + 2 comparaisons pour traiter une liste de taille n, tandis que lalgorithme de fouille dichotomique (binary search) ncessite au plus g(n) = 2 log2 (n)+ 2 comparaisons. Quel algorithme sera plus efcace pour traiter des grosses listes ?
1 La fouille linaire sera trs efcace pour obtenir le numro de tlphone de Karl Aach dans le bottin mais beaucoup moins pour obtenir celui de Steven Zuk ! Nous choisirons ici dtudier la complexit dans le pire des cas (worst case complexity).

TS MAT210 E05

Notation grand O

Genevive Savard

Exercice 1 Si lalgorithme A ncessite f (n) oprations pour rsoudre un problme de taille n et lalgorithme B en ncessite g(n), lequel sera plus efcace pour rsoudre les gros problmes ? (a) f (n) = n3 + 3 et g(n) = 25 + n2 (b) f (n) = 2n + 4n3 et g(n) = 10n4 Pour rpondre cette question, vous avez peut-tre trac un graphe, observ un tableau, ou peut-tre avez-vous simplement utilis vos connaissances antrieures sur les fonctions pour rpondre immdiatement la question. Nous allons maintenant nous doter doutils nous permettant de comparer trs rapidement deux fonctions pour savoir laquelle correspond un algorithme plus efcace.

Notation grand O
Dnition 1 p. 132 Soit f et g deux fonctions de R vers R ou de N vers R. On dit que f (x) est O(g(x)), et on utilise parfois la notation f (x) O(g(x)), si f est ventuellement dpasse par un multiple de g, cest--dire sil existe des constantes C et k telles que x > k, | f (x)| C|g(x)| La borne k, appele seuil, permet dignorer le comportement des fonctions pour les donnes de petites tailles (dans ces cas, la complexit de lalgorithme est souvent domine par des oprations dinitialisation qui deviennent ngligeables pour des donnes plus grandes).
C = 10 k = 2.1 10 g f C=7 k = 4.1 7g f

g x x

2.1

4.1

La constante C, appele facteur, permet de faire abstraction de vitesse de la machine utilise. Les nombres k et C sont appels tmoins de la relation f (x) O(g(x)). Il suft de trouver une paire de tmoins pour prouver que f (x) est O(g(x)). Mais il y a une innit de choix possibles. Alors il sera trs normal que vos rponses diffrent de celles du livre ! Par exemple, pour prouver que f (x) = 5x2 + 6x + 9 est O(x2 ), je peux fournir comme tmoins C = 7 et k = 4.1 ou C = 10 et k = 2.1 comme lindique la gure ci-dessus. Le nombre doprations requises pour rsoudre un problme ne peut tre ngatif. Ainsi, dans le cas particulier des fonctions de complexit des algorithmes, les valeurs absolues de la dnition ne sont pas ncessaires car ces fonctions prennent toujours des valeurs positives. Exemple 2 Montrer que 7x2 est O(x3 ) en fournissant les tmoins. Voir page 135 de Rosen. 2

TS MAT210 E05

Notation grand O

Genevive Savard

Il peut tre laborieux de trouver les tmoins k et C dune relation grand O. Et dans la pratique, la valeur de ces tmoins na pas dimportance. Limportant est de savoir que f (x) est O(g(x)). Voici quelques thormes permettant dviter la recherche de tmoins. Thorme 1 (Napparat pas dans Rosen) Si f (x) = b et b > 0 x g(x) lim

alors f (x) O(g(x)) et g(x) O( f (x)). Si f (x) =0 x g(x) lim

alors f (x) O(g(x)) et g(x) / O( f (x)). Exemple 3 Soit f (x) = 7x2 et g(x) = x3 . Est-ce que f (x) O(g(x)) ? Est-ce que g(x) O( f (x)) ? f (x) x g(x) lim 7x 2 x x 3 7 = lim x x = 0 = lim

donc 7x2 O(x3 ) mais x3 / O(7x2 ) Vous pouvez lire aux pages 135 et 136 une preuve quivalente utilisant uniquement la notion de tmoins (et non celle de limite). Mais puisque vous avez tous eu la chance de suivre un cours de calcul diffrentiel, pourquoi ne pas en proter pour gagner du temps ? Exemple 4 Soit f (n) = log2 (n) et g(n) = n.
n

lim

f (n) g(n)

= =

lim lim

log2 (n) n
1 n ln(2)

qui est de la forme

par la rgle de lHopital

= 0 donc log2 (n) O(n) mais n / O(log2 (n)) La mme dmarche fonctionne pour un logarithme de nimporte quelle base.

TS MAT210 E05

Notation grand O

Genevive Savard

Exemple 5 Soit f (n) = 2n et g(n) = 3n . f (n) n g(n) lim 2n n 3n 2 = lim n 3 = 0 = lim

donc 2n O(3n ) mais 3n / O(2n ) Thorme 2 Dans la liste de fonctions ci-dessous, chaque fonction est grand O des fonctions qui sont situes plus droite mais nest pas grand O des fonctions situes plus gauche. 1, log(n), n, n log(n), n2 , n3 , n4 , . . . , 2n , 3n , 4n , . . . , n!, nn Les gures suivantes illustrent la croissance des fonctions de la liste.
x 10 5 6 n5 15 10 5 n3 n2 nn n log (n) 4 n 2 log (n) 1 2 4 6 8 n 5 10 15 n n! 4n 3n n5

20

Une e xpone ntie lle de ba s e b s up rie ure 1 a rrive toujours d pa s s e r un polynme p(n), m me s i la ba s e e s t tr s pr s de 1 e t le de gr du polynme e s t tr s gra nd : p(n) e s t O(b n )

300 n 10 200 n4 n3 2n

x 10 17 6 4 2n n 10

100

40

50

60

TS MAT210 E05

Notation grand O

Genevive Savard

Thorme 3 (Grand O de la somme) Si f1 (x) O(g1 (x)) et f2 (x) O(g2 (x)) et si g1 (x) O(g2 (x)) alors ( f1 + f2 )(x) O(g2 (x)) Thorme 4 (Grand O du produit) Si f1 (x) O(g1 (x)) et f2 (x) O(g2 (x)) alors f1 f2 (x) O(g1 g2 (x)) Thorme 5 (Grand O dun polynme) Si p(x) est un polynme de degr d alors p(x) O(xd ) Exemple 6 Soit f (x) = 6 7x + 7x5 + x3 194x2 2112

La fonction f est un polynme de degr 6. Donc 6 7x + 7x5 + x3 194x2 2112 O(x6 ) Exemple 7 Soit f (x) = x2 + 5x Trouvez une fonction g(x), la plus simple possible, telle que f (x) O(g(x)). La fonction f est une somme. On peut traduire le thorme de la somme ainsi : cest la fonction dont le grand O domine les autres qui lemporte. Dans le cas de f , quelle fonction domine lautre ? Allons voir la liste du thorme 2 : cest lexponentielle 5x qui domine la puissance x2 , au sens o x2 O(5x ). Ainsi, x2 + 5x O(5x ) La fonction cherche est donc g(x) = 5x .

TS MAT210 E05

Notation grand O

Genevive Savard

Exemple 8 Soit f (x) = 4x2 + 3x + 7 + 6 3x + 5 log(x) Trouvez une fonction g(x), la plus simple possible, telle que f (x) O(g(x)). On sait que 4x2 + 3x + 7 O(x2 ) car cest un polynme de degr 2 (thorme 5), 6 3x O(3x ) car la limite du quotient est 6 (thorme 1), ou en utilisant les tmoins C = 6 et k = 0, 5 log(x) O(log(x)) car la limite du quotient est 5 (thorme 1), ou en utilisant les tmoins C = 5 et k = 0. Daprs la liste du thorme 2, cest 3x qui domine. Ainsi, daprs le thorme de la somme, 4x2 + 3x + 7 + 6 3x + 5 log(x) O(3x ) La fonction cherche est donc g(x) = 3x . Exemple 9 Soit f (n) = (14n + 3) log(n) + 3n2 Trouvez une fonction g(n), la plus simple possible, telle que f (n) O(g(n)). On sait que 14n + 3 O(n) car cest un polynme de degr 1. Donc, par le thorme du produit, (14n + 3) log(n) O(n log(n)) On a 3n2 O(n2 ), (14n + 3) log(n) O(n log(n)) et, en regardant la liste du thorme 2 on voit que n2 domine n log(n). Ainsi, daprs le thorme sur la somme, (14n + 3) log(n) + 3n2 O(n2 ) La fonction cherche est donc g(n) = n2 .

Calculabilit et complexit
Nous avons dj discut en classe du fait quil existe des problmes qui ne peuvent tre rsolus par un programme. La preuve de cette afrmation consiste montrer que lensemble des problmes est non dnombrable alors que lensemble des programmes est dnombrable. Il est donc impossible dtablir une bijection entre ces deux ensembles : il y a plus de problmes que de programmes possibles. Ceci dit, cette preuve ne fournit pas un problme concret non rsoluble.

TS MAT210 E05

Notation grand O

Genevive Savard

En 1936, Alan Turing a fourni un exemple concret en dmontrant que le fameux problme de larrt nest pas rsoluble par un programme.2 Il serait donc totalement inutile de mettre sur pied une quipe dingnieurs en informatique pour tenter de rsoudre un tel problme, comme il serait inutile mettre sur pied une quipe dingnieurs en mcanique pour construire une machine mouvement perptuel. Quels sont les problmes rsolubles ? Non rsolubles ? Voil une des questions que traite la thorie de la calculabilit. De plus, parmi les problmes rsolubles, quels sont les problmes rsolubles par un algorithme efcace ? Voil une autre question importante, traite par la thorie de la complexit. Mais quentend-on au juste par algorithme efcace ? Il est clair quun algorithme dont la complexit est exponentielle nest pas efcace. Il est plus difcile de sentendre sur le sens du mot efcace mais on convient gnralement quil sagit dun algorithme dont la complexit est au plus polynomiale : O(nd ) peu importe le degr. (Dans les faits, le degr du polynme devra tre petit pour que lalgorithme soit rellement efcace. Mais ceci nest pas important ici.) Il existe toute une gamme de problmes importants pour lesquels aucun algorithme complexit polynomiale na t trouv. Et plusieurs de ces problmes, quoique fort diffrents, sont quivalents au sens ou si lun de ces problmes est rsoluble en temps polynomial, alors ils le sont tous. Ces problmes sont qualis de NP-complets. En voici quelques-uns qui seront rencontrs en MAT210. 1. En thorie des graphes, le problme du circuit hamiltonien (HC) : existe-t-il un circuit ferm permettant de parcourir chaque sommet dun graphe une et une seule fois ?

F IG . 1 Le graphe de gauche contient un circuit hamiltonien. 2. En thorie des graphes, le problme du voyageur de commerce (travelling salesman, TS) : quel est le plus court chemin permettant de parcourir un ensemble de villes et de revenir son point de dpart ? 3. En logique, le problme de la satisfaisabilit dune proposition (SAT) : tant donne une proposition sous forme normale conjonctive, comme par exemple ( p q s) ( p q s), existe-t-il une fonction dinterprtation qui la rend vraie ? En dautres mots, y a-t-il un choix de valeurs de vrit pour les propositions simples p, q et s qui rend la proposition compose vraie ? Il existe un algorithme trs simple qui permet de rpondre cette dernire question : vrier si la table de vrit de la proposition compose contient une ligne Vrai. Mais comme nous lavons vu au chapitre 1, si la proposition contient n propositions simples, la table de vrit comporte 2n lignes. Lalgorithme dcrit nest donc malheureusement pas polynomial. Il en va de mme des autres problmes : on peut les rsoudre en numrant toutes les possibilits puis en vriant, mais lnumration est dordre exponentiel ou factoriel alors que lon recherche un algorithme polynomial.
2 Voir

Rosen, page 222.

TS MAT210 E05

Notation grand O

Genevive Savard

Une autre caractristique commune de ces problmes est que, bien quil soit difcile (ou impossible ?) de fournir un algorithme qui produit une solution en temps polynomial, il est facile de fournir un algorithme qui vrie en temps polynomial si une solution donne est valide. Les problmes NP-complets : trs longs rsoudre, trs rapides vrier.

Une question un million ! 1 000 000 $


Le fait qu ce jour aucun des problmes NP-complets nait t rsolu en temps polynomial nous porte croire que cela est impossible. Mais limpossibilit de les rsoudre en temps polynomial na pas t dmontre. Cette question ouverte constitue dailleurs un des 7 problmes du millnaire pour chacun desquels un million de dollars est offert en rcompense par le Clay Mathematics Institute of Cambridge. Cela ne veut pas dire quil faille abandonner toute tentative de rsoudre les problmes NP-complets par des algorithmes efcaces. Par exemple, si le problme en est un doptimisation, il est peut-tre impossible de trouver un algorithme efcace produisant la solution optimale mais possible den trouver un produisant une solution trs proche de la solution optimale. Parfois, il sera possible de trouver un algorithme fonctionnant efcacement pour la grande majorit des cas traits et on sen contentera. Si vous tes confronts un problme et que vous tablissez quil est NP-complet, vous saurez quil vaudra mieux chercher une solution approximative. moins de rvolutionner linformatique et de devenir millionnaire !

Rfrences
1. K. H. Rosen, Discrete Mathematics and its applications, 5e dition, sections 2.1 2.3, 2003. 2. Pierre Wolper, Introduction la calculabilit, 2e dition, chapitre 8, 1991. QA76.9 M35 W65 2001 3. Une introduction la complexit : efcacit des algorithmes, classes des problmes P, NP et NP-complets, thorme de Cook sur la NP-compltude du problme SAT (1971). DJJF KIAHI B HJD AJ CH =JD E ++ +++"> DJ 4. Des articles en franais de lencyclopdie Wikipdia sur la notation grand O, sur la thorie de la complexit, sur la complexit algorithmique : DJJF BH ME EFA@E= HC ME E )??KAE 5. Au sujet de la rcompense de 1 000 000 $ : DJJF

MMM ? =O =JD

HC E

EK

2 LI 2