Algorithmique, Graphes Et Programmation Dynamique Notes De Cours Rapport De Travaux Pratiques
Total Page:16
File Type:pdf, Size:1020Kb
Algorithmique, graphes et programmation dynamique Notes de Cours Rapport de Travaux Pratiques Laurent Canet Le 2 juillet 2003 Table des mati`eres I IN202 - Algorithmique 6 1 Syst`emeformel de preuve de programme de O'Hare 8 1.1 R`egleset axiomes . 8 1.2 Construction de programmes sur invariant . 9 2 Probl`emesde recherches 11 2.1 Remarques sur l'´evaluation de complexit´ed'un programme . 11 2.2 Recherche dichotomique . 11 2.3 Recherche s´equentielle . 13 2.4 Recherche arri`ere . 14 3 Problemes de tris 16 3.1 Slowsort . 16 3.2 Quicksort . 17 3.3 Complexit´eminimum d'un algorithme de tri . 21 4 Approche diviser pour regn´er 23 4.1 Diviser pour r´egner . 23 4.2 Limites de l'approche diviser pour r`egner. 24 5 Complexit´edes algorithmes 25 5.1 Expression du temps de calcul . 25 5.2 Notations . 26 5.3 Calculs courants dans le calcul des complexit´es. 27 5.4 Un peu de th´eoriede la complexit´e . 27 6 Programmation Dynamique 29 6.1 Cas concret : fibonnaci . 29 6.2 Exemple : Multiplication de matrices . 30 6.3 Exemple : Recherche du plus long sous-mot commun `a2 chaines . 33 1 II IN311 - Programmation dynamique 36 7 Applications de la programmation dynamique 38 7.1 Un probl`emed'assortiment . 38 7.2 Compression d'image . 40 7.3 Justification de Parapgraphes . 43 III IN302 - Graphes et algorithmes 45 8 Notions de base 46 8.1 Premi`ered´efinition . 46 8.2 Repr´esentation en m´emoire. 47 8.3 D´efinitionscompl´ementaires . 50 8.4 Chemins, connexit´e. 53 8.5 Repr´esentation matricielle . 59 8.6 Graphe biparti . 60 9 Arbre et arborescences 62 9.1 D´efinitions. 62 9.2 Exemples et applications . 64 9.3 Arbre de poids minimum . 67 9.4 Algorithmes de Kruskal ...................... 69 10 Plus courts chemins 71 10.1 D´efinition . 71 10.2 Probl`ematiquedu plus court chemin . 72 10.3 Algorithme de Floyd ........................ 74 10.4 Algorithme de Bellman ....................... 75 10.5 Algorithme de Dikstra ....................... 78 10.6 Plus courts chemins (Exploration largeur) . 80 10.7 Graphes sans circuits : GSC ..................... 81 11 Cycles eul´erienset hamiltoniens 86 11.1 Cycle eul´erien . 86 11.2 Cycle hamiltonien . 86 12 Flots et r´eseauxde transport 88 12.1 Mod´elisationd'un r´eseaude transport . 88 12.2 Propri´et´esd'un r´eseaude transport . 89 12.3 Algorithme de Ford et Fulkerson . 90 2 13 R´esolutionsde probl`emesen Intelligence artificielle et optimisa- tion 94 13.1 Exemple : le probl`emedes 8 dames . 94 13.2 Strat´egiesde recherche . 95 13.3 Algorithme A et A∗ .......................... 97 IV Annexes 99 A TP1 - Tri par tas 100 A.1 Introduction . 100 A.2 Equations Bool´eennes. 100 A.3 Tas . 102 A.4 Comparaison avec d'autres algorithmes de tri . 106 B TP2 - Arbres de recherche optimaux 110 B.1 Introduction . 110 B.2 Pr´eliminaires . 111 B.3 Recherche dans un arbre . 112 B.4 Arbre binaire de recherche optimal . 114 B.5 Optimisation . 120 C TP3 - Sommes de sous-ensembles 130 C.1 Premier algorithme . 130 C.2 Deuxi`emealgorithme . 131 C.3 Optimisation & parall´elisation. 135 C.4 Code source comment´e . 137 D TP IN311 : le sac `aados 141 D.1 Position du probl`eme. 141 D.2 Equation du r´ecurrence. 141 D.3 Complexit´e . 142 D.4 Reconstruction de la solution . 142 D.5 Exemples d'execution . 142 D.6 Programme complet et comment´e . 144 E Corrections de TD IN302 147 E.1 TD 1 : Recherche de circuits . 147 E.2 Le probl`emede l’affectation . 149 E.3 Le probl`emede la carte routi`ere. 150 E.4 Le probl`emedu voyageur de commerce . 150 F Graphes TP 2 - Analyse de trajectoires dans une chambre `a bulle 151 3 G Graphes TP 3 - Ballades dans le m´etro 158 4 Introduction Ce texte n'a aucune valeur officielle de support pour les cours concern´es.Il contient vraisemblablement beaucoup d'erreurs et d'inexactitudes, le lecteur se reportera `aun ouvrage de r´eferencepour les v´erifications. Le rapport de TP de programmation dynamique a ´et´eco-´ecritavec mon bin^ome Thibaut Varene. Les sujets et les rapports de travaux pratiques de graphes ont ´et´e´ecritpar Gilles Bertrand et Michel Couprie. 5 Premi`erepartie IN202 - Algorithmique 6 Introduction au cours d'algorithmique Ce document fut `al'origine mes notes du cours d'IN202 de l'ESIEE Paris. Cette unit´ea pour but d'initier les ´el`eves ing´enieurs`al'algorithmique gr^ace`ades exemples d´etaill´ees.Le cours ´etaitdivis´een 2 grandes parties, d'abord un apercu de l'algorithmique ainsi que de la notion de complexit´een s'appuyant sur des exemples tels que le quicksort, puis une description de l'approche dite de pro- grammation dynamique. Des notions de programmation en C ainsi des connais- sances basiques en analyses sont requises pour comprendre ce cours. D'autres unit´esdu tronc commun ou de la majeure informatique de l'ESIEE Paris ´elar- gissent et approfondissent le sujet. Mes notes de cours datent de mi-2002. Durant l'´et´ede cette ann´eej'ai enrichi le cours notament de la notion de classe de probl`emeainsi que des d´emonstra- tions, notament la complexit´eminimale d'un algorithme de tri ; finalement j'ai d´ecid´ede les publier sur ma page web. Ces notes de cours ne constituent en rien un support officiel, il faut imp´e- rativement se r´ef`erer`aun ou des ouvrages sp´ecialis´esqui seront cit´esdans une bibliographie (qui n'a pas encore ´et´efaite). Je n'ai en aucun cas la pr´etention de faire un document interessant, exact ou pr´ecis.N´eanmoinsSi vous estimez que je racontre vraiment n'importe quoi, signalez le moi sur mon email : [email protected]. 7 Chapitre 1 Syst`emeformel de preuve de programme de O'Hare On peut formaliser un programme en une forme logique dite de bo^ıtenoire : E P S Logique du 1er ordre Programme Logique du 1er ordre |{z} |{z} |{z} De l`a,plusieurs r`eglesagissent sur ces ´enonc´es: 1.1 R`egleset axiomes R´eglede la post-condition : EP S0 ; S0 S EP S ) 7−! R´eglede la pr´e-condition: E0PS ; E0 E EP S ) 7−! R´egledu ou : EP S ; E0PS (E E0)PS 7−! _ R´egledu et : EP S ; EP S0 EP (S S0) 7−! ^ 8 R`egledu si-sinon : (E B)PS ;(E B)QS E Si B alors P sinon Q S ^ ^ 7−! f g Remarque : L'´evaluation de B ne doit pas modifier E. R`egledu tant-que : (E B)PE ; E tant que B faire P (E B) ^ 7−! f g ^ Axiomes d’affectation : EP A ; AQS E P ; Q S 7−! f g Exemple : D´emontrer : EP S ; E0PS0 (E E0)P (S S0) 7−! ^ _ 1. EP S 2. E0PS0 3. E E0 E ^ ) 4. (E E0)PS (Pr´econditionsur 1 et 3) ^ 5. (E E0)PS0 (Pr´econditionsur 2 et 3) ^ 6. (E E0)P (S S0) (R`egledu ET sur 4 et 5) ^ ^ 7. (S S0) (S S0) ^ ) _ 8. (E E0)P (S S0) (Postcondition sur 7 et 8) ^ _ 1.2 Construction de programmes sur invariant Construire un programme d´ecritpar l'invariant, c'est utiliser une proposition bool´eenne I(x1; x2; ; xn), fonction de plusieurs variables xi, qui d´ecritle pro- bl`eme`aun instant donn´e.Lorsque··· l'on veut faire un algorithme qui r´esoud EP S bas´esur un invariant, on doit donner plusieurs propositions : Invariant : D´ecritla position du probl`emeen fonction de variables xi. Initialisation : Ce sont des conditions sur les variables xi, tels que la proposition E soit v´erifi´eet I(xi) le soit ´egalement. 9 Condition d'arr^et: Ce sont des conditions sur les variables xi, tels que la pro- position S soit v´erifi´ee.Lorsque la condition d'arr^etest v´erifi´ee,le pro- gramme doit avoir fini son traitement, et S est verifi´ee. Implications : Elles sont de la forme I(x1; x2; ; xn) (Pi vraies) I(x0 ; x0 ; ; x0 ). ··· Vi ) 1 2 ··· 3 O`u Pi r´epresentent des propositions On en d´eduitl'expression : I(xi) T ANT QUE (Condition d'arr^et)F AIRE Pi I(xi) (Condition d'arr^et) ^ 1.2.1 Exemple : somme des ´el´ements d'un tableau Soit un programme r´ealisant la somme de tous les ´el´ements de 0 `a n 1 d'un tableau T . On veut un programme P v´erifiant l'´enonc´esuivant : − n 1 − (n > 0) P S = T [i]! X i=0 On se propose de d´ecrirece programme par l'invariant : k 1 Invariant : I(s; k) s = i=0− T [i]. s est la somme des k premiers ´el´ements de T . ≡ P Initialisation : s = 0 et k = 0. En effet la somme des 0 premiers ´el´ements fait 0. Donc I(0; 0) est v´erifi´e. Condition d'arr^et: k = n. On s'arr^etelorsque l'on a r´ealis´eela somme des n premiers ´el´ements, comme demand´e. Implication : I(s; k) (s = s + T [k]) I(s; k + 1). ^ ) En sortie du programme, on aura I(s; k) (k = n). La translation de cet algo- rithme en pseudo langage est tr`essimple :^ s <- 0 k <- 0 // Ici on a I(0,0) tant que (k != n) faire : s <- s + T[k] // Ici on a I(s,k+1) k <- k + 1 // Ici on a I(s,k) fin tant que // Ici on a I(s,n) 10 Chapitre 2 Probl`emesde recherches Le probl`emeque nous nous posons est de rechercher un ´el´ement (nombre, caract`ereou autre) dans un tableau homog`ened'´elements.