Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta....

42
Cours d'algorithmique 4 - Cours d'algorithmique 4 - Intranet Intranet 1 16 novembre 2006 16 novembre 2006 Cours d’Algorithmique Cours d’Algorithmique L’algorithme alpha-beta. L’algorithme alpha-beta. Sous-arbres alpha et beta d’un arbre Sous-arbres alpha et beta d’un arbre minimax et propriétés. minimax et propriétés. Arbres de recherche équilibrés : Arbres de recherche équilibrés : la problématique, diverses solutions. la problématique, diverses solutions. Recherche textuelle. Recherche textuelle.

Transcript of Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta....

Page 1: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1116 novembre 200616 novembre 2006

Cours d’AlgorithmiqueCours d’Algorithmique

L’algorithme alpha-beta.L’algorithme alpha-beta.Sous-arbres alpha et beta d’un arbre Sous-arbres alpha et beta d’un arbre

minimax et propriétés.minimax et propriétés.

Arbres de recherche équilibrés :Arbres de recherche équilibrés :la problématique, diverses solutions.la problématique, diverses solutions.

Recherche textuelle.Recherche textuelle.

Page 2: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 22

• Trier et chercher,Trier et chercher, recherche textuellerecherche textuelle• Listes etListes et arbresarbres• Le back-trackLe back-track• Arbres équilibrésArbres équilibrés• Récursivité et induction sur la structureRécursivité et induction sur la structure• Divide and conquerDivide and conquer• Minimax,Minimax, alpha-betaalpha-beta• DérécursionDérécursion• Divers problèmes particuliersDivers problèmes particuliers• 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 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 33

alpha - betaalpha - beta----------------------------------------------------------------------------------------------------------------------------------

maxmax

??

55

• Nous parcourons le fils droit pour trouver une valeur Nous parcourons le fils droit pour trouver une valeur dans l’intervalle :dans l’intervalle :

[ 5 … +inf [[ 5 … +inf [

• Nous nous arrêtons dès que nous savons qu’elle sera Nous nous arrêtons dès que nous savons qu’elle sera inférieure à 5 ! inférieure à 5 !

[ 5 … +inf [[ 5 … +inf [

minmin

33

Page 4: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 44

alpha - betaalpha - beta----------------------------------------------------------------------------------------------------------------------------------

maxmax

??

55

• Nous parcourons le fils droit pour trouver une valeur Nous parcourons le fils droit pour trouver une valeur dans l’intervalle :dans l’intervalle :

[ 5 … +inf [[ 5 … +inf [

• Nous nous arrêtons dès que nous savons qu’elle sera Nous nous arrêtons dès que nous savons qu’elle sera inférieure à 5 ! inférieure à 5 !

[ 5 … +inf [[ 5 … +inf [

minmin

77

Page 5: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 55

alpha - betaalpha - beta----------------------------------------------------------------------------------------------------------------------------------

maxmax

[ 3 … +inf [[ 3 … +inf [

minmin

99

33

[ 3 … [ 3 … 9 ]9 ]

maxmax

??

[ 4[ 4 … … 9 ]9 ]

minmin

77

44

[ 4[ 4 … … 7 ]7 ]DiscussionDiscussionde la valeur dede la valeur de« ? » par rapport à« ? » par rapport àl’intervalle [ 4 … 7 ]. l’intervalle [ 4 … 7 ].

??

??

??

??

Page 6: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 66

alpha - betaalpha - beta----------------------------------------------------------------------------------------------------------------------------------

maxmax

[ 3 … +inf [[ 3 … +inf [

minmin

99

33

[ 3 … [ 3 … 9 ]9 ]

maxmax

??

[ 4[ 4 … … 9 ]9 ]

minmin

77

[ 4[ 4 … … 7 ]7 ]DiscussionDiscussionde la valeur dede la valeur de« ? » par rapport à« ? » par rapport àl’intervalle [ 4 … 7 ]. l’intervalle [ 4 … 7 ].

??44

44

44

44

Page 7: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 77

alpha - betaalpha - beta----------------------------------------------------------------------------------------------------------------------------------

maxmax

[ 3 … +inf [[ 3 … +inf [

minmin

99

33

[ 3 … [ 3 … 9 ]9 ]

maxmax

??

[ 4[ 4 … … 9 ]9 ]

minmin

[ 4[ 4 … … 7 ]7 ]DiscussionDiscussionde la valeur dede la valeur de« ? » par rapport à« ? » par rapport àl’intervalle [ 4 … 7 ]. l’intervalle [ 4 … 7 ].

77

77

77

77

77

44

Page 8: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 88

alpha - betaalpha - beta----------------------------------------------------------------------------------------------------------------------------------

xxx Traitement les fils de max

for ( « fils » parmi les fils de situation &

tantque alpha < beta )

alpha := max( alpha ,

alpha_beta( fils , not(max_ou_pas) ,

alpha , beta ) );

return( min(alpha , beta) );

Parcourons tous les fils, mais arrêtons-nousParcourons tous les fils, mais arrêtons-nousdès que alpha atteint beta !dès que alpha atteint beta !

alphaalphapeut grandir !peut grandir !

Rendre « alpha » ou bienRendre « alpha » ou bien« beta » si alpha > beta !« beta » si alpha > beta !

Page 9: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 99

alpha - betaalpha - beta----------------------------------------------------------------------------------------------------------------------------------

yyy Traitement les fils de min

for ( « fils » parmi les fils de situation &

tantque alpha < beta )

beta := min( beta ,

alpha_beta( fils , not(max_ou_pas) ,

alpha , beta ) );

return( max(alpha , beta) );

Parcourons tous les fils, mais arrêtons-nousParcourons tous les fils, mais arrêtons-nousdès que beta atteint alpha !dès que beta atteint alpha !

betabetapeut diminuer !peut diminuer !

Rendre « beta » ou bienRendre « beta » ou bien« alpha » si beta < alpha !« alpha » si beta < alpha !

Page 10: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1010

Arbre alphaArbre alpha----------------------------------------------------------------------------------------------------------------------------------

maxmax

minmin

33

minmin

22 7788

maxmax

minmin

55

minmin

33 1177

minminminmin

maxmax

33

maxmax

11 2266

maxmax

• Nous gardons tous les fils des Nous gardons tous les fils des min .min .

• Nous gardons un fils des Nous gardons un fils des max max (choisi au hasard).(choisi au hasard).

33Minimax = minimum ! ! !Minimax = minimum ! ! !

Page 11: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1111

Arbre betaArbre beta----------------------------------------------------------------------------------------------------------------------------------

maxmax

minmin

33

minmin

22 7788

maxmax

minmin

55

minmin

33 1177

minminminmin

maxmax

33

maxmax

11 2266

maxmax

• Nous gardons tous les fils des Nous gardons tous les fils des max .max .

• Nous gardons un fils des Nous gardons un fils des min min (choisi au hasard).(choisi au hasard).

Minimax = maximum ! ! !Minimax = maximum ! ! ! 77

Page 12: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1212

Arbre alpha et arbre betaArbre alpha et arbre beta----------------------------------------------------------------------------------------------------------------------------------

• Pour tout arbre A ,Pour tout arbre A ,

– pour tout sous-arbre alpha de A , alpha( A ) ,pour tout sous-arbre alpha de A , alpha( A ) ,– pour tout sous-arbre beta de A , beta( A ) :pour tout sous-arbre beta de A , beta( A ) :

minimax ( alpha( A ) ) <= minimax ( A ) <= minimax ( beta( A ) )minimax ( alpha( A ) ) <= minimax ( A ) <= minimax ( beta( A ) )

• Pour tout arbre A ,Pour tout arbre A ,

– il existe un sous-arbre alpha de A , alpha_opt( A ) ,il existe un sous-arbre alpha de A , alpha_opt( A ) ,– il existe un sous-arbre beta de A , beta_opt( A ) :il existe un sous-arbre beta de A , beta_opt( A ) :

minimax ( alpha_opt( A ) ) = minimax ( A ) = minimax minimax ( alpha_opt( A ) ) = minimax ( A ) = minimax ( beta_opt( A ) )( beta_opt( A ) )

Les liens communs à alpha_opt( A ) et beta_opt( A )Les liens communs à alpha_opt( A ) et beta_opt( A )

correspondent au chemin minimax de A .correspondent au chemin minimax de A .

Page 13: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1313

Arbre alpha et arbre betaArbre alpha et arbre beta----------------------------------------------------------------------------------------------------------------------------------

maxmax

minmin

33

minmin

22 7788

maxmax

minmin

55

minmin

33 1177

minminminmin

maxmax

33

maxmax

11 2266

maxmax

• Un arbre alpha optimalUn arbre alpha optimal..

• Un arbre beta optimal.Un arbre beta optimal.

• Le chemin minimax.Le chemin minimax.33

Page 14: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1414

Arbre alpha et arbre betaArbre alpha et arbre beta----------------------------------------------------------------------------------------------------------------------------------

• Preuve :Preuve :

• A est une feuille : alpha_opt( A ) = beta_opt( A ) = A , A est une feuille : alpha_opt( A ) = beta_opt( A ) = A , trivial !trivial !

• A est l’arbre ci-dessous avec B meilleur que C , i.e.A est l’arbre ci-dessous avec B meilleur que C , i.e.

minimax( A ) = minimax( B ) >= minimax( C ) :minimax( A ) = minimax( B ) >= minimax( C ) :

• Pour B , par hypothèse, de même pour C :Pour B , par hypothèse, de même pour C :

- minimax ( alpha_opt( B ) ) = minimax ( B ) = minimax minimax ( alpha_opt( B ) ) = minimax ( B ) = minimax ( beta_opt( B ) )( beta_opt( B ) )

- Les liens communs entre alpha_opt( B ) et beta_opt( B ) Les liens communs entre alpha_opt( B ) et beta_opt( B ) correspondent au chemin minimax de B .correspondent au chemin minimax de B .

maxmax

BB CC

Page 15: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1515

Arbre alpha et arbre betaArbre alpha et arbre beta----------------------------------------------------------------------------------------------------------------------------------

• alpha_opt( A ) est l’arbre :alpha_opt( A ) est l’arbre :

– minimax( A ) = minimax( B ) = minimax( alpha_opt( B ) )minimax( A ) = minimax( B ) = minimax( alpha_opt( B ) )

= minimax( alpha_opt( A ) )= minimax( alpha_opt( A ) )

>= minimax( C )>= minimax( C )

• beta_opt( A ) est l’arbre :beta_opt( A ) est l’arbre :

– minimax( A ) = minimax( B ) = minimax( beta_opt( B ) )minimax( A ) = minimax( B ) = minimax( beta_opt( B ) )

= minimax( beta_opt( A ) )= minimax( beta_opt( A ) )

• Chemin minimax : l’arête verte plus le minimax dans B .Chemin minimax : l’arête verte plus le minimax dans B .

maxmax

alpha_opt(B)alpha_opt(B) CC

maxmax

beta_opt(B)beta_opt(B) beta_opt(C)beta_opt(C)

Page 16: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1616

Arbre alpha et arbre betaArbre alpha et arbre beta----------------------------------------------------------------------------------------------------------------------------------

• Preuve (suite) :Preuve (suite) :

• A est l’arbre ci-dessous avec B meilleur que C , i.e.A est l’arbre ci-dessous avec B meilleur que C , i.e.

minimax( A ) = minimax( B ) <= minimax( C ) :minimax( A ) = minimax( B ) <= minimax( C ) :

• Pour B , par hypothèse, de même pour C :Pour B , par hypothèse, de même pour C :

- minimax ( alpha_opt( B ) ) = minimax ( B ) = minimax minimax ( alpha_opt( B ) ) = minimax ( B ) = minimax ( beta_opt( B ) )( beta_opt( B ) )

- Les liens communs entre alpha_opt( B ) et beta_opt( B ) Les liens communs entre alpha_opt( B ) et beta_opt( B ) correspondent au chemin minimax de B . correspondent au chemin minimax de B .

minmin

BB CC

Page 17: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1717

Arbre alpha et arbre betaArbre alpha et arbre beta----------------------------------------------------------------------------------------------------------------------------------

• alpha_opt( A ) est l’arbre :alpha_opt( A ) est l’arbre :

– minimax( A ) = minimax( B ) = minimax( alpha_opt( B ) )minimax( A ) = minimax( B ) = minimax( alpha_opt( B ) )

= minimax( alpha_opt( A ) )= minimax( alpha_opt( A ) )

• beta_opt( A ) est l’arbre :beta_opt( A ) est l’arbre :

– minimax( A ) = minimax( B ) = minimax( beta_opt( B ) )minimax( A ) = minimax( B ) = minimax( beta_opt( B ) )

= minimax( beta_opt( A ) )= minimax( beta_opt( A ) )

• Chemin minimax : l’arête verte plus le minimax dans B .Chemin minimax : l’arête verte plus le minimax dans B .

minmin

alpha_opt(B)alpha_opt(B)

minmin

beta_opt(B)beta_opt(B)

alpha_opt(C)alpha_opt(C)

CC

Page 18: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1818

Arbre alpha et arbre betaArbre alpha et arbre beta----------------------------------------------------------------------------------------------------------------------------------

• Théorème (exercice) :Théorème (exercice) :

– Si le chemin minimax de l’arbre A est le chemin le Si le chemin minimax de l’arbre A est le chemin le plus à gauche dans l’arbre, alorsplus à gauche dans l’arbre, alors

• alpha-beta parcourt exactement la superposition alpha-beta parcourt exactement la superposition d’un arbre alpha optimal et d’un arbre beta d’un arbre alpha optimal et d’un arbre beta optimal.optimal.

• Heuristique « meilleur d’abord » :Heuristique « meilleur d’abord » :

– Au moment de générer les fils du nœud père, il fautAu moment de générer les fils du nœud père, il faut

• essayer de les trier du (probablement) meilleur au essayer de les trier du (probablement) meilleur au (probablement) pire.(probablement) pire.

• Cela semble logique !Cela semble logique !

Page 19: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 1919

Arbre alpha et arbre betaArbre alpha et arbre beta----------------------------------------------------------------------------------------------------------------------------------

• Théorème :Théorème :

– Un arbre minimax de profondeur uniforme 2p Un arbre minimax de profondeur uniforme 2p vérifie :vérifie :

• Il possède 2 feuilles !Il possède 2 feuilles !

• Tout sous-arbre alpha ou beta qu’il contient a 2 Tout sous-arbre alpha ou beta qu’il contient a 2 feuilles !feuilles !

• Il faut inspecter au minimum 2 * 2 Il faut inspecter au minimum 2 * 2 -- 1 feuilles 1 feuilles pour déterminer la valeur minimax de cet arbre.pour déterminer la valeur minimax de cet arbre.

• Ceci correspond à la superposition d’un meilleur Ceci correspond à la superposition d’un meilleur sous-arbre alpha avec un meilleur sous-arbre sous-arbre alpha avec un meilleur sous-arbre beta .beta .

2p2p

pp

pp

Page 20: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2020

Arbres de recherche équilibrésArbres de recherche équilibrés----------------------------------------------------------------------------------------------------------------------------------

• Arbre de recherche :Arbre de recherche :

– Les feuilles correspondent aux informations qui Les feuilles correspondent aux informations qui admettent un ordre, par exemple celui des entiers.admettent un ordre, par exemple celui des entiers.

– Les nœuds internes comportent une étiquette qui Les nœuds internes comportent une étiquette qui permet d’orienter la recherche, car :permet d’orienter la recherche, car :

• les valeurs accessibles dans le sous-arbre de gauche les valeurs accessibles dans le sous-arbre de gauche sont plus petites que l‘étiquette,sont plus petites que l‘étiquette,

• et celles de droite plus grandes ou égales.et celles de droite plus grandes ou égales.

• L’idée de la recherche par dichotomie est sous-L’idée de la recherche par dichotomie est sous-jacente !jacente !

Page 21: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2121

Arbres de recherche équilibrésArbres de recherche équilibrés----------------------------------------------------------------------------------------------------------------------------------

1010

1515

44

66

77

2424

1414

Etiquettes.Etiquettes.

Valeurs.Valeurs.

1616

1515int recherche ( int x , ptr_arbre arbre )

{if ( feuille( arbre ) )

return( valeur( arbre ) == x );

else

if ( x < etiquette( arbre ) )

return( recherche( x , fils_gauche( arbre ) ) ) ;

else

return( recherche( x , fils_droit( arbre ) ) ) ; }

Page 22: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2222

Arbres de recherche équilibrésArbres de recherche équilibrés----------------------------------------------------------------------------------------------------------------------------------

• Complexité :Complexité :

– Recherche : profondeur de l’arbre.Recherche : profondeur de l’arbre.

– Insertion : profondeur de l’arbre.Insertion : profondeur de l’arbre.

– Suppression : profondeur de l’arbre.Suppression : profondeur de l’arbre.

• La profondeur est minimale siLa profondeur est minimale si

– l’arbre est équilibré, c’est-à-direl’arbre est équilibré, c’est-à-dire

– que toutes les feuilles sont +/- à la même profondeur !que toutes les feuilles sont +/- à la même profondeur !

• Pour un arbre équilibré avec « n » feuilles, nous Pour un arbre équilibré avec « n » feuilles, nous avons une profondeur de « log n ».avons une profondeur de « log n ».

Page 23: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2323

Arbres de recherche équilibrésArbres de recherche équilibrés----------------------------------------------------------------------------------------------------------------------------------

• Complexité des arbres de recherche équilibrés :Complexité des arbres de recherche équilibrés :

– Tout en « log n ».Tout en « log n ».

• Complexité des tableaux triés :Complexité des tableaux triés :

– Recherche en « log n ».Recherche en « log n ».

– Insertion et suppression en « n ».Insertion et suppression en « n ».

• Complexité des listes triées :Complexité des listes triées :

– Tout en « n ».Tout en « n ».

• Hashage :Hashage :

– Comme pour les arbres, si c’est bien fait !Comme pour les arbres, si c’est bien fait !

Page 24: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2424

Arbres 2 - 3 - 4Arbres 2 - 3 - 4----------------------------------------------------------------------------------------------------------------------------------

• Trois types de nœuds internes :Trois types de nœuds internes :

– binaires avec une étiquette pour les séparer,binaires avec une étiquette pour les séparer,

– ternaires avec deux étiquettes pour les séparer,ternaires avec deux étiquettes pour les séparer,

– quaternaires avec trois étiquettes pour les séparer.quaternaires avec trois étiquettes pour les séparer.

Page 25: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2525

Arbres 2 - 3 - 4Arbres 2 - 3 - 4----------------------------------------------------------------------------------------------------------------------------------

• Insertion d’une valeur « v » dans un tel arbre.Insertion d’une valeur « v » dans un tel arbre.

– Un nœud binaire devient ternaire :Un nœud binaire devient ternaire :

– Un nœud ternaire devient quaternaire :Un nœud ternaire devient quaternaire :

xx yy xx yyvv

xx yy zz xx yy zzvv

Page 26: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2626

Arbres 2 - 3 - 4Arbres 2 - 3 - 4----------------------------------------------------------------------------------------------------------------------------------

• Insertion d’une valeur « v » dans un tel arbre.Insertion d’une valeur « v » dans un tel arbre.

– Un nœud quaternaire pourrait être découpé comme suit Un nœud quaternaire pourrait être découpé comme suit ::

zz ttvv

xx yy ttzz

xx yy

Mais, nous accroissons la profondeur sansMais, nous accroissons la profondeur sanssavoir si c’est vraiment indispensable !savoir si c’est vraiment indispensable !

Page 27: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2727

Arbres 2 - 3 - 4Arbres 2 - 3 - 4----------------------------------------------------------------------------------------------------------------------------------

• Insertion d’une valeur « v » dans un tel arbre.Insertion d’une valeur « v » dans un tel arbre.

– Une autre stratégie :Une autre stratégie :

xx yy ttzz

Il faut éclater ( x, y , z , t ) !Il faut éclater ( x, y , z , t ) !

Essayons de rattacher ( x , y ) et ( z , v , t ) commeEssayons de rattacher ( x , y ) et ( z , v , t ) commefrères sous le père de ( x , y , z , t ) !frères sous le père de ( x , y , z , t ) !

PèrePère

zz ttvvxx yy

Nous augmentons doncNous augmentons doncl’arité du père d’une unité !l’arité du père d’une unité !

Page 28: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2828

Arbres 2 - 3 - 4Arbres 2 - 3 - 4----------------------------------------------------------------------------------------------------------------------------------

• Insertion d’une valeur « v » dans un tel arbre.Insertion d’une valeur « v » dans un tel arbre.

– Le problème est résolu, à moins que le père ne soit Le problème est résolu, à moins que le père ne soit quaternaire !quaternaire !

– Dans ce cas, nous recommençons récursivement pour le Dans ce cas, nous recommençons récursivement pour le père !père !

– Dans le pire des cas, nous devons remonter à la racine …Dans le pire des cas, nous devons remonter à la racine …

– et, si elle est quaternaire, l’éclater comme suit :et, si elle est quaternaire, l’éclater comme suit :

xx yy ttzz zz ttwwxx yy

et et ww

La profondeur de toutes les feuillesLa profondeur de toutes les feuillesaugmente alors en même temps !augmente alors en même temps !

Page 29: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 2929

Arbres 2 - 3 - 4Arbres 2 - 3 - 4----------------------------------------------------------------------------------------------------------------------------------

• Suppression d’une valeur « v » dans un tel arbre.Suppression d’une valeur « v » dans un tel arbre.

– Un nœud quaternaire devient ternaire et un nœud Un nœud quaternaire devient ternaire et un nœud ternaire devient binaire!ternaire devient binaire!

– Problème pour les nœuds binaires ! Il y a deux cas à Problème pour les nœuds binaires ! Il y a deux cas à considérer.considérer.

– Un des frères est quaternaire :Un des frères est quaternaire :

aa bb ddccxx vv bb ddccxx aa

Page 30: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3030

Arbres 2 - 3 - 4Arbres 2 - 3 - 4----------------------------------------------------------------------------------------------------------------------------------

• Suppression d’une valeur « v » dans un tel arbre.Suppression d’une valeur « v » dans un tel arbre.

– Aucun frère n’est quaternaire. Le voisin « x » de « v » est Aucun frère n’est quaternaire. Le voisin « x » de « v » est inséré chez un frère !inséré chez un frère !

– Nous diminuons l’arité du père et nous devons peut-être Nous diminuons l’arité du père et nous devons peut-être recommencer récursivement ! ! !recommencer récursivement ! ! !

bb ddccxx vv xx bb ddcc

Page 31: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3131

Arbres red - blackArbres red - black----------------------------------------------------------------------------------------------------------------------------------

• Les arbres 2 – 3 – 4 peuvent être représentés à l’aide deLes arbres 2 – 3 – 4 peuvent être représentés à l’aide de

• nœuds binaires uniquement, nœuds binaires uniquement, en rajoutant une couleur ( red ou en rajoutant une couleur ( red ou black ).black ).

ou colorier les nœuds …ou colorier les nœuds …

Page 32: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3232

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

• Sujet :Sujet :

– RechercherRechercher

• un pattern de longueur « m » : P[1] , … , P[m]un pattern de longueur « m » : P[1] , … , P[m]

• dans un texte de longueur « n » : T[1] , … , dans un texte de longueur « n » : T[1] , … , T[n].T[n].

• Recherche structurée :Recherche structurée :

– L’algorithme est plus difficile à développer.L’algorithme est plus difficile à développer.

– La complexité est plus petite.La complexité est plus petite.

Page 33: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3333

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

Principe de cet algorithme :Principe de cet algorithme :

Echec ! ! !Echec ! ! !

Nous recommençons une caseNous recommençons une caseplus loin avec le pattern entier.plus loin avec le pattern entier.

Page 34: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3434

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

i = 1 ;

j = 1 ;

repeter

si T[ i ] == P[ j ]

{i = i+1 ;

j = j+1 ; }

sinon

{i = i-j+2 ;

j = 1 ; }

jusqua ( j > m ) ou ( i > n ) ;

resultat = ( j > m , i-j+1 ) ;

Autre formulation :Autre formulation :

Initialisations !Initialisations !

Page 35: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3535

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

• Principe de Knuth – Morris - Pratt :Principe de Knuth – Morris - Pratt :

– Après un échec entre T [ i ] et P [ j ] :Après un échec entre T [ i ] et P [ j ] :

• nous restons sur T [ i ] ou nous avançons vers T nous restons sur T [ i ] ou nous avançons vers T [ i+1 ],[ i+1 ],

• nous restons sur P [ j ] ou nous reculons vers P [ j-k nous restons sur P [ j ] ou nous reculons vers P [ j-k ].].

• Conséquences :Conséquences :

– Nous n’avons pas besoin de mémoriser le tableau T !Nous n’avons pas besoin de mémoriser le tableau T !

– C’est idéal pour scruter des flux du genre satellite, ligne C’est idéal pour scruter des flux du genre satellite, ligne téléphonique, flux informatique, . . .téléphonique, flux informatique, . . .

Page 36: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3636

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

Quelques cas de figure :Quelques cas de figure :

AA BB

XX

ii

AA BB

i+1i+1

11

11

YY

C’est en fait l’unique cas de figure où nous avançons dans T !C’est en fait l’unique cas de figure où nous avançons dans T !

Page 37: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3737

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

Quelques cas de figure :Quelques cas de figure :

AA BB

XX

ii

33

55

CC

AA BB

AA BB

AA BB

AA BB

CCAA BB

Page 38: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3838

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

• Soit next [ 1 .. m ] :Soit next [ 1 .. m ] :

– next [ j ] est le point de reprise dans le pattern P next [ j ] est le point de reprise dans le pattern P après un échec en P [ j ] !après un échec en P [ j ] !

– next [ 1 ] = 1 !next [ 1 ] = 1 !

AA BB

XX

ii

22

44

CC

AA BB

AA BB

AA BB

AA

CCAA BB

next [ 4 ] = 2next [ 4 ] = 2

Nous restons sur i !Nous restons sur i !

Page 39: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 3939

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

i = 1 ;

j = 1 ;

repeter

si T[ i ] == P[ j ]

{i = i+1 ;

j = j+1 ; }

sinon

{si j == 1

i = i+1 ;

j = next[ j ] ; }

jusqua ( j > m ) ou ( i > n ) ;

resultat = ( j > m , i-j+1 ) ;

Nouvelle formulation !Nouvelle formulation !

Page 40: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 4040

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

• Construisons next [ 1 .. m ] :Construisons next [ 1 .. m ] :

– next [ 1 ] = 1 !next [ 1 ] = 1 !

– next [ 2 ] = 1 !next [ 2 ] = 1 !

– next [ k ] pour k > 2 :next [ k ] pour k > 2 :

• Il faut trouver la longueur « l » du plus Il faut trouver la longueur « l » du plus long préfixe de P [ 1 .. k-1 ] qui est aussi long préfixe de P [ 1 .. k-1 ] qui est aussi suffixe de P [ 2 .. k-1 ],suffixe de P [ 2 .. k-1 ],

• et choisir next [ k ] = l+1.et choisir next [ k ] = l+1.

Page 41: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 4141

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

calc_next ( k , P ) =

{i = 2 ;

j = 1 ;

repeter

si P[ i ] == P[ j ]

{i = i+1 ;

j = j+1 ; }

sinon

{i = i-j+2 ;

j = 1 ; }

jusqua ( i >= k ) ;

return( j ) ; }

Comment ça marche ?Comment ça marche ?

Page 42: Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.

16 novembre 200616 novembre 2006 Cours d'algorithmique 4 - IntranetCours d'algorithmique 4 - Intranet 4242

Algorithme K - M - PAlgorithme K - M - P----------------------------------------------------------------------------------------------------------------------------------

next[ 1 ] = 1 ;

next[ 2 ] = 1 ;

i = 2 ;

j = 1 ;

repeter

si P[ i ] == P[ j ]

{i = i+1 ;

j = j+1 ;

next[ i ] = j ; }

sinon

{if ( j == 1 )

{i = i+1 ;

next[ i ] = 1 ; }

j = next[ j ] ; }

jusqua ( i >= m ) ;

Calcul de next [ 1 ]Calcul de next [ 1 ]à next [ m ] ! ! !à next [ m ] ! ! !