La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

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 A R B R E A L P H A - B E T A

4 16 novembre 2006Cours d'algorithmique 4 - Intranet4 alpha - beta max ?5

5 16 novembre 2006Cours d'algorithmique 4 - Intranet5 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 !

6 16 novembre 2006Cours d'algorithmique 4 - Intranet6 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 [

7 16 novembre 2006Cours d'algorithmique 4 - Intranet7 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

8 16 novembre 2006Cours d'algorithmique 4 - Intranet8 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

9 16 novembre 2006Cours d'algorithmique 4 - Intranet9 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

10 16 novembre 2006Cours d'algorithmique 4 - Intranet10 alpha - beta min ? 3

11 16 novembre 2006Cours d'algorithmique 4 - Intranet11 alpha - beta min ? 3 Nous parcourons le fils droit pour trouver une valeur dans lintervalle : Nous parcourons le fils droit pour trouver une valeur dans lintervalle : ] -inf … 3 ] ] -inf … 3 ] Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 !

12 16 novembre 2006Cours d'algorithmique 4 - Intranet12 alpha - beta min ? 3 Nous parcourons le fils droit pour trouver une valeur dans lintervalle : Nous parcourons le fils droit pour trouver une valeur dans lintervalle : ] -inf … 3 ] ] -inf … 3 ] Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! ] -inf … 3 ]

13 16 novembre 2006Cours d'algorithmique 4 - Intranet13 alpha - beta min ? 3 Nous parcourons le fils droit pour trouver une valeur dans lintervalle : Nous parcourons le fils droit pour trouver une valeur dans lintervalle : ] -inf … 3 ] ] -inf … 3 ] Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! ] -inf … 3 ] max 5

14 16 novembre 2006Cours d'algorithmique 4 - Intranet14 alpha - beta min ? 3 Nous parcourons le fils droit pour trouver une valeur dans lintervalle : Nous parcourons le fils droit pour trouver une valeur dans lintervalle : ] -inf … 3 ] ] -inf … 3 ] Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! ] -inf … 3 ] max 5

15 16 novembre 2006Cours d'algorithmique 4 - Intranet15 alpha - beta min ? 3 Nous parcourons le fils droit pour trouver une valeur dans lintervalle : Nous parcourons le fils droit pour trouver une valeur dans lintervalle : ] -inf … 3 ] ] -inf … 3 ] Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! Nous nous arrêtons dès que nous savons quelle sera supérieure à 3 ! ] -inf … 3 ] max 1

16 16 novembre 2006Cours d'algorithmique 4 - Intranet16 alpha - beta max ? [ 3 … +inf [ 3

17 16 novembre 2006Cours d'algorithmique 4 - Intranet17 alpha - beta max ? [ 3 … +inf [ min 9 3 [ 3 … 9 ]

18 16 novembre 2006Cours d'algorithmique 4 - Intranet18 alpha - beta max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] 4

19 16 novembre 2006Cours d'algorithmique 4 - Intranet19 alpha - beta max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min 7 4 [ 4 … 7 ]

20 16 novembre 2006Cours d'algorithmique 4 - Intranet20 alpha - beta max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min 7 4 [ 4 … 7 ]

21 16 novembre 2006Cours d'algorithmique 4 - Intranet21 alpha - beta max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min 7 4 [ 4 … 7 ] est la borne minimale garantie ! est la borne minimale garantie ! grandit seulement … grandit seulement …

22 16 novembre 2006Cours d'algorithmique 4 - Intranet22 alpha - beta max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min 7 4 [ 4 … 7 ] est la borne minimale garantie ! est la borne minimale garantie ! grandit seulement … grandit seulement …

23 16 novembre 2006Cours d'algorithmique 4 - Intranet23 alpha - beta max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min 7 4 [ 4 … 7 ] est la borne maximale possible ! est la borne maximale possible ! diminue seulement … diminue seulement …

24 16 novembre 2006Cours d'algorithmique 4 - Intranet24 alpha - beta max [ 3 … +inf [ min 9 3 [ 3 … 9 ] max ? [ 4 … 9 ] min 7 4 [ 4 … 7 ] est la borne maximale possible ! est la borne maximale possible ! diminue seulement … diminue seulement …

25 16 novembre 2006Cours d'algorithmique 4 - Intranet25 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 ].

26 16 novembre 2006Cours d'algorithmique 4 - Intranet26 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 ]. ? ? ? ?

27 16 novembre 2006Cours d'algorithmique 4 - Intranet27 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 ]. ? ? ? ?

28 16 novembre 2006Cours d'algorithmique 4 - Intranet28 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 ]. ?

29 16 novembre 2006Cours d'algorithmique 4 - Intranet29 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 ]. ?

30 16 novembre 2006Cours d'algorithmique 4 - Intranet30 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 ]. ?

31 16 novembre 2006Cours d'algorithmique 4 - Intranet31 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 4

32 16 novembre 2006Cours d'algorithmique 4 - Intranet32 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 ]

33 16 novembre 2006Cours d'algorithmique 4 - Intranet33 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 ]

34 16 novembre 2006Cours d'algorithmique 4 - Intranet34 alpha - beta int alpha_beta ( un_type situation, int max_ou_pas, int alpha, int beta ) {if ( est_feuille(situation) ) return( valeur(situation) ) ; else if ( max_ou_pas ) xxx else yyy }

35 16 novembre 2006Cours d'algorithmique 4 - Intranet35 alpha - beta int alpha_beta ( un_type situation, int max_ou_pas, int alpha, int beta ) {if ( est_feuille(situation) ) return( valeur(situation) ) ; else if ( max_ou_pas ) xxx else yyy } Cas darrêt : Nous rendons la valeur de la situation !

36 16 novembre 2006Cours d'algorithmique 4 - Intranet36 alpha - beta int alpha_beta ( un_type situation, int max_ou_pas, int alpha, int beta ) {if ( est_feuille(situation) ) return( valeur(situation) ) ; else if ( max_ou_pas ) xxx else yyy } Le cas max !

37 16 novembre 2006Cours d'algorithmique 4 - Intranet37 alpha - beta int alpha_beta ( un_type situation, int max_ou_pas, int alpha, int beta ) {if ( est_feuille(situation) ) return( valeur(situation) ) ; else if ( max_ou_pas ) xxx else yyy } Le cas min !

38 16 novembre 2006Cours d'algorithmique 4 - Intranet38 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) );

39 16 novembre 2006Cours d'algorithmique 4 - Intranet39 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 !

40 16 novembre 2006Cours d'algorithmique 4 - Intranet40 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 !

41 16 novembre 2006Cours d'algorithmique 4 - Intranet41 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 !

42 16 novembre 2006Cours d'algorithmique 4 - Intranet42 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) );

43 16 novembre 2006Cours d'algorithmique 4 - Intranet43 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 !

44 16 novembre 2006Cours d'algorithmique 4 - Intranet44 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 !

45 16 novembre 2006Cours d'algorithmique 4 - Intranet45 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 !

46 16 novembre 2006Cours d'algorithmique 4 - Intranet46 A R B R E A L P H A Arbre alpha

47 16 novembre 2006Cours d'algorithmique 4 - Intranet47 alpha - beta max min 3 min 278 max min 5 min 317 min min max 3 max 126 max

48 16 novembre 2006Cours d'algorithmique 4 - Intranet48 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).

49 16 novembre 2006Cours d'algorithmique 4 - Intranet49 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 ! ! !

50 16 novembre 2006Cours d'algorithmique 4 - Intranet50 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 ! ! !

51 16 novembre 2006Cours d'algorithmique 4 - Intranet51 Arbre alpha max min 3 min 278 max min 5 min 317 min min max 3 max 126 max Un autre arbre alpha. Un autre arbre alpha.

52 16 novembre 2006Cours d'algorithmique 4 - Intranet52 Arbre alpha max min 3 min 278 max min 5 min 317 min min max 3 max 126 max Un autre arbre alpha. Un autre arbre alpha. 1 Minimax = minimum ! ! !

53 16 novembre 2006Cours d'algorithmique 4 - Intranet53 A R B R E B E T A Arbre alpha

54 16 novembre 2006Cours d'algorithmique 4 - Intranet54 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).

55 16 novembre 2006Cours d'algorithmique 4 - Intranet55 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

56 16 novembre 2006Cours d'algorithmique 4 - Intranet56 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

57 16 novembre 2006Cours d'algorithmique 4 - Intranet57 Arbre beta max min 3 min 278 max min 5 min 317 min min max 3 max 126 max Un autre arbre beta. Un autre arbre beta.

58 16 novembre 2006Cours d'algorithmique 4 - Intranet58 Arbre beta max min 3 min 278 max min 5 min 317 min min max 3 max 126 max Un autre arbre beta. Un autre arbre beta. Minimax = maximum ! ! ! 8

59 16 novembre 2006Cours d'algorithmique 4 - Intranet59 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 ) )

60 16 novembre 2006Cours d'algorithmique 4 - Intranet60 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.

61 16 novembre 2006Cours d'algorithmique 4 - Intranet61 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. 3

62 16 novembre 2006Cours d'algorithmique 4 - Intranet62 Arbre alpha et arbre beta max min 3 min 278 max min 5 min 317 min min max 3 max 126 max Un arbre beta optimal. Un arbre beta optimal. 3

63 16 novembre 2006Cours d'algorithmique 4 - Intranet63 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

64 16 novembre 2006Cours d'algorithmique 4 - Intranet64 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 !

65 16 novembre 2006Cours d'algorithmique 4 - Intranet65 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 ) : max BC

66 16 novembre 2006Cours d'algorithmique 4 - Intranet66 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

67 16 novembre 2006Cours d'algorithmique 4 - Intranet67 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 ) max alpha_opt(B)C

68 16 novembre 2006Cours d'algorithmique 4 - Intranet68 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 ) ) max alpha_opt(B)C max beta_opt(B)beta_opt(C)

69 16 novembre 2006Cours d'algorithmique 4 - Intranet69 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)

70 16 novembre 2006Cours d'algorithmique 4 - Intranet70 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

71 16 novembre 2006Cours d'algorithmique 4 - Intranet71 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 ) ) min alpha_opt(B)alpha_opt(C)

72 16 novembre 2006Cours d'algorithmique 4 - Intranet72 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 ) ) min alpha_opt(B) min beta_opt(B) alpha_opt(C) C

73 16 novembre 2006Cours d'algorithmique 4 - Intranet73 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

74 16 novembre 2006Cours d'algorithmique 4 - Intranet74 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.

75 16 novembre 2006Cours d'algorithmique 4 - Intranet75 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 !

76 16 novembre 2006Cours d'algorithmique 4 - Intranet76 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 * feuilles pour déterminer la valeur minimax de cet arbre. Il faut inspecter au minimum 2 * 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

77 16 novembre 2006Cours d'algorithmique 4 - Intranet77 Arbre alpha et arbre beta Parcours de larbre minimax optimal : Parcours de larbre minimax optimal : Cest un parcours « best-first » Cest un parcours « best-first » – lordre de parcours dépend de la « valeur » des noeuds – et non de lordre de filiation. Lalgorithme SSS* (lire : SSS star) de Stockman. Lalgorithme SSS* (lire : SSS star) de Stockman.

78 16 novembre 2006Cours d'algorithmique 4 - Intranet78 Arbres de recherche équilibrés C h a n g e o n s d e s u j e t ! A R B R E S D E R E C H E R C H E E Q U I L I B R E S ! ! !

79 16 novembre 2006Cours d'algorithmique 4 - Intranet79 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.

80 16 novembre 2006Cours d'algorithmique 4 - Intranet80 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.

81 16 novembre 2006Cours d'algorithmique 4 - Intranet81 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 !

82 16 novembre 2006Cours d'algorithmique 4 - Intranet82 Arbres de recherche équilibrés Etiquettes. Valeurs

83 16 novembre 2006Cours d'algorithmique 4 - Intranet83 Arbres de recherche équilibrés Etiquettes. Valeurs 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 ) ) ) ; }

84 16 novembre 2006Cours d'algorithmique 4 - Intranet84 Arbres de recherche équilibrés Etiquettes. Valeurs 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 ) ) ) ; } Trivial !

85 16 novembre 2006Cours d'algorithmique 4 - Intranet85 Arbres de recherche équilibrés Etiquettes. Valeurs 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 ) ) ) ; } A gauche ! ! !

86 16 novembre 2006Cours d'algorithmique 4 - Intranet86 Arbres de recherche équilibrés Etiquettes. Valeurs 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 ) ) ) ; } A gauche ! ! ! A droite ! ! !

87 16 novembre 2006Cours d'algorithmique 4 - Intranet87 Arbres de recherche équilibrés Complexité : Complexité : – Recherche : profondeur de larbre. – Insertion : profondeur de larbre. – Suppression : profondeur de larbre.

88 16 novembre 2006Cours d'algorithmique 4 - Intranet88 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 !

89 16 novembre 2006Cours d'algorithmique 4 - Intranet89 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 ».

90 16 novembre 2006Cours d'algorithmique 4 - Intranet90 Arbres de recherche équilibrés Complexité des arbres de recherche équilibrés : Complexité des arbres de recherche équilibrés : – Tout en « log n ».

91 16 novembre 2006Cours d'algorithmique 4 - Intranet91 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 ».

92 16 novembre 2006Cours d'algorithmique 4 - Intranet92 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 ».

93 16 novembre 2006Cours d'algorithmique 4 - Intranet93 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 !

94 16 novembre 2006Cours d'algorithmique 4 - Intranet94 Arbres de recherche équilibrés Si larbre est très déséquilibré : Si larbre est très déséquilibré : – Tout en « n »

95 16 novembre 2006Cours d'algorithmique 4 - Intranet95 Arbres de recherche équilibrés Si larbre est très déséquilibré : Si larbre est très déséquilibré : – Tout en « n ». Comme pour une liste : Comme pour une liste :

96 16 novembre 2006Cours d'algorithmique 4 - Intranet96 Maintien de léquilibre Les insertions et suppressions peuvent casser léquilibre : Les insertions et suppressions peuvent casser léquilibre : Situationéquilibrée

97 16 novembre 2006Cours d'algorithmique 4 - Intranet97 Maintien de léquilibre Les insertions et suppressions peuvent casser léquilibre : Les insertions et suppressions peuvent casser léquilibre : Ajout de lélément 24, léquilibre est sauvegardé !

98 16 novembre 2006Cours d'algorithmique 4 - Intranet98 Maintien de léquilibre Les insertions et suppressions peuvent casser léquilibre : Les insertions et suppressions peuvent casser léquilibre : Suppression de lélément 7 : Léquilibreestcassé!

99 16 novembre 2006Cours d'algorithmique 4 - Intranet99 A R B R E S Arbres

100 16 novembre 2006Cours d'algorithmique 4 - Intranet100 Arbres 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.

101 16 novembre 2006Cours d'algorithmique 4 - Intranet101 Arbres 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

102 16 novembre 2006Cours d'algorithmique 4 - Intranet102 Arbres 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

103 16 novembre 2006Cours d'algorithmique 4 - Intranet103 Arbres 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 !

104 16 novembre 2006Cours d'algorithmique 4 - Intranet104 Arbres 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 ) !

105 16 novembre 2006Cours d'algorithmique 4 - Intranet105 Arbres 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

106 16 novembre 2006Cours d'algorithmique 4 - Intranet106 Arbres 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

107 16 novembre 2006Cours d'algorithmique 4 - Intranet107 Arbres 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é !

108 16 novembre 2006Cours d'algorithmique 4 - Intranet108 Arbres 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 …

109 16 novembre 2006Cours d'algorithmique 4 - Intranet109 Arbres 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 racine ! La nouvelle racine !

110 16 novembre 2006Cours d'algorithmique 4 - Intranet110 Arbres 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 !

111 16 novembre 2006Cours d'algorithmique 4 - Intranet111 Arbres 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.

112 16 novembre 2006Cours d'algorithmique 4 - Intranet112 Arbres 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

113 16 novembre 2006Cours d'algorithmique 4 - Intranet113 Arbres 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

114 16 novembre 2006Cours d'algorithmique 4 - Intranet114 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 ).

115 16 novembre 2006Cours d'algorithmique 4 - Intranet115 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 ).

116 16 novembre 2006Cours d'algorithmique 4 - Intranet116 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 ).

117 16 novembre 2006Cours d'algorithmique 4 - Intranet117 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 ).

118 16 novembre 2006Cours d'algorithmique 4 - Intranet118 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 …

119 16 novembre 2006Cours d'algorithmique 4 - Intranet119 Arbres red - black Léquilibre des arbres red – black est maintenu à laide de : Léquilibre des arbres red – black est maintenu à laide de : – la rotation gauche : – la rotation droite :

120 16 novembre 2006Cours d'algorithmique 4 - Intranet120 Arbres red - black Léquilibre des arbres red – black est maintenu à laide de : Léquilibre des arbres red – black est maintenu à laide de : – la rotation gauche : – la rotation droite : a bc x yx y ab c Si « a » nest pas assez profond !

121 16 novembre 2006Cours d'algorithmique 4 - Intranet121 Arbres red - black Léquilibre des arbres red – black est maintenu à laide de : Léquilibre des arbres red – black est maintenu à laide de : – la rotation gauche : – la rotation droite : a bc x yx y ab c a bc x yxyab c Si « a » nest pas assez profond ! Si « c » nest pas assez profond !

122 16 novembre 2006Cours d'algorithmique 4 - Intranet122 Arbres AVL Une autre solution : Une autre solution : – Les AVL, cest-à-dire des arbres dont les profondeurs des sous-arbres gauche et droit diffèrent dau plus une unité, quel que soit le nœud considéré. dont les profondeurs des sous-arbres gauche et droit diffèrent dau plus une unité, quel que soit le nœud considéré. – Léquilibre est maintenu à laide des opérations de rotation gauche ou droite. – Le détail sous forme du 3e devoir.

123 16 novembre 2006Cours d'algorithmique 4 - Intranet123 Recherche textuelle C h a n g e o n s d e s u j e t ! L A L G O R I T H M E D E K N U T H - M O R R I S E T P R A T T ! ! !

124 16 novembre 2006Cours d'algorithmique 4 - Intranet124 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.

125 16 novembre 2006Cours d'algorithmique 4 - Intranet125 Algorithme K - M - P trouve = false ; for i = 0 to n-m while not( trouve ) {trouve = true ; for j = 1 to m while trouve trouve = T[ i+j ] == P[ j ] ; i = i + 1 ; } resultat = ( trouve, i ) ; Premier algorithme :

126 16 novembre 2006Cours d'algorithmique 4 - Intranet126 Algorithme K - M - P trouve = false ; for i = 0 to n-m while not( trouve ) {trouve = true ; for j = 1 to m while trouve trouve = T[ i+j ] == P[ j ] ; i = i + 1 ; } resultat = ( trouve, i ) ; Premier algorithme : Finalement, nous dirons si nous avons trouvé ou non, et où ça !

127 16 novembre 2006Cours d'algorithmique 4 - Intranet127 Algorithme K - M - P trouve = false ; for i = 0 to n-m while not( trouve ) {trouve = true ; for j = 1 to m while trouve trouve = T[ i+j ] == P[ j ] ; i = i + 1 ; } resultat = ( trouve, i ) ; Premier algorithme : Nous cherchons la séquence des « m » caractères du motif et nous abandonnons dès quil y a un échec !

128 16 novembre 2006Cours d'algorithmique 4 - Intranet128 Algorithme K - M - P trouve = false ; for i = 0 to n-m while not( trouve ) {trouve = true ; for j = 1 to m while trouve trouve = T[ i+j ] == P[ j ] ; i = i + 1 ; } resultat = ( trouve, i ) ; Premier algorithme : Nous continuons la recherche sur tous les débuts possibles et tant que nous navons pas trouvé !

129 16 novembre 2006Cours d'algorithmique 4 - Intranet129 Algorithme K - M - P trouve = false ; for i = 0 to n-m while not( trouve ) {trouve = true ; for j = 1 to m while trouve trouve = T[ i+j ] == P[ j ] ; i = i + 1 ; } resultat = ( trouve, i ) ; Premier algorithme : Complexité : O( n * m )

130 16 novembre 2006Cours d'algorithmique 4 - Intranet130 Algorithme K - M - P Principe de cet algorithme : Echec ! ! !

131 16 novembre 2006Cours d'algorithmique 4 - Intranet131 Algorithme K - M - P Principe de cet algorithme : Echec ! ! ! Nous recommençons une case plus loin avec le pattern entier.

132 16 novembre 2006Cours d'algorithmique 4 - Intranet132 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 !

133 16 novembre 2006Cours d'algorithmique 4 - Intranet133 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 : Nous poursuivons normalement jusquà avoir reconnu tout le pattern !

134 16 novembre 2006Cours d'algorithmique 4 - Intranet134 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 : Sur un échec, nous recommençons au premier caractère du pattern et le caractère convenable de T.

135 16 novembre 2006Cours d'algorithmique 4 - Intranet135 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 : Est-ce que nous avons pu aller à la fin du pattern et où ça ?

136 16 novembre 2006Cours d'algorithmique 4 - Intranet136 Algorithme K - M - P Problème avec cet algorithme : Nous retournons en arrière dans le texte ! Dernière case lue ! ! !

137 16 novembre 2006Cours d'algorithmique 4 - Intranet137 Algorithme K - M - P Problème avec cet algorithme : Nous retournons en arrière dans le texte ! Dernière case lue ! ! ! Nous retournons en arrière vers cette case !

138 16 novembre 2006Cours d'algorithmique 4 - Intranet138 Algorithme K - M - P Or, il est inutile de retourner en arrière dans le texte ! Nous connaissons les valeurs, car ce sont les mêmes que celles du pattern! Dernière case lue ! ! !

139 16 novembre 2006Cours d'algorithmique 4 - Intranet139 Algorithme K - M - P Or, il est inutile de retourner en arrière dans le texte ! Nous connaissons les valeurs, car ce sont les mêmes que celles du pattern! Dernière case lue ! ! ! xy xy z z

140 16 novembre 2006Cours d'algorithmique 4 - Intranet140 Algorithme K - M - P Or, il est inutile de retourner en arrière dans le texte ! Nous connaissons les valeurs, car ce sont les mêmes que celles du pattern! Dernière case lue ! ! ! xy xy z z xyz

141 16 novembre 2006Cours d'algorithmique 4 - Intranet141 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,...

142 16 novembre 2006Cours d'algorithmique 4 - Intranet142 Algorithme K - M - P Quelques cas de figure : A B X i 1 Y

143 16 novembre 2006Cours d'algorithmique 4 - Intranet143 Algorithme K - M - P Quelques cas de figure : A B X i A B i Y Cest en fait lunique cas de figure où nous avançons dans T !

144 16 novembre 2006Cours d'algorithmique 4 - Intranet144 Algorithme K - M - P Quelques cas de figure : A B X i 4 CD A B C

145 16 novembre 2006Cours d'algorithmique 4 - Intranet145 Algorithme K - M - P Quelques cas de figure : A B X i 1 4 CD A B C A B CD

146 16 novembre 2006Cours d'algorithmique 4 - Intranet146 Algorithme K - M - P Avancer dune case ne sert à rien : A B X i 1 4 CD A B C A B CD P [ 1 ] = P [ 2 ] /

147 16 novembre 2006Cours d'algorithmique 4 - Intranet147 Algorithme K - M - P Avancer de deux cases ne sert à rien : A B X i 1 4 CD A B C A B CD P [ 1 ] = P [ 3 ] /

148 16 novembre 2006Cours d'algorithmique 4 - Intranet148 Algorithme K - M - P Quelques cas de figure : A B X i 5 C A B A B A B

149 16 novembre 2006Cours d'algorithmique 4 - Intranet149 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

150 16 novembre 2006Cours d'algorithmique 4 - Intranet150 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

151 16 novembre 2006Cours d'algorithmique 4 - Intranet151 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

152 16 novembre 2006Cours d'algorithmique 4 - Intranet152 Algorithme K - M - P Quelques cas de figure : A B X i 4 C A B A B A

153 16 novembre 2006Cours d'algorithmique 4 - Intranet153 Algorithme K - M - P Quelques cas de figure : A B X i 2 4 C A B A B A B A CA B

154 16 novembre 2006Cours d'algorithmique 4 - Intranet154 Algorithme K - M - P Quelques cas de figure : A B X i 2 4 C A B A B A B A CA B Nous pourrions faire un peu mieux !

155 16 novembre 2006Cours d'algorithmique 4 - Intranet155 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 !

156 16 novembre 2006Cours d'algorithmique 4 - Intranet156 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 !

157 16 novembre 2006Cours d'algorithmique 4 - Intranet157 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 ! next [ 5 ] = 3 Nous restons sur i ! A B X i 3 5 C A B A B A B A B CA B

158 16 novembre 2006Cours d'algorithmique 4 - Intranet158 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 !

159 16 novembre 2006Cours d'algorithmique 4 - Intranet159 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 ! Si lerreur a lieu pour le premier caractère du motif, nous avançons sur le texte !

160 16 novembre 2006Cours d'algorithmique 4 - Intranet160 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 ! Si lerreur a lieu pour le premier caractère du motif, nous avançons sur le texte ! Dans tous les cas, nous retournons au caractère next[ j ] dans le motif !

161 16 novembre 2006Cours d'algorithmique 4 - Intranet161 Algorithme K - M - P Construisons next [ 1.. m ] : Construisons next [ 1.. m ] : – next [ 1 ] = 1 ! – next [ 2 ] = 1 !

162 16 novembre 2006Cours d'algorithmique 4 - Intranet162 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.

163 16 novembre 2006Cours d'algorithmique 4 - Intranet163 Algorithme K - M - P Exemple : Exemple : – Soit P = A B A B C et k = 5 (erreur sur C ). – P [ ] = A B A B – P [ ] = B A B

164 16 novembre 2006Cours d'algorithmique 4 - Intranet164 Algorithme K - M - P Exemple : Exemple : – Soit P = A B A B C et k = 5 (erreur sur C ). – P [ ] = A B A B – P [ ] = B A B l = 2

165 16 novembre 2006Cours d'algorithmique 4 - Intranet165 Algorithme K - M - P Exemple : Exemple : – Soit P = A B A B C et k = 5 (erreur sur C ). – P [ ] = A B A B – P [ ] = B A B – next [ 5 ] = 3 l = 2

166 16 novembre 2006Cours d'algorithmique 4 - Intranet166 Algorithme K - M - P Exemple : Exemple : – Soit P = A B A B C et k = 5 (erreur sur C ). – P [ ] = A B A B – P [ ] = B A B – next [ 5 ] = 3 A B X i 3 5 C A B A B A B A B CA B l = 2

167 16 novembre 2006Cours d'algorithmique 4 - Intranet167 Algorithme K - M - P Exemple : Exemple : – Soit P = A B A B C et k = 5 (erreur sur C ). – P [ ] = A B A B – P [ ] = B A B – next [ 5 ] = 3 A B X i 3 5 C A B A B A B A B CA B l = 2

168 16 novembre 2006Cours d'algorithmique 4 - Intranet168 Algorithme K - M - P /* Les initialisations sont triviales */ next[ 1 ] = 1 ; next[ 2 ] = 1 ; /* Boucle de calcul des next[ k ] */ for k = 3 to m do next[ k ] = calc_next( k, P ) ; Calcul des next[ k ] pour k variant de 1 à m !

169 16 novembre 2006Cours d'algorithmique 4 - Intranet169 Algorithme K - M - P /* Les initialisations sont triviales */ next[ 1 ] = 1 ; next[ 2 ] = 1 ; /* Boucle de calcul des next[ k ] */ for k = 3 to m do next[ k ] = calc_next( k, P ) ; Calcul des next[ k ] pour k variant de 1 à m !

170 16 novembre 2006Cours d'algorithmique 4 - Intranet170 Algorithme K - M - P /* Les initialisations sont triviales */ next[ 1 ] = 1 ; next[ 2 ] = 1 ; /* Boucle de calcul des next[ k ] */ for k = 3 to m do next[ k ] = calc_next( k, P ) ; Calcul des next[ k ] pour k variant de 1 à m !

171 16 novembre 2006Cours d'algorithmique 4 - Intranet171 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 ) ; } Les modifications par rapport au programme précédent !

172 16 novembre 2006Cours d'algorithmique 4 - Intranet172 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 ?

173 16 novembre 2006Cours d'algorithmique 4 - Intranet173 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 ? Suffixe Préfixe

174 16 novembre 2006Cours d'algorithmique 4 - Intranet174 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 ? Suffixe Préfixe Suite à un échec : Suffixe Préfixe

175 16 novembre 2006Cours d'algorithmique 4 - Intranet175 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 ) ; } Utilisons les next [ … ] déjà calculés !

176 16 novembre 2006Cours d'algorithmique 4 - Intranet176 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 ) ; } Utilisons les next [ … ] déjà calculés ! 1 <= j < i < k

177 16 novembre 2006Cours d'algorithmique 4 - Intranet177 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 ) ; } Utilisons les next [ … ] déjà calculés ! 1 <= j < i < k

178 16 novembre 2006Cours d'algorithmique 4 - Intranet178 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 ) ; } Utilisons les next [ … ] déjà calculés ! 1 <= j < i < k

179 16 novembre 2006Cours d'algorithmique 4 - Intranet179 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 ) ; } Utilisons les next [ … ] déjà calculés ! 1 <= j < i < k /* k > 2 */

180 16 novembre 2006Cours d'algorithmique 4 - Intranet180 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 ) ; } Utilisons les next [ … ] déjà calculés ! 1 <= j < i < k {if ( j == 1 ) i = i+1 ; i = i+1 ; j = next[ j ] ; } j = next[ j ] ; }

181 16 novembre 2006Cours d'algorithmique 4 - Intranet181 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 {if ( j == 1 ) i = i+1 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; }

182 16 novembre 2006Cours d'algorithmique 4 - Intranet182 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 {if ( j == 1 ) i = i+1 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Calculons tous les next [ … ] en même temps.

183 16 novembre 2006Cours d'algorithmique 4 - Intranet183 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 {if ( j == 1 ) i = i+1 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Supposons que maintenant i == k ! Calculons tous les next [ … ] en même temps.

184 16 novembre 2006Cours d'algorithmique 4 - Intranet184 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 {if ( j == 1 ) i = i+1 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Supposons que maintenant i == k ! Comme : next[ k ] = calc_next( k, P ) Calculons tous les next [ … ] en même temps.

185 16 novembre 2006Cours d'algorithmique 4 - Intranet185 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 {if ( j == 1 ) i = i+1 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Supposons que maintenant i == k ! Comme : next[ k ] = calc_next( k, P ) Nous calculons en fait : next[ k ] = j next[ k ] = j Calculons tous les next [ … ] en même temps.

186 16 novembre 2006Cours d'algorithmique 4 - Intranet186 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 {if ( j == 1 ) i = i+1 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Supposons que maintenant i == k ! Comme : next[ k ] = calc_next( k, P ) Nous calculons en fait : next[ k ] = j cest-à-dire next[ k ] = j cest-à-dire next[ i ] = j next[ i ] = j Calculons tous les next [ … ] en même temps.

187 16 novembre 2006Cours d'algorithmique 4 - Intranet187 Algorithme K - M - P calc_next ( k, P ) = {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 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Calculons tous les next [ … ] en même temps.

188 16 novembre 2006Cours d'algorithmique 4 - Intranet188 Algorithme K - M - P calc_next ( k, P ) = {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 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Supposons que maintenant i == k ! Calculons tous les next [ … ] en même temps.

189 16 novembre 2006Cours d'algorithmique 4 - Intranet189 Algorithme K - M - P calc_next ( k, P ) = {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 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Supposons que maintenant i == k ! Comme : next[ k ] = calc_next( k, P ) Calculons tous les next [ … ] en même temps.

190 16 novembre 2006Cours d'algorithmique 4 - Intranet190 Algorithme K - M - P calc_next ( k, P ) = {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 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Supposons que maintenant i == k ! Comme : next[ k ] = calc_next( k, P ) Nous calculons en fait : next[ k ] = 1 next[ k ] = 1 Calculons tous les next [ … ] en même temps.

191 16 novembre 2006Cours d'algorithmique 4 - Intranet191 Algorithme K - M - P calc_next ( k, P ) = {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 ; j = next[ j ] ; } jusqua ( i >= k ) ; return( j ) ; } Supposons que maintenant i == k ! Comme : next[ k ] = calc_next( k, P ) Nous calculons en fait : next[ k ] = 1 cest-à-dire next[ k ] = 1 cest-à-dire next[ i ] = 1 next[ i ] = 1 Calculons tous les next [ … ] en même temps.

192 16 novembre 2006Cours d'algorithmique 4 - Intranet192 Algorithme K - M - P calc_next ( k, P ) = {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 >= k ) ; return( j ) ; } Calculons tous les next [ … ] en même temps.

193 16 novembre 2006Cours d'algorithmique 4 - Intranet193 Algorithme K - M - P calc_next ( k, P ) = {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 >= k ) ; return( j ) ; } Calculons tous les next [ … ] en même temps. Lorsque k = m nous calculons tous les next [ … ] au passage!

194 16 novembre 2006Cours d'algorithmique 4 - Intranet194 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 ] ! ! !

195 16 novembre 2006Cours d'algorithmique 4 - Intranet195 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 ] ! ! ! k = m ! Les autres next[ … ] sont calculés au passage !

196 16 novembre 2006Cours d'algorithmique 4 - Intranet196 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 ] ! ! ! k = m ! Les autres next[ … ] sont calculés au passage ! Complexité : O ( m )

197 16 novembre 2006Cours d'algorithmique 4 - Intranet197 Synthèse Lalgorithme alpha-beta. Lalgorithme alpha-beta. Arbres alpha et beta et propriétés. Arbres alpha et beta et propriétés. Arbres de recherche équilibrés : Arbres de recherche équilibrés : – les contraintes, certaines solutions. Recherche textuelle. Recherche textuelle.

198 16 novembre 2006Cours d'algorithmique 4 - Intranet198 m E r C i e T b O n N e J o U r N é E ! ! ! n O u B l I e Z p A s D e p R é P a R e R v O s T D ! ! !


Télécharger ppt "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."

Présentations similaires


Annonces Google