CSI%203505%20/%20Automne%202005:%20Conception%20et%20Analyse%20des%20Algorithmes%20I. - PowerPoint PPT Presentation

About This Presentation
Title:

CSI%203505%20/%20Automne%202005:%20Conception%20et%20Analyse%20des%20Algorithmes%20I.

Description:

Introduction a la th orie de Complexit du calcul(Chapitre 9) ... Comme le produit matriciel est associatif, il y a plusieurs fa on de calculer ce produit : ... – PowerPoint PPT presentation

Number of Views:104
Avg rating:3.0/5.0
Slides: 62
Provided by: Universi57
Category:

less

Transcript and Presenter's Notes

Title: CSI%203505%20/%20Automne%202005:%20Conception%20et%20Analyse%20des%20Algorithmes%20I.


1
CSI 3505 / Automne 2005 Conception et Analyse
des Algorithmes I.
  • Plan du Cours
  • Introduction (Chapitre 1)
  • Techniques de rĂ©solution Diviser pour rĂ©gner
    (Chapitre 2)
  • Techniques de rĂ©solution Programmation
    dynamique(Chapitre 3)
  • Techniques de rĂ©solution Algorithmes
    voraces(Chapitre 4)
  • Introduction a la thĂ©orie de ComplexitĂ© du
    calcul(Chapitre 9)

2
CSI 3505Programmation Dynamique
  • Principe gĂ©nĂ©ral
  • Souvent, pour rĂ©soudre un problème de taille n,
    on s'aperçoit qu'il est composé de plusieurs sous
    problèmes identiques. Si on résout chaque sous
    exemplaire séparément sans tenir compte de cette
    duplication on obtient un algorithme très
    inefficace. Par contre, si on résout chaque sous
    exemplaire différent une seule fois(en
    sauvegardant les résultats) on obtient un
    algorithme performant.

3
CSI 3505Programmation Dynamique
  • IdĂ©e de base
  • Éviter de calculer deux fois la mĂŞme chose,
    normalement en utilisant un tableau de résultats
    déjà calculés, remplie au fur et à mesure qu'on
    résout les sous problèmes.

4
CSI 3505Programmation Dynamique
  • le calcul du coefficient binomial

n - 1 k - 1
n - 1 k

Si 0 lt k lt n
n k

1
Sinon
5
CSI 3505Programmation Dynamique
  • C(n-1,k-1) C(n-1,k) si 0ltkltn
  • C(n,k)
  • 1 si k 0 or k n

C(n,k) si k 0 or k n alors retourner
1 sinon retourner ( C(n-1,k-1) C(n-1,k) )
6
CSI 3505Programmation Dynamique
  • Calcul de C(5,2)

7
CSI 3505Programmation Dynamique
  • ComplexitĂ© le nombre dappels est le mĂŞme que
    C(n, k)

8
CSI 3505Programmation Dynamique
  • Une autre idĂ©e

9
CSI 3505Programmation Dynamique
  • IdĂ©e utiliser un tableau des rĂ©sultats
    intermédiaires

0 1 2 3 k-1 k 0 1 1 1 1 2 1 2 1 3 1 3 3 1 .
. C(n-1,k-1) C(n-1,k) n-1 n
C(n,k)
10
CSI 3505Programmation Dynamique
  • Remplir le tableau ligne par ligne

Taille du problème n Opérations nombre
dentrées dans la matrice
11
CSI 3505Programmation Dynamique
  • ComplexitĂ©

(n-k-1) fois
W(n) 123.k (k1) (k1) . (k1) ? O(k
n )
W(n) ? O(n2)
En fait la matrice n'est pas nécessaire, il
suffit de mettre a jour de droite Ă  gauche un
tableau de longueur k représentant la ligne
courante
Temps O(nk) Espace O(k)
12
CSI 3505Programmation Dynamique

La méthode Diviser pour régner subdiviser
le problème en sous-problèmes indépendants,
résoudre récursivement et combiner
13
CSI 3505Programmation Dynamique
  • Programmation dynamique
  • une mĂ©thode ascendante
  • IdĂ©e
  • Ă©viter de re-calculer la mĂŞme chose plus quune
    fois, en utilisant une table des résultats déjà
    calculés, Cette table est remplie au fur et à
    mesure qu'on résout les sous- problèmes.

Une technique qui sapplique typiquement aux
problèmes doptimisation
14
CSI 3505Programmation Dynamique
  • Il y a 4 Ă©tapes dans un algorithme de type
    Programmation dynamique.
  • CaractĂ©riser la structure dune solution
    optimale
  • DĂ©finir la valeur de la solution optimale
    récursivement
  • Calculer la valeur de la solution optimale du
    bas vers le haut
  • Construire une solution optimale Ă  partir des
    informations obtenues

15
CSI 3505Programmation Dynamique
  • Problème Multiplication dune chaĂ®ne de
    matrices.
  • M M1 M2 Mn
  • Important
  • nombre de colonnes de Mi nombre de lignes de
    Mi1,
  • pour tout i, 0ltiltn.
  • La taille de la matrice Mi di, di1

16
CSI 3505Programmation Dynamique
  • Multiplication chaĂ®nĂ©e de matrices
  • On veut calculer le produit de n matrices donnĂ©es
  • M M1 M2 ... Mn
  • Comme le produit matriciel est associatif, il y a
    plusieurs façon de calculer ce produit
  • M (...(M1 M2 ) M3)... Mn)
  • M (M1 M2 )(M3 M4) ... Mn)
  • .........
  • M (M1 (M2 ... (Mn-1 Mn)...)

17
CSI 3505Programmation Dynamique
  • Multiplication chaĂ®nĂ©e de matrices
  • Un produit de deux matrice A(p,q) et B(q,r)
    nécessite pqr multiplications de scalaires et
    donne comme résultat une matrice C(p,r)
  • Il en dĂ©coule que le nombre dopĂ©rations
    élémentaires nécessaire pour calculer M, dépend
    de la façon dont on a inséré les parenthèses

18
CSI 3505Programmation Dynamique
  • A A1 A2 A3 A4

Ordre 1 A1 x (A2 x (A3 x A4 )) Coût(A3 x A4 )
50 x 1 x 100 Coût(A2 x (A3 x A4 )) 20 x 50
x 100 Coût(A1 x (A2 x (A3 x A4 ))) 10 x 20 x
100 Coût total 125000
19
CSI 3505Programmation Dynamique
  • Ordre 2 (A1 x (A2 x A3)) x A4
  • CoĂ»t(A2 x A3 ) 20 x 50 x 1
  • CoĂ»t(A1 x (A2 x A3 )) 10 x 20 x 1
  • CoĂ»t((A1 x (A2 x A3)) x A4 ) 10 x 1 x 100
  • CoĂ»t total 2200

20
CSI 3505Programmation Dynamique
  • Multiplication chaĂ®nĂ©e de matrices
  • Le problème est de trouver la meilleur façon
    dinsérer les parenthèses pour calculer M, c-a-d
    celle qui minimise le nombre de multiplications
    élémentaires.
  • Une mĂ©thode directe pour rĂ©soudre ce problème est
    de générer tous les cas possibles et choisir le
    meilleur dentre eux.

21
CSI 3505Programmation Dynamique
  • IdĂ©e 1 approche directe
  • Il y a 5 possibilitĂ©s pour le produit A1 A2 A3 A4
  • (A1 (A2(A3A4)))
  • (A1 ((A2A3)A4))
  • ((A1 A2)(A3A4))
  • ((A1 (A2A3)A4))
  • (((A1 A2)A3)A4)

22
CSI 3505Programmation Dynamique
  • Pour un produit de n matrices il existe T(n)
    manière dinsérer des parenthèses,

M (M1 M2 Mi) (Mi1 Mi2 Mn)
  • Donc trouver la meilleure façon dinsĂ©rer des
    parenthèses
  • dans un produit de n matrices la mĂ©thode directe
    est très inefficace.

23
CSI 3505Programmation Dynamique
  • ComplexitĂ© (nombres de Catalan)

T(n) ?? (4n/n3/2)
n 1 2 3 4 5 ... 10 ... 15 T(n) 1 1 2 5 14
... 4862 ... 2674440
24
CSI 3505Programmation Dynamique
  • IdĂ©e 2 Programmation dynamique
  • 1) CaractĂ©riser la structure d'une solution
    optimale
  • Principe doptimalitĂ©
  • Si (A1 x (A2 x A3 )) x A4 est une solution
    optimale pour
  • A1 x A2 x A3 x A4 ,
  • Alors (A1 x (A2 x A3 )) est une solution
    optimale pour
  • A1 x A2 x A3
  • Raison
  • Sil y avait une meilleure solution pour A1 x A2
    x A3 alors on pourra lutiliser pour obtenir une
    meilleure solution pour A1 x A2 x A3 x A4 .
    Contradiction avec loptimalité de (A1 x (A2 x A3
    )) x A4

25
CSI 3505Programmation Dynamique
  • Programmation dynamique

1) Caractériser la structure d'une solution
optimale
Si M (M1 M2 Mi) (Mi1 Mi2 Mn) est une
solution optimale pour le produit M1 M2 Mn
alors (M1 M2 Mi) est optimale pour le
produit M1 Mi ET (Mi1 Mi2 Mn) est
optimale pour le produit Mi1 Mn
Pour 1 ? i ? j ? n,, mi, j dénote une solution
optimale pour le produit Mi Mi1 Mj
26
CSI 3505Programmation Dynamique
  • 2) DĂ©finir rĂ©cursivement la valeur d'une solution
    optimale en fonction des solutions optimales des
    sous- problèmes.

(A1 A2 A3 A4 A5 A6 ) m1 ,6 ? ( (A1) (A2 A3
A4 A5 A6 ) ) m1,1 m2,6 d0 d1 d6 ( (A1
A2) (A3 A4 A5 A6 ) ) m1,2 m3,6 d0 d2
d6 ( (A1 A2 A3) (A4 A5 A6 ) ) m1,3 m4,6
d0 d3 d6 ( (A1 A2 A3 A4) (A5 A6 ) ) m1,4
m5,6 d0 d4 d6 ( (A1 (A2 A3 A4 A5) (A6 ) )
m1,5 m6,6 d0 d5 d6
27
CSI 3505Programmation Dynamique
  • 0 (i j)
  • mi,j
  • min mi,k mk 1, j di-1dkdj
    (i lt j)
  • iltkltj
  • mi, k CoĂ»t optimal pour Ai x x Ak
  • mk1, j CoĂ»t optimal pour Ak1 x x Aj
  • di-1dkdj CoĂ»t pour (Ai x x Ak) x (Ak1 x x
    Aj)

28
CSI 3505Programmation Dynamique
  • Utilisant une mĂ©thode rĂ©cursive
  • du haut vers le bas

Inacceptable beaucoup de répétitions!!
29
CSI 3505Programmation Dynamique
  • du haut vers le bas
  • m1,6 --gt m1,1, m2,6, m1,2, m3,6,
    m1,3, m4,6,m1,4, m5,6, m1,5, m6,6
  • m2,6 --gt m2,2, m3,6, m2,3, m4,6,m2,4,
    m5,6, m2,5, m6,6

30
CSI 3505Programmation Dynamique
  • On utilise l'approche ascendante (du bas vers le
    haut) la programmation dynamique
  • Le nombre de sous problèmes?
  • Combien de mi,j doit on calculer?
  • O(n2)

31
CSI 3505Programmation Dynamique
  • Construire un tableau 2-dimentionelle (mi j).

Remplir la table par Ă©tape les mi,j ou j-i
0 les mi,j ou j-i 1 les mi,j ou j-i
2
32
CSI 3505Programmation Dynamique
  • Comment calculer m1, 6?

33
CSI 3505Programmation Dynamique
  • A A1 x A2 x A3 x A4
  • 10x20 20x50 50x1 1x100
  • Étape 1 j-i 1
  • m1,2 m1,1 m2,2 1000
  • 1000
  • m2,3 20 x 50 1000
  • m3,4 50 x 100 5000

34
CSI 3505Programmation Dynamique
  • Étape 2 j-i 2

m1,1 m2,3 10 x 20 x 1 m1,3
min m1,2 m3,3 10 x 50 x 1
min 1200,10500 1200
m2,2 m3,4 20 x 50 x 100 m2,4
min m2,3 m4,4 20 x 1 x 100
min 10500,3000 3000
35
CSI 3505Programmation Dynamique
  • Étape 3 j-i 3

case j-i 3 m1,1 m2,4 10 x 20
x 100 m1,4 min m1,2 m3,4 10 x
50 x 100 m1,3 m4,4 10 x 1 x 100
min 23000,65000,2200 2200
36
CSI 3505Programmation Dynamique
  • Comment construire une solution optimale?
  • On a besoin de garder les valeurs de k
    représentant la coupure optimale pour mi, j

37
CSI 3505Programmation Dynamique
  • j- i 1 PosOpt1, 2 1
  • PosOpt2, 3 2
  • PosOpt3, 4 3
  • j- i 2 PosOpt1, 3 1
  • PosOpt2, 4 3
  • j- i 3 PosOpt1, 4 3

38
CSI 3505Programmation Dynamique
  • Matrix-Chain-Order( p, n )
  • for i 1 to n
  • mi,i 0
  • for len 2 to n
  • for i 1 to n - len 1
  • j i len - 1
  • mi,j 8
  • for k i to j-1
  • q mi,k mk1,j di-1dkdj
  • if q lt mi,j then
  • mi,j q
  • si,j k
  • return s

39
CSI 3505Programmation Dynamique
  • Les plus courts chemins (Algorithme de Floyd)
  • Le problème consiste Ă  trouver les plus courts
    chemins entre chaque couple de sommets dun
    graphe.

40
CSI 3505Programmation Dynamique
  • Les plus courts chemins (Algorithme de Floyd)

A chaque arête est associée une longueur
non-négative
Un des sommets est la source.
Problème consiste à trouver les plus courts
chemins entre chaque couple de sommets dun
graphe.
G (V,E) graphe connexe.
41
CSI 3505Programmation Dynamique
  • Cest un problème doptimisation et il vĂ©rifie le
    principe doptimalité
  • Si le plus court chemin entre A et B passe par un
    sommet C, alors les sous-chemins A-C et C-B sont
    aussi optimaux.

Si C ----- B est plus court que C ----- B
alors A ----- C ----- B est plus court que
A-----C-----B
42
CSI 3505Programmation Dynamique
  • Les plus courts chemins (Algorithme de Floyd)
  • Soit L la matrice associĂ©e Ă  un graphe G, on a
    donc Li,j représentant le coût de larc entre i
    et j. Si ij on prendra Li,j 0 et sil ny a
    pas darc entre les sommet i et j alors Li,j
    ?.

43
CSI 3505Programmation Dynamique
  • Le principe de lalgorithme et de construire une
    matrice D (initialisée à L) et qui contiendra
    après chaque itération k, les plus courts chemins
    entre chaque paire de sommets (i,j), ne passant
    que par les sommets appartenant Ă  lensemble
    1,2,3,..k.
  • Après litĂ©ration n, D contiendra les plus courts
    chemins entre chaque paire de sommets.

44
CSI 3505Programmation Dynamique
  • A l'itĂ©ration k, et pour chaque paire de sommets
    (i,j), il faut de vérifier si l'on peut trouver
    un chemin passant par le sommet k et qui soit
    meilleur que le chemin actuel.

45
CSI 3505Programmation Dynamique
  • Phase k
  • L D0 , D1 , .Dn D

Cas 1. Lutilisation du sommet k najoute rien au
chemins plus courts déjà trouvés avec les
sommets 1, 2, , k-1. Au moins un des plus
court chemins (qui pourrait utiliser les sommets
1,2,k), nutilise PAS le sommet k.
Dk i,j Dk-1i,j
Cas 2. Tous les plus court chemins (qui
pourraient utiliser les sommets 1,2,k),
UTILISENT le sommet k comme nœud intermédiaire.
Dk i,j Dk-1i,k Dk-1k,j
46
CSI 3505Programmation Dynamique
  • A lĂ©tape k on calcule les nouvelle valeurs de D
    pour chaque paire de sommet de la façon suivante
  • Dki,j min ( Dk-1i,j , Dk-1i,k
    Dk-1k,j )

47
CSI 3505Programmation Dynamique
  • Floyd(n, L )
  • matrice D de taille n x n
  • D L
  • for(k1 kltn k)
  • for(i1 iltn i)
  • for(j1 jltn j)
  • Di,j min Di,j, Di,kDk,j
  • retourner D

48
CSI 3505Programmation Dynamique
  • Exemple

49
CSI 3505Programmation Dynamique
  • Cont

50
CSI 3505Programmation Dynamique
  • Comment construire une solution optimale (plus
    court chemin)?
  • On a besoin de garder les sommets par oĂą le plus
    court chemin passe
  • Deuxième matrice P initialisĂ©e Ă  0.

si Di,kDk,i lt Di,j alors
Di,j Di,kDk,i Pi,j k
51
CSI 3505Programmation Dynamique
  • Floyd2(n, L , P )
  • matrice D de taille n x n
  • matrice P de taille n x n
  • D L P0
  • for(k1 kltn k)
  • for(i1 iltn i)
  • for(j1 jltn j)
  • if Di,kDk,j lt Di,j
  • Di,j Di,kDk,j
  • Pi, j k
  • retourner D

52
CSI 3505Programmation Dynamique
  • Exemple

53
CSI 3505Programmation Dynamique
  • ComplexitĂ©?

O(n3)
  • Floyd2(n, L , P )
  • matrice D de taille n x n
  • matrice P de taille n x n
  • D L P0
  • for(k1 kltn k)
  • for(i1 iltn i)
  • for(j1 jltn j)
  • if Di,kDk,j lt Di,j
  • Di,j Di,kDk,j
  • Pi, j k
  • retourner D

n
n
n
Constante
54
CSI 3505Programmation Dynamique
  • Problème du sac Ă  dos
  • Objets a apporter dans un sac de CapacitĂ© 10

Des solutions admissibles
55
CSI 3505Programmation Dynamique
  • S ensemble de n objets 1, 2, , n
  • wi poids de l'objet i
  • gi gain de l'objet i
  • W poids maximum que le sac peut supporter
  • wi, gi,W entiers positifs

Problème Déterminer un sous-ensemble A de S qui
peut ĂŞtre mis dans le sac et qui maximise les
gains.
56
CSI 3505Programmation Dynamique
  • Le problème est de trouver un sous ensemble
    dobjets A, qui maximise
  • ? (gi objet i est dans A)
  • Avec la condition que
  • ? (wi objet i est dans A) ? W

Applications de ce problème scheduling
(ordonnancement), allocation de lespace dans un
disque,
57
CSI 3505Programmation Dynamique
  • PropriĂ©tĂ© rĂ©cursive du problème.
  • Pi,K gains maximum si
  • le choix est parmi les objets 1, , i, et
  • le poids maximale ne doit pas dĂ©passer K.

Le problème est de calculer Pn,W
Pi,K
58
CSI 3505Programmation Dynamique
  • Cas 1
  • Pi,K Pi-1, K-wi gi
  • (impossible si le poids de lobjet i, wi gt K)
  • Cas 2.
  • Pi,K Pi-1,K
  • Base
  • Si i 0 ou K 0, alors Pi,K 0

59
CSI 3505Programmation Dynamique
  • maxgiPi-1,K-wi, Pi-1,K) wi ? K
  • Pi,K
  • Pi-1,K wi gt K
  • Pour igt0, kgt0.

Exemple
Objets 1 2 3 4 5
gi 10 5 5 10 3
wi 5 5 2 2 2
60
CSI 3505Programmation Dynamique
k i 0 1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 10 10 10 10 10 10
2 0 0 0 0 0 10 10 10 10 10 15
3 0 0 5 5 5 10 10 15 15 15 15
4 0 0 10 10 15 15 15 20 20 25 25
5 0 0 10 10 15 15 18 20 20 25 25
61
CSI 3505Programmation Dynamique
  • ComplexitĂ©

Taille du problème n Opérations nombre
d'entrées dans la table Cas pire
?(n W)
Dépend de W, la capacité maximale du sac !
Write a Comment
User Comments (0)
About PowerShow.com