d algorithmique D. Beauquier, J. Berstel, Ph. Chrétienne



Documents pareils
Rappels sur les suites - Algorithme

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

ARBRES BINAIRES DE RECHERCHE

Image d un intervalle par une fonction continue

La fonction exponentielle

Définitions. Numéro à préciser. (Durée : )

3 Approximation de solutions d équations

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Fonctions de plusieurs variables

Représentation des Nombres

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

LE PROBLEME DU PLUS COURT CHEMIN

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Continuité et dérivabilité d une fonction

Correction de l examen de la première session

Chapitre 5 : Flot maximal dans un graphe

Algorithme. Table des matières

Les indices à surplus constant

LES TYPES DE DONNÉES DU LANGAGE PASCAL


Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Chapitre 7. Récurrences

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Programmation linéaire

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Résolution de systèmes linéaires par des méthodes directes

Initiation à l algorithmique

Correction du Baccalauréat S Amérique du Nord mai 2007

Licence Sciences et Technologies Examen janvier 2010

Quelques Algorithmes simples

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours d Analyse. Fonctions de plusieurs variables

Chapitre 2 Le problème de l unicité des solutions

Chapitre 0 Introduction à la cinématique

Cours3. Applications continues et homéomorphismes. 1 Rappel sur les images réciproques

F411 - Courbes Paramétrées, Polaires

Objets Combinatoires élementaires

ÉPREUVE COMMUNE DE TIPE Partie D

Limites finies en un point

I. Polynômes de Tchebychev

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Résolution d équations non linéaires

Raisonnement par récurrence Suites numériques

Texte Agrégation limitée par diffusion interne

Représentation d un entier en base b

Logique. Plan du chapitre

Fibonacci et les paquerettes

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Polynômes à plusieurs variables. Résultant

Théorème du point fixe - Théorème de l inversion locale

Complément d information concernant la fiche de concordance

Architecture des Systèmes d Information Architecture des Systèmes d Information

Introduction à MATLAB R

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Feuille TD n 1 Exercices d algorithmique éléments de correction

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Chaînes de Markov au lycée

Corrigé des TD 1 à 5

Plus courts chemins, programmation dynamique

Chapitre VI - Méthodes de factorisation

Probabilités sur un univers fini

1 Recherche en table par balayage

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Développement décimal d un réel

Probabilités sur un univers fini

Optimisation, traitement d image et éclipse de Soleil

V- Manipulations de nombres en binaire

CCP PSI Mathématiques 1 : un corrigé

Chp. 4. Minimisation d une fonction d une variable

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Recherche dans un tableau

Programmes des classes préparatoires aux Grandes Ecoles

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

Chapitre 1 : Évolution COURS

Algorithmique et Programmation

Introduction à l étude des Corps Finis

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

MIS 102 Initiation à l Informatique

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Le produit semi-direct

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Catalogue des connaissances de base en mathématiques dispensées dans les gymnases, lycées et collèges romands.

Continuité d une fonction de plusieurs variables

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

Continuité en un point

EXCEL TUTORIEL 2012/2013

Université Paris-Dauphine DUMI2E 1ère année, Applications

Précision d un résultat et calculs d incertitudes

Transcription:

Éléments d algorithmique D. Beauquier, J. Berstel, Ph. Chrétienne 6 février 005

c D. Beauquier, J. Berstel, Ph. Chrétienne, 003 Première édition par Masson, 99.

3 à Bruno Sophie Bruno Clara Jérôme Solange

4

TABLE DES MATIÈRES I Table des matières Avant-propos XIV Préliminaires. Les algorithmes et leur coût........................... Algorithmes................................ Problèmes intraitables..........................3 Sur la présentation d algorithmes.................. 3. Mesures du coût............................... 4.. Coût dans le cas le plus défavorable................ 4.. Coût moyen.............................. 4..3 Coût amorti.............................. 6.3 Une borne inférieure............................. 9 Evaluations 3 Introduction..................................... 3. Notations de Landau............................. 4.. Notation O.............................. 4.. Notations Ω et θ........................... 6..3 Exemples............................... 7. Récurrences.................................. 0.. Récurrences linéaires à coefficients constants........... 0.. Récurrences diverses......................... 6..3 Récurrences de partitions...................... 9..4 Récurrences complètes........................ 33 Notes........................................ 35 Exercices...................................... 35 3 Structures de données 37 3. Types de données et structures de données................. 37 3. Les structures linéaires............................ 39 3.. Piles.................................. 40 3.. Files.................................. 4 3..3 Listes................................. 44 3.3 Arbres..................................... 5 3.3. Arbres binaires............................ 5 3.3. Dictionnaires et arbres binaires de recherche............ 5

II TABLE DES MATIÈRES 3.3.3 Arborescences............................. 55 3.4 Files de priorité................................ 56 3.5 Gestion des partitions............................ 6 3.5. Le problème union-find...................... 6 3.5. Union pondérée et compression des chemins............ 6 3.5.3 Preuve du théorème......................... 65 Notes........................................ 69 Exercices...................................... 70 4 Graphes 73 Introduction..................................... 73 4. Définitions et propriétés élémentaires.................... 74 4.. Définitions.............................. 74 4.. Implémentations d un graphe.................... 75 4..3 Chemins, chaînes, circuits, cycles.................. 76 4..4 Lemme de König........................... 77 4..5 Graphes sans circuit......................... 78 4. Accessibilité.................................. 80 4.. Algorithme de Roy-Warshall.................... 8 4.. Autres problèmes d accessibilité................... 8 4..3 Semi-anneaux et accessibilité.................... 86 4..4 Forte connexité............................ 89 4.3 Arbres et arborescences........................... 90 4.3. Arbres................................. 90 4.3. Arborescences............................. 93 4.3.3 Arborescences ordonnées....................... 94 4.3.4 Arbres positionnés et arbres binaires................ 95 4.3.5 Arbre binaire complet........................ 95 4.4 Parcours d un graphe............................. 97 4.4. Parcours d un graphe non orienté.................. 97 4.4. Parcours en profondeur....................... 0 4.4.3 Parcours en largeur......................... 04 4.4.4 Parcours d un graphe orienté.................... 06 4.4.5 Calcul des composantes fortement connexes............ 4.4.6 Parcours d une arborescence..................... 5 Notes........................................ 7 Exercices...................................... 7 5 Tris Introduction..................................... 5. Tri interne................................... 5.. Le tri rapide............................. 5.. Le tri fusion.............................. 8 5..3 Le tri par tas............................. 30 5. Tri externe.................................. 3 5.. Construction des monotonies.................... 33 5.. Répartition des monotonies..................... 34

TABLE DES MATIÈRES III Notes........................................ 40 Exercices...................................... 40 6 Arbres et ensembles ordonnés 45 Introduction..................................... 45 6. Arbres de recherche............................. 47 6.. Définition............................... 47 6.. Rotations............................... 50 6. Arbres AVL.................................. 5 6.. Définition............................... 5 6.. Insertion................................ 54 6..3 Suppression.............................. 56 6..4 Arbres balisés............................. 59 6.3 Arbres a b................................... 60 6.3. Définition............................... 60 6.3. Recherche d un élément....................... 6 6.3.3 Insertion d un élément........................ 6 6.3.4 Suppression d un élément...................... 63 6.3.5 Concaténation et scission...................... 67 6.3.6 Coût amorti des arbres 4..................... 69 6.4 Arbres bicolores................................ 73 6.4. Présentation............................. 73 6.4. Hauteur d un arbre bicolore..................... 75 6.4.3 Insertion dans un arbre bicolore................... 77 6.4.4 Suppression d un élément dans un arbre bicolore......... 79 6.5 Enrichissement................................ 8 6.6 Arbres persistants.............................. 86 6.6. Ensembles ordonnés persistants................... 86 6.6. Duplication de chemins....................... 88 6.6.3 Méthode de duplication des sommets pleins............ 95 Notes........................................ 03 Exercices...................................... 03 7 Graphes valués Introduction..................................... 7. Arbre couvrant de coût minimum...................... 7.. Définition du problème........................ 7.. Propriétés des arbres optimaux................... 7..3 Algorithme général.......................... 4 7..4 Algorithmes spécifiques....................... 4 7. Chemins de coût minimum......................... 9 7.. Définition du problème........................ 0 7.. Existence d une solution....................... 7..3 Itération fondamentale........................ 3 7..4 Algorithme de Ford......................... 4 7..5 Graphe sans circuit.......................... 6 7..6 Algorithme de Dijkstra....................... 6

IV TABLE DES MATIÈRES 7..7 Algorithme A............................. 9 7..8 Algorithme paps.......................... 3 Notes........................................ 34 Exercices...................................... 35 8 Flots 39 8. Préliminaires................................. 40 8. Flots d un réseau............................... 4 8.. Existence d un flot compatible de coût minimum......... 4 8.. Quelques problèmes particuliers................... 44 8..3 Trois propriétés fondamentales................... 46 8.3 Problème du flot maximum......................... 5 8.3. L algorithme générique de Ford et Fulkerson............ 55 8.3. L algorithme des distances estimées au puits............ 57 8.3.3 L algorithme du préflot....................... 63 8.3.4 L algorithme de Karzanov...................... 69 8.3.5 L algorithme des excès échelonnés................. 70 8.4 Flot de coût minimum............................ 7 8.4. Graphe d écart et conditions d optimalité............. 73 8.4. Problème dual et conditions d optimalité............. 73 8.4.3 Un algorithme primal........................ 75 8.4.4 Flot maximum de coût minimum.................. 80 8.4.5 Plan de transport de coût minimum................ 85 Notes........................................ 89 Exercices...................................... 90 9 Automates 93 Introduction..................................... 93 9. Mots et langages............................... 94 9. Automates finis................................ 95 9.. Définition............................... 95 9.. Exemples............................... 96 9..3 Automates déterministes....................... 97 9.3 Opérations.................................. 30 9.3. Opérations booléennes........................ 30 9.3. Automates asynchrones....................... 30 9.3.3 Produit et étoile........................... 303 9.4 Langages rationnels.............................. 303 9.4. Langages rationnels : définitions.................. 303 9.4. Le théorème de Kleene........................ 304 9.4.3 Expressions rationnelles....................... 308 9.5 Automate minimal.............................. 3 9.5. Quotients............................... 3 9.5. Equivalence de Nerode........................ 35 9.6 Calcul de l automate minimal........................ 38 9.6. Construction de Moore....................... 38 9.6. Scinder une partition......................... 39

TABLE DES MATIÈRES V 9.6.3 Algorithme de Hopcroft....................... 3 9.6.4 Complexité de l algorithme..................... 37 Notes........................................ 333 Exercices...................................... 333 0 Motifs 337 Introduction..................................... 337 0. Recherche d un motif............................. 338 0.. Un algorithme naïf.......................... 339 0.. L algorithme de Morris et Pratt................... 340 0..3 Bords................................. 344 0..4 L algorithme de Knuth, Morris et Pratt.............. 346 0..5 L automate des occurrences..................... 350 0..6 L algorithme de Simon........................ 354 0. L algorithme de Boyer et Moore....................... 358 0.. Algorithme de Horspool....................... 358 0.. Algorithme de Boyer et Moore................... 360 0..3 Fonction du bon suffixe....................... 364 0.3 L algorithme de Aho et Corasick...................... 367 0.4 Recherche d expressions........................... 369 0.4. Calcul efficace d un automate.................... 370 0.4. Recherche d occurrences....................... 37 Notes........................................ 375 Exercices...................................... 376 Géométrie algorithmique 379. Notions préliminaires............................. 379.. Notations............................... 380.. Lignes polygonales, polygones.................... 38..3 Ordre polaire, circuit polaire.................... 38. Enveloppe convexe.............................. 386.. Généralités.............................. 386.. Marche de Jarvis........................... 389..3 Algorithme de Graham....................... 390..4 Algorithme dichotomique...................... 393..5 Gestion dynamique d une enveloppe convexe........... 395.3 Localisation de points dans le plan..................... 403.3. Cas d un polygone simple...................... 404.3. Cas d un polygone simple convexe................. 405.3.3 Cas d une subdivision planaire généralisée............. 406.4 Diagrammes de Voronoï........................... 408.4. Diagrammes de Voronoï de points................. 408.4. L algorithme de Fortune....................... 4.4.3 Diagramme de Voronoï de segments................ 4 Notes........................................ 46 Exercices...................................... 47

VI TABLE DES MATIÈRES Planification de trajectoires 43 Introduction..................................... 43. Translation d un segment.......................... 433.. Présentation du problème...................... 433.. Présentation de l algorithme..................... 434..3 Prétraitement des données..................... 440..4 Résolution du problème de translation............... 445. Déplacement d un disque.......................... 446.. Introduction............................. 446.. Rétraction Diagramme de Voronoï............... 447..3 Exposé de l algorithme........................ 450..4 Remarques.............................. 455 Notes........................................ 455 Index 457 Notes et Compléments 463

LISTE DES FIGURES VII Liste des figures Préliminaires 3. L arbre de décision d un algorithme de tri............... 0 Evaluations. Les arbres binaires de hauteur h............... 8 Structures de données. Une liste et une place.......................... 39. Un pile représentée par une liste chaînée................ 4.3 La file (c, a, b, c, c, a, b, d, a, c, c, d).................... 43.4 Effet de chainer(p,q).......................... 48.5 Effet de dechainer(q).......................... 48 3. Une arborescence représentée comme arbre binaire........... 55 4. Les arbres parfaits à 6, 7, et 8 sommets................. 56 4. Un arbre tournoi............................. 57 4.3 Un tas (tournoi parfait)......................... 57 4.4 Mise en place de la clé 7 par comparaison aux fils........... 59 5. Partition en trois classes, de noms, 3, et 7.............. 6 5. Compression d un chemin........................ 64 5.3 Un arbre fileté.............................. 7 5.4 Un tournoi et sa pagode......................... 7 Graphes. Sous-graphes............................... 74. Implémentations d un graphe...................... 75.3 Un graphe sans circuit.......................... 79.4 Classement par rang........................... 80. Un graphe orienté et sa matrice d adjacence.............. 8. Un graphe étiqueté............................ 84.3 Un graphe orienté et son graphe réduit................. 90 3. Un arbre à quatorze sommets...................... 9 3. Le graphe G u............................... 9 3.3 Structure récursive d une arborescence................. 93 3.4 Une arborescence............................. 94 3.5 Arbre binaire et arbre binaire complet................. 96 3.6 Les premiers arbres binaires complets.................. 96

VIII LISTE DES FIGURES 3.7 Effeuillage d un arbre binaire complet.................. 97 3.8 Complétion d un arbre binaire...................... 98 4. Bordure d un sous-ensemble de sommets................ 98 4. Parcours d un graphe et arbre couvrant................. 00 4.3 Parcours en profondeur......................... 03 4.4 Parcours en largeur........................... 05 4.5 Un graphe non orienté non connexe................... 06 4.6 Bordure pour un graphe orienté..................... 06 4.7 Un graphe orienté............................ 07 4.8 Rangs d attache et points d attache................... 0 4.9 Une exécution de Desc......................... 3 4.0 Une arborescence............................. 6 4. Un arbre binaire............................. 7 Tris. Un pivotage............................... 4. Dernier échange d un couple inversé................... 5.3 Appels récursifs du tri rapide...................... 5.4 Un peigne............................... 6.5 Un tri fusion............................... 30.6 Un tri par tas.............................. 3. Sélection et remplacement........................ 34. Le tri équilibré.............................. 35.3 Répartition des monotonies fantômes.................. 39 Arbres et ensembles ordonnés. Un arbre binaire de recherche...................... 47. Un arbre sans balises........................... 48.3 L arbre avec balises........................... 48.4 L arbre après insertion de la dernière clé................ 49.5 Insertion de 6 dans l arbre balisé.................... 49.6 Suppression de 5 dans l arbre balisé................... 50.7 L arbre A = (x, B, C).......................... 50.8 Rotations gauche et droite........................ 5.9 Rotation gauche-droite.......................... 5.0 Rotation droite-gauche.......................... 5. Un arbre AVL.............................. 5. Arbres de Fibonacci Φ k pour k =, 3, 4, 5................ 53.3 Le chemin γ de rééquilibrage...................... 55.4 L arbre de racine x avant et après insertion............... 55.5 Cas () : une rotation simple rétablit l équilibre............ 56.6 Cas () : une rotation double rétablit l équilibre............ 56.7 Le chemin de rééquilibrage....................... 57.8 L arbre de racine x avant et après suppression............. 57.9 Une rotation simple sur le chemin de rééquilibrage........... 58.0 Une rotation double sur le chemin de rééquilibrage........... 58. Arbre de Fibonacci avant la suppression de la clé.......... 59

LISTE DES FIGURES IX. Après suppression et rééquilibrage.................... 59 3. Un arbre 4............................... 60 3. Insertion d une feuille, cas c < c i.................... 6 3.3 Insertion d une feuille, cas c > c i.................... 6 3.4 Règle d éclatement............................ 63 3.5 L arbre après insertion de 5...................... 63 3.6 Règle de fusion.............................. 64 3.7 Règle du partage............................. 64 3.8 Un arbre 4............................... 65 3.9 Après suppression de et avant rééquilibrage............. 66 3.0 Après partage avec le frère droit..................... 66 3. Après fusion avec le frère gauche.................... 66 3. Un arbre 4 avant la scission par la clé 36............... 68 3.3 Les deux forêts F et F après la séparation.............. 68 3.4 Reconstitution de l arbre à partir de la forêt F............ 69 3.5 Eclatement de x............................. 7 3.6 Partage entre les frères s et t...................... 7 3.7 Fusion des frères s et t.......................... 7 4. Un arbre bicolore : (a) avec ses feuilles, (b) sans feuilles........ 73 4. Affectation d une couleur à un nœud en fonction du rang....... 75 4.3 Attribution d un rang aux sommets de l arbre de la première figure.. 75 4.4 Les trois cas possibles.......................... 76 4.5 Première phase de l insertion de A dans A............... 77 4.6 Rééquilibrage après une insertion : règle γ............... 77 4.7 Rééquilibrage après une insertion : règles α............... 78 4.8 Rééquilibrage après une insertion : règles β............... 78 4.9 Rééquilibrage après insertion de A................... 79 4.0 Première phase de suppression d un élément dans un arbre bicolore. 80 4. Rééquilibrage après une suppression : règles (a ), (a ), (a 3 )...... 8 4. Rééquilibrage après une suppression : règles (b ), (b ), (b 3 )....... 8 4.3 Suppression de p............................. 8 5. Un arbre 3 à liaisons par niveau................... 84 5. Une liste doublement chaînée sur les sommets d un arbre....... 84 5.3 Les numéros d ordre (en blanc) et les tailles (en noir)......... 85 6. Persistance par recopie intégrale..................... 87 6. Duplication de chemin.......................... 89 6.3 Modifications de pointeurs dans une rotation gauche.......... 89 6.4 Première phase de l insertion...................... 90 6.5 Insertion d un nouvel élément phase................. 9 6.6 Rééquilibrage par rotation gauche lors d une insertion......... 9 6.7 Insertion d un nouvel élément phase................. 9 6.8 Suppression d un élément - phase................... 9 6.9 Suppression de O - phase........................ 93 6.0 Rééquilibrage dans une suppression, règles (a), (b), (c)......... 94 6. Rééquilibrage dans une suppression, règles (d), (e)........... 94 6. Suppression d un élément-phase (règle (d)).............. 95 6.3 Recherche de F à l instant 4....................... 97

X LISTE DES FIGURES 6.4 Le sommet contenant L a éte dupliqué pour contenir G......... 97 6.5 Le fils gauche de L est dupliqué à l instant t 7.............. 98 6.6 Cas où z n est pas plein......................... 98 6.7 Cas où z est plein............................ 99 6.8 Insertion d un nouvel élément-phase.................. 99 6.9 Insertion d un nouvel élément-phase.................. 00 6.0 Suppression d un élément-phase.................... 00 6. Comparaison des deux méthodes.................... 0 6. Transformation d un arbre 4 en arbre bicolore............ 04 6.3 Les quatre double-rotations....................... 05 6.4 Effet de l opération Evaser(a, A).................... 05 6.5 Arbres binomiaux............................ 06 6.6 Deux files binomiales,.......................... 08 6.7... et leur union............................. 08 Graphes valués. Un graphe valué.............................. Cycle et cocycle candidats........................ 3.3 Arbre couvrant de coût minimum.................... 6.4 Arbre couvrant de coût minimum.................... 8. Un graphe valué............................. 0. Un circuit absorbant............................3 Construction d une arborescence des chemins minimaux.........4 L itération de Ford............................ 3.5 Le graphe des états d un sommet.................... 5.6 Graphe initial et première itération................... 8.7 Les deux itérations suivantes...................... 8.8 Un graphe valué et la fonction h.................... 30.9 Les évaluations de l algorithme paps.................. 33.0 L algorithme paps avec un circuit absorbant.............. 34 Flots. Chaîne et cycle élémentaires....................... 4. Amélioration de la compatibilité d un flot................ 43. Problème de transport et réseau valué équivalent............ 45.3 Un flot entier positif........................... 47.4 L application ψ A,B............................ 48.5 Matrice d incidence d un arbre orienté................. 5 3. Un problème de flot maximum et l un de ses flots........... 53 3. Un graphe d écart............................ 54 3.3 Une coupe................................ 55 3.4 Un problème de flot maximum..................... 57 3.5 Mise à jour de la distance estimée................... 59 3.6 Initialisation et première augmentation de distance........... 6 3.7 Seconde augmentation de distance................... 6 3.8 Premier graphe d écart d un flot maximum............... 6 3.9 Graphe d écart du préflot initial..................... 66

LISTE DES FIGURES XI 3.0 La valeur maximum est atteinte..................... 66 3. Le dernier graphe d écart........................ 67 4. Les réseaux R et R........................... 8 4. Première phase.............................. 87 4.3 Seconde phase.............................. 88 Automates. Automate reconnaissant le langage aba................ 96. Automate reconnaissant le langage A aba................ 96.3 Automate reconnaissant les mots contenant au moins un b....... 96.4 Automate reconnaissant les mots contenant un nombre impair de a.. 97.5 Tous les mots sont reconnus....................... 97.6 Automates reconnaissant (i) le mot vide et..... 97 (ii) tous les mots sauf le mot vide..7 Un automate reconnaissant le langage A ab............... 99.8 L automate déterminisé......................... 99.9 L automate déterministe et émondé................... 300.0 Un automate à n + états........................ 300 3. Un automate asynchrone........................ 30 3. L automate précédent synchronisé.................. 30 4. Automate reconnaissant exactement le mot w = a a a n...... 305 4. Quel est le langage reconnu par cet automate?............ 306 4.3 L expression rationnelle a(a + a b) b.................. 309 5. Un automate reconnaissant X = b a{a, b}............... 33 5. Automate minimal pour X = b a{a, b}................ 34 5.3 Un automate qui n est pas minimal................... 36 5.4 Un automate quotient.......................... 37 6. Un exemple illustrant l opération................... 30 6. Exemple................................. 34 6.3 Automate minimal obtenu à partir de celui de la figure 6....... 35 6.4 Un exemple................................ 330 6.5 Deux automates non déterministes reconnaissant le même langage.. 334 Motifs. Le motif glissant sur le texte...................... 339. Echec à la i-ième lettre du motif.................... 34.3 Décalage d une position......................... 34.4 Décalages successifs du motif...................... 344.5 Lorsque b a, le décalage est inutile si c = a.............. 346.6 Décalages successifs du motif...................... 349.7 Les graphes des deux fonctions de suppléance.............. 350.8 Automate reconnaissant le langage A abcababcac............ 35.9 Automate déterministe A(abcababcac)................. 35.0 Automate A(abcababcac), sans ses flèches passives........... 354. Implémentation de l automate A(abcababcac).............. 356. Algorithme de Horspool......................... 358. Algorithme de Boyer-Moore simplifié.................. 36.3 Coïncidence partielle du motif et du texte............... 36

XII LISTE DES FIGURES.4 Décalage : premier cas.......................... 36.5 Décalage : deuxième cas......................... 36.6 Algorithme de Boyer-Moore complet.................. 364 3. Automate pour l ensemble X...................... 368 4. Automates normaliss........................ 37 4. Automate pour l union.......................... 37 4.3 Automate pour le produit........................ 37 4.4 Automate pour l étoile.......................... 37 4.5 Un automate pour l expression (a + b) b( + a)( + a)........ 37 4.6 L automate de Boyer et Moore pour aba................ 377 Géométrie algorithmique. Lignes polygonales............................ 38. Le contour positif du polygone est ((A, B, C, D, E)).......... 38.3 Ordre polaire............................... 38.4 p O p, p O p 3, p 3 O p..................... 383.5 Un secteur angulaire........................... 384.6 Insertion entre p 3 et p 4......................... 386. Cône enveloppant............................ 388. Adjonction d un point n appartenant pas à l enveloppe convexe.... 388.3 Marche de Jarvis............................. 389.4 Circuit polaire............................. 39.5 Algorithme de Graham......................... 39.6 Exemple................................. 393.7 Cas où p est extérieur à P....................... 394.8 Si p est supprimé, a, b et c apparaissent................. 395.9 Enveloppes convexes supérieure et inférieure.............. 396.0 Calcul de Inf(v)............................ 397. Les fonctions p, p et G......................... 397. Les 3 régions I, II, III auxquelles v peut appartenir........... 398.3 Les 9 cas du lemme........................... 399.4 Insertion d un nouveau point m..................... 399.5 Rotation droite.............................. 40.6 Structure de l arbre avant insertion du point p 3............ 40.7 Insertion du point p 3.......................... 40 3. Principe de l algorithme......................... 404 3. Le décompte des intersections...................... 405 3.3 Cas d un polygone convexe....................... 405 3.4 Une subdivision planaire......................... 407 3.5 Une subdivision planaire généralisée................... 407 4. Diagramme de Voronoï : les sites sont pleins.............. 409 4. Tout point suffisamment loin sur D est plus proche de b que de a... 40 4.3 La partie grisée est dans R(a)...................... 40 4.4 Demi-cône associé au site a....................... 4 4.5 Le plan de balayage........................... 43 4.6 Le front parabolique au temps t..................... 44 4.7 Tout point du diagramme de Voronoï est point anguleux........ 45

LISTE DES FIGURES XIII 4.8 Apparition d un nouvel arc α...................... 45 4.9 Apparition de l arc α : deuxième cas impossible............ 46 4.0 Un événement de type site : cas général............... 40 4. Disparition de β et création du sommet s................ 40 4. Evénement site avec création d un sommet............... 4 4.3 Un ensemble de 4 segments ouverts et 6 points............. 43 4.4 Diagramme de Voronoï formé de 4 demi-droites et d un arc de parabole. 44 4.5 Le diagramme défini par deux segments................. 45 4.6 Un diagramme de Voronoï........................ 46 4.7 Exemples................................. 48 4.8 Principe de l algorithme......................... 49 Planification de trajectoires 0. La translation t(x, y)......................... 43 0. p est libre, p et p 3 sont semi-libres, p 4 et p 5 ne le sont pas...... 433. P et θ caractérisent p.......................... 434. Partitionnement de l espace libre en cellules.............. 435.3 Le graphe G π/ associé à l exemple de la figure précédente....... 435.4 Emondage des cellules.......................... 436.5 Le graphe G π/ (l) obtenu après émondage............... 436.6 Choix du segment Sup(p) selon la position de p............. 437.7 Les cellules de L π/........................... 438.8 Une cellule................................ 438.9 Evénements (a) simples ou (b) double.................. 440.0 Débuts, milieu et fins.......................... 44. Segments traités, actifs, non traités................... 44. L événement en cours est une fin.................... 443.3 L événement en cours est un milieu................... 443.4 L événement en cours est un début................... 444.5 g + (C) est calculé au cours de l insertion de s............. 446. Exemple d obstacles........................... 447. Une région R(s), et la région R (s) associée (en gras)......... 448.3 Scission d un arc de parabole...................... 45.4 λ(e) lorsque e est un arc de parabole.................. 45.5 Un exemple de mouvement utilisant cet algorithme.......... 454.6 Composantes connexes des déplacements libres............. 455.7 Un mauvais déplacement....................... 456

XIV Avant-propos Avant-propos Encore un livre d algorithmique! Les ouvrages consacrés à l algorithmique et aux structures de données paraissent, depuis quelque temps, à un rythme soutenu et régulier. Aussi devons-nous expliquer pourquoi un livre supplémentaire sur ce sujet nous a paru utile. Le présent livre se distingue d autres traités d algorithmique par deux aspects : d une part, un accent particulier est mis sur les nouvelles structures d arbres apparues ces dernières années (arbres bicolores, arbres persistants); d autre part, nous développons plus en détail trois applications de l algorithmique : l optimisation combinatoire, la recherche de motifs dans un texte, et la géométrie algorithmique. Outre leur intérêt propre et leur importance intrinsèque, ces trois applications illustrent de façon exemplaire l usage que l on peut faire de structures de données sophistiquées, et les gains en temps et en place qui résultent de leur emploi judicieux. Pour chacun de ces trois thèmes, nous mettons en place les bases nécessaires, tant algorithmiques que théoriques. Puis, nous présentons, à l aide de problèmes typiques, un échantillon des algorithmes les plus efficaces, employant des structures de données intéressantes. Parmi les algorithmes et les structures de données qui méritent d être mentionnés plus spécialement, citons : le coût amorti des opérations de rééquilibrage dans les arbres 4 (chapitre 6); les algorithmes de manipulation des arbres bicolores (ibid.); les arbres persistants (ibid.); les algorithmes de Goldberg Tarjan et d Ahuja Orlin pour les flots (chapitre 8); l algorithme de Hopcroft de minimisation d un automate fini (chapitre 9); les algorithmes de Simon, et de Boyer et Moore pour la recherche de motifs dans un texte (chapitre 0); la gestion dynamique de l enveloppe convexe d un ensemble fini de points (chapitre ); l algorithme de balayage de calcul d une subdivision planaire à l aide d arbres persistants (ibid.); l algorithme de Fortune de calcul du diagramme de Voronoï (ibid.); deux algorithmes de planification de trajectoires (chapitre ).

Avant-propos XV A qui s adresse ce livre? Ce livre est issu de cours donnés par les auteurs en licence et maîtrise d informatique et de mathématiques dans les universités Paris VI et Paris VII, en magistère, et pour partie dans divers DEA et DESS. Dans sa forme présente, il s adresse principalement aux étudiants en licence et en maîtrise d informatique et de mathématiques, et aux étudiants des écoles d ingénieurs. Nous ne supposons chez le lecteur qu une connaissance rudimentaire de l informatique. Les premiers chapitres décrivent les bases algorithmiques sur lesquelles s appuieront les chapitres suivants. Le niveau d exposition est, à de rares exceptions près, celui des étudiants en licence d informatique. Organisation du livre Ce livre s organise en deux parties. La première partie, constituée des chapitres à 5, contient un exposé des bases algorithmiques et mathématiques, avec notamment un chapitre sur les techniques d évaluation de coûts d algorithmes, un bref chapitre sur les structures de données usuelles, un chapitre plus long sur la théorie des graphes et un chapitre assez succinct sur les algorithmes de tri par comparaison. Les trois premiers chapitres, et en partie les deux chapitres suivants, peuvent être considérés comme des chapitres de référence, auxquels on se reportera si nécessaire. La deuxième partie, consacrée à des thèmes plus avancés, débute par un long chapitre sur les arbres de recherche. Les deux chapitres suivants sont consacrés à l optimisation combinatoire. Puis viennent deux chapitres sur la recherche de motifs dans un texte, et enfin deux chapitres sur la géométrie algorithmique et la planification de trajectoires. Présentation des algorithmes Les algorithmes sont présentés dans un langage proche de Pascal; assez rarement, et principalement dans le chapitre 3 (Structures de données), des références explicites à Pascal sont faites, avec des programmes complets, prêts à cuire. Nous nous efforçons de présenter les algorithmes avec suffisamment de détails pour que l écriture de programmes soit facile; en particulier, nous décrivons soigneusement les structures de données à employer. Contenu du livre Le premier chapitre contient la définition des diverses mesures du coût d un algorithme : coût dans le cas le plus défavorable, coût moyen, coût amorti; il se termine par une borne inférieure sur la complexité du tri par comparaison. La première section du deuxième chapitre contient la définition des notations dites de Landau, ainsi que des exemples de manipulation. Dans la deuxième section, nous abordons la résolution de divers types d équations de récurrence auxquelles conduit l analyse d un algorithme. Nous décrivons notamment la résolution des récurrences linéaires et des récurrences de partition.

XVI Avant-propos Dans le chapitre 3, nous passons en revue les structures de données élémentaires, à savoir les piles, files, listes, ainsi que les arbres binaires et les arbres binaires de recherche. Nous décrivons ensuite les files de priorité et leur implémentation au moyen de tas. Nous terminons par un algorithme de gestion de partitions. Le chapitre 4 est consacré aux bases de la théorie des graphes. Après les définitions, nous exposons l algorithme de Roy-Warshall et d autres problèmes d accessibilité. Les parcours classiques d un graphe (parcours en profondeur, en largeur) sont décrits. Puis, nous présentons en détail l algorithme de Tarjan de calcul des composantes fortement connexes d un graphe, qui est linéaire en fonction du nombre d arcs du graphe. Le chapitre 5 présente trois algorithmes de tri interne éprouvés et efficaces : le tri rapide, le tri fusion et le tri par tas. Nous en donnons l analyse des coûts en moyenne et dans le pire des cas. Le chapitre se termine par un algorithme de tri externe, le tri polyphasé qui est fondé sur les suites de Fibonacci. Le chapitre 6 contient la description de plusieurs familles d arbres binaires de recherche équilibrés. Nous décrivons les arbres AVL, puis les arbres a b, avec notamment des opérations plus élaborées comme la concaténation et la scission, et évaluons le coût amorti d une suite d opérations. Ensuite, nous présentons les arbres bicolores, et enfin une réalisation de structures persistantes sur ces arbres. Le chapitre 7 traite deux problèmes fondamentaux d optimisation combinatoire : la recherche d un arbre couvrant de coût minimum et la recherche des chemins de coût minimum issus d un sommet dans un graphe orienté valué. Pour le premier problème, nous présentons une implémentation efficace des algorithmes de Kruskal et de Prim. Quant à la recherche des chemins de coût minimum, nous exposons l itération fondamentale de Ford, l algorithme de Dijkstra pour des coûts positifs et sa variante A, l algorithme de Bellman pour un graphe sans circuits et enfin l algorithme Paps. Le chapitre 8 traite des problèmes de flots optimaux dans les graphes. Nous prouvons d abord le théorème d Hoffman sur l existence d un flot compatible, puis étudions les décompositions d un flot. Après avoir établi le théorème de Ford et Fulkerson, nous analysons les algorithmes les plus performants pour le calcul du flot maximum, à savoir l algorithme primal des distances estimées au puits (algorithme d Ahuja et Orlin) et deux variantes efficaces de l algorithme dual du préflot, l algorithme de Karzanov et l algorithme des excès échelonnés. Nous considérons ensuite le problème du flot de coût minimum et présentons un algorithme dû à Goldberg et Tarjan. Nous terminons par l algorithme d Edmonds et Karp pour la recherche d un plan de transport de coût minimum. Dans le chapitre 9, préliminaire au chapitre suivant, nous présentons les bases de la théorie des automates finis. Après avoir démontré l équivalence entre les automates finis et les automates finis déterministes, nous établissons le théorème de Kleene qui montre que les langages reconnaissables et les langages rationnels sont une seule et même famille de langages. Nous prouvons l existence et l unicité