![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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062417/551d9d84497959293b8bfa62/html5/thumbnails/42.jpg)
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 ] ! ! !