180
Cours d'algorithmique 3 - Cours d'algorithmique 3 - Intranet Intranet 1 13 novembre 2006 13 novembre 2006 Cours d’Algorithmique Cours d’Algorithmique Parcours d’arbres. Parcours d’arbres. Induction sur la Induction sur la structure. structure. Back-track. Back-track. Minimax. Minimax.

Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

Embed Size (px)

Citation preview

Page 1: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1113 novembre 200613 novembre 2006

Cours d’AlgorithmiqueCours d’Algorithmique

Parcours d’arbres.Parcours d’arbres.

Induction sur la structure.Induction sur la structure.

Back-track.Back-track.

Minimax.Minimax.

Page 2: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 22

• Trier et chercherTrier et chercher• Listes etListes et arbres arbres• Le back-trackLe back-track• Arbres équilibrésArbres équilibrés• Récursivité etRécursivité et induction sur la structureinduction sur la structure• Divide and conquerDivide and conquer• MinimaxMinimax• DérécursionDérécursion• NP-complétudeNP-complétude• Logique de HoareLogique de Hoare• Programmation dynamiqueProgrammation dynamique• Complexité et calculabilitéComplexité et calculabilité

Les grandes lignes du coursLes grandes lignes du cours

Page 3: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 33

Fibonnacci et les arbresFibonnacci et les arbres----------------------------------------------------------------------------------------------------------------------------------

int fibonnacci (int n)

{if ( n == 0 )

return(0);

else

if ( n == 1 )

return(1);

else

return( fibonnacci(n-1) + fibonnacci(n-2) ); }

Fibonnacci est une fonction qui comporte deux appels récursifs.Fibonnacci est une fonction qui comporte deux appels récursifs.

Tout appel construit donc deux autres appels.Tout appel construit donc deux autres appels.

Construisons cet arbre.Construisons cet arbre.

Page 4: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 44

Fibonnacci et les arbresFibonnacci et les arbres----------------------------------------------------------------------------------------------------------------------------------

int fibonnacci (int n)

{if ( n == 0 )

return(0);

else

if ( n == 1 )

return(1);

else

return( fibonnacci(n-1) + fibonnacci(n-2) ); }

Fibonnacci est une fonction qui comporte deux appels récursifs.Fibonnacci est une fonction qui comporte deux appels récursifs.

Tout appel construit donc deux autres appels.Tout appel construit donc deux autres appels.

Construisons cet arbre.Construisons cet arbre.

Les cas d’arrêt.Les cas d’arrêt.

Les appels récursifs.Les appels récursifs.

Page 5: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 55

Fibonnacci et les arbresFibonnacci et les arbres----------------------------------------------------------------------------------------------------------------------------------

ptr_arbre arbre_fibo (int n)

{if ( n == 0 )

return( cree_feuille(0) );

else

if ( n == 1 )

return( cree_feuille(1) );

else

return( cree_noeud( arbre_fibo(n-1),

arbre_fibo(n-2) ) ) ; }

Page 6: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 66

Fibonnacci et les arbresFibonnacci et les arbres----------------------------------------------------------------------------------------------------------------------------------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55arbre_fibo(5)arbre_fibo(5)

Page 7: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 77

Fibonnacci et les arbresFibonnacci et les arbres----------------------------------------------------------------------------------------------------------------------------------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55arbre_fibo(5)arbre_fibo(5)

On observe que de nombreux calculs sont répétés !On observe que de nombreux calculs sont répétés !

Page 8: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 88

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------------

int somme_arbre_fibo (ptr_arbre arbre)

{if ( est_feuille(arbre) )

return( valeur_feuille(arbre) );

else

return( somme_arbre_fibo(fils_gauche(arbre))

+ somme_arbre_fibo(fils_droit(arbre)) ) ; }

Page 9: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 99

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------

------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55arbre_fibo(5)arbre_fibo(5)

11 00

11

Page 10: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1010

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------

------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55arbre_fibo(5)arbre_fibo(5)

11 00

1111

22

Page 11: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1111

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------

------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55

11 00

1111

22 11

arbre_fibo(5)arbre_fibo(5)

Page 12: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1212

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------

------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55somme_somme_arbre_fibo(5) arbre_fibo(5) = 5= 5

11 00

1111

22 11

33

11

22

55

Page 13: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1313

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------------

int somme_arbre_fibo (ptr_arbre arbre)

{return( somme_acc(arbre , 0) ) ; }

int somme_acc(ptr_arbre arbre , int accumule)

{if ( est_feuille(arbre) )

return( accumule + valeur_feuille(arbre) );

else

return( somme_acc(fils_droit(arbre) ,

somme_acc(fils_gauche(arbre) ,

accumule)) ) ; }

Page 14: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1414

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------

------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55arbre_fibo(5)arbre_fibo(5)

11

accumule = 0accumule = 0

Page 15: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1515

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------

------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55arbre_fibo(5)arbre_fibo(5)

11

accumule = 0accumule = 0

11

Page 16: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1616

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------

------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55arbre_fibo(5)arbre_fibo(5)

11

accumule = 0accumule = 0

11

22

Page 17: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1717

somme_somme_arbre_fibo(5) arbre_fibo(5) = 5= 5

Calcul de la somme des feuillesCalcul de la somme des feuilles----------------------------------------------------------------------------------------------------------------------------

------

1 0

22

1 0

22 1

33

44

1 0

22 1

33

55

11

accumule = 0accumule = 0

11

22 . . .. . .

accumule = 5accumule = 5

Page 18: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1818

L E SL E ST Y P E ST Y P E S

D ED EP A R C O U R SP A R C O U R S

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Page 19: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 1919

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours préfixeParcours préfixe

res_fg = appel ( fg(a) );res_fg = appel ( fg(a) );

res_fd = appel ( fd(a) );res_fd = appel ( fd(a) );

return( ... res_fg ... res_fd ... );return( ... res_fg ... res_fd ... );

Page 20: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2020

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours préfixeParcours préfixe

res_fg = res_fg = appel ( fg(a) );appel ( fg(a) );

res_fd = appel ( fd(a) );res_fd = appel ( fd(a) );

return( ... res_fg ... res_fd ... );return( ... res_fg ... res_fd ... );

Page 21: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2121

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours préfixeParcours préfixe

res_fg =res_fg = appel ( fg(a) );appel ( fg(a) );

res_fd = appel ( fd(a) );res_fd = appel ( fd(a) );

return( ... res_fg ... res_fd ... );return( ... res_fg ... res_fd ... );

Page 22: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2222

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours préfixeParcours préfixe

res_fg =res_fg = appel ( fg(a) );appel ( fg(a) );

res_fd = res_fd = appel ( fd(a) );appel ( fd(a) );

return( ... res_fg ... res_fd ... );return( ... res_fg ... res_fd ... );

Page 23: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2323

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours préfixeParcours préfixe

res_fg =res_fg = appel ( fg(a) );appel ( fg(a) );

res_fd =res_fd = appel ( fd(a) );appel ( fd(a) );

return( ... res_fg ... res_fd ... );return( ... res_fg ... res_fd ... );

Page 24: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2424

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours préfixeParcours préfixe

res_fg =res_fg = appel ( fg(a) );appel ( fg(a) );

res_fd =res_fd = appel ( fd(a) );appel ( fd(a) );

return( ... res_fg ... res_fd ... );return( ... res_fg ... res_fd ... );

Ou encore :Ou encore : ... appel ( fg(a) ) / appel ( fd(a) ) ...... appel ( fg(a) ) / appel ( fd(a) ) ...

Page 25: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2525

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours suffixe ou postfixeParcours suffixe ou postfixe

res_fg = appel (res_fg = appel ( fd fd(a) );(a) );

res_fd = appel (res_fd = appel ( fg fg(a) );(a) );

return( ... res_fg ... res_fd ... );return( ... res_fg ... res_fd ... );

Page 26: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2626

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours suffixe ou postfixeParcours suffixe ou postfixe

res_fg = appel (res_fg = appel ( fd fd(a) );(a) );

res_fd = appel (res_fd = appel ( fg fg(a) );(a) );

return( ... res_fg ... res_fd ... );return( ... res_fg ... res_fd ... );

Ou encore :Ou encore : ... appel (... appel ( fd fd(a) ) / appel ( (a) ) / appel ( fgfg(a) ) ...(a) ) ...

Page 27: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2727

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Parcours avec opérateur commutatif : Parcours avec opérateur commutatif : l’ordre de parcours estl’ordre de parcours estsans importance !sans importance !

... oper_commute ( ... oper_commute ( fgfg(a) , (a) , fdfd(a) ) ...(a) ) ...

... oper_commute ( ... oper_commute ( fdfd(a) , (a) , fgfg(a) ) ...(a) ) ...

Exemple : notre calcul de la somme de Fibonnacci.Exemple : notre calcul de la somme de Fibonnacci.

Page 28: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2828

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit avant, soit après, soit pendant !Traitement de l’étiquette, soit avant, soit après, soit pendant !

1 5

++ 3

**

Page 29: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 2929

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit après, soit pendant !, soit après, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33**

Page 30: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3030

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit après, soit pendant !, soit après, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33**

Page 31: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3131

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit après, soit pendant !, soit après, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33**

Page 32: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3232

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit après, soit pendant !, soit après, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33**

Page 33: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3333

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit après, soit pendant !, soit après, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33**

Page 34: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3434

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit après, soit pendant !, soit après, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33**

Page 35: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3535

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit , soit aprèsaprès, soit pendant !, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33

• Impression postfixe de Impression postfixe de l’arbre :l’arbre :

1 1 5 5 + + 3 3 **

**

Page 36: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3636

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit , soit aprèsaprès, soit pendant !, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33

• Impression postfixe de Impression postfixe de l’arbre :l’arbre :

1 1 5 5 + + 3 3 **

**

Page 37: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3737

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit , soit aprèsaprès, soit pendant !, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33

• Impression postfixe de Impression postfixe de l’arbre :l’arbre :

1 1 5 5 + + 3 3 **

**

Page 38: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3838

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit , soit aprèsaprès, soit pendant !, soit pendant !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33

• Impression postfixe de Impression postfixe de l’arbre :l’arbre :

1 1 5 5 + + 3 3 **

**

Page 39: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 3939

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit , soit aprèsaprès, soit , soit pendantpendant ! !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33

• Impression postfixe de l’arbre :Impression postfixe de l’arbre :

1 1 5 5 + + 3 3 **

• Impression infixe parenthésée :Impression infixe parenthésée :

( ( ( ( 1 1 + + 5 5 ) ) * * 3 3 ))

**(( ))

))((

Page 40: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4040

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit , soit aprèsaprès, soit , soit pendantpendant ! !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33

• Impression postfixe de l’arbre :Impression postfixe de l’arbre :

1 1 5 5 + + 3 3 **

• Impression infixe parenthésée :Impression infixe parenthésée :

( ( ( ( 1 1 + + 5 5 ) ) * * 3 3 ))

**

Page 41: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4141

Types de parcours avec étiquettesTypes de parcours avec étiquettes----------------------------------------------------------------------------------------------------------------------------

------Traitement de l’étiquette, soit Traitement de l’étiquette, soit avantavant, soit , soit aprèsaprès, soit , soit pendantpendant ! !

1 5

++ 3

• Impression préfixe de l’arbre :Impression préfixe de l’arbre :

** + + 1 1 5 5 33

• Impression postfixe de l’arbre :Impression postfixe de l’arbre :

1 1 5 5 + + 3 3 **

• Impression infixe parenthésée :Impression infixe parenthésée :

( ( ( ( 1 1 + + 5 5 ) ) * * 3 3 ))

**

Page 42: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4242

M O D I F I C A T I O M O D I F I C A T I O NN

D ‘ U ND ‘ U NA R B R EA R B R E

Types de parcoursTypes de parcours----------------------------------------------------------------------------------------------------------------------------

------

Page 43: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4343

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------• Nous savons créer un arbre, nous savons parcourir un arbre !Nous savons créer un arbre, nous savons parcourir un arbre !

• Pouvons-nous modifier un arbre ?Pouvons-nous modifier un arbre ?

• OUIOUI– soit, en le reconstruisant,soit, en le reconstruisant,– soit, en le modifiantsoit, en le modifiant

physiquement.physiquement.

Page 44: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4444

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------• Nous savons créer un arbre, nous savons parcourir un arbre !Nous savons créer un arbre, nous savons parcourir un arbre !

• Pouvons-nous modifier un arbre ?Pouvons-nous modifier un arbre ?

• OUIOUI– soit, en le reconstruisant,soit, en le reconstruisant,– soit, en le modifiantsoit, en le modifiant

physiquement.physiquement.

33 55 77

2211

11RemplacerRemplacer

parpar dansdans

44 66

Page 45: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4545

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------• En reconstruisant :En reconstruisant :

33 55 77

22

44 66

Partie qui doit êtrePartie qui doit êtrereconstruite.reconstruite.

Page 46: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4646

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------• En reconstruisant :En reconstruisant :

33 55 77

22

44 66

Partie qui doit êtrePartie qui doit êtrereconstruite.reconstruite.

cree_noeud(cree_noeud( fg(arbre) fg(arbre) ,, cree_noeud(cree_noeud( fg(fd(arbre))fg(fd(arbre)) ,, cree_noeud(cree_noeud( cree_noeud(cree_feuille(4) ,cree_noeud(cree_feuille(4) , cree_feuille(6))cree_feuille(6)) ,, fd(fd(fd(arbre))) fd(fd(fd(arbre))) ) ) ) ;) ) ) ;

Page 47: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4747

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------• En reconstruisant :En reconstruisant :

33 55 77

22

44 66

Partie qui doit êtrePartie qui doit êtrereconstruite.reconstruite.

cree_noeud(cree_noeud( fg(arbre)fg(arbre) ,, cree_noeud(cree_noeud( fg(fd(arbre))fg(fd(arbre)) ,, cree_noeud(cree_noeud( cree_noeud(cree_feuille(4) ,cree_noeud(cree_feuille(4) , cree_feuille(6))cree_feuille(6)) ,, fd(fd(fd(arbre)))fd(fd(fd(arbre))) ) ) ) ;) ) ) ;

Page 48: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4848

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------• En modifiant :En modifiant :

33 55 77

22

44 66

Pointeur qui estPointeur qui estmodifié.modifié.

Page 49: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 4949

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------• En modifiant :En modifiant :

33 55 77

22

44 66

Pointeur qui estPointeur qui estmodifié.modifié.

modifie_fg_noeud(modifie_fg_noeud( fd(fd(arbre))fd(fd(arbre)) ,, cree_noeud( cree_feuille(4) ,cree_noeud( cree_feuille(4) , cree_feuille(6) )cree_feuille(6) ) ) ;) ;

Page 50: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5050

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------Attention aux Attention aux partages de structurepartages de structure

avec avec modifications physiques !modifications physiques !

sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );arbre = cree_noeud( sous_arbre , sous_arbre );arbre = cree_noeud( sous_arbre , sous_arbre );

33 55

ReprésentationReprésentationphysique !physique !

Page 51: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5151

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------Attention aux Attention aux partages de structurepartages de structure

avec avec modifications physiques !modifications physiques !

33 55

sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );arbre = cree_noeud( sous_arbre , sous_arbre );arbre = cree_noeud( sous_arbre , sous_arbre );

33 55

ReprésentationReprésentationphysique !physique !

33 55

L’arbre logique ! ! !L’arbre logique ! ! !

Page 52: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5252

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------Attention aux Attention aux partages de structurepartages de structure

avec avec modifications physiques !modifications physiques !

33 55

sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );arbre = cree_noeud( sous_arbre , sous_arbre );arbre = cree_noeud( sous_arbre , sous_arbre );

99 55

ReprésentationReprésentationphysique !physique !

99 55

L’arbre logique ! ! !L’arbre logique ! ! !

ReconstructionReconstructiond’arbre.d’arbre.

ModificationModificationphysique.physique.

Page 53: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5353

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------Attention aux Attention aux partages de structurepartages de structure

avec avec modifications physiques !modifications physiques !

33 55

sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );arbre = cree_noeud( sous_arbre , sous_arbre );arbre = cree_noeud( sous_arbre , sous_arbre );

99 55

ReprésentationReprésentationphysique !physique !

99 55

L’arbre logique ! ! !L’arbre logique ! ! !

ReconstructionReconstructiond’arbre.d’arbre.

ModificationModificationphysique.physique.

Page 54: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5454

Modification d’un arbreModification d’un arbre----------------------------------------------------------------------------------------------------------------------------

------Attention aux Attention aux partages de structurepartages de structure

avec avec modifications physiques !modifications physiques !

33 55

sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );sous_arbre = cree_noeud( cree_feuille(3) , cree_feuille(5) );arbre = cree_noeud( sous_arbre , sous_arbre );arbre = cree_noeud( sous_arbre , sous_arbre );

99 55

ReprésentationReprésentationphysique !physique !

99 55

L’arbre logique ! ! !L’arbre logique ! ! !

ReconstructionReconstructiond’arbre.d’arbre.

ModificationModificationphysique.physique.

Page 55: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5555

I N D U C T I O NI N D U C T I O NS U RS U RL E SL E S

S T R U C T U R E SS T R U C T U R E S

Induction sur les structuresInduction sur les structures----------------------------------------------------------------------------------------------------------------------------------

Page 56: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5656

Induction sur les structuresInduction sur les structures----------------------------------------------------------------------------------------------------------------------------------

• Induction simple sur les entiers naturels :Induction simple sur les entiers naturels :

– On démontre la propriété pour 0, le premier entier naturel.On démontre la propriété pour 0, le premier entier naturel.

Page 57: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5757

Induction sur les structuresInduction sur les structures----------------------------------------------------------------------------------------------------------------------------------

• Induction simple sur les entiers naturels :Induction simple sur les entiers naturels :

– On démontre la propriété pour 0, le premier entier naturel.On démontre la propriété pour 0, le premier entier naturel.

– On démontre que la propriété reste vraie pour i+1, si elle On démontre que la propriété reste vraie pour i+1, si elle est vraie pour i . est vraie pour i . C’est le pas d’induction !C’est le pas d’induction !

Page 58: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5858

Induction sur les structuresInduction sur les structures----------------------------------------------------------------------------------------------------------------------------------

• Induction simple sur les entiers naturels :Induction simple sur les entiers naturels :

– On démontre la propriété pour 0, le premier entier naturel.On démontre la propriété pour 0, le premier entier naturel.

– On démontre que la propriété reste vraie pour i+1, si elle On démontre que la propriété reste vraie pour i+1, si elle est vraie pour i . est vraie pour i . C’est le pas d’induction !C’est le pas d’induction !

– Donc, elle est vraie pour tout entier naturel.Donc, elle est vraie pour tout entier naturel.

Page 59: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 5959

Induction sur les structuresInduction sur les structures----------------------------------------------------------------------------------------------------------------------------------

• Induction simple sur les entiers naturels :Induction simple sur les entiers naturels :

– On démontre la propriété pour 0, le premier entier naturel.On démontre la propriété pour 0, le premier entier naturel.

– On démontre que la propriété reste vraie pour i+1, si elle On démontre que la propriété reste vraie pour i+1, si elle est vraie pour i . est vraie pour i . C’est le pas d’induction !C’est le pas d’induction !

– Donc, elle est vraie pour tout entier naturel.Donc, elle est vraie pour tout entier naturel.

• Induction Induction totaletotale sur les entiers naturels : sur les entiers naturels :

– On démontre la propriété pour 0, le premier entier naturel.On démontre la propriété pour 0, le premier entier naturel.

– On démontre que la propriété reste vraie pour i+1, si elle On démontre que la propriété reste vraie pour i+1, si elle est vraie pour est vraie pour tous les entiers de 0 àtous les entiers de 0 à i . C’est le pas i . C’est le pas d’induction !d’induction !

– Donc, elle est vraie pour tout entier naturel.Donc, elle est vraie pour tout entier naturel.

Page 60: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6060

I N D U C T I O NI N D U C T I O NS U RS U RL E SL E S

L I S T E SL I S T E S

Induction sur les structuresInduction sur les structures----------------------------------------------------------------------------------------------------------------------------------

Page 61: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6161

Induction sur les listesInduction sur les listes----------------------------------------------------------------------------------------------------------------------------------

• Induction sur les Induction sur les listeslistes : :

– On démontre la propriété pour On démontre la propriété pour la liste videla liste vide (ceci ne (ceci ne marche donc pas pour les listes circulaires !).marche donc pas pour les listes circulaires !).

Page 62: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6262

Induction sur les listesInduction sur les listes----------------------------------------------------------------------------------------------------------------------------------

• Induction sur les Induction sur les listeslistes : :

– On démontre la propriété pour On démontre la propriété pour la liste videla liste vide (ceci ne (ceci ne marche donc pas pour les listes circulaires !).marche donc pas pour les listes circulaires !).

– On suppose la propriété vraie pour On suppose la propriété vraie pour une liste de longueur iune liste de longueur i

Page 63: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6363

Induction sur les listesInduction sur les listes----------------------------------------------------------------------------------------------------------------------------------

• Induction sur les Induction sur les listeslistes : :

– On démontre la propriété pour On démontre la propriété pour la liste videla liste vide (ceci ne (ceci ne marche donc pas pour les listes circulaires !).marche donc pas pour les listes circulaires !).

– On suppose la propriété vraie pour On suppose la propriété vraie pour une liste de longueur iune liste de longueur i

– et on démontre qu’elle reste vraie pour la liste de et on démontre qu’elle reste vraie pour la liste de longueur i+1 que l’on obtient longueur i+1 que l’on obtient en ajoutant un élément en ajoutant un élément (bien choisi) en tête(bien choisi) en tête de liste. de liste.

Page 64: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6464

Induction sur les listesInduction sur les listes----------------------------------------------------------------------------------------------------------------------------------

• Induction sur les Induction sur les listeslistes : :

– On démontre la propriété pour On démontre la propriété pour la liste videla liste vide (ceci ne (ceci ne marche donc pas pour les listes circulaires !).marche donc pas pour les listes circulaires !).

– On suppose la propriété vraie pour On suppose la propriété vraie pour une liste de longueur iune liste de longueur i

– et on démontre qu’elle reste vraie pour la liste de et on démontre qu’elle reste vraie pour la liste de longueur i+1 que l’on obtient longueur i+1 que l’on obtient en ajoutant un élément en ajoutant un élément (bien choisi) en tête(bien choisi) en tête de liste. de liste.

– Variantes : éventuellement, une propriété n’est vraie que Variantes : éventuellement, une propriété n’est vraie que pour une liste de longueur au moins k :pour une liste de longueur au moins k :

• On démontre pour kOn démontre pour k

• et on démontre qu’elle reste vraie pour les listes plus longues.et on démontre qu’elle reste vraie pour les listes plus longues.

Page 65: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6565

I N D U C T I O NI N D U C T I O NS U RS U RL E SL E S

A R B R E SA R B R E S

Induction sur les structuresInduction sur les structures----------------------------------------------------------------------------------------------------------------------------------

Page 66: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6666

Induction sur les arbresInduction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Induction sur les Induction sur les arbresarbres : :

– On démontre la propriété pour On démontre la propriété pour une feuille quelconqueune feuille quelconque..

Page 67: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6767

Induction sur les arbresInduction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Induction sur les Induction sur les arbresarbres : :

– On démontre la propriété pour On démontre la propriété pour une feuille quelconqueune feuille quelconque..

– On suppose la propriété vraie pour On suppose la propriété vraie pour les sous-arbresles sous-arbres

Page 68: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6868

Induction sur les arbresInduction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Induction sur les Induction sur les arbresarbres : :

– On démontre la propriété pour On démontre la propriété pour une feuille quelconqueune feuille quelconque..

– On suppose la propriété vraie pour On suppose la propriété vraie pour les sous-arbresles sous-arbres

– et on démontre qu’elle reste vraie pour l’arbre que l’on et on démontre qu’elle reste vraie pour l’arbre que l’on obtient obtient en ajoutant un nœud père au-dessus des différents en ajoutant un nœud père au-dessus des différents sous-arbres (bien choisis)sous-arbres (bien choisis)..

Page 69: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 6969

Induction sur les arbresInduction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Induction sur les Induction sur les arbresarbres : :

– On démontre la propriété pour On démontre la propriété pour une feuille quelconqueune feuille quelconque..

– On suppose la propriété vraie pour On suppose la propriété vraie pour les sous-arbresles sous-arbres

– et on démontre qu’elle reste vraie pour l’arbre que l’on et on démontre qu’elle reste vraie pour l’arbre que l’on obtient obtient en ajoutant un nœud père au-dessus des différents en ajoutant un nœud père au-dessus des différents sous-arbres (bien choisis)sous-arbres (bien choisis)..

– Remarque :Remarque :

• Le raisonnement de correction d’une fonction récursive Le raisonnement de correction d’une fonction récursive sur arbres, listes, etc, se fait de la même manière :sur arbres, listes, etc, se fait de la même manière :

– On démontre la correction du cas de base,On démontre la correction du cas de base,– on suppose les appels récursifs correctson suppose les appels récursifs corrects– et on démontre la correction de l’appel courant.et on démontre la correction de l’appel courant.

Page 70: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7070

Correction d’une fonction récursiveCorrection d’une fonction récursive----------------------------------------------------------------------------------------------------------------------------------

• La fonction ci-dessous calcule la profondeur d’un arbre !La fonction ci-dessous calcule la profondeur d’un arbre !

– La profondeur d’un nœud ou d’une feuille dans un arbre correspond au La profondeur d’un nœud ou d’une feuille dans un arbre correspond au nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre le nœud ou la feuille en question.le nœud ou la feuille en question.

– La profondeur d’un arbre est la profondeur de la feuille la plus La profondeur d’un arbre est la profondeur de la feuille la plus profonde.profonde.

Page 71: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7171

Correction d’une fonction récursiveCorrection d’une fonction récursive----------------------------------------------------------------------------------------------------------------------------------

• La fonction ci-dessous calcule la profondeur d’un arbre !La fonction ci-dessous calcule la profondeur d’un arbre !

– La profondeur d’un nœud ou d’une feuille dans un arbre correspond au La profondeur d’un nœud ou d’une feuille dans un arbre correspond au nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre le nœud ou la feuille en question.le nœud ou la feuille en question.

– La profondeur d’un arbre est la profondeur de la feuille la plus La profondeur d’un arbre est la profondeur de la feuille la plus profonde.profonde.

int profond (ptr_arbre arbre)

{if ( est_feuille(arbre) )

return( 0 );

else

return( 1 + max( profond(fg(arbre)), profond(fd(arbre)) )); }

Page 72: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7272

Correction d’une fonction récursiveCorrection d’une fonction récursive----------------------------------------------------------------------------------------------------------------------------------

• La fonction ci-dessous calcule la profondeur d’un arbre !La fonction ci-dessous calcule la profondeur d’un arbre !

– La profondeur d’un nœud ou d’une feuille dans un arbre correspond au La profondeur d’un nœud ou d’une feuille dans un arbre correspond au nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre le nœud ou la feuille en question.le nœud ou la feuille en question.

– La profondeur d’un arbre est la profondeur de la feuille la plus La profondeur d’un arbre est la profondeur de la feuille la plus profonde.profonde.

int profond (ptr_arbre arbre)

{if ( est_feuille(arbre) )

return( 0 );

else

return( 1 + max( profond(fg(arbre)), profond(fd(arbre)) )); }

Le cas d’arrêt est trivialement correct !Le cas d’arrêt est trivialement correct !

Page 73: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7373

Correction d’une fonction récursiveCorrection d’une fonction récursive----------------------------------------------------------------------------------------------------------------------------------

• La fonction ci-dessous calcule la profondeur d’un arbre !La fonction ci-dessous calcule la profondeur d’un arbre !

– La profondeur d’un nœud ou d’une feuille dans un arbre correspond au La profondeur d’un nœud ou d’une feuille dans un arbre correspond au nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre le nœud ou la feuille en question.le nœud ou la feuille en question.

– La profondeur d’un arbre est la profondeur de la feuille la plus La profondeur d’un arbre est la profondeur de la feuille la plus profonde.profonde.

int profond (ptr_arbre arbre)

{if ( est_feuille(arbre) )

return( 0 );

else

return( 1 + max( profond(fg(arbre)), profond(fd(arbre)) )); }

Les appels récursifs sont corrects par hypothèse !Les appels récursifs sont corrects par hypothèse !

Page 74: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7474

Correction d’une fonction récursiveCorrection d’une fonction récursive----------------------------------------------------------------------------------------------------------------------------------

• La fonction ci-dessous calcule la profondeur d’un arbre !La fonction ci-dessous calcule la profondeur d’un arbre !

– La profondeur d’un nœud ou d’une feuille dans un arbre correspond au La profondeur d’un nœud ou d’une feuille dans un arbre correspond au nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre le nœud ou la feuille en question.le nœud ou la feuille en question.

– La profondeur d’un arbre est la profondeur de la feuille la plus La profondeur d’un arbre est la profondeur de la feuille la plus profonde.profonde.

int profond (ptr_arbre arbre)

{if ( est_feuille(arbre) )

return( 0 );

else

return( 1 + max( profond(fg(arbre)), profond(fd(arbre)) )); }

Les appels récursifs sont corrects par hypothèse !Les appels récursifs sont corrects par hypothèse !

La plus grande des profondeurs.La plus grande des profondeurs.

Page 75: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7575

Correction d’une fonction récursiveCorrection d’une fonction récursive----------------------------------------------------------------------------------------------------------------------------------

• La fonction ci-dessous calcule la profondeur d’un arbre !La fonction ci-dessous calcule la profondeur d’un arbre !

– La profondeur d’un nœud ou d’une feuille dans un arbre correspond au La profondeur d’un nœud ou d’une feuille dans un arbre correspond au nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre le nœud ou la feuille en question.le nœud ou la feuille en question.

– La profondeur d’un arbre est la profondeur de la feuille la plus La profondeur d’un arbre est la profondeur de la feuille la plus profonde.profonde.

int profond (ptr_arbre arbre)

{if ( est_feuille(arbre) )

return( 0 );

else

return( 1 + max( profond(fg(arbre)), profond(fd(arbre)) )); }

Les appels récursifs sont corrects par hypothèse !Les appels récursifs sont corrects par hypothèse !

La plus grande des profondeurs.La plus grande des profondeurs.

La profondeur de notre arbre ! ! !La profondeur de notre arbre ! ! !

Page 76: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7676

Correction d’une fonction récursiveCorrection d’une fonction récursive----------------------------------------------------------------------------------------------------------------------------------

• La fonction ci-dessous calcule la profondeur d’un arbre !La fonction ci-dessous calcule la profondeur d’un arbre !

– La profondeur d’un nœud ou d’une feuille dans un arbre correspond au La profondeur d’un nœud ou d’une feuille dans un arbre correspond au nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre nombre de fois où l’on doit « descendre » vers un fils avant d’atteindre le nœud ou la feuille en question.le nœud ou la feuille en question.

– La profondeur d’un arbre est la profondeur de la feuille la plus La profondeur d’un arbre est la profondeur de la feuille la plus profonde.profonde.

int profond (ptr_arbre arbre)

{if ( est_feuille(arbre) )

return( 0 );

else

return( 1 + max( profond(fg(arbre)), profond(fd(arbre)) )); }

Les appels récursifs sont corrects par hypothèse !Les appels récursifs sont corrects par hypothèse !

La plus grande des profondeurs.La plus grande des profondeurs.

La profondeur de notre arbre ! ! !La profondeur de notre arbre ! ! !

Page 77: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7777

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Soient Soient F F ( A ) le nombre de feuilles et ( A ) le nombre de feuilles et N N ( A ) le ( A ) le nombre de nœuds internes d’un arbre A.nombre de nœuds internes d’un arbre A.

• Si A est binaire, alors : Si A est binaire, alors : F F ( A ) = ( A ) = NN ( A ) + 1 ( A ) + 1

Page 78: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7878

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Soient Soient F F ( A ) le nombre de feuilles et ( A ) le nombre de feuilles et N N ( A ) le ( A ) le nombre de nœuds internes d’un arbre A.nombre de nœuds internes d’un arbre A.

• Si A est binaire, alors : Si A est binaire, alors : F F ( A ) = ( A ) = NN ( A ) + 1 ( A ) + 1

• Preuve :Preuve :– A est une feuille : A est une feuille : FF ( A ) = 1 = 0 + 1 = ( A ) = 1 = 0 + 1 = NN ( A ) + 1 ! ( A ) + 1 !

Page 79: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 7979

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Soient Soient F F ( A ) le nombre de feuilles et ( A ) le nombre de feuilles et N N ( A ) le ( A ) le nombre de nœuds internes d’un arbre A.nombre de nœuds internes d’un arbre A.

• Si A est binaire, alors : Si A est binaire, alors : F F ( A ) = ( A ) = NN ( A ) + 1 ( A ) + 1

• Preuve :Preuve :– A est une feuille : A est une feuille : FF ( A ) = 1 = 0 + 1 = ( A ) = 1 = 0 + 1 = NN ( A ) + 1 ! ( A ) + 1 !– A est un nœud interne ayant les deux fils B et C :A est un nœud interne ayant les deux fils B et C :

• Hypothèse sur B : Hypothèse sur B : FF ( B ) = ( B ) = NN ( B ) + 1 ! ( B ) + 1 !

• Hypothèse sur C : Hypothèse sur C : FF ( C ) = ( C ) = NN ( C ) + 1 ! ( C ) + 1 !

Page 80: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8080

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Soient Soient F F ( A ) le nombre de feuilles et ( A ) le nombre de feuilles et N N ( A ) le ( A ) le nombre de nœuds internes d’un arbre A.nombre de nœuds internes d’un arbre A.

• Si A est binaire, alors : Si A est binaire, alors : F F ( A ) = ( A ) = NN ( A ) + 1 ( A ) + 1

• Preuve :Preuve :– A est une feuille : A est une feuille : FF ( A ) = 1 = 0 + 1 = ( A ) = 1 = 0 + 1 = NN ( A ) + 1 ! ( A ) + 1 !– A est un nœud interne ayant les deux fils B et C :A est un nœud interne ayant les deux fils B et C :

• Hypothèse sur B : Hypothèse sur B : FF ( B ) = ( B ) = NN ( B ) + 1 ! ( B ) + 1 !

• Hypothèse sur C : Hypothèse sur C : FF ( C ) = ( C ) = NN ( C ) + 1 ! ( C ) + 1 !

– Donc, pour A :Donc, pour A :

FF ( A ) = ( A ) = F F ( B ) + ( B ) + FF ( C ) = ( C ) = NN ( B ) + ( B ) + NN ( C ) + 1 + 1 ( C ) + 1 + 1

Page 81: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8181

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• Soient Soient F F ( A ) le nombre de feuilles et ( A ) le nombre de feuilles et N N ( A ) le ( A ) le nombre de nœuds internes d’un arbre A.nombre de nœuds internes d’un arbre A.

• Si A est binaire, alors : Si A est binaire, alors : F F ( A ) = ( A ) = NN ( A ) + 1 ( A ) + 1

• Preuve :Preuve :– A est une feuille : A est une feuille : FF ( A ) = 1 = 0 + 1 = ( A ) = 1 = 0 + 1 = NN ( A ) + 1 ! ( A ) + 1 !– A est A est un nœud interneun nœud interne ayant les deux fils B et C : ayant les deux fils B et C :

• Hypothèse sur B : Hypothèse sur B : FF ( B ) = ( B ) = NN ( B ) + 1 ! ( B ) + 1 !

• Hypothèse sur C : Hypothèse sur C : FF ( C ) = ( C ) = NN ( C ) + 1 ! ( C ) + 1 !

– Donc, pour A :Donc, pour A :

FF ( A ) = ( A ) = F F ( B ) + ( B ) + FF ( C ) = ( C ) = NN ( B ) + ( B ) + NN ( C ) + 1 ( C ) + 1 + 1 + 1

= = NN ( A ) + 1 ! ! ! ( A ) + 1 ! ! !

NN ( A ) ( A )

Page 82: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8282

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• On considère un arbre A qui vérifie pour tous ses nœuds On considère un arbre A qui vérifie pour tous ses nœuds internes la propriété qui dit que :internes la propriété qui dit que :

• soit, les deux sous-arbres sont de profondeur 0,soit, les deux sous-arbres sont de profondeur 0,

• soit, la profondeur du fils droit dépasse la profondeur soit, la profondeur du fils droit dépasse la profondeur du fils gauche d’une unité.du fils gauche d’une unité.

Page 83: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8383

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• On considère un arbre A qui vérifie pour tous ses nœuds On considère un arbre A qui vérifie pour tous ses nœuds internes la propriété qui dit que :internes la propriété qui dit que :

• soit, les deux sous-arbres sont de profondeur 0,soit, les deux sous-arbres sont de profondeur 0,

• soit, la profondeur du fils droit dépasse la profondeur soit, la profondeur du fils droit dépasse la profondeur du fils gauche d’une unité.du fils gauche d’une unité.

• Montrer que, pour une profondeur p fixée, l’arbre A est Montrer que, pour une profondeur p fixée, l’arbre A est unique !unique !

Page 84: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8484

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• On considère un arbre A qui vérifie pour tous ses nœuds On considère un arbre A qui vérifie pour tous ses nœuds internes la propriété qui dit que :internes la propriété qui dit que :

• soit, les deux sous-arbres sont de profondeur 0,soit, les deux sous-arbres sont de profondeur 0,

• soit, la profondeur du fils droit dépasse la profondeur soit, la profondeur du fils droit dépasse la profondeur du fils gauche d’une unité.du fils gauche d’une unité.

• Montrer que, pour une profondeur p fixée, l’arbre A est Montrer que, pour une profondeur p fixée, l’arbre A est unique !unique !

• Preuve :Preuve :– p = 1 : L’arbre est unique, car les deux fils sont des p = 1 : L’arbre est unique, car les deux fils sont des

feuilles !feuilles !

Page 85: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8585

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• On considère un arbre A qui vérifie pour tous ses nœuds On considère un arbre A qui vérifie pour tous ses nœuds internes la propriété qui dit que :internes la propriété qui dit que :

• soit, les deux sous-arbres sont de profondeur 0,soit, les deux sous-arbres sont de profondeur 0,

• soit, la profondeur du fils droit dépasse la profondeur soit, la profondeur du fils droit dépasse la profondeur du fils gauche d’une unité.du fils gauche d’une unité.

• Montrer que, pour une profondeur p fixée, l’arbre A est Montrer que, pour une profondeur p fixée, l’arbre A est unique !unique !

• Preuve :Preuve :– p = 1 : L’arbre est unique, car les deux fils sont des p = 1 : L’arbre est unique, car les deux fils sont des

feuilles !feuilles !– p > 1 : Le fils droit C doit être de profondeur p-1 et le p > 1 : Le fils droit C doit être de profondeur p-1 et le

filsfils

gauche B doit être de profondeur p-2 :gauche B doit être de profondeur p-2 :

Page 86: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8686

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• On considère un arbre A qui vérifie pour tous ses nœuds On considère un arbre A qui vérifie pour tous ses nœuds internes la propriété qui dit que :internes la propriété qui dit que :

• soit, les deux sous-arbres sont de profondeur 0,soit, les deux sous-arbres sont de profondeur 0,

• soit, la profondeur du fils droit dépasse la profondeur du soit, la profondeur du fils droit dépasse la profondeur du fils gauche d’une unité.fils gauche d’une unité.

• Montrer que, pour une profondeur p fixée, l’arbre A est Montrer que, pour une profondeur p fixée, l’arbre A est unique !unique !

• Preuve :Preuve :– p = 1 : L’arbre est unique, car les deux fils sont des feuilles !p = 1 : L’arbre est unique, car les deux fils sont des feuilles !– p > 1 : Le fils droit C doit être de profondeur p-1 et le filsp > 1 : Le fils droit C doit être de profondeur p-1 et le fils

gauche B doit être de profondeur p-2 :gauche B doit être de profondeur p-2 :

• Hypothèse sur B : B est unique !Hypothèse sur B : B est unique !

• Hypothèse sur C : C est unique !Hypothèse sur C : C est unique !

Page 87: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8787

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

• On considère un arbre A qui vérifie pour tous ses nœuds On considère un arbre A qui vérifie pour tous ses nœuds internes la propriété qui dit que :internes la propriété qui dit que :

• soit, les deux sous-arbres sont de profondeur 0,soit, les deux sous-arbres sont de profondeur 0,

• soit, la profondeur du fils droit dépasse la profondeur du soit, la profondeur du fils droit dépasse la profondeur du fils gauche d’une unité.fils gauche d’une unité.

• Montrer que, pour une profondeur p fixée, l’arbre A est Montrer que, pour une profondeur p fixée, l’arbre A est unique !unique !

• Preuve :Preuve :– p = 1 : L’arbre est unique, car les deux fils sont des feuilles !p = 1 : L’arbre est unique, car les deux fils sont des feuilles !– p > 1 : Le fils droit C doit être de profondeur p-1 et le filsp > 1 : Le fils droit C doit être de profondeur p-1 et le fils

gauche B doit être de profondeur p-2 :gauche B doit être de profondeur p-2 :

• Hypothèse sur B : B est unique !Hypothèse sur B : B est unique !

• Hypothèse sur C : C est unique !Hypothèse sur C : C est unique !

Donc, A sera unique !Donc, A sera unique !

Page 88: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8888

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

Les voici :Les voici :

Page 89: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 8989

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

Les voici :Les voici :

Page 90: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9090

Preuves par induction sur les arbresPreuves par induction sur les arbres----------------------------------------------------------------------------------------------------------------------------------

Les voici :Les voici :

Le prochain.Le prochain.

Page 91: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9191

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

C h a n g e o n s d e s u j C h a n g e o n s d e s u j e t !e t !

E x p l o r a t i o n p a rE x p l o r a t i o n p a rs u c c è s - é c h e cs u c c è s - é c h e c

B A C K - T R A C KB A C K - T R A C K

Page 92: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9292

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

• Un exemple archi-classique :Un exemple archi-classique :

– Soient des variables v , … , v logiques,Soient des variables v , … , v logiques,11 nn

Page 93: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9393

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

• Un exemple archi-classique :Un exemple archi-classique :

– Soient des variables v , … , v logiques,Soient des variables v , … , v logiques,

– soit une formule soit une formule F F construite à partir de ces variables construite à partir de ces variables et des connectives et des connectives et , ou et , ou et et not ,not ,

11 nn

Page 94: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9494

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

• Un exemple archi-classique :Un exemple archi-classique :

– Soient des variables v , … , v logiques,Soient des variables v , … , v logiques,

– soit une formule soit une formule F F construite à partir de ces variables construite à partir de ces variables et des connectives et des connectives et , ou et , ou et et not ,not ,

– trouver un n-uplet de valeurs pour les v de façon à trouver un n-uplet de valeurs pour les v de façon à rendre vraie la formule rendre vraie la formule F .F .

11 nn

ii

Page 95: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9595

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

• Un exemple archi-classique :Un exemple archi-classique :

– Soient des variables v , … , v logiques,Soient des variables v , … , v logiques,

– soit une formule soit une formule F F construite à partir de ces variables et construite à partir de ces variables et des connectives des connectives et , ou et , ou et et not ,not ,

– trouver un n-uplet de valeurs pour les v de façon à rendre trouver un n-uplet de valeurs pour les v de façon à rendre vraie la formule vraie la formule F .F .

• Solution :Solution :

– Nous construisons la table de vérité ! C’est simple ! ! !Nous construisons la table de vérité ! C’est simple ! ! !

– Mais, c’est très coûteux ! Jusqu’à 2 cas à Mais, c’est très coûteux ! Jusqu’à 2 cas à inspecter ! ! !inspecter ! ! !

– Pouvons-nous faire mieux ? Probablement non ! ! !Pouvons-nous faire mieux ? Probablement non ! ! !

11 nn

ii

nn

Page 96: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9696

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

• F F = x = x et not(et not(y) y) et et zz

x y z x y z FF

0 0 0 0 0 0

0 0 1 0 0 1

0 1 0 0 1 0

0 1 1 0 1 1

1 0 0 1 0 0

1 0 1 1 0 1

1 1 01 1 0

1 1 11 1 1

Page 97: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9797

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

• F F = x = x et not(et not(y) y) et et zz

x y z x y z FF

0 0 0 0 0 0 00

0 0 1 0 0 1

0 1 0 0 1 0

0 1 1 0 1 1

1 0 0 1 0 0

1 0 1 1 0 1

1 1 01 1 0

1 1 11 1 1

Page 98: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9898

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

• F F = x = x et not(et not(y) y) et et zz

x y z x y z FF

0 0 0 0 0 0 00

0 0 1 0 0 1 00

0 1 0 0 1 0

0 1 1 0 1 1

1 0 0 1 0 0

1 0 1 1 0 1

1 1 01 1 0

1 1 11 1 1

Page 99: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 9999

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

• F F = x = x et not(et not(y) y) et et zz

x y z x y z FF

0 0 0 0 0 0 00

0 0 1 0 0 1 00

0 1 0 0 1 0 00

0 1 1 0 1 1 00

1 0 0 1 0 0 00

1 0 1 1 0 1 1 1

1 1 01 1 0

1 1 11 1 1

• Au pire, nous parcourons tout le tableau avant de Au pire, nous parcourons tout le tableau avant de constater qu’il n’y a aucune solution.constater qu’il n’y a aucune solution.

• Parfois, nous avons une idée où chercher la solution, Parfois, nous avons une idée où chercher la solution, mais ce n’est pas toujours le cas.mais ce n’est pas toujours le cas.

Nous pouvons nous arrêter !Nous pouvons nous arrêter !

Page 100: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 100100

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1z 0 1 0 1 0 1 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

La même table horizontalement.La même table horizontalement.

Page 101: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 101101

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1z 0 1 0 1 0 1 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Quelle valeur pour x ?Quelle valeur pour x ?

Page 102: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 102102

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x x 0 0 0 00 0 0 0 1 1 1 11 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1z 0 1 0 1 0 1 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Quelle valeur pour x ?Quelle valeur pour x ?

FauxFaux VraiVrai

Page 103: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 103103

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x x 0 0 0 00 0 0 0 1 1 1 11 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1z 0 1 0 1 0 1 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Quelle valeur pour x ?Quelle valeur pour x ?

FauxFaux VraiVrai

D’abord et toujours !D’abord et toujours ! Ensuite, si besoin est !Ensuite, si besoin est !

Page 104: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 104104

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x x 0 0 0 00 0 0 0 1 1 1 11 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1z 0 1 0 1 0 1 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Sous-arbreSous-arbre en attente!en attente!

Quelle valeur pour x ?Quelle valeur pour x ?

FauxFaux VraiVrai

Choix concernant y !Choix concernant y !

Page 105: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 105105

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x x 0 0 0 00 0 0 0 1 1 1 11 1 1 1

y y 0 00 0 1 11 1 0 0 1 1 0 0 1 1

z 0 1z 0 1 0 1 0 1 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Sous-arbresSous-arbres en attente!en attente!

Quelle valeur pour x ?Quelle valeur pour x ?

FauxFaux VraiVrai

VraiVraiFauxFaux

Quelle valeur pour y ?Quelle valeur pour y ?

Page 106: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 106106

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x x 0 0 0 00 0 0 0 1 1 1 11 1 1 1

y y 0 00 0 1 11 1 0 0 1 1 0 0 1 1

z z 00 1 1 0 1 0 1 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Sous-arbresSous-arbres en attente!en attente!

Quelle valeur pour x ?Quelle valeur pour x ?

FauxFaux VraiVrai

VraiVrai

VraiVrai

FauxFaux

FauxFaux

Quelle valeur pour y ?Quelle valeur pour y ?

Quelle valeur pour z ?Quelle valeur pour z ?

Page 107: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 107107

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

CheminCheminactuel.actuel.

Sous-arbresSous-arbres en attente!en attente!

Page 108: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 108108

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

CheminCheminactuel.actuel.

Sous-arbresSous-arbres en attente!en attente!

Page 109: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 109109

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

CheminCheminactuel.actuel.

Sous-arbresSous-arbres en attente!en attente!

Page 110: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 110110

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Exploré sansExploré sanssuccès !succès !

CheminCheminactuel.actuel.

Sous-arbresSous-arbres en attente!en attente!

Page 111: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 111111

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Exploré sansExploré sanssuccès !succès !

CheminCheminactuel.actuel.

Sous-arbresSous-arbres en attente!en attente!

Page 112: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 112112

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Exploré sansExploré sanssuccès !succès !

CheminCheminactuel.actuel.

Sous-arbresSous-arbres en attente!en attente!

Page 113: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 113113

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Explorés sansExplorés sanssuccès !succès !

CheminCheminactuel.actuel.

Sous-arbresSous-arbres en attente!en attente!

Page 114: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 114114

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Explorés sansExplorés sanssuccès !succès !

CheminCheminactuel.actuel.

Sous-arbreSous-arbre en attente!en attente!

Un peuUn peuplus tard …plus tard …

Page 115: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 115115

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Explorés sansExplorés sanssuccès !succès !

CheminCheminactuel.actuel.

Sous-arbreSous-arbre en attente!en attente!

Page 116: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 116116

Back-trackBack-track----------------------------------------------------------------------------------------------------------------------------------

x 0 0 0 0 1 1 1 1x 0 0 0 0 1 1 1 1

y 0 0 1 1 0 0 1 1y 0 0 1 1 0 0 1 1

z 0 1 0 1 0 1 0 1z 0 1 0 1 0 1 0 1

FF 0 0 0 0 0 0 0 0 0 0 11

Explorés sansExplorés sanssuccès !succès !

CheminCheminactuel.actuel.

Sous-arbreSous-arbre en attente!en attente!

Page 117: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 117117

Situation générale du Back-trackSituation générale du Back-track----------------------------------------------------------------------------------------------------------------------------------

CheminCheminactuel.actuel.

Page 118: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 118118

Situation générale du Back-trackSituation générale du Back-track----------------------------------------------------------------------------------------------------------------------------------

CheminCheminactuel.actuel.

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Page 119: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 119119

Situation générale du Back-trackSituation générale du Back-track----------------------------------------------------------------------------------------------------------------------------------

CheminCheminactuel.actuel.

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Sous-arbres enSous-arbres enattente de traitement.attente de traitement.

Page 120: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 120120

Situation générale du Back-trackSituation générale du Back-track----------------------------------------------------------------------------------------------------------------------------------

CheminCheminactuel.actuel.

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Sous-arbres enSous-arbres enattente de traitement.attente de traitement.

Dynamique :Dynamique :

Page 121: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 121121

Situation générale du Back-trackSituation générale du Back-track----------------------------------------------------------------------------------------------------------------------------------

CheminCheminactuel.actuel.

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Sous-arbres enSous-arbres enattente de traitement.attente de traitement.

Dynamique :Dynamique :

Nous abandonnonsNous abandonnonsles points deles points deback-track !back-track !

Page 122: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 122122

Situation générale du Back-trackSituation générale du Back-track----------------------------------------------------------------------------------------------------------------------------------

CheminCheminactuel.actuel.

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Sous-arbres enSous-arbres enattente de traitement.attente de traitement.

Dynamique :Dynamique :

Page 123: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 123123

Situation générale du Back-trackSituation générale du Back-track----------------------------------------------------------------------------------------------------------------------------------

CheminCheminactuel.actuel.

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Sous-arbres enSous-arbres enattente de traitement.attente de traitement.

Dynamique :Dynamique :

Page 124: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 124124

Situation générale du Back-trackSituation générale du Back-track----------------------------------------------------------------------------------------------------------------------------------

CheminCheminactuel.actuel.

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Sous-arbres enSous-arbres enattente de traitement.attente de traitement.

Dynamique :Dynamique :

Page 125: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 125125

Situation générale du Back-track, échec finalSituation générale du Back-track, échec final----------------------------------------------------------------------------------------------------------------------------------

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Dynamique :Dynamique :CheminCheminactuel.actuel.

Page 126: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 126126

Situation générale du Back-track, échec finalSituation générale du Back-track, échec final----------------------------------------------------------------------------------------------------------------------------------

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Dynamique :Dynamique :CheminCheminactuel.actuel.

Page 127: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 127127

Situation générale du Back-track, échec finalSituation générale du Back-track, échec final----------------------------------------------------------------------------------------------------------------------------------

Sous-arbresSous-arbresexplorés sans succès.explorés sans succès.

Dynamique :Dynamique :CheminCheminactuel.actuel.

Page 128: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 128128

L EL EC O D EC O D E

D UD UB A C K - T R A C KB A C K - T R A C K

Back-track, code génériqueBack-track, code générique----------------------------------------------------------------------------------------------------------------------------------

Page 129: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 129129

Back-track, code génériqueBack-track, code générique----------------------------------------------------------------------------------------------------------------------------------

int back_track (un_type situation)

{ ...

}

Pour simplifier nous supposons rendrePour simplifier nous supposons rendreun booléen, mais le résultat pourrait, parun booléen, mais le résultat pourrait, parexemple, être le n-uplet solution, etc …exemple, être le n-uplet solution, etc …

Page 130: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 130130

Back-track, code génériqueBack-track, code générique----------------------------------------------------------------------------------------------------------------------------------

int back_track (un_type situation)

{if ( decidable(situation) )

return( ca_vaut_tant(situation) );

else

...

}

Page 131: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 131131

Back-track, code génériqueBack-track, code générique----------------------------------------------------------------------------------------------------------------------------------

int back_track (un_type situation)

{if ( decidable(situation) )

return( ca_vaut_tant(situation) );

else

{dabord = back_track( premiere_alternative(situation) );

...

}

}

Page 132: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 132132

Back-track, code génériqueBack-track, code générique----------------------------------------------------------------------------------------------------------------------------------

int back_track (un_type situation)

{if ( decidable(situation) )

return( ca_vaut_tant(situation) );

else

{dabord = back_track( premiere_alternative(situation) );

if ( suffisant(dabord) )

return( dabord ); /* les points de back-track

sont abandonnés */

else

...

}

}

Page 133: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 133133

Back-track, code génériqueBack-track, code générique----------------------------------------------------------------------------------------------------------------------------------

int back_track (un_type situation)

{if ( decidable(situation) )

return( ca_vaut_tant(situation) );

else

{dabord = back_track( premiere_alternative(situation) );

if ( suffisant(dabord) )

return( dabord ); /* les points de back-track

sont abandonnés */

else

return( seconde_alternative(situation) );

}

}

Page 134: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 134134

Back-track, code génériqueBack-track, code générique----------------------------------------------------------------------------------------------------------------------------------

int back_track (un_type situation)

{if ( decidable(situation) )

return( ca_vaut_tant(situation) );

else

{dabord = back_track( premiere_alternative(situation) );

if ( suffisant(dabord) )

return( dabord ); /* les points de back-track

sont abandonnés */

else

return( seconde_alternative(situation) );

}

}Comme pour Fibonnacci, nous parcourons un arbreComme pour Fibonnacci, nous parcourons un arbre

imaginaire, qui ne sera jamais construit en tant que tel !imaginaire, qui ne sera jamais construit en tant que tel !

Page 135: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 135135

Back-track, toutes les solutionsBack-track, toutes les solutions----------------------------------------------------------------------------------------------------------------------------------

• Un échec est un ensemble vide de succès.Un échec est un ensemble vide de succès.

• Nous explorons toutes les alternatives.Nous explorons toutes les alternatives.

• Nous construisons l’union de toutes les Nous construisons l’union de toutes les solutions.solutions.

Page 136: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 136136

Back-track, toutes les solutionsBack-track, toutes les solutions----------------------------------------------------------------------------------------------------------------------------------

set_un_type back_track_toutes (un_type situation)

{ ...

}

Page 137: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 137137

Back-track, toutes les solutionsBack-track, toutes les solutions----------------------------------------------------------------------------------------------------------------------------------

set_un_type back_track_toutes (un_type situation)

{if ( decidable(situation) )

...

else

...

}

Page 138: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 138138

Back-track, toutes les solutionsBack-track, toutes les solutions----------------------------------------------------------------------------------------------------------------------------------

set_un_type back_track_toutes (un_type situation)

{if ( decidable(situation) )

if ( est_satisfaisant(situation) )

return( { situation } );

else

return( {} );

else

...

}

Page 139: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 139139

Back-track, toutes les solutionsBack-track, toutes les solutions----------------------------------------------------------------------------------------------------------------------------------

set_un_type back_track_toutes (un_type situation)

{if ( decidable(situation) )

if ( est_satisfaisant(situation) )

return( { situation } );

else

return( {} );

else

return( back_track_toutes(premiere_alternative(situation))

union

back_track_toutes(seconde_alternative(situation)) );

}

Page 140: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 140140

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

C h a n g e o n s d e s u j C h a n g e o n s d e s u j e t !e t !

A r b r e s d e j e u xA r b r e s d e j e u x

M I N I M A XM I N I M A X

Page 141: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 141141

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Considérons un arbre dont :Considérons un arbre dont :

– les feuilles valent les feuilles valent VVrai ou rai ou FFauxaux– et les nœuds internes portent alternativement (depuis et les nœuds internes portent alternativement (depuis

la racine vers les feuilles) les connectives la racine vers les feuilles) les connectives etet et et ouou..

Page 142: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 142142

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Considérons un arbre dont :Considérons un arbre dont :

– les feuilles valent les feuilles valent VVrai ou rai ou FFauxaux– et les nœuds internes portent alternativement (depuis la et les nœuds internes portent alternativement (depuis la

racine vers les feuilles) les connectives racine vers les feuilles) les connectives etet et et ouou..

• Par réduction nous calculons une valeur pour la racine :Par réduction nous calculons une valeur pour la racine :

etet

ouou

etet

VV

FF etet

VV VVFF VV

Page 143: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 143143

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Considérons un arbre dont :Considérons un arbre dont :

– les feuilles valent les feuilles valent VVrai ou rai ou FFauxaux– et les nœuds internes portent alternativement (depuis la et les nœuds internes portent alternativement (depuis la

racine vers les feuilles) les connectives racine vers les feuilles) les connectives etet et et ouou..

• Par réduction nous calculons une valeur pour la racine :Par réduction nous calculons une valeur pour la racine :

etet

ouou

etet

VV

FF etet

VV VVFF VV

FF VV

Page 144: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 144144

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Considérons un arbre dont :Considérons un arbre dont :

– les feuilles valent les feuilles valent VVrai ou rai ou FFauxaux– et les nœuds internes portent alternativement (depuis la et les nœuds internes portent alternativement (depuis la

racine vers les feuilles) les connectives racine vers les feuilles) les connectives etet et et ouou..

• Par réduction nous calculons une valeur pour la racine :Par réduction nous calculons une valeur pour la racine :

etet

ouou

etet

VV

FF etet

VV VVFF VV

FF VV

VV

Page 145: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 145145

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Considérons un arbre dont :Considérons un arbre dont :

– les feuilles valent les feuilles valent VVrai ou rai ou FFauxaux– et les nœuds internes portent alternativement (depuis la et les nœuds internes portent alternativement (depuis la

racine vers les feuilles) les connectives racine vers les feuilles) les connectives etet et et ouou..

• Par réduction nous calculons une valeur pour la racine :Par réduction nous calculons une valeur pour la racine :

etet

ouou

etet

VV

FF etet

VV VVFF VV

FF VV

VV

VV

Page 146: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 146146

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

Nous n’avons pas toujours besoin de parcourir tout l’arbre.Nous n’avons pas toujours besoin de parcourir tout l’arbre.

etet

ouou

etet

VV

FF etet

VV VVFF VV

FF VV

VV

VV

Page 147: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 147147

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

Nous n’avons pas toujours besoin de parcourir tout l’arbre.Nous n’avons pas toujours besoin de parcourir tout l’arbre.

etet

ououVV

etet

VVVV

VV

VV

VV

?????? ??????

Page 148: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 148148

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

Nous n’avons pas toujours besoin de parcourir tout l’arbre.Nous n’avons pas toujours besoin de parcourir tout l’arbre.

etet

ououVV

etet

VVVV

VV

VV

VV

?????? ??????

Ces sous-arbres n’ont aucuneCes sous-arbres n’ont aucuneincidence sur le résultat ! ! !incidence sur le résultat ! ! !

Page 149: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 149149

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Règles pour le Règles pour le et et : :

etet

??FFVV

etet

??

Page 150: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 150150

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Règles pour le Règles pour le et et : :

etet

??FFVV

etet

??

donnedonne ?? donnedonneFF

Page 151: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 151151

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Règles pour le Règles pour le et et : :

etet

??FFVV

etet

??

donnedonne ?? donnedonneFF

• Règles pour le Règles pour le ou ou : :

ouou

??FFVV

ouou

??

Page 152: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 152152

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Règles pour le Règles pour le et et : :

etet

??FFVV

etet

??

donnedonne ?? donnedonneFF

• Règles pour le Règles pour le ou ou : :

ouou

??FFVV

ouou

??

donnedonne VV donnedonne??

Page 153: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 153153

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Règles pour le Règles pour le et et : :

etet

??FFVV

etet

??

donnedonne ?? donnedonneFF

• Règles pour le Règles pour le ou ou : :

ouou

??FFVV

ouou

??

donnedonne VV donnedonne??

On dit que l’onOn dit que l’on fait des coupes dans l’arbre. fait des coupes dans l’arbre.

Page 154: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 154154

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• On peut faire la substitution suivante, sans rien On peut faire la substitution suivante, sans rien changer aux comportements :changer aux comportements :

– V V devient devient 11

– F F devient devient 0 0

– et et devient devient min min

– ou ou devient devient max max

Les deux formulationsLes deux formulationssont isomorphes ! ! !sont isomorphes ! ! !

Page 155: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 155155

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Règles pour le Règles pour le min min : :

minmin

??0011

minmin

??

donnedonne ?? donnedonne 00

• Règles pour le Règles pour le max max : :

maxmax

??0011

maxmax

??

donnedonne 11 donnedonne??

Page 156: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 156156

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Définition générale d’un arbre Minimax :Définition générale d’un arbre Minimax :

– les feuilles ont des valeurs entières (ou réelles)les feuilles ont des valeurs entières (ou réelles)– et les nœuds internes portent alternativement (depuis la et les nœuds internes portent alternativement (depuis la

racine vers les feuilles) les connectives racine vers les feuilles) les connectives maxmax et et minmin..

Page 157: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 157157

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Définition générale d’un arbre Minimax :Définition générale d’un arbre Minimax :

– les feuilles ont des valeurs entières (ou réelles)les feuilles ont des valeurs entières (ou réelles)– et les nœuds internes portent alternativement (depuis la et les nœuds internes portent alternativement (depuis la

racine vers les feuilles) les connectives racine vers les feuilles) les connectives maxmax et et minmin..

• La valeur Minimax d’un arbre A vaut :La valeur Minimax d’un arbre A vaut :

– si A est une feuille, alors la valeur de cette feuille,si A est une feuille, alors la valeur de cette feuille,

Page 158: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 158158

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Définition générale d’un arbre Minimax :Définition générale d’un arbre Minimax :

– les feuilles ont des valeurs entières (ou réelles)les feuilles ont des valeurs entières (ou réelles)– et les nœuds internes portent alternativement (depuis la et les nœuds internes portent alternativement (depuis la

racine vers les feuilles) les connectives racine vers les feuilles) les connectives maxmax et et minmin..

• La valeur Minimax d’un arbre A vaut :La valeur Minimax d’un arbre A vaut :

– si A est une feuille, alors la valeur de cette feuille,si A est une feuille, alors la valeur de cette feuille,

– si A est un nœud interne de type si A est un nœud interne de type maxmax ayant des fils B ayant des fils B et C,et C,

alors le maximum des valeurs minimax de B et C,alors le maximum des valeurs minimax de B et C,

Page 159: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 159159

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Définition générale d’un arbre Minimax :Définition générale d’un arbre Minimax :

– les feuilles ont des valeurs entières (ou réelles)les feuilles ont des valeurs entières (ou réelles)– et les nœuds internes portent alternativement (depuis la et les nœuds internes portent alternativement (depuis la

racine vers les feuilles) les connectives racine vers les feuilles) les connectives maxmax et et minmin..

• La valeur Minimax d’un arbre A vaut :La valeur Minimax d’un arbre A vaut :

– si A est une feuille, alors la valeur de cette feuille,si A est une feuille, alors la valeur de cette feuille,

– si A est un nœud interne de type si A est un nœud interne de type maxmax ayant des fils B et ayant des fils B et C,C,

alors le maximum des valeurs minimax de B et C,alors le maximum des valeurs minimax de B et C,

– si A est un nœud interne de type si A est un nœud interne de type minmin ayant des fils B et ayant des fils B et C,C,

alors le minimum des valeurs minimax de B et C.alors le minimum des valeurs minimax de B et C.

Page 160: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 160160

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

int mini_max (un_type situation , int max_ou_pas )

{if ( feuille(situation) )

return( valeur(situation) );

else

if ( max_ou_pas )

return( max( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ;

else

return( min( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ; }

Page 161: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 161161

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

int mini_max (un_type situation , int max_ou_pas )

{if ( feuille(situation) )

return( valeur(situation) );

else

if ( max_ou_pas )

return( max( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ;

else

return( min( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ; }

Le cas d’arrêt est trivial !Le cas d’arrêt est trivial !

Page 162: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 162162

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

int mini_max (un_type situation , int max_ou_pas )

{if ( feuille(situation) )

return( valeur(situation) );

else

if ( max_ou_pas )

return( max( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ;

else

return( min( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ; }

C’est assez logique !C’est assez logique !

Page 163: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 163163

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

int mini_max (un_type situation , int max_ou_pas )

{if ( feuille(situation) )

return( valeur(situation) );

else

if ( max_ou_pas )

return( max( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ;

else

return( min( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ; }

C’est assez logique !C’est assez logique !

Page 164: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 164164

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

int mini_max (un_type situation , int max_ou_pas )

{if ( feuille(situation) )

return( valeur(situation) );

else

if ( max_ou_pas )

return( max( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ;

else

return( min( minimax( genere_fils_gauche(situation) ,

not(max_ou_pas) ) ,

minimax( genere_fils_droit(situation) ,

not(max_ou_pas) ) ) ) ; }

C’est assez logique !C’est assez logique !

CasCassymétrique !symétrique !

Page 165: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 165165

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Les arbres Minimax servent dans les jeux :Les arbres Minimax servent dans les jeux :

– Je suis Je suis MAXMAX et je veux maximiser mon bénéfice ! et je veux maximiser mon bénéfice !

– Mon adversaire est Mon adversaire est MINMIN et veut minimiser mon et veut minimiser mon bénéfice !bénéfice !

maxmax

minmin

55

minmin

33 1177

Page 166: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 166166

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Les arbres Minimax servent dans les jeux :Les arbres Minimax servent dans les jeux :

– Je suis Je suis MAXMAX et je veux maximiser mon bénéfice ! et je veux maximiser mon bénéfice !

– Mon adversaire est Mon adversaire est MINMIN et veut minimiser mon et veut minimiser mon bénéfice !bénéfice !

maxmax

minmin

55

minmin

33 1177

33 11

33

Page 167: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 167167

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Les arbres Minimax servent dans les jeux :Les arbres Minimax servent dans les jeux :

– Je suis Je suis MAXMAX et je veux maximiser mon bénéfice ! et je veux maximiser mon bénéfice !

– Mon adversaire est Mon adversaire est MINMIN et veut minimiser mon et veut minimiser mon bénéfice !bénéfice !

maxmax

minmin

55

minmin

33 1177

33 11

33Donc, Donc, MAX MAX joue sonjoue sonmeilleur choix.meilleur choix.

Page 168: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 168168

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Les arbres Minimax servent dans les jeux :Les arbres Minimax servent dans les jeux :

– Je suis Je suis MAXMAX et je veux maximiser mon bénéfice ! et je veux maximiser mon bénéfice !

– Mon adversaire est Mon adversaire est MINMIN et veut minimiser mon et veut minimiser mon bénéfice !bénéfice !

maxmax

minmin

55

minmin

33 1177

33 11

33Donc, Donc, MAX MAX joue sonjoue sonmeilleur choix.meilleur choix.

Et Et MIN MIN joue sajoue sameilleure réplique.meilleure réplique.

Page 169: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 169169

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Les arbres Minimax servent dans les jeux :Les arbres Minimax servent dans les jeux :

– Je suis Je suis MAXMAX et je veux maximiser mon bénéfice ! et je veux maximiser mon bénéfice !

– Mon adversaire est Mon adversaire est MINMIN et veut minimiser mon et veut minimiser mon bénéfice !bénéfice !

maxmax

minmin

55

minmin

33 1177

Ce choix pourrait êtreCe choix pourrait êtretentant pour tentant pour MAX MAX quiqui

espère obtenir 7 !espère obtenir 7 !

Page 170: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 170170

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Les arbres Minimax servent dans les jeux :Les arbres Minimax servent dans les jeux :

– Je suis Je suis MAXMAX et je veux maximiser mon bénéfice ! et je veux maximiser mon bénéfice !

– Mon adversaire est Mon adversaire est MINMIN et veut minimiser mon et veut minimiser mon bénéfice !bénéfice !

maxmax

minmin

55

minmin

33 1177

Ce choix pourrait êtreCe choix pourrait êtretentant pour tentant pour MAX MAX quiqui

espère obtenir 7 !espère obtenir 7 !

MIN MIN est très fort etest très fort etne concède que le minimum !ne concède que le minimum !

Page 171: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 171171

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Les arbres Minimax servent dans les jeux :Les arbres Minimax servent dans les jeux :

– Je suis Je suis MAXMAX et je veux maximiser mon bénéfice ! et je veux maximiser mon bénéfice !

– Mon adversaire est Mon adversaire est MINMIN et veut minimiser mon et veut minimiser mon bénéfice !bénéfice !

maxmax

minmin

55

minmin

33 1177

33 11

33

Le chemin du minimax correspond à la fois à :Le chemin du minimax correspond à la fois à :

- la meilleure attaque de - la meilleure attaque de MAXMAX

- et à la meilleure riposte de - et à la meilleure riposte de MIN.MIN.

Page 172: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 172172

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Pourquoi construire un arbre minimax plutôt que Pourquoi construire un arbre minimax plutôt que d’évaluer tout de suite une position ?d’évaluer tout de suite une position ?

– Les fonctions d’évaluation sont peu précises !Les fonctions d’évaluation sont peu précises !– Minimax stabilise les résultats !Minimax stabilise les résultats !

4??4??

Page 173: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 173173

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Pourquoi construire un arbre minimax plutôt que Pourquoi construire un arbre minimax plutôt que d’évaluer tout de suite une position ?d’évaluer tout de suite une position ?

– Les fonctions d’évaluation sont peu précises !Les fonctions d’évaluation sont peu précises !– Minimax stabilise les résultats !Minimax stabilise les résultats !

maxmax

minmin

55

minmin

33 1177

33 11

33

- A gauche, assez stable entre 3 et 5.- A gauche, assez stable entre 3 et 5.

- A droite, beaucoup plus instable.- A droite, beaucoup plus instable.

Page 174: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 174174

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Minimax s’applique aux jeux :Minimax s’applique aux jeux :

– de somme nulle,de somme nulle,

– déterministes,déterministes,

– et d’information parfaite.et d’information parfaite.

Page 175: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 175175

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Minimax s’applique aux jeux :Minimax s’applique aux jeux :

– de somme nulle,de somme nulle,

– déterministes,déterministes,

– et d’information parfaite.et d’information parfaite.

Mon avantage est un inconvénientMon avantage est un inconvénientpour mon adversaire, et vice-versa.pour mon adversaire, et vice-versa.

Page 176: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 176176

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Minimax s’applique aux jeux :Minimax s’applique aux jeux :

– de somme nulle,de somme nulle,

– déterministes,déterministes,

– et d’information parfaite.et d’information parfaite.

Mon avantage est un inconvénientMon avantage est un inconvénientpour mon adversaire, et vice-versa.pour mon adversaire, et vice-versa.

Pas d’élément de chance commePas d’élément de chance commele résultat d’un lancer de dé.le résultat d’un lancer de dé.

Page 177: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 177177

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Minimax s’applique aux jeux :Minimax s’applique aux jeux :

– de somme nulle,de somme nulle,

– déterministes,déterministes,

– et d’information parfaite.et d’information parfaite.

Mon avantage est un inconvénientMon avantage est un inconvénientpour mon adversaire, et vice-versa.pour mon adversaire, et vice-versa.

Pas d’élément de chance commePas d’élément de chance commele résultat d’un lancer de dé.le résultat d’un lancer de dé.

Tous voient toute l’information,Tous voient toute l’information,contrairement aux jeux de cartescontrairement aux jeux de cartesoù la main est cachée.où la main est cachée.

Page 178: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 178178

MinimaxMinimax----------------------------------------------------------------------------------------------------------------------------------

• Minimax s’applique aux jeux :Minimax s’applique aux jeux :

– de somme nulle,de somme nulle,

– déterministes,déterministes,

– et d’information parfaite.et d’information parfaite.

Mon avantage est un inconvénientMon avantage est un inconvénientpour mon adversaire, et vice-versa.pour mon adversaire, et vice-versa.

Pas d’élément de chance pourPas d’élément de chance pourle résultat d’un lancer de dé.le résultat d’un lancer de dé.

Tous voient toute l’information,Tous voient toute l’information,contrairement aux jeux de cartecontrairement aux jeux de carteoù la main est cachée.où la main est cachée.

Exemples : les échecs, les dames, le go, …Exemples : les échecs, les dames, le go, …

Page 179: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 179179

SynthèseSynthèse----------------------------------------------------------------------------------------------------------------------------------

• Parcours d’arbres.Parcours d’arbres.

• Modification d’arbres.Modification d’arbres.

• Induction sur la structure.Induction sur la structure.

• Back-Track.Back-Track.

• Minimax.Minimax.

Page 180: Cours d'algorithmique 3 - Intranet 1 13 novembre 2006 Cours dAlgorithmique Parcours darbres. Induction sur la structure. Back-track.Minimax

13 novembre 200613 novembre 2006 Cours d'algorithmique 3 - IntranetCours d'algorithmique 3 - Intranet 180180

m E r C i e Tm E r C i e Tb O n N e J o U r N é b O n N e J o U r N é

E ! ! !E ! ! !

n ‘ O u B l I e Z p A s D en ‘ O u B l I e Z p A s D ep R é P a R e R v O sp R é P a R e R v O s

T D ! ! !T D ! ! !