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.

Slides:



Advertisements
Présentations similaires
Présentation générale Marc Gengler
Advertisements


Introduction à l’Algorithmique
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Algorithmes à base darbre BSP. Principe Se servir dune structure arborescente afin déliminer le traitement dune branche entière sur un test de visualisation.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d’Algorithmique
Problème des 4 couleurs, graphes planaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
Cours d’Algorithmique
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.
Cours de graphes Les plus courts chemins,
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
21 septembre 2007Cours de compilation 2 - Intranet1 Cours de compilation Evaluation partielle etcompilation.
Analyse syntaxique (intro)
Cours d'algorithmique 8 - Intranet 1 4 décembre 2006 Cours dAlgorithmique Dérécursion (fin) : Équivalences entre programmes récursifs et programmes itératifs.
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Cours d’Algorithmique
Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.
Journées Graphes & Algorithmes, Novembre 2006, Orléans
Cours d’Algorithmique
Cours d'algorithmique 2 - Intranet 1 8 novembre 2006 Cours dAlgorithmique Listes, piles et files. Arbres. Types de données abstraits. Implantations.
Cours d’Algorithmique
Module 6 : Programmation dynamique
ALGORITHMES RECURSIFS
Cours d’Algorithmique
Les jeux (méthodes min-max et -)
MinMax et Alpha-Beta.
Les algorithmes: complexité et notation asymptotique
Problème des 4 couleurs, graphes planaires.
Quelques applications.
Quelques graphes particuliers.
Détection de co-évolution de gènes Master 2 : Informatique à Finalité Professionnelle et Recherche Unifiée (IFPRU) Parcours Ingénierie de lIntelligence.
Cours de graphes Les arbres et arborescences.
Introduction - Modèle Discret – Modèle Continu - Algorithmes - Conclusion
16 mars 2007Cours de graphes 7 - Intranet1 Cours de graphes Problèmes NP-complets. Réductions polynômiales.
LES ARBRES IUP 2 Génie Informatique
Programmation linéaire et Recherche opérationnelle
Cours de graphes Marc Gengler Alexandra Bac Sébastien Fournier
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Cours de graphes 6 - Intranet
23 février 2007Cours de graphes 4 - Intranet1 Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut. Algos de Ford-Fulkerson et Edmonds-Karp.
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
Pour le chemin le plus court pour tous les couples
Analyse des Algorithmes
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
LES PILES ET FILES.
Programmation procédurale preuves D. Preuves Preuves sur les R-algorithmes. Règle de l'appel (Hoare). Exemple Preuves sur les B-algorithmes (Floyd) Automatisation.
Méthodes de tri.
Algorithmes Branch & Bound
Arbres binaires et tables de hachage
I.A. Session 2009/2010 E.P.S.I. Bordeaux – C.S.I.I – 2 ème Année – Cours n°6.
STATISTIQUES – PROBABILITÉS
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI.
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours d’Algorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Partie II : Segmentation
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Transcription de la présentation:

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.

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

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

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

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 ]. ? ? ? ?

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 ]. ?

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 ]

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 !

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 !

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 ! ! !

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

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.

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

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

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 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

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

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 !

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 * 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

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 !

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

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 ».

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 !

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

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

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

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

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

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

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

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 …

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.

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.

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 !

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,...

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

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

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 !

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 !

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.

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 ?

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 ] ! ! !