Cours d - PowerPoint PPT Presentation

1 / 210
About This Presentation
Title:

Cours d

Description:

Cours d Algorithmique Programmation dynamique : Probl me du sac dos. N gociant en sardines au port de Marseille. Probl me de la plus longue sous-cha ne commune. – PowerPoint PPT presentation

Number of Views:193
Avg rating:3.0/5.0
Slides: 211
Provided by: ESIL
Category:
Tags: cours

less

Transcript and Presenter's Notes

Title: Cours d


1
Cours dAlgorithmique
  • Programmation dynamique
  • Problème du sac à dos.
  • Négociant en sardines au port de Marseille.
  • Problème de la plus longue sous-chaîne commune.
  • Problème du plus court chemin.

2
Cours dAlgorithmique
  • Programmation dynamique
  • Problème du sac à dos.
  • Négociant en sardines au port de Marseille.
  • Problème de la plus longue sous-chaîne commune.
  • Problème du plus court chemin.

Bonne année 2006 ! ! !
3
Cours dAlgorithmique
  • Programmation dynamique
  • Problème du sac à dos.
  • Négociant en sardines au port de Marseille.
  • Problème de la plus longue sous-chaîne commune.
  • Problème du plus court chemin.

Bonne année 2006 ! ! !
Bonne année ! ! !
4
Cours dAlgorithmique
Bonne année !
  • Programmation dynamique
  • Problème du sac à dos.
  • Négociant en sardines au port de Marseille.
  • Problème de la plus longue sous-chaîne commune.
  • Problème du plus court chemin.

Bonne année 2006 ! ! !
Bonne année ! ! !
5
Cours dAlgorithmique
Bonne année !
  • Programmation dynamique
  • Problème du sac à dos.
  • Négociant en sardines au port de Marseille.
  • Problème de la plus longue sous-chaîne commune.
  • Problème du plus court chemin.

Bonne année 2006 ! ! !
Bonne année ! ! !
Bonne année ! ! !
6
Cours dAlgorithmique
Bonne année !
Bonne année ...
  • Programmation dynamique
  • Problème du sac à dos.
  • Négociant en sardines au port de Marseille.
  • Problème de la plus longue sous-chaîne commune.
  • Problème du plus court chemin.

Bonne année 2006 ! ! !
Bonne année ! ! !
Bonne année ! ! !
7
Cours dAlgorithmique
Bonne année !
Bonne année ...
Bonne année ! ! !
  • Programmation dynamique
  • Problème du sac à dos.
  • Négociant en sardines au port de Marseille.
  • Problème de la plus longue sous-chaîne commune.
  • Problème du plus court chemin.

Bonne année 2006 ! ! !
Bonne année ! ! !
Bonne année ! ! !
8
Les grandes lignes du cours
  • Trier et chercher, recherche textuelle
  • Listes et arbres
  • Le back-track
  • Arbres équilibrés
  • Récursivité et induction sur la structure
  • Divide and conquer
  • Minimax, alpha-beta
  • Dérécursion
  • NP-complétude
  • Logique de Hoare
  • Programmation dynamique
  • Complexité et calculabilité

9
Dynamic Programming------------------------------
-----------------------------------
En français Programmation dynamique
! Abréviation classique DP Notion introduite
par Richard Bellman en 1957.
Principe Nous explicitons le TEMPS qui sera
linéaire, bi-dimensionnel,
10
Dynamic Programming------------------------------
-----------------------------------
  • Introduction à la problématique.
  • Considérons à nouveau la fonction Fibonacci

11
Dynamic Programming------------------------------
-----------------------------------
  • Introduction à la problématique.
  • Considérons à nouveau la fonction Fibonacci
  • Le programme récursif est exponentiel en temps !
  • Cest dû aux
  • répétitions
  • de calculs !

4
3
2
2
0
1
0
1
12
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?

13
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?

Nous utilisons au temps  t  ce que nous
avons pu calculer aux temps  t 1  et t
2 .
14
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?
  • Respectons le temps

0
1
2
3
4
5
6
t
fib
1
0
15
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?
  • Respectons le temps

0
1
2
3
4
5
6
t
fib
1
1
0
16
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?
  • Respectons le temps

0
1
2
3
4
5
6
t
fib
1
1
2
0
17
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?
  • Respectons le temps

0
1
2
3
4
5
6
t
fib
1
1
2
3
0
18
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?
  • Respectons le temps

0
1
2
3
4
5
6
t
fib
1
1
2
3
5
0
19
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?
  • Respectons le temps

0
1
2
3
4
5
6
t
fib
1
1
2
3
5
8
0
20
Dynamic Programming------------------------------
-----------------------------------
  • Principe de la programmation dynamique
  • Dites à quel moment vous ferez quel calcul ?
  • Respectons le temps
  • Complexité en temps linéaire !

0
1
2
3
4
5
6
t
fib
1
1
2
3
5
8
0
21
Dynamic Programming------------------------------
-----------------------------------
  • Quelle fonction de temps ?
  • Cest quoi ?

22
Dynamic Programming------------------------------
-----------------------------------
  • Quelle fonction de temps ?
  • Cest quoi ?
  • Une fonction qui dit, en termes de létat du
    problème, à quel moment il va être résolu !
  • Exemples fib ( t ) au temps  t ,
  • prog( x , y ) au temps  2
    x y -5 .

23
Dynamic Programming------------------------------
-----------------------------------
  • Quelle fonction de temps ?
  • Cest quoi ?
  • Une fonction qui dit, en termes de létat du
    problème, à quel moment il va être résolu !
  • Exemples fib ( t ) au temps  t ,
  • prog( x , y ) au temps  2
    x y -5 .
  • Nimporte laquelle pour peu que
  • nous ne répétions pas les calculs
  • Ce nest pas interdit, mais fortement
    déconseillé !
  • et que la fonction soit compatible avec les
    dépendances.

24
Dynamic Programming------------------------------
-----------------------------------
  • Dépendances entre problèmes
  • On parle aussi de  flot de données ou de
    contrôle.
  • Le calcul  B  dépend du calcul  A  sil faut
    que
  •  A  soit calculé avant  B  !

25
Dynamic Programming------------------------------
-----------------------------------
  • Dépendances entre problèmes
  • On parle aussi de  flot de données ou de
    contrôle.
  • Le calcul  B  dépend du calcul  A  sil faut
    que
  •  A  soit calculé avant  B  !
  • Soit, parce que  A  a besoin de données
    produites par  B  --- flot de données !

26
Dynamic Programming------------------------------
-----------------------------------
  • Dépendances entre problèmes
  • On parle aussi de  flot de données ou de
    contrôle.
  • Le calcul  B  dépend du calcul  A  sil faut
    que
  •  A  soit calculé avant  B  !
  • Soit, parce que  A  a besoin de données
    produites par  B  --- flot de données !
  • Soit, parce quil faut respecter un ordre (par
    exemple
  • imprimer  A  avant  B ).

27
Dynamic Programming------------------------------
-----------------------------------
  • Dépendances entre problèmes
  • On parle aussi de  flot de données ou de
    contrôle.
  • Le calcul  B  dépend du calcul  A  sil faut
    que
  •  A  soit calculé avant  B  !
  • Soit, parce que  A  a besoin de données
    produites par  B  --- flot de données !
  • Soit, parce quil faut respecter un ordre (par
    exemple
  • imprimer  A  avant  B ).
  • Soit, parce que  A  conditionne  B  ( si A
    alors B ) --- flot de contrôle !

28
Dynamic Programming------------------------------
-----------------------------------
  • Dépendances entre problèmes
  • On parle aussi de  flot de données ou de
    contrôle.
  • Le calcul  B  dépend du calcul  A  sil faut
    que
  •  A  soit calculé avant  B  !
  • Soit, parce que  A  a besoin de données
    produites par  B  --- flot de données !
  • Soit, parce quil faut respecter un ordre (par
    exemple
  • imprimer  A  avant  B ).
  • Soit, parce que  A  conditionne  B  ( si A
    alors B ) --- flot de contrôle !

Le respect des dépendances est obligatoire !
29
Dynamic Programming------------------------------
-----------------------------------
  • En fait, les dépendances comportent une notion de
    temporalité sous la forme de
  • AVANT --- APRES
  • DABORD --- ENSUITE

30
Dynamic Programming------------------------------
-----------------------------------
  • En fait, les dépendances comportent une notion de
    temporalité sous la forme de
  • AVANT --- APRES
  • DABORD --- ENSUITE
  • La fonction de temps  f  dit de manière plus
    précise
  • QUAND

31
Dynamic Programming------------------------------
-----------------------------------
  • En fait, les dépendances comportent une notion de
    temporalité sous la forme de
  • AVANT --- APRES
  • DABORD --- ENSUITE
  • La fonction de temps  f  dit de manière plus
    précise
  • QUAND
  • La contrainte sur  f  dit que
  • dès que  A  doit être avant  B  pour des
    raisons de dépendances, alors
  • f ( A ) lt f ( B )

32
Dynamic Programming------------------------------
-----------------------------------
  • En fait, les dépendances comportent une notion de
    temporalité sous la forme de
  • AVANT --- APRES
  • DABORD --- ENSUITE
  • La fonction de temps  f  dit de manière plus
    précise
  • QUAND
  • La contrainte sur  f  dit que
  • dès que  A  doit être avant  B  pour des
    raisons de dépendances, alors
  • f ( A ) lt f ( B )

 f  est alors dite  compatible avec les
dépendances .
33
Dynamic Programming------------------------------
-----------------------------------
  • Larbre de dépendances de Fibonacci

4
3
2
2
1
1
1
0
0
34
Dynamic Programming------------------------------
-----------------------------------
  • Larbre de dépendances de Fibonacci
  • Sa projection sur un axe de temps

t
4
4
3
3
2
2
2
1
1
1
1
0
0
0
35
Dynamic Programming------------------------------
-----------------------------------
  • Larbre de dépendances de Fibonacci
  • Sa projection sur un axe de temps

t
4
4
3
3
2
2
2
1
1
1
1
0
0
0
36
Dynamic Programming------------------------------
-----------------------------------
  • Larbre de dépendances de Fibonacci
  • Sa projection sur un axe de temps

t
4
4
Compatibilité !
3
3
2
2
2
1
1
1
1
0
0
0
37
Dynamic Programming------------------------------
-----------------------------------
  • Parfois, la programmation dynamique est
  • la transformation dun problème de back-track ou
    divide-and-conquer
  • avec un comportement temporel anarchique
  • en un problème qui réalise les calculs une seule
    fois et lorsquil le faut !

38
Dynamic Programming------------------------------
-----------------------------------
  • Il y a une théorie derrière !
  • Cadre général les modèles de décision
    multi-étages.
  • Si certaines propriétés sont vérifiées, on peut
    transformer tout problème de ce modèle en un
    programme DP.
  • Trop long et compliqué dans le contexte du cours.

39
Dynamic Programming------------------------------
-----------------------------------
U n e x e m p l e c o m p l e t S A C A
D O S ! ! !
40
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Problème du  sac à dos  !
  • Ingrédients
  • 1 sac à dos de capacité  C  (par exemple en
    kilos),
  • n objets de O , , O
  • de poids strictement positifs respectifs p
  • et de bénéfices strictement positifs respectifs b
    .

n
1
i
i
41
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Problème du  sac à dos  !
  • Ingrédients
  • 1 sac à dos de capacité  C  (par exemple en
    kilos),
  • n objets de O , , O
  • de poids strictement positifs respectifs p
  • et de bénéfices strictement positifs respectifs b
    .
  • Recette
  • Trouvez, sans dépasser la capacité, lensemble
    dobjets qui maximise le bénéfice.

n
1
i
i
42
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Trouvez lensemble  I  inclus dans 1 , , n
    tel que
  • P ( I ) S p C

i
i e I
43
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Trouvez lensemble  I  inclus dans 1 , , n
    tel que
  • P ( I ) S p C
  • B ( I ) S b max ( B ( J ) )

i
i e I
i
i e I
44
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Trouvez lensemble  I  inclus dans 1 , , n
    tel que
  • P ( I ) S p C
  • B ( I ) S b max ( B ( J ) )
  • A priori, il faut se comparer à un grand nombre
    dautres ensembles candidats à être optimal.

i
i e I
i
i e I
45
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Correct, mais

int max_benefice 0 pour k allant de 1 à n
faire pour chaque ensemble I, de taille k
et sous-ensemble de
1 , ... , n faire si ( P ( I ) lt
C ) max_benefice max ( B ( I ) ,
max_benefice )
46
Sac à dos --- Knapsack-----------------------
------------------------------------------
Toutes les tailles possibles pour les
sous-ensembles.
  • Correct, mais

int max_benefice 0 pour k allant de 1 à n
faire pour chaque ensemble I, de taille k
et sous-ensemble de
1 , ... , n faire si ( P ( I ) lt
C ) max_benefice max ( B ( I ) ,
max_benefice )
47
Sac à dos --- Knapsack-----------------------
------------------------------------------
Toutes les tailles possibles pour les
sous-ensembles.
  • Correct, mais

int max_benefice 0 pour k allant de 1 à n
faire pour chaque ensemble I, de taille k
et sous-ensemble de
1 , ... , n faire si ( P ( I ) lt
C ) max_benefice max ( B ( I ) ,
max_benefice )
Tous les sous-ensembles de cette taille
48
Sac à dos --- Knapsack-----------------------
------------------------------------------
Toutes les tailles possibles pour les
sous-ensembles.
  • Correct, mais

int max_benefice 0 pour k allant de 1 à n
faire pour chaque ensemble I, de taille k
et sous-ensemble de
1 , ... , n faire si ( P ( I ) lt
C ) max_benefice max ( B ( I ) ,
max_benefice )
Tous les sous-ensembles de cette taille
Retenez le bénéfice sil est meilleur et que la
contrainte sur la capacité est respectée.
49
Sac à dos --- Knapsack-----------------------
------------------------------------------
Toutes les tailles possibles pour les
sous-ensembles.
  • Correct, mais

int max_benefice 0 pour k allant de 1 à n
faire pour chaque ensemble I, de taille k
et sous-ensemble de
1 , ... , n faire si ( P ( I ) lt
C ) max_benefice max ( B ( I ) ,
max_benefice )
Tous les sous-ensembles de cette taille
Retenez le bénéfice sil est meilleur et que la
contrainte sur la capacité est respectée.
Seule ombre au tableau le nombre des
ensembles considérés est en X ( 2n ).
50
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ?

51
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ? Mais oui !
    ! !

52
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ? Mais oui !
    ! !
  • Considérez les ensembles qui contiennent lobjet
    O et ceux qui ne le contiennent pas !

53
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ? Mais oui !
    ! !
  • Considérez les ensembles qui contiennent lobjet
    O et ceux qui ne le contiennent pas !
  • Soit  i  lindice de lobjet que nous allons
    considérer,
  • soit  R  la capacité résiduelle,
  • soit  B  le bénéfice des objets pris jusque-là.

54
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ? Mais oui !
    ! !
  • Considérez les ensembles qui contiennent lobjet
    O et ceux qui ne le contiennent pas !
  • Soit  i  lindice de lobjet que nous allons
    considérer,
  • soit  R  la capacité résiduelle,
  • soit  B  le bénéfice des objets pris jusque-là.

Etat initial.
I 1 , R C , B 0
55
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ? Mais oui !
    ! !
  • Considérez les ensembles qui contiennent lobjet
    O et ceux qui ne le contiennent pas !
  • Soit  i  lindice de lobjet que nous allons
    considérer,
  • soit  R  la capacité résiduelle,
  • soit  B  le bénéfice des objets pris jusque-là.

Etat initial.
I 1 , R C , B 0
O est pris !
1
I 2 , R C - p , B b
1
1
56
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ? Mais oui !
    ! !
  • Considérez les ensembles qui contiennent lobjet
    O et ceux qui ne le contiennent pas !
  • Soit  i  lindice de lobjet que nous allons
    considérer,
  • soit  R  la capacité résiduelle,
  • soit  B  le bénéfice des objets pris jusque-là.

Etat initial.
I 1 , R C , B 0
O est pris !
O nest pas pris !
1
1
I 2 , R C - p , B b
I 2 , R C , B 0
1
1
57
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ? Mais oui !
    ! !
  • Considérez les ensembles qui contiennent lobjet
    O et ceux qui ne le contiennent pas !
  • Soit  i  lindice de lobjet que nous allons
    considérer,
  • soit  R  la capacité résiduelle,
  • soit  B  le bénéfice des objets pris jusque-là.

Etat initial.
I 1 , R C , B 0
O est pris !
O nest pas pris !
1
1
I 2 , R C - p , B b
I 2 , R C , B 0
1
1
Optimum local B_sans
Optimum local B_avec
58
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Solution Divide and Conquer ? ? ? Mais oui !
    ! !
  • Considérez les ensembles qui contiennent lobjet
    O et ceux qui ne le contiennent pas !
  • Soit  i  lindice de lobjet que nous allons
    considérer,
  • soit  R  la capacité résiduelle,
  • soit  B  le bénéfice des objets pris jusque-là.

Etat initial.
I 1 , R C , B 0
MAX
O est pris !
O nest pas pris !
1
1
I 2 , R C - p , B b
I 2 , R C , B 0
1
1
Optimum local B_avec
Optimum local B_sans
59
Sac à dos --- Knapsack-----------------------
------------------------------------------
int DC_sac ( int objet , int residuelle , int
benefice ) if ( objet gt n ) return( benefice
) else int memoire memoire
DC_sac ( objet 1 , residuelle , benefice )
if ( p objet gt residuelle ) return(
memoire ) else return( max( DC_sac(
objet 1 ,
residuelle p objet ,
benefice b objet ) ,
memoire ) )
60
Sac à dos --- Knapsack-----------------------
------------------------------------------
int DC_sac ( int objet , int residuelle , int
benefice ) if ( objet gt n ) return( benefice
) else int memoire memoire
DC_sac ( objet 1 , residuelle , benefice )
if ( p objet gt residuelle ) return(
memoire ) else return( max( DC_sac(
objet 1 ,
residuelle p objet ,
benefice b objet ) ,
memoire ) )
Cas final !
61
Sac à dos --- Knapsack-----------------------
------------------------------------------
int DC_sac ( int objet , int residuelle , int
benefice ) if ( objet gt n ) return( benefice
) else int memoire memoire
DC_sac ( objet 1 , residuelle , benefice )
if ( p objet gt residuelle ) return(
memoire ) else return( max( DC_sac(
objet 1 ,
residuelle p objet ,
benefice b objet ) ,
memoire ) )
Cas final !
Nous explorons toujours le cas où lobjet ne sera
pas pris !
62
Sac à dos --- Knapsack-----------------------
------------------------------------------
int DC_sac ( int objet , int residuelle , int
benefice ) if ( objet gt n ) return( benefice
) else int memoire memoire
DC_sac ( objet 1 , residuelle , benefice )
if ( p objet gt residuelle ) return(
memoire ) else return( max( DC_sac(
objet 1 ,
residuelle p objet ,
benefice b objet ) ,
memoire ) )
Cas final !
Nous explorons toujours le cas où lobjet ne sera
pas pris !
Il se peut que cela suffise !
63
Sac à dos --- Knapsack-----------------------
------------------------------------------
int DC_sac ( int objet , int residuelle , int
benefice ) if ( objet gt n ) return( benefice
) else int memoire memoire
DC_sac ( objet 1 , residuelle , benefice )
if ( p objet gt residuelle ) return(
memoire ) else return( max( DC_sac(
objet 1 ,
residuelle p objet ,
benefice b objet ) ,
memoire ) )
Cas final !
Nous explorons toujours le cas où lobjet ne sera
pas pris !
Il se peut que cela suffise !
Le cas le plus courant est celui qui explore les
deux alternatives !
64
Sac à dos --- Knapsack-----------------------
------------------------------------------
int DC_sac ( int objet , int residuelle , int
benefice ) if ( objet gt n ) return( benefice
) else int memoire memoire
DC_sac ( objet 1 , residuelle , benefice )
if ( p objet gt residuelle ) return(
memoire ) else return( max( DC_sac(
objet 1 ,
residuelle p objet ,
benefice b objet ) ,
memoire ) )
Cas final !
Nous explorons toujours le cas où lobjet ne sera
pas pris !
Il se peut que cela suffise !
Le cas le plus courant est celui qui explore les
deux alternatives !
La capacité résiduelle diminue !
Le bénéfice augmente !
65
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Malheureusement, nous répétons des calculs !
  • Considérons p 1 1 , p 2 2 , p 3
    3 et
  • b 1 2 , b 2
    4 , b 3 6 .

66
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Malheureusement, nous répétons des calculs !
  • Considérons p 1 1 , p 2 2 , p 3
    3 et
  • b 1 2 , b 2
    4 , b 3 6 .
  • Si nous sélectionnons 1 et 2 mais pas 3 ,
    lappel suivant sera
  • DC_sac ( 4 , C 3 ,
    6 ).

67
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Malheureusement, nous répétons des calculs !
  • Considérons p 1 1 , p 2 2 , p 3
    3 et
  • b 1 2 , b 2
    4 , b 3 6 .
  • Si nous sélectionnons 1 et 2 mais pas 3 ,
    lappel suivant sera
  • DC_sac ( 4 , C 3 ,
    6 ).
  • Si nous ne sélectionnons ni 1 , ni 2 , mais 3
    , lappel suivant sera
  • DC_sac ( 4 , C 3 ,
    6 ).

68
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Malheureusement, nous répétons des calculs !
  • Considérons p 1 1 , p 2 2 , p 3
    3 et
  • b 1 2 , b 2
    4 , b 3 6 .
  • Si nous sélectionnons 1 et 2 mais pas 3 ,
    lappel suivant sera
  • DC_sac ( 4 , C 3 ,
    6 ).
  • Si nous ne sélectionnons ni 1 , ni 2 , mais 3
    , lappel suivant sera
  • DC_sac ( 4 , C 3 ,
    6 ).

69
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Organisons notre emploi du temps !
  • Au temps  t , nous nous occupons de O .

t
70
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Organisons notre emploi du temps !
  • Au temps  t , nous nous occupons de O .
  • Nous avons donc déjà considéré O , , O
    .

t
1
t-1
71
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Organisons notre emploi du temps !
  • Au temps  t , nous nous occupons de O .
  • Nous avons donc déjà considéré O , , O
    .
  • Avec une capacité résiduelle  R , la meilleure
    solution sur les  t  premiers objets est
    obtenue par
  • Opt ( t , R )

t
1
t-1

72
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Organisons notre emploi du temps !
  • Au temps  t , nous nous occupons de O .
  • Nous avons donc déjà considéré O , , O
    .
  • Avec une capacité résiduelle  R , la meilleure
    solution sur les  t  premiers objets est
    obtenue par
  • Opt ( t 1 , R )
    si p gt R !
  • Opt ( t , R )

t
1
t-1

t
73
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Organisons notre emploi du temps !
  • Au temps  t , nous nous occupons de O .
  • Nous avons donc déjà considéré O , , O
    .
  • Avec une capacité résiduelle  R , la meilleure
    solution sur les  t  premiers objets est
    obtenue par
  • Opt ( t 1 , R )
    si p gt R !
  • Opt ( t , R )
  • max ( Opt ( t 1 ,
    R ) , b Opt ( t - 1 , R p ) )

t
1
t-1

t
t
t
74
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Organisons notre emploi du temps !
  • Au temps  t , nous nous occupons de O .
  • Nous avons donc déjà considéré O , , O
    .
  • Avec une capacité résiduelle  R , la meilleure
    solution sur les  t  premiers objets est
    obtenue par
  • Opt ( t 1 , R )
    si p gt R !
  • Opt ( t , R )
  • max ( Opt ( t 1 ,
    R ) , b Opt ( t - 1 , R p ) )

t
1
t-1

t
t
t
O est pris !
O nest pas pris !
t
t
75
Sac à dos --- Knapsack-----------------------
------------------------------------------
  • Organisons notre emploi du temps !
  • Au temps  t , nous nous occupons de O .
  • Nous avons donc déjà considéré O , , O
    .
  • Avec une capacité résiduelle  R , la meilleure
    solution sur les  t  premiers objets est
    obtenue par
  • Opt ( t 1 , R )
    si p gt R !
  • Opt ( t , R )
  • max ( Opt ( t 1 ,
    R ) , b Opt ( t - 1 , R p ) )

t
1
t-1

t
t
t
Nous respectons lécoulement du temps !
76
Sac à dos --- Knapsack-----------------------
------------------------------------------
C
Opt ( t-1 , R )
Opt ( t , R )
R
Si lobjet est trop lourd !
n
t-1
t
77
Sac à dos --- Knapsack-----------------------
------------------------------------------
C
Opt ( t-1 , R )
Opt ( t , R )
R
Si lobjet est trop lourd !
La fonction de temps est compatible avec les
dépendances ! ! !
n
t-1
t
78
Sac à dos --- Knapsack-----------------------
------------------------------------------
C
Opt ( t-1 , R )
Opt ( t , R )
R
Si lobjet nest pas trop lourd !
R p t
Opt ( t-1 , R p t )
n
t-1
t
79
Sac à dos --- Knapsack-----------------------
------------------------------------------
C
Opt ( t-1 , R )
Opt ( t , R )
R
Si lobjet nest pas trop lourd !
R p t
La fonction de temps est compatible avec les
dépendances ! ! !
Opt ( t-1 , R p t )
n
t-1
t
80
Sac à dos --- Knapsack-----------------------
------------------------------------------
C
0

Opt ( t-1 , R )
Opt ( t , R )
R
0
Si lobjet nest pas trop lourd !

R p t
La fonction de temps est compatible avec les
dépendances ! ! !
Opt ( t-1 , R p t )
0
n
t-1
t
0
Sans objets, il ny a aucun bénéfice.
81
Sac à dos --- Knapsack-----------------------
------------------------------------------
for ( R 0 R lt C R ) Opt 0 , R
0 for ( t 1 t lt n t ) for ( R
0 R lt C R ) if ( p t gt R )
Opt t , R Opt t-1 , R
else Opt t , R max( b t
Opt t-1 , Rp t ,
Opt t-1 , R )
82
Sac à dos --- Knapsack-----------------------
------------------------------------------
for ( R 0 R lt C R ) Opt 0 , R
0 for ( t 1 t lt n t ) for ( R
0 R lt C R ) if ( p t gt R )
Opt t , R Opt t-1 , R
else Opt t , R max( b t
Opt t-1 , Rp t ,
Opt t-1 , R )
Initialisation de la première colonne à 0.
83
Sac à dos --- Knapsack-----------------------
------------------------------------------
for ( R 0 R lt C R ) Opt 0 , R
0 for ( t 1 t lt n t ) for ( R
0 R lt C R ) if ( p t gt R )
Opt t , R Opt t-1 , R
else Opt t , R max( b t
Opt t-1 , Rp t ,
Opt t-1 , R )
Initialisation de la première colonne à 0.
Colonne après colonne, depuis la gauche vers la
droite et de bas en haut
84
Sac à dos --- Knapsack-----------------------
------------------------------------------
for ( R 0 R lt C R ) Opt 0 , R
0 for ( t 1 t lt n t ) for ( R
0 R lt C R ) for ( R C R gt 0
R-- ) if ( p t gt R ) Opt
t , R Opt t-1 , R else
Opt t , R max( b t Opt t-1 , Rp t
, Opt t-1 , R
)
Initialisation de la première colonne à 0.
Colonne après colonne, depuis la gauche vers la
droite et de bas en haut et de haut en bas,
pourquoi pas ?
85
Sac à dos --- Knapsack-----------------------
------------------------------------------
for ( R 0 R lt C R ) Opt 0 , R
0 for ( t 1 t lt n t ) for ( R
0 R lt C R ) if ( p t gt R )
Opt t , R Opt t-1 , R
else Opt t , R max( b t
Opt t-1 , Rp t ,
Opt t-1 , R )
Initialisation de la première colonne à 0.
Colonne après colonne, depuis la gauche vers la
droite et de bas en haut
ce quil faut !
86
Sac à dos --- Knapsack-----------------------
------------------------------------------
for ( R 0 R lt C R ) Opt 0 , R
0 for ( t 1 t lt n t ) for ( R
0 R lt C R ) if ( p t gt R )
Opt t , R Opt t-1 , R
else Opt t , R max( b t
Opt t-1 , Rp t ,
Opt t-1 , R )
Initialisation de la première colonne à 0.
Colonne après colonne, depuis la gauche vers la
droite et de bas en haut
Finalement, c'était simple ! ! !
ce quil faut !
87
Marine marchande---------------------------------
--------------------------------
  • U n e x e m p l e c o m p l e t
  • E G O C I A N T
  • U
  • O R T
  • E
  • M A R S E I L L E ! ! !

88
Marine marchande---------------------------------
--------------------------------
  • Lénoncé
  • Vous êtes acheteur au port de Marseille,

89
Marine marchande---------------------------------
--------------------------------
  • Lénoncé
  • Vous êtes acheteur au port de Marseille,
  •  n  bateaux vont arriver et vous connaissez
    cette valeur,

90
Marine marchande---------------------------------
--------------------------------
  • Lénoncé
  • Vous êtes acheteur au port de Marseille,
  •  n  bateaux vont arriver et vous connaissez
    cette valeur,
  • la qualité de la marchandise des différents
    bateaux  Q( i )  varie de 0 à 1000, de manière
    aléatoire uniforme, vous savez la juger,

91
Marine marchande---------------------------------
--------------------------------
  • Lénoncé
  • Vous êtes acheteur au port de Marseille,
  •  n  bateaux vont arriver et vous connaissez
    cette valeur,
  • la qualité de la marchandise des différents
    bateaux  Q( i )  varie de 0 à 1000, de manière
    aléatoire uniforme, vous savez la juger,
  • vous achetez une cargaison !

92
Marine marchande---------------------------------
--------------------------------
  • Lénoncé
  • Vous êtes acheteur au port de Marseille,
  •  n  bateaux vont arriver et vous connaissez
    cette valeur,
  • la qualité de la marchandise des différents
    bateaux  Q( i )  varie de 1 à 1000, de manière
    aléatoire uniforme, vous savez la juger,
  • vous achetez une cargaison !
  • Laquelle ?

93
Marine marchande---------------------------------
--------------------------------
  • A larrivée du premier bateau
  • Vous achetez ?
  • Vous attendez mieux ?

94
Marine marchande---------------------------------
--------------------------------
  • A larrivée du premier bateau
  • Vous achetez ?
  • Vous attendez mieux ?
  • OUI
  • Achat du premier ?
  • NON


95
Marine marchande---------------------------------
--------------------------------
  • A larrivée du premier bateau
  • Vous achetez ?
  • Vous attendez mieux ?
  • OUI
  • Achat du premier ?
    OUI
  • NON Achat
    du second

  • NON

etc, etc ...
96
Marine marchande---------------------------------
--------------------------------
  • A larrivée du premier bateau
  • Vous achetez ?
  • Vous attendez mieux ?
  • OUI
  • Achat du premier ?
    OUI
  • NON Achat
    du second

  • NON
  • En fait, quattendez-vous ?

etc, etc ...
97
Marine marchande---------------------------------
--------------------------------
  • A larrivée du premier bateau
  • Vous achetez ?
  • Vous attendez mieux ?
  • OUI
  • Achat du premier ?
    OUI
  • NON Achat
    du second

  • NON
  • En fait, nous achetons si la qualité du
  • bateau courant est meilleure que la
  • qualité moyenne espérée des bateaux
  • qui vont venir !

etc, etc ...
98
Marine marchande---------------------------------
--------------------------------
  • A larrivée du bateau  i 
  • Nous achetons si Q( i ) est supérieure à E (
    i1 )
  • où E ( i1 ) est la qualité moyenne des bateaux
    i1 à n
  • et nous en déduisons E( i ) !

99
Marine marchande---------------------------------
--------------------------------
  • A larrivée du bateau  i 
  • Nous achetons si Q( i ) est supérieure à E (
    i1 )
  • où E ( i1 ) est la qualité moyenne des bateaux
    i1 à n
  • et nous en déduisons E( i ) !
  • Donc,
  • avec une probabilité de ( 1000 E( i1 ) ) /
    1000
  • nous achetons le bateau  i  dont la qualité
    moyenne vaut ( 1000 E( i1 ) ) / 2 .

100
Marine marchande---------------------------------
--------------------------------
  • A larrivée du bateau  i 
  • Nous achetons si Q( i ) est supérieure à E (
    i1 )
  • où E ( i1 ) est la qualité moyenne des bateaux
    i1 à n
  • et nous en déduisons E( i ) !
  • Donc,
  • avec une probabilité de ( 1000 E( i1 ) ) /
    1000
  • nous achetons le bateau  i  dont la qualité
    moyenne vaut ( 1000 E( i1 ) ) / 2 .
  • E ( i ) ( 1000 E( i1 ) ) / 1000 ( 1000
    E( i 1 ) ) / 2

101
Marine marchande---------------------------------
--------------------------------
  • A larrivée du bateau  i 
  • Nous achetons si Q( i ) est supérieure à E (
    i1 )
  • où E ( i1 ) est la qualité moyenne des bateaux
    i1 à n
  • et nous en déduisons E( i ) !
  • Donc,
  • avec une probabilité de ( 1000 E( i1 ) ) /
    1000
  • nous achetons le bateau  i  dont la qualité
    moyenne vaut ( 1000 E( i1 ) ) / 2 .
  • E ( i ) ( 1000 E( i1 ) ) / 1000 ( 1000
    E( i 1 ) ) / 2
  • ( 1 - ( 1000 E( i1 ) ) /
    1000 ) E( i1 )

102
Marine marchande---------------------------------
--------------------------------
  • A larrivée du bateau  i 
  • Nous achetons si Q( i ) est supérieure à E (
    i1 )
  • où E ( i1 ) est la qualité moyenne des bateaux
    i1 à n
  • et nous en déduisons E( i ) !
  • Donc,
  • avec une probabilité de ( 1000 E( i1 ) ) /
    1000
  • nous achetons le bateau  i  dont la qualité
    moyenne vaut ( 1000 E( i1 ) ) / 2 .
  • E ( i ) ( 1000 E( i1 ) ) / 1000 ( 1000
    E( i 1 ) ) / 2
  • ( 1 - ( 1000 E( i1 ) ) /
    1000 ) E( i1 )
  • ( 10002 E2( i1 ) ) / 2000

103
Marine marchande---------------------------------
--------------------------------
  • Ce qui nous donne
  • E( n ) 500

104
Marine marchande---------------------------------
--------------------------------
  • Ce qui nous donne
  • E( n ) 500
  • E( n-1 ) ½ 750 ½ 500 625

105
Marine marchande---------------------------------
--------------------------------
  • Ce qui nous donne
  • E( n ) 500
  • E( n-1 ) ½ 750 ½ 500 625
  • E( n-2 ) ( 1000 625 ) / 1000 ( 1000 625
    ) / 2
  • 625 / 1000 625 / 2
  • 695

106
Marine marchande---------------------------------
--------------------------------
  • Ce qui nous donne
  • E( n ) 500
  • E( n-1 ) ½ 750 ½ 500 625
  • E( n-2 ) ( 1000 625 ) / 1000 ( 1000 625
    ) / 2
  • 625 / 1000 625 / 2
  • 695
  • n-10 n-9 n-8 n-7 n-6 n-5
    n-4 n-3 n-2 n-1 n
  • 879 871 861 850 836 820 775
    741 695 625 500

x
E( x )
107
Marine marchande---------------------------------
--------------------------------
  • Ce qui nous donne
  • E( n ) 500
  • E( n-1 ) ½ 750 ½ 500 625
  • E( n-2 ) ( 1000 625 ) / 1000 ( 1000 625
    ) / 2
  • 625 / 1000 625 / 2
  • 695
  • n-10 n-9 n-8 n-7 n-6 n-5
    n-4 n-3 n-2 n-1 n
  • 879 871 861 850 836 820 775
    741 695 625 500

Laxe de temps !
x
E( x )
108
Marine marchande---------------------------------
--------------------------------
  • Ce qui nous donne
  • E( n ) 500
  • E( n-1 ) ½ 750 ½ 500 625
  • E( n-2 ) ( 1000 625 ) / 1000 ( 1000 625
    ) / 2
  • 625 / 1000 625 / 2
  • 695
  • n-10 n-9 n-8 n-7 n-6 n-5
    n-4 n-3 n-2 n-1 n
  • 879 871 861 850 836 820 775
    741 695 625 500

Laxe de temps !
x
E( x )
Pour tout bateau i , i lt n Nous achetons si
Q( i ) gt E( i1 ) !
109
Marine marchande---------------------------------
--------------------------------
  • Ce qui nous donne
  • E( n ) 500
  • E( n-1 ) ½ 750 ½ 500 625
  • E( n-2 ) ( 1000 625 ) / 1000 ( 1000 625
    ) / 2
  • 625 / 1000 625 / 2
  • 695
  • n-10 n-9 n-8 n-7 n-6 n-5
    n-4 n-3 n-2 n-1 n
  • 879 871 861 850 836 820 775
    741 695 625 500

Laxe de temps !
C'est à nouveau très simple !
x
E( x )
Pour tout bateau i , i lt n Nous achetons si
Q( i ) gt E( i1 ) !
110
Longest Common Sub-String------------------------
-----------------------------------------
  • U n e x e m p l e c o m p l e t
  • L A P L U S L O N G U E
  • O U S C H A I N E
  • C O M M U N E ! ! !

111
Longest Common Sub-String------------------------
-----------------------------------------
En français Plus longue sous-chaîne commune !
  • On obtient une sous-chaîne en supprimant des
    caractères dune chaîne.
  • A B C D E F G
  • B A C D D B E F

112
Longest Common Sub-String------------------------
-----------------------------------------
En français Plus longue sous-chaîne commune !
  • On obtient une sous-chaîne en supprimant des
    caractères dune chaîne.
  • A B C D E F G
  • B A C D D B E F

Une sous-chaîne A B
113
Longest Common Sub-String------------------------
-----------------------------------------
En français Plus longue sous-chaîne commune !
  • On obtient une sous-chaîne en supprimant des
    caractères dune chaîne.
  • A B C D E F G
  • B A C D D B E F

Une sous-chaîne A B
Une autre sous-chaîne B D E
114
Longest Common Sub-String------------------------
-----------------------------------------
En français Plus longue sous-chaîne commune !
  • On obtient une sous-chaîne en supprimant des
    caractères dune chaîne.
  • A B C D E F G
  • B A C D D B E F

Une sous-chaîne A B
Une autre sous-chaîne B D E
La sous-chaîne la plus longue A C D E F
115
Longest Common Sub-String------------------------
-----------------------------------------
Soient a et b des lettres et u et v des
séquences de lettres.

  • LCSS ( u , v )


116
Longest Common Sub-String------------------------
-----------------------------------------
Soient a et b des lettres et u et v des
séquences de lettres.
  • e ,
    si u e ou v e ,

  • LCSS ( u , v )


117
Longest Common Sub-String------------------------
-----------------------------------------
Soient a et b des lettres et u et v des
séquences de lettres.
  • e ,
    si u e ou v e ,
  • a .
    LCSS ( u , v ) , si u a . u et

  • v a . v ,
  • LCSS ( u , v )


118
Longest Common Sub-String------------------------
-----------------------------------------
Soient a et b des lettres et u et v des
séquences de lettres.
  • e ,
    si u e ou v e ,
  • a .
    LCSS ( u , v ) , si u a . u et

  • v a . v ,
  • LCSS ( u , v )


a . u a . v
LCSS
119
Longest Common Sub-String------------------------
-----------------------------------------
Soient a et b des lettres et u et v des
séquences de lettres.
  • e ,
    si u e ou v e ,
  • a .
    LCSS ( u , v ) , si u a . u et

  • v a . v ,
  • LCSS ( u , v )
  • maxstr ( LCSS ( u , v
    ) , LCSS ( u , v ) )
  • si u a . u , v
    b . v et a ltgt b.


120
Longest Common Sub-String------------------------
-----------------------------------------
Soient a et b des lettres et u et v des
séquences de lettres.
  • e ,
    si u e ou v e ,
  • a .
    LCSS ( u , v ) , si u a . u et

  • v a . v ,
  • LCSS ( u , v )
  • maxstr ( LCSS ( u , v
    ) , LCSS ( u , v ) )
  • si u a . u , v
    b . v et a ltgt b.


LCSS
a . u b . v
121
Longest Common Sub-String------------------------
-----------------------------------------
Soient a et b des lettres et u et v des
séquences de lettres.
  • e ,
    si u e ou v e ,
Write a Comment
User Comments (0)
About PowerShow.com