Vous êtes sur la page 1sur 123

Algorithmique et complexit de calcul

Avril 2008
Pr. Mohsine Eleuldj Dpartement Gnie Informatique Ecole Mohammadia dIngnieurs Universit Mohammed V Agdal eleuldj@emi.ac.ma
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 1

Complexit de calcul

Algorithme 1 Problme Algorithme 2 Algorithme 3 Indcidable (problme de larrt)

Classification :
Linaire Quadratique Polynomial

NP NP-complet

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Algorithmique et complexit de calcul


Objectifs tude des techniques de conception et d'analyse des algorithmes. comparaison et classification des algorithmes. Ce nest pas un catalogue d'algorithmes pour la rsolution de problmes spcifiques. Plan I Prliminaires II Analyse de l'efficacit des algorithmes III Diviser pour rgner IV Algorithmes voraces V Programmation dynamique VI Transformation du domaine VII Algorithmes probabilistes VIII Prconditionnement
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 3

Chapitre I : Prliminaires
Contenu 1 Notion dalgorithme 2 Efficacit des algorithmes 3 Nature de lanalyse 4 Pourquoi des algorithmes efficaces 5 Calcul des nombres de Fibonacci

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

1 Notion dalgorithme
Origine : le mot "algorithme" est associ au clbre auteur Perce Abou Jaafar Mohammed Ibn Moussa Al Khawarizmi connu pour son livre "Al Jabr oua El Mokabala" crit l'an 825. Dfinition : un algorithme est une mthode systmatique pour rsoudre un problme donn. L'excution ne doit pas laisser la place l'interprtation, lintuition ni la crativit. Definition : lAlgorithmique est ltude des techniques de conception et danalyse des algorithmes Exemples : Multiplication des nombres entiers Division Calcul du PGCD Certaines recettes de cuisines
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 5

Exemple : multiplication des nombres


53 x 17 371 53 901 53 26 13 6 3 1 17 34 72 136 272 544 901

Analyse des ressources Mthode classique : tables de multiplications + addition Mthode russe : multiplication par 2 et division par 2 (dcalages droite et gauche dans une reprsentation en base 2) + addition
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 6

Reprsentation des algorithmes

Langue naturelle

Pseudo-code

Langage de programmation

Langue naturelle : ambigut Langage de programmation : complexit de lecture (dtails de programmation Pseudo-code : description des algorithmes

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Algorithme de multiplication russe


fonction russe (A,B) tableau X,Y X[1] A, Y[1] B, i 1 { initialisation } tant que X[i] > 1 faire { former les 2 colonnes } X[i + 1] X[i] div 2 Y[i + 1] Y[i] * 2 i i+1 P 0 { addition des entres appropries } tant que i > 0 faire si (X[i] mod 2 = 1) alors P P + Y[i] i i-1 retourner P Exercice : Faire la trace pour l'exemplaire (17,53). Modifier cet algorithme pour avoir une seule boucle et en utilisant seulement des variables scalaires.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 8

Autre algorithme de multiplication russe


fonction autre_russe (A,B) entier x,y x A, y B, P 0 tant que x 1 faire si (x mod 2 = 1) alors P x x div 2 y y*2 retourner P

{initialisation} P + y {ajouter la valeur approprie}

Exercice : Faire la trace pour l'exemplaire (35, 17).

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Autre algorithme de multiplication


fonction pas_russe (A,B) tableau X,Y X[1] A, Y[1] B, i 1 { initialisation } tant que X[i] > 1 faire { former les 2 colonnes } X[i + 1] X[i] - 1 Y[i + 1] B i i+1 P 0 { additionner les entres appropries } tant que i > 0 faire si X[i] > 0 alors P P + Y[i] i i-1 retourner P Exercice : Faire la trace pour l'exemplaire (53,17). Ecrire l'algorithme classique de multiplication
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 10

Etapes de rsolution dun problme


1 Trouver diffrents algorithmes (selon mthodes de conception) 2 Analyser leur efficacit (en terme de temps, espace mmoire,...) 3 Choisir le meilleur algorithme (selon la taille de l'exemplaire, puissance du matriel, ordre,...)

Algorithme 1 Problme Algorithme 2 Algorithme 3


Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 11

2 Efficacit des algorithmes


Dfinition : Un exemplaire x est lentre dun algorithme, |x| = taille de l'exemplaire x Exemples - Tri : |x| est le nombre d'entiers ordonner - Multiplication : |x| est le nombre de chiffres (ou bits) des facteurs Approches danalyse - Empirique : programmation + excution avec plusieurs exemplaires - Thorique : dterminer la quantit de ressources (temps, mmoire,...) en fonction de la taille des exemplaires Avantages de l'approche thorique - Indpendance de l'ordinateur et langage de programmation - Gain dans la programmation et l'excution des algorithmes inefficaces - Taille des exemplaires n'est pas une contrainte
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 12

3 Nature de lanalyse
Efficacit dun algorithme dpend - taille de lexemplaire - espace mmoire - Comparaison des algorithmes selon diffrentes analyses - meilleur cas (optimiste) - moyenne - pire cas (pessimiste)

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

13

Tri par insertion


Procdure insert (T[1..n]) pour i 2 jusqu' n faire x T[i] j i-1 tant que j > 0 et T[j] > x faire T[j + 1] T[j] j j-1 T[j + 1] x Exercice : Faire la trace pour T = [3,1,4,0,5], U = [0,3,4,6,9] et V = [9,6,4,3,0]

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

14

Trace de insert(T)
i 2 3 4 x 1 4 0 j 1 0 2 3 2 1 0 5 5 4 j > 0 et T[j] > x oui non non oui oui oui non non 13045 10345 01345 01345
15

T 31405 13405

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Trace de insert(U) et insert(V)


i 2 3 4 5 x 3 4 6 9 j 1 2 3 4 3 4 U 03469 i 2 x 6 j 1 0 2 1 0 4 3 3 2 1 0 5 0 4 3 2 1
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

V 96430

69 430

64930 46930

46390 43690 34690

34609 34069 30469 03469


16

Tri par slection


Procdure select (T[1..n]) pour i 1 jusqu' n-1 faire minj i, minx T[i] pour j i + 1 jusqu' n faire si T[j] < minx alors minj j minx T[j] T[minj] T[i] T[i] minx Exercice : Faire la trace pour T = [3,1,4,0,5], U = [0,3,4,6,9] et V = [9,6,4,3,0]
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 17

Trace de select(T)
i 1 j 2 3 4 5 2 3 4 5 3 4 5 4 5 minj 1 2 2 4 4 2 2 2 2 3 4 4 4 4 minx 3 1 1 0 0 1 1 1 1 4 3 3 4 4 01345
18

T 31405

01435

01435

01345

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Trace de select(U) et select(V)


i 1 j 2 3 4 5 2 3 4 5 3 4 5 4 5 minj 1 1 1 1 1 2 2 2 2 3 3 3 4 4 minx 0 0 0 0 0 1 3 3 3 4 4 4 6 6 03469 03469 4 03469 3 03469 2 U 03469 i 1 j 2 3 4 5 3 4 5 4 5 5 minj 1 2 3 4 4 2 3 4 4 3 3 3 4 4 minx 9 6 4 3 0 6 4 3 3 4 4 4 6 6 96430
19

V 96430

06439

03469

96430

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Analyse de insert et select


Trace U : meilleur cas pour insert V : pire des cas pour insert V : meilleur cas pour select U : pire des cas pour select Conclusion analyse au pire cas de insert et select nous allons voir que insert et select sont de l'ordre de n2, o n = |x|

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

20

4 Pourquoi des algorithmes efficaces ?


Supposition A : un algorithme M : une machine A : un algorithme plus efficace que A M : une machine plus puissante que M Question : A sur M ou A sur M ? Autrement si n : taille de lexemplaire t(n) : temps d'excution de A sur M t'(n) : temps d'excution de A sur M' t"(n) : temps d'excution de A sur M Question : t(n) < t(n) ou t(n) < t(n) ?
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 21

Application numrique
t(n) = 10-4 x 2n s t'(n) = t(n) x 10-2 = 10-6 x 2n s t"(n) = 10-2 x n3 s (M 100 plus rapide que M) (A plus efficace que A)
temps de calcul(s) 10 10 10 10 10 10
6 5 4 3 2

t(n) t'(n)

n 10 20 30 38 45 200 1500

t(n) 1/10 s 2 mn 10 jours 1 anne -

t'(n) 2 ms 1s 3 heures 4 mois 1 anne -

t"(n) 10 s 1mn 5 mn 10 mn 20 mn 1 jour 1 anne

1 jour t"(n) 1 heure

1 minute

Taille de l'exemplaire
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 22

Calcul des nombres de Fibonacci (1/3)


Dfinition f0 = 0, f1 = 1 fn = fn-1 + fn-2 pour n 2 De Moivre fn = 1/5 [ n - (-)-n ] o = (1 + 5)/2 le nombre d'or Cette formule n'est pas pratique pour calculer la valeur exacte de fn

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

23

Calcul des nombres de Fibonacci (1/3)


fonction fib1(n) si n < 2 alors retourner n sinon retourner fib1(n-1) + fib1(n-2) fonction fib2(n) i 1, j pour k

0 1 jusqu' n faire j i+j i j-i retourner j

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

24

Calcul des nombres de Fibonacci (3/3)


fonction fib3(n) i 1, j 0, k 0, h 1 tant que n > 0 faire si n est impair alors t jh j ih + jk + t i ik + t t h2 h 2kh + t k k2 + t n n div 2 retourner j Exercice : Faire la trace de fib1, fib2 et fib3 la trace pour n = 5
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 25

Excution de fib1, fib2 et fib3


102 3/2 ms 1/2 ms 104 150 ms 1 ms 106 15 s 3/2 ms 108 25 mn 2 ms

n fib1 fib2 fib3

10 8 ms 1/6 ms 1/3 ms

20 1s 1/3 ms 2/5 ms

30 2 mn 1/2 m 1/2 ms

50 21 j 3/4 ms 1/2 ms

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

26

Chapitre 2 : Analyse de lefficacit des algorithmes

Contenu 1 Notations asymptotiques 2 Analyse des algorithmes itratifs 3 Rsolution dquations de rcurrences 4 Analyse des algorithmes rcursifs

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

27

1 Notations asymptotiques
Remarque : L'analyse thorique de l'efficacit d'un algorithme se fait une constante prs pour ne pas tenir compte de : - langage de programmation - compilateur et systme d'exploitation - puissance de lordinateur Notation "l'ordre de" Soit f : N ---> R* O(f(n)) = {t : N R* / ( c R+) ( n0 N) ( n n0) [t(n) c f(n)]} Dfinitions O(f(n)) est appel l'ordre de f(n) t(n) O(f(n)) t(n) est dans l'ordre de f(n) t(n) : temps d'excution d'un algorithme algorithme est de l'ordre de f(n)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 28

t(n) O(f(n))

temps

c f(n) t(n)

n0

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

29

Exercices
a) Quel est lordre de lalgorithme qui prend un temps born suprieurement par : t(n) = 3 s - 18n ms + 27n2 s b) Prouver que : f(n) O(g(n)) et g(n) O(h(x)) f(n) O(h(n)) c) Dduire que g(n) O(h(n)) O(g(n)) O(h(n)) d) Soient f, g : N R+, montrer que : O(f(n) + g(n)) = O(max(f(n) , g(n))) e) Soient f et g: N R+, prouver que : limn f(n) / g(n) = c R+ O(f(n)) = O(g(n)) limn f(n) / g(n) = 0 O(f(n)) O(g(n)) f) Prouver que : log n O(n) et n O(log n) g) Soit x R / 0 < x < 1. Utiliser et = pour mettre en rang les ordres des fonctions suivantes: n log n, n8, n1+x, (1 + x)n, (n2 + 8n + log3n)4 et n2/log n
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 30

Rponse (1/3)
Exemple 1 : Soit un algorithme qui prend un temps born suprieurement par : t(n) = 3 s - 18n ms + 27n2 s. Trouvons une fonction f aussi simple que possible tel que cet algorithme prenne un temps dans l'ordre de f(n). Prenons c = 27 x 10-6 et n0 = 500/3 Soit n > n0 _ n > 500/3 _ 18n > 3000 _ 18n x 10-3 > 3 _ 3 - 18n x 10-3 < 0 _ 3 - 18n x 10-3 + 27n2 x 10-6 _ 27n2 x 10-6 = cn2.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 31

Rponse (2/3)
Exemple 2 : a) Prouver que : f(n) O(g(n)) et g(n) O(h(x)) _ f(n) O(h(n)) b) Dduire que g(n) O(h(n)) _ O(g(n)) C O(h(n)) Preuve : f(n) O(g(n)) _ ($ c' R+) ($ n' N) (" n > n') (f(n) _ c'g(n)) g(n) O(h(x)) _ ($ c" R+) ($ n" N) (" n > n") (g(n) _ c"h(n)) Soit c = c'c" et n0 = sup(n',n") alors (" n > n0) f(n) _ c'g(n) _ c'c"h(n) donc f(n) O(h(n)). Soit f(n) O(g(n)) d'aprs (a) f(n) O(h(n)) donc f(n) O(h(n)). Exemple 3 : Soient f, g : N --> R+, montrer que : O(f(n) + g(n)) = O(max(f(n) , g(n))).
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 32

Rponse (3/3)
Applications : n3+ 3n2+ n + 8 O(n3 + (3n2 + n + 8)) = O(max(n3 , 3n2 + n + 8)) = O(n3). Il faut s'assurer que f(n) et g(n) soient positives car sinon on trouvera la contradiction suivante : O(n2) = O(n3 + (n2 - n3)) = O(max(n3 , n2 - n3))) = O(n3). Montrer que O(n2) _ O(n3). Exercice 1: Soient f et g: N ---> R+. Prouver que : limn-->_ f(n) / g(n) = l R+ _ O(f(n)) = O(g(n)) limn-->_ f(n) / g(n) = 0 _ O(f(n)) C O(g(n)) Exercice 2 : Prouver que log n O( _n) et _n O(log n) Exercice 3 : Soit x R / 0 < x <1. Utiliser C (inclusion) et = pour mettre en rang les ordres des fonctions suivantes: n log n, n8, n1+x, (1 + x)n, (n2 + 8n + log3n)4 et n2/log n.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 33

Autres notations asymptotiques


Remarque : la notion d'ordre est l'estimation d'une limite suprieure du temps d'excution d'un algorithme sur un exemplaire de taille donne. Nous allons estimer une limite infrieure. Omega de f(n) (f(n)) = {t : N R* / ( c R+) ( n0 N) ( n n0) [t(n) c f(n)]} Exercice : Soient f, g : N R*, montrer que : f(n) O(g(n)) g(n) (f(n)) Ordre exact de f(n) (f(n)) = O(f(n)) (f(n))

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

34

t(n) (f(n)) = O(f(n)) (f(n))

temps

c1 f(n) t(n) c2 f(n)

n0

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

35

2 Analyse des algorithmes itratifs


Soit t(n) : temps d'excution de l'algorithme pour un exemplaire de taille n Algorithmes analyss Calcul de Fibbonacci Tri par selection Tri par insersion Calcul du PGCD

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

36

Analyse de fib2
fonction fib2(n) i 1, j 0 pour k 1 jusqu' n faire ji+j b ij-i retourner j
a

c d

t(n) = a + c + d = a + (1 k n b) + d = a + bn + d = a + bn o a=a+d t(n) O(n)


Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 37

Analyse de fib3
fonction fib3(n) i 1, ... tant que n > 0 faire ... n n div 2 retourner j
a

c d

t(n) = a + c + d = a + bk + d

o k est le nombre d'itrations k = nombre de bits dans la reprsentation binaire de n k = log2 n + 1 t(n) O(log n)

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

38

Analyse de select
Procdure select (T[1...n]) pour i 1 jusqu' n-1 faire minj i, minx T[i] pour j i+1 jusqu' n faire si T[j] < minx alors minj j b minx T[j] T[minj] T[i] T[i] minx

c e d

t(n) = 1 i n-1 [ a + i+1 j n (b) + d ] = (a + d + bn)(n - 1) - bn(n-1)/2 t(n) O(n2)


Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 39

Analyse de l'algorithme d'Euclide


calcul du PGCD de deux nombres fonction Euclide(m,n) tant que m > 0 faire t <-- n mod m n <-- m m <-- t retourner n Montrons tout d'abord que : " n, m / n _ m _ n mod m < n/2 Cas 1 : m > n/2 _ 1 _ n/m < 2 _ [n/m] = 1_ n mod m = n - m _ n - n/2 = n/2 Cas 2 : m _ n/2 _ n mod m < m Soit k le nombre d'itrations de la boucle pour l'exemplaire (m,n). Soient mi et ni les valeurs de m et n aprs la ime itration. On dduit que mk = 0 et le systme suivant : ni = mi-1 mi = ni-1 mod mi-1 n0 = n et m0 = m On peut vrifier que ni > mi pour i _ 1. mi = ni-1 mod mi-1 < ni-1/2 = mi-2/2 Supposons que k est impair. Soit d tel que k = 2d + 1 alors : mk-1 < mk-3/2 < mk-5/22 < ... < m0/2d Or mk-1 _ 1 _ m0/2d _ 1 _ d log m > k 2log m+1 le cas o k est pair est trait de la mme t(n) O(log m).
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 40

Analyse de fib1
fonction fib1(n) si n < 2 alors retourner n sinon retourner fib1(n-1) + fib1(n-2)

t(n) est la solution du systme de rcurrence : t(0) = t(1) = a t(n) = t(n-1) + t(n-2)

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

41

3 Rsolution de rcurrences rcurrence homogne


a0tn + a1tn-1 + .. + aktn-k = 0 (1)

cherchons une solution de la forme tn = xn (quation caractristique) a0xn + a1xn-1 + .. + akxn-k = 0 (2) cherchons une solution non nulle (2) devient : a0xk + a1xk-1 + .. + ak = 0 supposons que les k racines : r1, r2, ..., rk (relles ou complexes) sont distinctes alors : tn = 1 i k ci(ri)n o ci (1 i k) constantes dtermines par les conditions initiales
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 42

Calcul du nombre de Fibonacci


f0 = 0 et f1 = 1 fn = fn-1 + fn-2 (1) (2)

Posons fn = xn, alors (2) devient : xn = xn-1 + xn-2 x2 - x - 1 = 0 = 1 + 4 = 5 r1 = (1- 5)/2 et r2 = (1+ 5)/2 fn = c1 r1n + c2 r2n En utilisant les conditions initiales (1) on trouve : c1 + c2 = 0 c1r1 + c2r2 = 0 c1 = -1/5 et c2 = 1/5 fn = 1/5 [-((1- 5)/2)n + ((1+5)/2)n] (Mthode de Moivre)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 43

Analyse de fib1
t(0) = t(1) = a t(n) = t(n - 1) + (n - 2) (1) (2)

D'aprs le calcul prcdent on dduit que : t(n) = c1 r1n + c2 r2n o r1 = (1 - 5)/2 et r2 = (1 + 5)/2 En utilisant les conditions initiales (1), on trouve le systme : c1 + c2 = 0 c1r1 + c2r2 = 0 c1 = -a (1 + 5)/25 et c2 = a (1 + 35)/25 t(n) O(c2n) o |c2| > 1 algorithme exponentiel
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 44

3 Rsolution de rcurrences rcurrences non homognes


Illustrons ce type de rcurrence l'aide de l'exemple suivant o lon se ramne une rcurrence homogne tn - 2tn-1 = 3n (1) En multipliant (1) par 3 et en la considrant pour n+1 on trouve: (2) 3tn - 6tn-1 = 3n+1 tn+1 - 2tn = 3n+1 (3) En faisant la diffrence de (2) et (3), on trouve : tn+1 - 5tn + 6n-1 = 0 L'quation caractristique de cette quation est : x2 - 5x + 6 = 0 (x - 2) (x - 3) = 0 tn = c12n + c23n En utilisant (1), on trouve que tn = -c12n + 3n+1
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 45

3 Rsolution de rcurrences rcurrences non homognes


Illustrons cette technique l'aide de l'exemple suivant o nous faisons une transformation de variable : T(n) = 4T(n/2) + n, n > 1 avec n = 2k (1) Posons tk = T(2k). L'quation (1) devient : tk = 4tk-1 + 2k En multipliant par 2 et en considrant l'quation pour n+1, on trouve : 2tk = 8tk-1 + 2k+1 (2) (3) tk+1 = 4tk + 2k+1 (2) (3) donne : tk+1 - 2tk = 4tk - 8tk-1 tk+1 - 6tk + 8tk-1 = 0 L'quation caractristique de cette quation est : x2 - 6x + 8 = 0 (x - 2) (x - 4) = 0 _ donc tk = c12k + c24k donc T(n) = c1n + c2n2 En utilisant (1) on trouve que c1= -1 et par consquent : T(n) = -n + c2n2
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 46

Tours de Hano
Problme Soint trois aiguilles (1, 2 et 3) et m disques, tous de taille diffrente. Au dpart tous les disques sont placs du plus grand au plus petit dans laiguille 1. Comment dplacer les disques laiguille 2 sans jamais mettre de disque pardessus un disque plus petit dans les aiguilles ?

Exercice 1 Comment allez-vous faire pour dplacer 3 disques ? 2 Dcrire un algorithme de la solution. 3 Faire la trace pour m = 3. 4 Dterminer le nombre de dplacements en fonction de m. 5 Dduire lefficacit de lalgorithme. 6 Estimer le temps si m = 64 et si un dplacement prend 1 seconde. 7 Dmontrer loptimalit de lalgorithme.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 47

Trace pour m = 3

3
48

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Tours de Hano

procdure Hano (m,i,j) si m > 0 alors Hano (m-1,i,6-i-j) crire (i,"-->",j) Hano (m-1,6-i-j,j) Soit t(m) le temps dexcution t(1) = 1 t(m) = 2 t(m-1) + 1
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 49

Tours de Hano
Soit t(m) : temps d'excution de l'algorithme sur un exemplaire de taille m. t(1) = 1 t(m) = 2t(m-1) + 1 Calculons t(m) t(m)

= 2[ 2 t(m-1) + 1 ] + 1 = 22 t(m-2) + 2 + 1 = 22[ 2 t(m-3) + 1 ] + 2 + 1 = 23 t(m-3) + 22 + 2 + 1 = .......... = 2k t(m-k) + 2k-1 + ... + 2 + 1 = .......... = 2m-1 t(1) + 2m-2 + ... + 2 + 1 = 2m-1 + 2m-2 + ... + 21 + 20 = (2m - 1) / (2 - 1) = 2m - 1 donc t(m) O(2m). Exercice : Trouver une version non rcursive de la procdure Hano. Trouver l'ordre de l'algorithme.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 50

Hanoi(3,1,2) Hanoi(2,1,3) Hanoi(1,1,2) Hanoi(0,1,3) 1 2 Hanoi(0,3,2) 1 3 Hanoi(1,2,3) Hanoi(0,2,1) 2 3 Hanoi(0,1,3) 1 2 Hanoi(2,3,2) Hanoi(1,3,1) Hanoi(0,3,2) 3 1 Hanoi(0,2,1) 3 2 Hanoi(1,1,2) Hanoi(0,1,3) 1 2 Hanoianoi(0,3,2)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Trace laide dappels rcursif

51

Trace laide dun arbre


H(3,1,2)

H(2,1,3)

1 2

H(2,3,2)

H(1,1,2)

1 3

H(1,3,1)

H(1,3,1)

3 2

H(1,1,2)

H(0,1,3) 1 2 H(0,3,2)

H(0,2,1) 2 3 H(0,1,3)

H(0,3,2) 3 1 H(0,2,1)

H(0,1,3) 1 2 H(0,3,1)

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

52

Chapitre 3 : Diviser-pour-rgner
diviser-pour-regner (Divide and conquer) est une technique de conception d'algorithme compose de trois tapes : - Dcomposition de l'exemplaire en sous-exemplaires plus petits, - Rsolution des sous-exemplaires et - Combinaison des sous-solutions. Plan 1 Fouille dichotomique 2 Multiplication des grands nombres 3 Multiplication matricielle 4 Exponentiation discrte

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

53

Schma des algorithmes DPR

fonction DPR(x) si x est suffisamment petit alors retourner ADHOC(x) dcomposer x en sous-exemplaires x1, x2, ..., xk pour i 1 jusqu' k faire yi <-- DPR(xi) combiner les yi pour obtenir une solution y retourner y

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

54

Rsolution des rcurrences DPR


Thorme : Soient a, b, c 0 et n = ck. La solution de la rcurrence b aT(n/c) + bn pour n = 1 pour n > 1

T(n) = est :

O(n) T(n) O(n log n) O(nlog a)

si a < c si a = c si a > c, o le logarithme en base c

T(n) : temps d'excution d'un algorithme DPR sur lexemplaire n


Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 55

Fouille dichotomique
Problme : localisation de la valeur x dans un tableau T[1..n] tri (dictionnaire ou annuaire tlphonique) fonction squentielle (T[1..n],x) pour i 1 jusqu' n faire si T[i] > x alors retourner i-1 retourner n fonction dichotomique(T[i..j],x) si i = j alors retourner i k (i+j+1) div 2 si x < T[k] alors retourner dichotomique(T[i..k-1],x) sinon retourner dichotomique(T[k..j],x) Exercice : Montrer que t(n) O(log n)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 56

Arithmtique des grands entiers


Utilisation : calcul de trs grande prcision. En 1986, est calcul avec 30 millions de chiffres. Ce calcul a ncessit 30 heures de calcul sur un ordinateur Cray-2. Problme : calcul de u*v avec u et v composs de n=2k chiffres Solution : Algorithme de multiplication classique O(n2) Algorithme de multiplication DPR ?

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

57

Multiplication DPR (1/2)

n/2 x

n/2 z

u = 10sw + x v = 10sy + z

o 0 x, z < 10s et s = n/2

u*v = 102s wy + 10s(wz + yx) + xz

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

58

Multiplication DPR (2/2)


fonction multA(u,v: grands-entiers) : grand-entier n max(u,v) si n est petit alors multiplier u et v par l'algorithme classique retourner le rsultat sinon s n div 2 w u div 10s, x u mod 10s y v div 10s, z v mod 10s retourner multA(w,y) 102s + (multA(w,z) + multA(y,x)) 10s + multA(x,z). Exercice : Montrer que t(n) O(n2)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 59

Amlioration de la multiplication DPR (1/2)


u = 10sw + x v = 10sy + z o 0 x, z < 10s et s = n/2

Soient r, p et q tels que : r = (w + x)(y + z) = wy + wz + xy + xz p = wy q = xz u * v = 102s wy + 10s(wz + yx) + xz = 102sp + 10s (r - p - q) + q

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

60

Amlioration de la multiplication DPR (2/2)


fonction multB(u,v: grands-entiers) : grand-entier n max(u,v) si n est petit alors multiplier u et v par l'algorithme classique retourner le rsultat sinon s n div 2 w u div 10s, x u mod 10s y v div 10s, z v mod 10s r multB(w+x , y+z) p multB(w,y) q multB(x,z) retourner 102sp + 10s(r-p-q) + q Exercice : t(n) O(n1,59)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 61

Multiplication matricielle DPR


Soient A, B deux matrices carres d'ordre n. C = AB = (cij) 1 i, j n avec cij = 1kn aikbkj Algorithme classique de multiplication de matrices appartient O(n3) Algorithme DPR (Strassen) Soient A = a11 a12et B =b11 b12 a21 a22 b21 b22 Soient m1, m2 m3, m4, m5, m6 m7 tels que : m1 = (a21 + a22 - a11)(b22 - b12 + b11) m2 = a11b11 m3 = a12b21 m4 = (a11 - a21)(b22 - b12) m5 = (a21 + a22)(b12 - b11) m6 = (a12 - a21 + a11 - a22)b22 m7 = a22(b11 + b22 - b12 - b21) Exercice : Montrer t(n) O(n2,7)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 62

Protocole de cryptage (1976)


Fouad Ali
A / A alatoire A<p a = gA mod p x = bA mod p

p grand premier g / 2 g p-1

Bahia
B / B alatoire B<p b = gB mod p y = aB mod p

Ali et Bahia partagent linformation x = y sans que Fouad puisse la dtecter


Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 63

Exponentiation discrte (1/3)


fonction expod1(g,A,p) a 1 pour i 1 jusqu' A faire a retourner a mod p

ag

Remarque : xy mod p = ((x mod p) (y mod p)) mod p fonction expod2(g,A,p) a 1 pour i 1 jusqu' A faire a retourner a

a g mod p

Exercice : Analyser et comparer le temps d'excution de expod1 et expod2 en fonction de A et p. Pour simplifier supposer que g=p/2.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 64

Exponentiation discrte (2/3)


Exemple : calcul de x23 x23 = ((((x x)x))x) x23 = (((x2)2x)2x)2x 22 multiplications 7 multiplications fonction expoditer(x,n) a x, b 1 tant que n > 0 faire si n est impair alors b ab a a2 n n div 2 retourner b
65

fonction expodrec(x,n) si n = 0 alors retourner 1 si n est impair alors a expodrec(x,n-1) retourner a x sinon a expodrec(x,n/2) retourner a2
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Exponentiation discrte (3/3)


fonction expod4(g,A,p) a g, b 1 tant que A > 0 faire si A est impair alors b a b mod p a a2 mod p A A div 2 retourner b

fonction expod3(g,A,p) si A = 0 alors retourner 1 si A est impair alors a expod3(g,A-1,p) retourner a g mod p sinon a expod3(g,A/2,p) retourner a2 mod p

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

66

Exercice
Soit la matrice a) Montrer que

F= Fn =

1 [0 11 ]

fn-1 fn fn fn+1

o fn est le nime nombre de Fibonacci. b) Dduire un algorithme de type diviser-pour-rgner pour le calcul de Fn. c) comparer cet algorithme avec fib3 en prenant comme matrices intermdiaires : . i j k h A = j i+j et B = h h+k

]
67

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Retour lalgorithme fib3


fonction expod4(F,n) A F, B I tant que n > 0 faire si n est impair alors B AB A A2 n n div 2 retourner B fonction expod5(n) k 0, h 1, i 1, j 0 tant que n > 0 faire si n est impair alors t hj j hi + kj + t i ki + t t h2 h 2hk + t k k2 + t n n div 2 retourner j
68

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Chapitre 4 : Algorithmes voraces


Gnralement assez simples rapides rsolution des problmes d'optimisation solutions approximatives (heuristique) Contenu Schma gnral Remise de monnaie Plus courts chemins Remise de monnaie Coloration dun graphe Feux de signalisation
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 69

Optimisation de la slection avec contrainte

20 Kg 15 Kg

10 Kg

Capacit = 40 Kg 8 Kg

Solution vorace = 20 + 15 = 35 < 40


Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 70

Schma des algorithmes voraces


fonction vorace (C : ensemble) : ensemble {C est l'ensemble de tous les candidats} S {ensemble solution} tant que solution (S) et C faire x l'lment de C qui maximise slect(x) C C - {x} si ralisable (S {x}) alors S S {x} si solution (S) alors retourner S sinon retourner pas de solution

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

71

Exemple 1 : Remise de monnaie


Problme : remettre la monnaie en donnant le moins de pices possible. Solution : C : ensemble fini de pices 1, 5, 10, 20, 50 et 100 DH Solution(S) : total des pices choisies correspond au montant rendre Ensemble ralisable : total des pices n'excde pas la somme rendre fonction de slection : la plus grande pice qui reste dans C Fonction objective : nombre de pices utilises dans la solution

Exercice : Dcrire un algorithme vorace. Montrer quil fournit toujours une solution optimale lorsqu'elle existe

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

72

Exemple 1 : Algorithme vorace


fonction Remise_Monnaie (Montant) : tableau C {1,5,10,20,50,100} S0 tant que (Montant > 0) et (C ) faire x max{y/ y C} C C - {x} NP Montant div x {Nombre de pices de type x} S[x] NP Montant Montant - NP*x si (Montant = 0) alors retourner S sinon retourner pas de solution Exercice : Montrer lOptimalit (ide (Ci 2 Ci+1))
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 73

Exemple 1 : qualit de la solution

Soit C = C {12} = {1, 5, 10, 12, 20, 50, 100} Montant = 16 =12 + 1 + 1 + 1 + 1 (5 pices) = 10 + 5 + 1 (3 pices) solution non optimale est la solution optimale

Soit C" = C - {1} = {5, 10, 12, 20, 50, 100} Montant = 15 = 12 + ??? = 10 + 5 pas de solution une solution existe

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

74

Solution dun algorithme vorace

Solution optimale

Algorithme vorace

Solution approximative non optimale Pas de solution alors quelle existe

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

75

Exemple 2 : Plus courts chemins


Soit G = (N,A) un graphe orient o N = {1,2,..,n} ensemble des nuds et A est l'ensemble d'arcs. A chaque arc est associ une longueur non ngative. Essayons de dterminer la longueur du plus court chemin de 1 vers les autres sommets. L : matrice d'ordre n tel que L[i,j] 0 si l'arc (i,j) existe et L[i,j] = s'il n'existe pas.

fonction Dijkstra(L[1..n,1..n]) : tableau [2..n] C {2,3,..,n} pour i 2 jusqu' n faire D[i] L[1,i] rpter n-2 fois v l'lment de C qui minimise D[v] C C - {v} pour chaque lment w de C faire D[w] min (D[w] , D[v] + L[v,w]) retourner D
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 76

Exemple 2 : Trace de lalgorithme


1 10 5 10 4 100 50 30

2 5 3

20 50

tape 2 2 3

v 5 4 3

C D {2,3,4,5} [50,30,100,10] {2,3,4} [50,30,20,10] {2,3} [40,30,20,10] {2} [35,30,20,10]

Exercice : Dterminer lordre de lalgorithme de Dijkstra. Modifier le afin de trouver le chemin le plus court entre tous les couples de sommets.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 77

Exemple 3 : Minimisation de l'attente


Soient un serveur, n clients et ti : temps de service requis par le client i = 1,2,..,n minimiser : T = S1 i n (temps pass dans le systme par le client i) Exemple : t1 = 4, t2 = 7 , t3 = 3. ordre 123 132 213 231 312 321 T 4 + (4 + 7) + (4 + 7 +3) = 29 4 + (4 + 3) + (4 + 3 + 7) = 25 7 + (7 + 4) + (7 + 4 + 3) = 32 7 + (7 + 3) + (7 + 3 + 4) = 33 3 + (3 + 4) + (3 + 4 + 7) = 24 ordre optimal 3 + (3 + 7) + (3 + 7 + 4) = 27

Exercice : Montrer que lalgorithme exhaustif O(n!). Dcrire l'algorithme vorace et analyser son efficacit. Dmontrer que sa solution est optimale.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 78

Exemple 3 : Algorithme vorace


fonction Ordonnancement (n,t) : tableau C {1,2,3,,n} pour i=1 n faire j min{ti/ i C} C C - {j} S[x] j retourner S Exercice : Quel est lordre de lalgorithme ?

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

79

Exemple 3 : Optimalit de lalgorithme (1/2)


Soit I = (i1,i2,..,in) une permutation quelconque dans {1,2,..,n}. Soit T(I) le temps total pass dans le systme pour les clients i1,i2,..,in. T(I) = ti1 + (ti1 + ti2) + ... + (ti1 + ti2 + .. tin) = nti1 + (n-1)ti2 + ... + tin = S1kn (n - k + 1)tik Supposons qu'il existe dans I, deux entiers a et b tel que a < b et tia > tib. Inversons l'ordre de ces deux clients et on obtient l'ordre I'. Ordre de service I I' 1 2 ... a ... b n i1 i2 ... ia ... ib ... In i1 i2 ... ib ... ia ... in

T(I') = (n-a+1)tib + (n-b+1)tia + S1<k<n et ka et b (n-k+1)tik


Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 80

Exemple 3 : Optimalit de lalgorithme (2/2)


T(I) - T(I') = (n-a+1)tia + (n-b+1)tib - (n-a+1)tib - (n-b+1)tia = (b-a)tia + (a-b)tib = (b-a) (tia - tib)

Comme b - a > 0 et tia - tib > 0, on dduit que : T(I) - T(I') > 0 et par consquent T(I) > T(I').

Nous pouvons amliorer tout ordre de service o un client est servi avant un autre ncessitant moins de temps optimalit de lalgorithme

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

81

Exemple 4 : Coloration dun graphe


Soit G = (N,A) un graphe non orient. Colorer le graphe tels que deux sommets relis doivent tre diffrentes. de couleurs
3 1 2 4 5

L'algorithme vorace : - Choisir une couleur et un sommet comme point de dpart

- Considrer les autres sommets et essayer de les colorer par cette couleur - Lorsqu'on ne peut plus faire de progrs choisir une nouvelle couleur et un nouveau point de dpart non color - Colorer tout ce qui est possible avec cette deuxime couleur
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

- ainsi de suite.

82

Exemple 4 : Coloration dun graphe

2-coloration

3-coloration

Remarques Un algorithme bas sur une heuristique vorace permet la possibilit de trouver une "bonne" solution mais pas la certitude lalgorithme exhaustif qui produit une solution optimale est exponentiel
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 83

Exemple 5 : Feux de signalisation


E D

Considrons 5 artres : A, B, C, D et E. D et E sont des artres sens unique Changements de direction (13) AB, AC, AD, BA, BC, BD, DA, DB, DC, EA, EB, EC et ED
B C A

AB et EC sont possibles alors que AD et EB peuvent provoquer une collision Modlisation laide dun graphe sommets correspondent aux changements de direction artes joignent les couples de sommets dont les itinraires se croisent
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 84

Exemple 5 : Trace de lalgorithme


AB AC AD

BA

BC

BD

AC

DA

DA

DB

DC

BD
EA EB EC ED

EB

4-colorable

Graphe complet

Solution optimale car le sous-graphe compos des sommets AC, DA, BD et EB est un graphe complet de 4 sommets et ncessite par consquent quatre couleurs. Les sommets de la mme couleur correspondent aux itinraires sans collision. Les quatre couleurs correspondent aux quatre phases ncessaires du systme de signalisation
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 85

Exercices
Exercice 1 : Rsoudre le problme de signalisation pour le carrefour suivant :
D

C B

Exercice 2 : Trouver un algorithme vorace pour rsoudre le problme du commis voyageur en supposons que le graphe est complet.

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

86

Chapitre 5 : Programmation dynamique


diviser-pour-rgner : mthode descendante programmation dynamique : mthode ascendante + utilisation espace mmoire (afin d'viter de calculer la mme chose plus d'une fois)

Contenu Coefficient du binme Principe doptimalit Multiplication chane de matrices Plus courts chemins

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

87

Exemple 1 : Coefficient du binme


Coefficient binomial C(n,k) = C(n-1,k-1) + C(n-1,k) si 0 < k < n = 1 autrement

fonction C(n,k) si k=0 ou k=n alors retourner 1 sinon retourner C(n-1 , k-1) + C(n-1 , k)

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

88

Exemple 1 : Trace de lalgorithme


C(5,2)

Trace pour (5,2) =10


C(4,1) C(4,2)

C(3,0)

C(3,1)

C(3,1)

C(3,2)

C(2,0) C(2,1)

C(2,0)

C(2,1)

C(2,1) C(2,2)

C(1,0) C(1,1)

C(1,0)C(1,1) C(1,0) C(1,1)

Remarques : beaucoup de valeurs C(i,j) sont calcules plusieurs fois. Exercice : Montrer que le nombre d'appels rcursifs provoqus par C(n,k) est gal : 2

( )-2
n k
89

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Exemple 1 : Triangle de Pascal


0 1 2 3 4 5 0 1 1 1 1 1 1 1 1 2 3 4 5 2 3 4 5

...

k-1

1 3 6 10 1 4 10 1 5

. .
n-1 n 1 1 C(n-1,k-1) C(n-1,k) C(n,k)

Exercice : Dcrire cet algorithme. Montrer quil demande un espace dans O(k) et un temps dans O(nk) si on compte chaque addition cot unitaire. Exercice : Parmi les algorithmes du calcul des nombres de Fibonacci, lequel est un algorithme de programme dynamique ?
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 90

Principe doptimalit
La programmation dynamique est souvent utilise pour rsoudre des problmes d'optimisation qui satisfont le principe d'optimalit suivant : Principe d'optimalit : Dans une squence optimale de dcisions ou de choix, chaque sous-squence doit tre optimale. Exemple : le problme du plus court chemin vrifie le principe doptimalit Exercice : Le principe d'optimalit s'applique-t-il au problme du plus long chemin simple entre deux villes ? Un chemin simple va directement de ville en ville sans passer deux fois par la mme ville (sans cycle).

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

91

Exemple 2 : Multiplication chane de matrices


M = M1M2...Mn Comme la multiplication matricielle est associative M = (...((M1M2)M3) ... )Mn = M1(M2(M3(... (Mn-1Mn) ...))) = ((M1M2)(M3M4) ... ) = ... Le choix d'une mthode peut influencer sur le temps de calcul. Exercice : Montrer que le calcul de AB, o A est d'ordre pxq et B est d'ordre qxr, par la mthode directe ncessite pqr multiplications de nombres scalaires.

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

92

Exemple 2 : Application
Exemple : Soient quatre matrices A, B, C et D d'ordre (13x5), (5x89), (89,3) et (3, 34) respectivement. Il y a cinq manires diffrentes de calculer ABCD : ((AB)C)D (AB)(CD) (A(BC))D A((BC)D) A(B(CD)) qui ncessite " " " " " " " " 10582 54201 2856 4055 26418 multiplications " " " "

La mthode la plus efficace est 9,5 fois plus rapide que la plus lente

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

93

Exemple 2 : Nombre de Catalan


Soit T(n) : nombre de manires diffrentes d'insrer des parenthses dans M M = (M1M2...Mi) (Mi+1 .. Mn) Nous avons T(i) manires de mettre les parenthses dans la partie gauche de Mi et T(n-i) manires de mettre les parenthses dans la partie droite. Par consquent T(n) = S1in-1 T(i) T(n-i) et T(1) = 1
n 1 2 3 4 5 10 T(n) 1 2 2 5 14 4862

T(n) s'appelle nombre de Catalan.

Exercice : Montrer que T(n) = 1/n

2n 1 n1

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

94

Exemple 2 : Algorithme de programmation dynamique


Soit mij (1 i j n) la solution optimale pour la partie Mi...Mj du produit M. La solution du problme est m1n. Supposons que la dimension de Mi est di-1 x di pour i = 1,2,..,n. Construisons la table mij l'lment mj tel que j-i = s. Cas 1 : s = 0 Cas 2 : s = 1 Cas 3 : 1 < s < n diagonale par diagonale : la diagonale s contient mij = 0, i = 1,2,..,n mi,i+1 = di-1 di di+1 , i = 1,2,..,n-1 mi,i+s = min i k i+s-1 (mik + mk+1,i+s + di-1dkdi+s)

Le troisime cas reprsente le fait que pour calculer (Mi Mi+1...Mi+s) on essaye toutes les possibilits(Mi...Mk)(Mk+1...Mi+s) pour en choisir la meilleure.
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 95

Exemple 2 : Trace de lalgorithme


Reprenons l'exemple prcdent : d = (13,5,89,3,34) s = 1 : m12 = 5785, m23 = 1335 et m34 = 9078 s = 2 : m13 = min(m11 + m23 + d0d2d3 , m12 + m33 + d0d2d3) = min(1530 , 9256) = 1530 m24 = min(m22 + m34 + d1d2d4 , m23 + m44 + d1d3d4) = min(24208 , 1845) = 1845 s = 3 : m14 = min(m11+ m24+ d0d1d4 , m12+ m34+ d0d2d4 , m13+ m44 + d0d3d4) = min(4055 , 54201 , 2856) = 2856 j=1 i=1 i=1 i=3 i=4
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

j=2 5785 0

j=3 1530 1335 0

j=4 2856 1845 9078 0


96

Exercices
Exercice 1 : Ecrire l'algorithme qui calcule m1n. Comment peut-on modifier l'algorithme si l'on veut savoir comment calculer M de faon optimale ? Exercice 2 : Montrer que lalgorithme (n3).

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

97

Exemple 3 : Plus courts chemins


Soit G = (N,A) un graphe orient o N = {1,2,..,n}. Soit L une matrice qui donne la longueur de chaque arc. Trouvons le plus court chemin entre chaque paire de sommets. Le principe de l'optimalit s'applique car si k est un sommet intermdiaire sur le plus court chemin entre i et j alors la portion du trajet de i k ainsi que celle de k j doivent aussi tre optimales. A l'itration k on trouve un chemin qui ne passe que par {1,2,..,k}. Dk[i,j] = min(Dk-1[i,j], Dk-1[i,k] + Dk-1[k,j]) Procdure Floyd (L[1 .. n,1 .. n]) : tableau [1 .. n,1 .. n] DL pour k = 1 h faire pour i = 1 n faire pour j = 1 n faire D[i,j] min(D[i,j] , D[i,k] + D[k,j]) retourner D Exercice : Montrer que t(n) O(n3)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 98

Exemple 3 : Trace de lalgorithme


1 15 5 5 50 30 2 15 3 5 15 4

D0 = L =

0 50 30 15

5 0

15 5 0 15 5 0

et

D4 =

0 5 15 10 20 0 10 5 30 35 0 15 15 20 5 0
99

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Chapitre 6 : Transformation du domaine


Soit f : Dt D une fonction calculer. Une transformation consiste en : - domaine R - injection F : D R - fonction g : Rt R tel que : f = F-1 ogoF
R t g R D t f D
1

Contenu Multiplication symbolique de deux polynmes Transforme de Fourrier Transforme de Fourier inverse
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 100

Exemples de transformation du domaine


Produit de deux nombres positifs D = +*, f(u,v) = u*v , R = et F (u)= ln u et g(x,y) = x+y
(u,v) ln (ln u,ln v) g f u*v e ln u + ln v

Addition en reprsentation romaine (XVI + CIV) Changement de coordonnes (cartsiennes/ polaires) Calcul dans un ordinateur (E/S en dcimal et calcul en binaire) Calcul diffrentiel (transforme de Laplace).
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 101

Multiplication symbolique des polynmes


Soient p(x) = ad-1xd-1 + ad-2xd-2 + + a0 et On veut calculer r(x) = p(x) q(x) q(x) = bd-1xd-1 + bd-2 xd-2+ + b0

algorithme classique O(d2) en comptant les oprations scalaires comme lmentaires.

Transformation du domaine f : multiplication symbolique : valuation en 2d - 1 points O(d2) g : multiplication ponctuelle) F-1 : interpolation
p (x ),q (x )

r(x )

p ( x i) ,q ( x i) i= 0 ,1 ,...,2 d - 2

r ( x i) = p ( x i) q ( x i) i= 0 ,1 ,...,2 d - 2
102

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Exemple de la multiplication de deux polynmes


p(x) = 2x - 1 et q(x) = x - 1 r(x) = p(x)q(x) = (2x 1)(x 1) = 2x2 3x + 1

p et q peuvent tre reprsentes l'aide de leur coefficients ou en 2 valeurs p = (-1,1) et q = (-1,0) r = pq = (1,0)

r(x) nest pas compltement dfini r est de degr 2 il doit tre dfini de faon unique l'aide de 3 valeurs p = (-1,1,3) et q = (-1,0,1) r = pq = (1,0,3)

par la mthode de Lagrange (ou rsolution dun systme linaire ou ) on trouve : r (x) = 2x2 3x + 1
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 103

Transforme de Fourier (discrte)


Applications (optique, acoustique, tlcommunications, traitement du signal) Soient n = 2k , k > 0, w / wn = 1 (racine de lunit) Exemples w = 4, n = 8 et le calcul se fait modulo 257 w = (1+i) /2, n = 8 et le calcul est en arithmtique complexe Dfinition Soit a = (a0,a1, .. ,an-1) vecteur qui dfinit pa(x) = an-1xn-1 + .. + a0 Transforme de Fourier de a relativement w est : Fw(a) = (pa(1), pa(w),..., pa(wn-1)) Exercice
i Algorithmique et complexit de i calcul, M. Eleuldj, EMI, Avril 2008

Calculer F (a) et F (a) avec a=(1,-1,-5,3) et b=(-2,6,-4,1)

104

Algorithme pour la Transforme de Fourrier


Supposons n > 1 et posons t = n/2 Soient b = (a0,a2,...,an-2) et c = (a1,a3,...,an-1) tels que : pa(x) = pb(x2) + x pc(x2). En particulier : pa(wi) = pb(bi) + wi pc(bi) o b = w2 bt = 1 on peut de parler de Fb(b) et Fb(c) De plus bt+i= bi pa(wt+i) = pb(bi) + wt+i pc(bi) comme nous allons voir que wt = -1 pa(wt+i) = pb(bi) - wi pc(bi)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 105

Algorithme FFT
fonction FFT (a[0...n-1] , w) : tableau [0...n-1] tableau A[0...n-1] {pour recevoir le rsultat} si n=1 alors A[0] <-- a [0] sinon t <-- n/2 tableaux b, c, B, C[0...t-1] pour i <-- 0 t-1 faire b[i] <-- a[2i] , c[i] <-- a[2i+1] B <-- FFT(b , w2) C <-- FFT(c , w2) b <-- 1 pour i <-- 0 t-1 faire A[i] <-- B[i] + b C[i] A[t+i] <-- B[i] - b C[i] b <-- bw retourner A
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Exercice 1 : Montrer que FFT O(n logn).

106

Trace de FFT
a = (1,-1,-5,3), w=i FFT(a,i) t=2, b = (1,-5) et c = (-1,3) B=FFT(1,5) t=1, b=(1) et c=(-5) B=FFT(b,1)=(1) C=FFT(c,1)=(-5) A=(-4,6) C=FFT(c,-1) t=1, b=(-1) et c=(3) B=FFT(b,1)=(-1) C=FFT(c,1)=(3) A=(2,-4) A=(-2, 6-4i, -6, 6+4i)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 107

Transforme de Fourrier inverse


Dfinition : le nombre w est appel une n-ime racine principale de l'unit si : i) w 1 (sauf si n=1) ii) wn = 1 iii) S1jn-1 wjp = 0 pour 1 p < n Remarques : l'inverse de w est wn-1 si p = n/2, la deuxime condition implique : S1jn-1 wjn/2 = n/2(1 + wn/2) = 0 wn/2 = -1. Exercice : Montrer que w-1 est une n-ime racine principale de l'unit. Soient n et w des puissances positives de 2 et soit m = wn/2 + 1. Prouver que w est une n-ime racine principale de l'unit dans l'arithmtique modulo m. Prouver que n-1 existe, en montrant que n-12008 = m - (m-1)/n. Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 108

Transforme de Fourrier inverse


Thorme : Soient A la matrice n x m / A = (aij) et aij = wij. Comme w est une nime racine principale de l'unit et n-1 existe alors A est inversible, son inverse tant la matrice B / B = (bij) et bij = n-1 w-ij et AB = In o In est la matrice identit. Une autre formulation de la dfinition de la transforme de Fourier est : Fw(a) = a A Exercice : Dfinir A et B pour n = 4. Corollaire : 0 i < j < n wi wj. Cette proprit est essentielle l'interpolation du polynme produit

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

109

Algorithme FTT inverse


La transforme de Fourier inverse de a relativement w est : F-1w(a) = (n-1pa(1) , n-1pa(w-1) ,...n-1, n-1pa(w-(n-1)) = n-1 Fw-1(a) = n-1 Fwn-1(a). Exercice 4 : Montrer que F-1w(Fw(a)) = a pour tout vecteur a fonction FFTinverse (a[0 .. n-1] , w) : tableau[0 .. n-1] tableau F[0 .. n-1] F <-- FFT(a , wn-1) pour i <-- 0 n-1 faire F[i] <-- n-1F[i] retourner F FFT inverse O(n) Exercice : Faire la trace FFTinverse( Algorithmique et complexit de calcul,pour M. Eleuldj, EMI, Avril 2008 (-2, 6-4i, -6, 6+4i)
110

Application la multiplication symbolique des polynmes


Soient p(x) = as-1xs-1 +...+ a0 et q(x) = bt-1 xt-1 +...+ b0 On veut calculer r(x) = p(x)q(x) de degr d = s + t. Soient n la plus petite puissance de 2 d et w une n-ime racine principale de l'unit. Soient a et b tels que a = (a0,a1,..., as-1,0,...,0) et b = (b0,b1,..., bt-1,0,0,...,0). Soient A = Fw(a) et B = Fw(b) Ai = p(wi) et Bi = q(wi) , i = 0,1,...,n-1. Soit C tel que Ci = AiBi = p(wi)q(wi) = r(wi). C = Fw(c) correspond aux coefficients de r Do La multiplication symbolique des polynmes O(d log d)
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 111

Trace de lexemple
p(x) = 3x3 - 5x2 - x + 1 et q(x) = x3 - 4x2 + 6x 2 On choisit n=8 et on sait que w=4 est une racine principale de l'unit dans larithmtique modulo 257. Soit a = (1,-1,-5,3,0,0,0,0), b = (-2,6,-4,1,0,0,0,0). Fw(a) = (255,109,199,29,251,247,70,133) et Fw(b) = (1,22,82,193,244,103,179,188). Le produit point par point modulo 257 donne C = (255,85,127,200,78,255,194,75) Comme F-1w(C) = (-2, 8, 0, -31, 37, -17, 3, 0). alors : r(x) = 3x6 - 17x5 + 37x4 - 31x3 + 8x - 2
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 112

Chapitre 7 : Algorithmes probabilistes


Caractristiques Hasard peut prendre certaines dcisions Diffrentes excutions sur le mme exemplaire peuvent produire des rsultats diffrents Conflit avec la dfinition dun algorithme Contenu Ali Baba et les 40 voleurs Calcul de Intgration numrique Test de primalit Algorithmes gntiques
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 113

Exemple 1 : Ali Baba et les 40 voleurs


Hypothses Valeur du trsor est T Trsor? les voleurs prlvent chaque nuit un montant x Une fois sur place Ali Baba peut reconnatre le trsor 4 jours de calcul pour dterminer le lieu exact 5 jours Indication de Jouha moyennant 3x
5 jours

Trsor ?

5 jours

Solutions S1 = T (4 + 5)x = T 9 x Ali Baba S2 = T (3 + 5)x = T 8 x S3 = T - 5x =T - 10 x esprance = (T - 5 x)/2 + (T 10 x)/2 = T 7,5 x


Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 114

Exemple 2 : Calcul de
k : nombre des points lintrieur du cercle n : nombre total de points
x

2r
x x x x x x x x x x x x x

S1 = r2 : surface du cercle S2 = (2r)2 = 4 r2 : sUrface du carr S1/S2 = r2/4r2 = /4 = 4 S1/S2 4 k/n fonction (n) k0 pour i = 1 n faire x uniforme(0,1) y uniforme(0,1) si (x2 + y2 <1) alors k k + 1 retourner 4k/n
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

115

Exemple 3 : Intgration numrique


Soit f : [0,1] [0,1] continue Calculons lintgrale f(x) entre 0 et 1 fonction intgration1(f,n) k 0 pour i = 1 n faire x uniforme(O,1) y uniforme(0,1) si y f(x) alors k k + 1 retourner k/n

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

116

Exemple 3 : Intgration numrique


fonction intgration2(f,n) somme 0 pour i = 1 n faire x uniforme(O,1) somme somme + f(x) retourner somme/n Remarque Algorithme1 et 2 sont intressants car les algorithmes systmatiques ne donnent que des valeurs approximatives

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

117

Exemple 4 : Test de primalit


fonction premier(n) d uniforme(2, n) retourner d Remarques Cas favorable : n =1 x 2 x 3 x x (n-1) = n! Pire cas : n non premier mais est le produit de deux nombres premiers n = 2623 = 43x61 fiabilit = 2% Plusieurs tests permettent daugmenter la fiabilit Il existe dautres moyens qui donnent des tests plus prcis

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

118

Exemple 5 : Algorithmes gntiques


analogies avec les phnomnes biologiques (slection naturelle de Charles Darwin) vocabulaire : individus (solutions potentielles), population, gnes (variables), chromosomes, parents, descendants, de reproduction, de croisement, de mutations, etc.

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

119

Chapitre 8 : Pr-conditionnement
I : ensemble des exemplaires J, K I tel que i I, i=<j,k> i est la solution de i
k

Algorithme A

Algorithme Bj

Exemples Ralisation dune application = Compilation + excution Recherche dans un ensemble = Construction du tas + recherche binaire en O(log n) Evaluation rpte dun polynme = forme pr-conditionne + valuation
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 120

Evaluation rpte dun polynme


J : ensemble des polynmes une variable de degr n K : ensemble des valeurs que la variable peut prendre Hypothses Coefficient entiers valuation pour des valeurs entires Polynme unitaires n = 2k 1 Comptage du nombre de multiplications P(x) = x7 5x6 + 4x5 +- 13x4 + 3x3 10 x2 + 5 x 17 = (x4 + 2)[(x2 + 3)(x 5) + (x + 2)] + [(x2 2 4)x + (x + 9)] 5 multiplications et 9 additions
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008 121

Mthode de pr-conditionnement
Soit p(x) un polynme unitaire de degr 2k 1 k-1 p(x) = (x2 + a)(q(x) + r(x)) avec a une constante et q et r deux polynmes unitaires de degr 2k-1 -1 la mme procdure est applique rcursivement q et r p appele est la forme pr-conditionne de p Exercice : trouver p pour x7 + 2x6 5x4 + 2x3 6x2 + 6x 32 et x7 Soit M(k) : nombre de multiplications pour valuer p(x) k-1 M(k) = M(k) k + 1 Si on ne compte pas les multiplications pour x2, x4, , x2 M(k) = 0 si k = 0 = 2 M(k 1) + 1 si k 2 M(k) = 2k 1 1 M(k) = 2k 1 + k 2
Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

Do il suffit de faire :

(n-3)/2 + log(n + 1) multiplications

122

Mthodes dvaluation dun polynme


Mthode Directe Dynamique Nombre de multiplications pour p 27 12 En gnral n(n + 1)/2 - 1 2n 2

Horner Pr-conditionnement

6 5

n1 (n 3)/2 + log(n + 1)

Algorithmique et complexit de calcul, M. Eleuldj, EMI, Avril 2008

123

Vous aimerez peut-être aussi