Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parJoséphine Delattre Modifié depuis plus de 10 années
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. Arbres de recherche équilibrés : la problématique, diverses solutions. Recherche textuelle.
2
16 novembre 2006Cours d'algorithmique 4 - Intranet2 Trier et chercher, recherche textuelle Trier et chercher, recherche textuelle Listes et arbres Listes et arbres Le back-track Le back-track Arbres équilibrés Arbres équilibrés Récursivité et induction sur la structure Récursivité et induction sur la structure Divide and conquer Divide and conquer Minimax, alpha-beta Minimax, alpha-beta Dérécursion Dérécursion Divers problèmes particuliers Divers problèmes particuliers Logique de Hoare Logique de Hoare Programmation dynamique Programmation dynamique Complexité et calculabilité Complexité et calculabilité Les grandes lignes du cours
3
16 novembre 2006Cours d'algorithmique 4 - Intranet3 alpha - beta ----------------------------------------------------------------- max ? 5 Nous parcourons le fils droit pour trouver une valeur dans lintervalle : Nous parcourons le fils droit pour trouver une valeur dans lintervalle : [ 5 … +inf [ [ 5 … +inf [ Nous nous arrêtons dès que nous savons quelle sera inférieure à 5 ! Nous nous arrêtons dès que nous savons quelle sera inférieure à 5 ! [ 5 … +inf [ min 3
4
16 novembre 2006Cours d'algorithmique 4 - Intranet4 alpha - beta ----------------------------------------------------------------- max ? 5 Nous parcourons le fils droit pour trouver une valeur dans lintervalle : Nous parcourons le fils droit pour trouver une valeur dans lintervalle : [ 5 … +inf [ [ 5 … +inf [ Nous nous arrêtons dès que nous savons quelle sera inférieure à 5 ! Nous nous arrêtons dès que nous savons quelle sera inférieure à 5 ! [ 5 … +inf [ min 7
5
16 novembre 2006Cours d'algorithmique 4 - Intranet5 alpha - beta ----------------------------------------------------------------- max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min 7 4 [ 4 … 7 ] Discussion de la valeur de « ? » par rapport à lintervalle [ 4 … 7 ]. ? ? ? ?
6
16 novembre 2006Cours d'algorithmique 4 - Intranet6 alpha - beta ----------------------------------------------------------------- max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min 7 [ 4 … 7 ] Discussion de la valeur de « ? » par rapport à lintervalle [ 4 … 7 ]. ? 4 4 4 4
7
16 novembre 2006Cours d'algorithmique 4 - Intranet7 alpha - beta ----------------------------------------------------------------- max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min [ 4 … 7 ] Discussion de la valeur de « ? » par rapport à lintervalle [ 4 … 7 ]. 7 7 7 7 7 4
8
16 novembre 2006Cours d'algorithmique 4 - Intranet8 alpha - 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-nous dès que alpha atteint beta ! alpha peut grandir ! Rendre « alpha » ou bien « beta » si alpha > beta !
9
16 novembre 2006Cours d'algorithmique 4 - Intranet9 alpha - 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-nous dès que beta atteint alpha ! beta peut diminuer ! Rendre « beta » ou bien « alpha » si beta < alpha !
10
16 novembre 2006Cours d'algorithmique 4 - Intranet10 Arbre alpha ----------------------------------------------------------------- max min 3 min 278 max min 5 min 317 min min max 3 max 126 max Nous gardons tous les fils des min. Nous gardons tous les fils des min. Nous gardons un fils des max (choisi au hasard). Nous gardons un fils des max (choisi au hasard). 3 Minimax = minimum ! ! !
11
16 novembre 2006Cours d'algorithmique 4 - Intranet11 Arbre beta ----------------------------------------------------------------- max min 3 min 278 max min 5 min 317 min min max 3 max 126 max Nous gardons tous les fils des max. Nous gardons tous les fils des max. Nous gardons un fils des min (choisi au hasard). Nous gardons un fils des min (choisi au hasard). Minimax = maximum ! ! ! 7
12
16 novembre 2006Cours d'algorithmique 4 - Intranet12 Arbre 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 beta de A, 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 beta de A, beta_opt( A ) : minimax ( alpha_opt( A ) ) = minimax ( A ) = minimax ( beta_opt( A ) ) Les liens communs à alpha_opt( A ) et beta_opt( A ) correspondent au chemin minimax de A.
13
16 novembre 2006Cours d'algorithmique 4 - Intranet13 Arbre alpha et arbre beta ----------------------------------------------------------------- max min 3 min 278 max min 5 min 317 min min max 3 max 126 max Un arbre alpha optimal. Un arbre alpha optimal. Un arbre beta optimal. Un arbre beta optimal. Le chemin minimax. Le chemin minimax. 3
14
16 novembre 2006Cours d'algorithmique 4 - Intranet14 Arbre alpha et arbre beta ----------------------------------------------------------------- Preuve : Preuve : A est une feuille : alpha_opt( A ) = beta_opt( A ) = A, trivial ! A est une feuille : alpha_opt( A ) = beta_opt( A ) = A, trivial ! A est larbre ci-dessous avec B meilleur que C, i.e. A est larbre 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 ( beta_opt( B ) ) - Les liens communs entre alpha_opt( B ) et beta_opt( B ) correspondent au chemin minimax de B. max BC
15
16 novembre 2006Cours d'algorithmique 4 - Intranet15 Arbre alpha et arbre beta ----------------------------------------------------------------- alpha_opt( A ) est larbre : alpha_opt( A ) est larbre : – minimax( A ) = minimax( B ) = minimax( alpha_opt( B ) ) = minimax( alpha_opt( A ) ) = minimax( alpha_opt( A ) ) >= minimax( C ) >= minimax( C ) beta_opt( A ) est larbre : beta_opt( A ) est larbre : – minimax( A ) = minimax( B ) = minimax( beta_opt( B ) ) = minimax( beta_opt( A ) ) = minimax( beta_opt( A ) ) Chemin minimax : larête verte plus le minimax dans B. Chemin minimax : larête verte plus le minimax dans B. max alpha_opt(B)C max beta_opt(B)beta_opt(C)
16
16 novembre 2006Cours d'algorithmique 4 - Intranet16 Arbre alpha et arbre beta ----------------------------------------------------------------- Preuve (suite) : Preuve (suite) : A est larbre ci-dessous avec B meilleur que C, i.e. A est larbre 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 ( beta_opt( B ) ) - Les liens communs entre alpha_opt( B ) et beta_opt( B ) correspondent au chemin minimax de B. min BC
17
16 novembre 2006Cours d'algorithmique 4 - Intranet17 Arbre alpha et arbre beta ----------------------------------------------------------------- alpha_opt( A ) est larbre : alpha_opt( A ) est larbre : – minimax( A ) = minimax( B ) = minimax( alpha_opt( B ) ) = minimax( alpha_opt( A ) ) = minimax( alpha_opt( A ) ) beta_opt( A ) est larbre : beta_opt( A ) est larbre : – minimax( A ) = minimax( B ) = minimax( beta_opt( B ) ) = minimax( beta_opt( A ) ) = minimax( beta_opt( A ) ) Chemin minimax : larête verte plus le minimax dans B. Chemin minimax : larête verte plus le minimax dans B. min alpha_opt(B) min beta_opt(B) alpha_opt(C) C
18
16 novembre 2006Cours d'algorithmique 4 - Intranet18 Arbre alpha et arbre beta ----------------------------------------------------------------- Théorème (exercice) : Théorème (exercice) : – Si le chemin minimax de larbre A est le chemin le plus à gauche dans larbre, alors alpha-beta parcourt exactement la superposition dun arbre alpha optimal et dun arbre beta optimal. alpha-beta parcourt exactement la superposition dun arbre alpha optimal et dun arbre beta optimal. Heuristique « meilleur dabord » : Heuristique « meilleur dabord » : – Au moment de générer les fils du nœud père, il faut essayer de les trier du (probablement) meilleur au (probablement) pire. essayer de les trier du (probablement) meilleur au (probablement) pire. Cela semble logique ! Cela semble logique !
19
16 novembre 2006Cours d'algorithmique 4 - Intranet19 Arbre alpha et arbre beta ----------------------------------------------------------------- Théorème : Théorème : – Un arbre minimax de profondeur uniforme 2p vérifie : Il possède 2 feuilles ! Il possède 2 feuilles ! Tout sous-arbre alpha ou beta quil contient a 2 feuilles ! Tout sous-arbre alpha ou beta quil contient a 2 feuilles ! Il faut inspecter au minimum 2 * 2 - 1 feuilles pour déterminer la valeur minimax de cet arbre. Il faut inspecter au minimum 2 * 2 - 1 feuilles pour déterminer la valeur minimax de cet arbre. Ceci correspond à la superposition dun meilleur sous-arbre alpha avec un meilleur sous-arbre beta. Ceci correspond à la superposition dun meilleur sous-arbre alpha avec un meilleur sous-arbre beta. 2p p p
20
16 novembre 2006Cours d'algorithmique 4 - Intranet20 Arbres de recherche équilibrés ----------------------------------------------------------------- Arbre de recherche : Arbre de recherche : – Les feuilles correspondent aux informations qui admettent un ordre, par exemple celui des entiers. – Les nœuds internes comportent une étiquette qui permet dorienter la recherche, car : les valeurs accessibles dans le sous-arbre de gauche sont plus petites que létiquette, les valeurs accessibles dans le sous-arbre de gauche sont plus petites que létiquette, et celles de droite plus grandes ou égales. et celles de droite plus grandes ou égales. Lidée de la recherche par dichotomie est sous-jacente ! Lidée de la recherche par dichotomie est sous-jacente !
21
16 novembre 2006Cours d'algorithmique 4 - Intranet21 Arbres de recherche équilibrés ----------------------------------------------------------------- 10 15 4 6 7 24 14 Etiquettes. Valeurs. 16 15 int 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 ) ) ) ; }
22
16 novembre 2006Cours d'algorithmique 4 - Intranet22 Arbres de recherche équilibrés ----------------------------------------------------------------- Complexité : Complexité : – Recherche : profondeur de larbre. – Insertion : profondeur de larbre. – Suppression : profondeur de larbre. La profondeur est minimale si La profondeur est minimale si – larbre est équilibré, cest-à-dire – que toutes les feuilles sont +/- à la même profondeur ! Pour un arbre équilibré avec « n » feuilles, nous avons une profondeur de « log n ». Pour un arbre équilibré avec « n » feuilles, nous avons une profondeur de « log n ».
23
16 novembre 2006Cours d'algorithmique 4 - Intranet23 Arbres de recherche équilibrés ----------------------------------------------------------------- Complexité des arbres de recherche équilibrés : Complexité des arbres de recherche équilibrés : – Tout en « log n ». Complexité des tableaux triés : Complexité des tableaux triés : – Recherche en « log n ». – Insertion et suppression en « n ». Complexité des listes triées : Complexité des listes triées : – Tout en « n ». Hashage : Hashage : – Comme pour les arbres, si cest bien fait !
24
16 novembre 2006Cours d'algorithmique 4 - Intranet24 Arbres 2 - 3 - 4 ----------------------------------------------------------------- Trois types de nœuds internes : Trois types de nœuds internes : – binaires avec une étiquette pour les séparer, – ternaires avec deux étiquettes pour les séparer, – quaternaires avec trois étiquettes pour les séparer.
25
16 novembre 2006Cours d'algorithmique 4 - Intranet25 Arbres 2 - 3 - 4 ----------------------------------------------------------------- Insertion dune valeur « v » dans un tel arbre. Insertion dune valeur « v » dans un tel arbre. – Un nœud binaire devient ternaire : – Un nœud ternaire devient quaternaire : xy xyv xyz xyzv
26
16 novembre 2006Cours d'algorithmique 4 - Intranet26 Arbres 2 - 3 - 4 ----------------------------------------------------------------- Insertion dune valeur « v » dans un tel arbre. Insertion dune valeur « v » dans un tel arbre. – Un nœud quaternaire pourrait être découpé comme suit : ztv xytz xy Mais, nous accroissons la profondeur sans savoir si cest vraiment indispensable !
27
16 novembre 2006Cours d'algorithmique 4 - Intranet27 Arbres 2 - 3 - 4 ----------------------------------------------------------------- Insertion dune valeur « v » dans un tel arbre. Insertion dune valeur « v » dans un tel arbre. – Une autre stratégie : xytz Il faut éclater ( x, y, z, t ) ! Essayons de rattacher ( x, y ) et ( z, v, t ) comme frères sous le père de ( x, y, z, t ) ! Père ztvxy Nous augmentons donc larité du père dune unité !
28
16 novembre 2006Cours d'algorithmique 4 - Intranet28 Arbres 2 - 3 - 4 ----------------------------------------------------------------- Insertion dune valeur « v » dans un tel arbre. Insertion dune valeur « v » dans un tel arbre. – Le problème est résolu, à moins que le père ne soit quaternaire ! – Dans ce cas, nous recommençons récursivement pour le père ! – Dans le pire des cas, nous devons remonter à la racine … – et, si elle est quaternaire, léclater comme suit : xytz ztwxy et w La profondeur de toutes les feuilles augmente alors en même temps !
29
16 novembre 2006Cours d'algorithmique 4 - Intranet29 Arbres 2 - 3 - 4 ----------------------------------------------------------------- Suppression dune valeur « v » dans un tel arbre. Suppression dune valeur « v » dans un tel arbre. – Un nœud quaternaire devient ternaire et un nœud ternaire devient binaire! – Problème pour les nœuds binaires ! Il y a deux cas à considérer. – Un des frères est quaternaire : abdc xv bdcxa
30
16 novembre 2006Cours d'algorithmique 4 - Intranet30 Arbres 2 - 3 - 4 ----------------------------------------------------------------- Suppression dune valeur « v » dans un tel arbre. Suppression dune valeur « v » dans un tel arbre. – Aucun frère nest quaternaire. Le voisin « x » de « v » est inséré chez un frère ! – Nous diminuons larité du père et nous devons peut-être recommencer récursivement ! ! ! bdcxvxbdc
31
16 novembre 2006Cours d'algorithmique 4 - Intranet31 Arbres red - black ----------------------------------------------------------------- Les arbres 2 – 3 – 4 peuvent être représentés à laide de Les arbres 2 – 3 – 4 peuvent être représentés à laide de nœuds binaires uniquement, en rajoutant une couleur ( red ou black ). nœuds binaires uniquement, en rajoutant une couleur ( red ou black ). ou colorier les nœuds …
32
16 novembre 2006Cours d'algorithmique 4 - Intranet32 Algorithme K - M - P ----------------------------------------------------------------- Sujet : Sujet : – Rechercher 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], …, T[n]. dans un texte de longueur « n » : T[1], …, T[n]. Recherche structurée : Recherche structurée : – Lalgorithme est plus difficile à développer. – La complexité est plus petite.
33
16 novembre 2006Cours d'algorithmique 4 - Intranet33 Algorithme K - M - P ----------------------------------------------------------------- Principe de cet algorithme : Echec ! ! ! Nous recommençons une case plus loin avec le pattern entier.
34
16 novembre 2006Cours d'algorithmique 4 - Intranet34 Algorithme 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 : Initialisations !
35
16 novembre 2006Cours d'algorithmique 4 - Intranet35 Algorithme K - M - P ----------------------------------------------------------------- Principe de Knuth – Morris - Pratt : Principe de Knuth – Morris - Pratt : – Après un échec entre T [ i ] et P [ j ] : nous restons sur T [ i ] ou nous avançons vers T [ i+1 ], nous restons sur T [ i ] ou nous avançons vers T [ 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 navons pas besoin de mémoriser le tableau T ! – Cest idéal pour scruter des flux du genre satellite, ligne téléphonique, flux informatique,...
36
16 novembre 2006Cours d'algorithmique 4 - Intranet36 Algorithme K - M - P ----------------------------------------------------------------- Quelques cas de figure : A B X i A B i+1 1 1 Y Cest en fait lunique cas de figure où nous avançons dans T !
37
16 novembre 2006Cours d'algorithmique 4 - Intranet37 Algorithme K - M - P ----------------------------------------------------------------- Quelques cas de figure : A B X i 3 5 C A B A B A B A B CA B
38
16 novembre 2006Cours d'algorithmique 4 - Intranet38 Algorithme K - M - P ----------------------------------------------------------------- Soit next [ 1.. m ] : Soit next [ 1.. m ] : – next [ j ] est le point de reprise dans le pattern P après un échec en P [ j ] ! – next [ 1 ] = 1 ! A B X i 2 4 C A B A B A B A CA B next [ 4 ] = 2 Nous restons sur i !
39
16 novembre 2006Cours d'algorithmique 4 - Intranet39 Algorithme 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 !
40
16 novembre 2006Cours d'algorithmique 4 - Intranet40 Algorithme K - M - P ----------------------------------------------------------------- Construisons next [ 1.. m ] : Construisons next [ 1.. m ] : – next [ 1 ] = 1 ! – next [ 2 ] = 1 ! – next [ k ] pour k > 2 : Il faut trouver la longueur « l » du plus long préfixe de P [ 1.. k-1 ] qui est aussi suffixe de P [ 2.. k-1 ], Il faut trouver la longueur « l » du plus long préfixe de P [ 1.. k-1 ] qui est aussi suffixe de P [ 2.. k-1 ], et choisir next [ k ] = l+1. et choisir next [ k ] = l+1.
41
16 novembre 2006Cours d'algorithmique 4 - Intranet41 Algorithme 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 ?
42
16 novembre 2006Cours d'algorithmique 4 - Intranet42 Algorithme 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 ] à next [ m ] ! ! !
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.