Algorithmes : conception et réalisation MQT 63834

Professeur Antoine Gautier, Ph. D. Département Opérations et systèmes de décision Faculté des sciences de l’administration, Université Laval Session d’hiver 2004∗ 1 Introduction

Les contributions des méthodes quantitatives à la gestion se regroupent en deux classes principales. D’une part, il est possible d’obtenir par une analyse mathématique des principes généraux de gestion, par exemple en montrant que certaines chaînes de montage sont auto-équilibrées. D’autre part les méthodes quantitatives offrent la possibilité du calcul explicite de certaines variables cruciales dans les décisions opérationnelles. Dans ce deuxième cas les calculs se résument rarement à une simple série d’opérations arithmétiques aisément réalisables avec un chiffrier. Les procédures comportent souvent un grand nombre d’opérations, décrites par un algorithme. S’il est possible de s’intéresser aux algorithmes in-abstracto, c’est à dire sans se préoccuper de leur utilisation pratique par des ordinateurs, ce n’est pas l’approche privilégiée dans le cours. Sans perdre de vue les propriétés théoriques des algorithmes, nous nous concentrerons durant la première partie du cours sur le lien entre algorithmes et ordinateurs (la programmation) et sur plusieurs structures de données indispensables à la réalisation d’un programme. Sur cette base nous explorerons un échantillon d’algorithmes représentatifs à la fois des applications en gestion et des approches algorithmiques. Le cours MQT 63834 est donc l’un des cours de fondement proposés par le département OSD dans le cadre des programmes de deuxième cycle de la FSA. Il constitue une introduction aux méthodes de traitement de l’information et de calcul (algorithmes). On traite des principaux algorithmes usuels (recherche, tri, graphes) en introduisant des concepts d’analyse d’efficacité. Les structures de données sont également vues sous cet angle. La mise en pratique des connaissances acquises sur les algorithmes se fera par le langage de programmation Pascal, qui constitue une bonne introduction aux langages de programmation actuels (C, C++, Java, etc.)
∗ Version

du 22 décembre 2003.

1

nous utiliserons surtout les chapitres 1.) – Connaître un certain nombre d’algorithmes fondamentaux (tri. En anglais le livre de . c’est-à-dire établir exactement ce que fait un algorithme et évaluer le nombre d’opérations nécessaires à son exécution – Connaître certaines structures de données de base (tableaux. voici une liste d’ouvrages recommandés..). recherche. arbres. 5. et 9. Objectifs du cours Le cours vise à amener les étudiants à : – Distinguer un algorithme conceptuel d’un programme informatique logiciel – Acquérir des notions de base d’analyse des algorithmes.. Pour les autres.ca) .Amazon..MQT 63834 2 Pré-requis Le cours est ouvert à tous les étudiants de deuxième et troisième cycle. Activités principales – Cours magistraux et discussions – Ateliers d’apprentissage Turbo Pascal – Lectures – Exercices à remettre individuellement – Projet de session 2 Matériel Ouvrages obligatoires 1. 4.) – Être capable de transcrire un algorithme en un programme en langage Pascal – Acquérir un langage et des méthodes d’analyse des algorithmes afin d’être capable de recommander une approche de traitement de grands problèmes. N OTES DE COURS et ATELIER DE FORMATION T URBO PASCAL (janvier 2004). L IVRE La référence de base est le livre de Parsons (1995) qui constitue une excellente introduction aux algorithmes et à leur analyse. 6.. Le livre est épuisé mais une copie sera disponible à la réserve (vous pouvez également tenter votre chance sur www. listes. 2.. Le cours est ouvert aux étudiants sans expérience de programmation ainsi qu’à ceux qui sont familiers avec la partie informatique des langages mais moins avec l’analyse des algorithmes (complexité. monceaux.com ou www. Ouvrages complémentaires A PPRENTISSAGE DU LANGAGE P A S C A L Les étudiants qui ont une expérience de la programmation pourront peut-être trouver les documents obligatoires suffisants. graphes..Ebay. la clientèle cible étant celle des cheminements Gestion manufacturière et logistique (GML) et Modélisation et décision organisationnelle (MDO) du MBA...

3 Utilisation des ordinateurs portables L’utilisation des ordinateurs portables pour le cours est réservée au travail sur les exercices et le projet (hors rencontres en classe) et à certaines parties des cours en classe (formation Turbo Pascal principale- . Compilateur GNU. En voici plusieurs. Décompressez-le. Lors du transfert.html. Vous pouvez maintenant lancer le programme avec le raccourci c:\TP7F\Turbo (ne tentez pas d’installer le compilateur à un endroit différent.MQT 63834 3 Grogono (1985) est clair.9. (1993) et Cormen et al. microbizz.nl/gpc. Documentation et aide en français. (1990) seront les bienvenus dans votre bibliothèque si vous désirez poursuivre dans le domaine des algorithmes.).zip. Pour l’utiliser : ouvrez un fichier . télécharger Dev-Pascal 1. dont Turbo Pascal est une extension. En français on trouvera l’ouvrage de Delannoy (1997).net.bloodshed. Une bonne introduction à la programmation par contraintes est celle de Smith (1995). Turbo Pascal 7. Bloodshed.developpez. enregistrez le sous le nom c:\TP7F.zip. Garey et Johnson (1979) et à Papadimitriou et Steiglitz (1982). Le livre qui fait autorité pour le langage Pascal. tous gratuits. Installation : sur la page internet du cours. avec tutoriel : www. van Leeuwen et Widmayer (1992). mais il est malheureusement épuisé. les ouvrages de Brassard et Bratley (1987). Finalement.gnu. Gpc. Ressources Internet – Le forum d’entraide Pascal.lang.comp. allez chercher le fichier TP7F.2 + GNU Pascal. Outils informatiques Vous devrez avoir installé un compilateur Pascal sur votre portable avant les ateliers d’apprentissage (deuxième semaine). linux et MacOS X. ou créez-en un avec la fonction File-New-source-file (ctrl-U) — ne tentez pas de créer des Projets. fonctionne sous windows.com/pascal/ – Le forum usenet : news://fr.pas existant. Brassard et Bratley (1996).pascal – Tout sur la (monstrueuse) fonction d’Ackermann : pweb.01 pour DOS. Une photocopie sera disponible à la réserve des professeurs (la traduction française de cet ouvrage n’est pas recommandée). www. Bal et Grune (1992). Froidevaux et al. Pour les moins fortunés.html pour la version OS X. Sur www.com/~hjsmith/Ackerman. Fonctionne sous toutes les versions de Windows sauf XP. Sedgewick (1988). Si vous utilisez Winzip. spécifiez le répertoire : « extract to : c:\ ». est Jensen et Wirth (1991). S UR LES ALGORITHMES Des éléments de complexité algorithmique sont empruntés à Sakarovitch (1984). Pour Windows 95/98/NT/2000/XP.netcom. Knuth (1973).org et www. unix. le Hernert (1995) est une bonne petite référence. c’est compliqué.

structures de contrôle. entrées et sorties sur fichier Utilisation des pointeurs Lectures préalables Atelier : pages 1 à 36 Grogono : chapitres 1.4) et §6. Cependant. Affichage Il est possible que certaines modifications soient apportées au déroulement du cours. Toute information supplémentaire sera communiquée en classe.4 (relecture) 2 3 4 5 Récursivité Rattrapage et révision Devoirs Une série de devoirs (au plus 10) à remettre. 4 4 Organisation du cours et travaux Horaire Le cours se tiendra les jeudis de 8 heures 30 à 11 heures 30. 6. entrées et sortie Types structurés. des sessions d’apprentissage Turbo Pascal obligatoires auront lieu les lundis de 13 heures 15 à 15 heures 30. variables locales v/s globales.1.MQT 63834 ment). Visez une présentation claire et précise tant dans le fond que dans la forme. 2 et 3 et §6. Il s’agit de travaux personnels. il ne vous sera pas remis de corrigés complets . incluant des exercices théoriques et pratiques. En particulier. Le but des devoirs est de vous aider à comprendre et appliquer le contenu du cours et à développer vos aptitudes à manipuler des concepts algorithmiques ainsi que le langage Turbo Pascal. Des éléments de correction des devoirs seront donnés en classe peu après la date de remise. 7. les programmes en remis sans lignes de commentaires seront refusés. fonctions et procédures.2 et 7.6. l’important est que .5 Atelier : pages 37 à 70 Grogono : chapitre 4 (sauf §4. Formation Turbo Pascal La formation au langage Turbo Pascal est particulièrement exigeante et ne vous laisse que peu de marge de manœuvre quant au retard que vous pourriez y prendre. Durant cinq semaines à partir de la deuxième semaine de cours. pour les exercices de programmation. À l’exception de ces dernières vous êtes priés de garder les portables fermés et éteints. et possiblement sur le site du cours.3 Atelier : pages 71 à 86 Grogono : chapitre 8 Atelier : pages 87 à la fin Grogono : §4. individuels et originaux. Il vous est demandé de faire certaines lectures avant chacune des séances : Séance 1 Thème Bases du langage.

ulaval. Évaluation Note Moyenne des n − 1 meilleurs travaux sur n Projet Examen final (dernier jour de cours) Pour rejoindre le professeur Bureau Disponibilité Téléphone Courriel Site internet poids 1/3 1/3 1/3 Pavillon Palasis Prince. et (3) tous les fichiers sortie (. Pour les longues explications il est préférable de venir au moment de mes disponibilités telles qu’annoncées.PAS). 2. vous devez envoyer au professeur un courriel unique avec.1–4. sans pour autant offrir un « service 7-24 »..5 et 1.1. Introduction : programme = algorithme ! – les algorithmes – structures de données : les tableaux – notions élémentaires de complexité – lectures préalables : Parsons (1995) (§1. 5 Feuille de route 1.ca http://www. (2) tous les fichiers exécutables (. le cas échéant.ca/personnel/gautiera/ Utilisation du courriel Vous pouvez utiliser le courriel pour poser des questions courtes par exemple sur un point de détail du cours ou sur l’un des travaux. Le sujet du courriel sera précisément « Fichiers du devoir i » pour le i-ème devoir.OUT). et non pas que vous ayez une solution toute faite. Le tri (1) – pointeurs et listes chaînées – tri par insertion – lectures préalables : Parsons (1995) (§4. 5 T RANSMISSION PAPIER ET ÉLECTRONIQUE Pour la majorité des devoirs vous devrez réaliser un ou plusieurs programmes en Turbo Pascal.Gautier@fsa.ulaval. .fsa. En plus de remettre vos devoir imprimés sur papier.EXE).MQT 63834 votre programme fonctionne. 1519 Les lundis après 14 heures 30 656–7066 Antoine. Je m’efforce de répondre rapidement.6)..3). en fichiers attachés : (1) tous les fichiers source (. 1.

8–5. 8. Graphes et complexité algorithmique – introduction aux graphes. §1.2). Le tri (3) – tri rapide (QuickSort) – complexité – lectures préalables : Parsons (1995) (§4. Les arbres binaires (1) – structures d’arbre binaire – opérations de recherche – efficacité – lectures préalables : Parsons (1995) (§5. 7. Problèmes NP-complets – Le problème du commis voyageur – lectures préalables : dans Sakarovitch (1984). largeur) – lectures préalables : Parsons (1995) (§9.4). tri topologique – lectures préalables : Parsons (1995) (§9.9 jusqu’à la page 136 et §6. 11. chapitre 4.2 et appendice A). 10. 12.7). 6.4–4. Algorithmes sur les graphes (2) – Plus court chemin. 13.7).1–6.5–9.5). Comment traverser un arbre – arbres explicites et implicites – structures de données – récursion – application : algorithme de Branch and Bound – lectures préalables : Parsons (1995) (§5. Quelques stratégies algorithmiques – algorithmes gloutons – diviser pour régner : la multiplication des matrices – lectures préalables : Brassard et Bratley (1987) (chapitre 3 et pp. 129–130). sauf les programmes en Pascal. applications pratiques – graphes implicites – complexité algorithmique – lectures préalables : Parsons (1995) (chapitre 9.1–5.7). Le tri (2) – concept de division – récursion : tri par fusion – complexité – lectures préalables : Parsons (1995) (§4.MQT 63834 3. La programmation dynamique – généralités 6 . 5. 4. Algorithmes sur les graphes (1) – structures de données pour les graphes – algorithmes de fouille (profondeur. Les arbres binaires (2) et les monceaux (1) – équilibrage des arbres – les monceaux (Heaps) – complexité – lectures préalables : Parsons (1995) (§5.4–4.7). 9.1–9.

1–11.MQT 63834 – exemples – lectures préalables : Parsons (1995) (§11. 7 .3). 14. La programmation par contraintes : article de Smith (1995).

MIT Press/McGraw-Hill. Note : Les ouvrages suivants sont disponibles à la réserve des professeurs de la bibliothèque générale (pavillon Bonenfant) : Parsons (1995).V. Elsevier Science B. G. Coffman. Thomas H. Prentice– Hall. H. Vol. 1995. Jacques Borowczyk. Paris. Computing. editors. Prentice-Hall. Paris. Computer Science.0. Bal et D. In E. Combinatorial Optimization . Introduction to Algorithms. 1982. Rivest. 293 rue Lecourbe. Paris. Brassard et Bratley (1987. pages 323–374. Programmer en Turbo Pascal 7. 1997. Computing. 1. Lenstra. H. H. Elsevier Science B. deuxième edition. Manuels informatiques. J. 1993. Michael R. Lenstra. Computer Science. Masson / Presses de l’Université de Montréal. jr. Addison-Wesley. Regards sur la science. April 1995. Michel Guillemot. editors. 1991. H.2 et 3. 1985. Jean-luc Chabert. Robert Sedgewick. et A. Christine Froidevaux. G. Widmayer. K. Parsons. et Anne Michel-Pajus. Ediscience International. In E. Algorithmique. Paris XIII. Coffman. Gilles Brassard et Paul Bratley. Sedgewick (1988). et A. C. Thomas W. Garey et David S. Claude Delannoy. (1990). Fundamental of Algorithmics. Papadimitriou et K. Grune. A tutorial on constraint programming. 1995. 1995. Introduction to algorithms in Pascal. van Leeuwen et P. Computers and intractability : A guide to N P –Completeness. School of Computer Studies Research Report Series 95–14. Hermann. aussi chez McGraw-Hill. Sakarovitch (1984). Cormen.. Ahmed Djebbar. fourth edition. W.MQT 63834 8 Références H. Rinnoy Kan. et Ronald L. France. 1973. University of Leeds.. 1984. 1996. Rinnoy Kan. volume 3 of Handbooks in Operations Research and Management Science. chapter 2. conception et analyse. Donald Ervin Knuth. Grogono (1985). Johnson. 1990. Marie-Claude Gaudel. Belin. Addison–Wesley. France. Hernert (1995)..V. 1979. G. Gilles Brassard et Paul Bratley. The Art of Computer Programming. K. Paris. Michel Sakarovitch. Cormen et al. Steiglitz. volume 3 of Handbooks in Operations Research and Management Science. E.. Barbara M. Programming languages. Smith. 1987. Division of Artificial Intelligence. J. Freeman and Company. pages 31–90. Pascal user manual and report (ISO-Pascal). 1992. jr. chapter 7. J. Programming in Pascal. Histoire d’algorithmes : du caillou à la puce. Eyrolles. 1988. Charles Eric Leiserson. Addison-Wesley. Delannoy (1997). Langages. 1992. John Wiley & Sons. 1996). Les Algorithmes. Jean-Caude Martzloff. Springer-Verlag. Types de données et algorithmes. G. Optimisation combinatoire : Programmation Discrète. New York. Fundamental algorithms and data structures. Patrice Hernert. Kathleen Jensen et Niklaus Wirth. Que Sais-je ? Presses Universitaires de France. Algorithms and Complexity. et Michèle Soria. Algorithms. . Peter Grogono.

Pour les autres programmes. précisez pour chaque fonction et procédure la liste des variables locales et globales.. 8.j.5 × 11 sur laquelle vous aurez inscrit clairement votre nom et le numéro du devoir (1 à 10). les mots réservés de Pascal. on pourra se contenter de i. par exemple indice plutôt que XYTi. Chaque travail doit être remis dans une enveloppe 8. ne compile pas. À l’aide de (* commentaires *). le cas échéant. L’enveloppe contiendra (a) un listing commenté de chacun de vos programmes Turbo Pascal (b) les sorties. Vous devez tester votre programme pour vérifier qu’il fait bien ce que vous en attendez. N’utilisez pas l’instruction GOTO. 5. sur la sortie papier. 6.MQT 63834 9 Directives pour les devoirs comprenant des programmes Turbo Pascal Au fur et à mesure que la session avance vous deviendrez plus agiles avec la programmation Turbo Pascal . imprimés avec une fonte à espacement fixe (Ohlf. – Un programme de tri devrait être vérifié par un deuxième programme de test d’ordre (facile à écrire). De plus. 3. faites apparaître tous les blocs à l’aide de traits de couleur (voir exemple en classe ainsi que la forme utilisée dans le livre de Parsons).. Pour vous aider à vous améliorer. etc. vous serez évalués selon des critères qui eux aussi vont augmenter. si vous le souhaitez. 7.k. Pour les compteurs de boucles. Si votre programme ne marche pas.). il vous faudra inventer vos propres tests (un programme qui passe tous vos tests n’est pas garanti correct. 2. voici une série de points à assimiler. Incorporez des (* commentaires *) dans votre programme — mais pas trop. Par exemple : – Un programme de calcul de la moyenne dans le cours devrait donner 100 lorsque toutes les notes valent 100. et 0 lorsqu’elles valent toutes 0. Utilisez l’indentation (TAB) pour faire ressortir la structure de votre programme. 9. – Un programme de tri devrait fonctionner sur une liste de un ou de deux items. Choisissez des noms de variables. mais un programme qui échoue à l’un de vos tests est certainement erroné !) 10. ou triée en ordre inverse. de procédures et de fonctions évocateurs. envoyez au professeur le courriel correspondant (voir le Syllabus page 5). Une liste déjà triée. Évitez les lettres majuscules sauf. ou donne de mauvais résultats. Avant la date et l’heure de remise prévues. Remettez un listing et des sorties sur papier. . 11.. devrait être traitée correctement. il faut le mentionner. 4. Courier. Rappelez-vous que les variables qui n’ont pas besoin d’être globales doivent être locales. 1.

liste des structures de données. vous pourrez discuter de votre choix avec le professeur dès les premières semaines. c) Le logiciel doit utiliser au moins un algorithme d’optimisation (exact ou heuristique). esthétique. code. de l’exemple numérique – Les références bibiographiques de l’algorithme utilisé (article original) Remise du rapport final comportant : – Les rapports préliminaire et intermédiaire. corrigé et modifié au besoin + la version annotée par le professeur – Analyse fonctionnelle (ce que fera le programme) – Organigrammes. aide.MQT 63834 10 Projet MQT 63834 Les projets. convivialité.. à effectuer en groupes de deux étudiants. le choix devant répondre à 4 critères simples : a) Le logiciel résout un problème qui se pose dans la gestion d’une entreprise ou d’une administration. Présentation des projets en classe Jeudi 18 mars Jeudi 1 avril Jeudi 15 avril . réalisation et test d’un logiciel informatique de traitement. corrigés et modifiés au besoin + les versions annotées par le professeur – Listing sur papier documenté (faire les liens avec l’organigramme) – Une documentation (manuel de l’utilisateur) – Résultats d’une batterie de tests numériques (y-compris votre exemple numérique).. Notez que d’autres critères pertinents pour les logiciels commerciaux ne sont pas visés dans ce travail : complexité. sur papier. Échéancier : Remise d’un rapport préliminaire (1 à 2 pages) comportant : – Composition définitive de l’équipe et présentation du projet – Vos références bibliographiques (livres. d) Le logiciel doit lire ses données dans un fichier et écrire ses résultats dans un autre. b) Le logiciel doit utiliser plusieurs des techniques vues en classe. Vous rechercherez un thème de projet parmi les cours que vous prenez à la FSA. analyse de performance – Conclusions – Les acétates de votre présentation en classe – Un courriel contenant le rapport final. seront pour vous l’occasion d’accomplir un travail complet de conception. des procédures et des fonctions Pascal – La résolution. exécutable(s) et quelques sorties est également envoyé au professeur.) – Analyse conceptuelle (modélisation du problème réel) – Un exemple numérique de petite taille du problème – Difficultés à surmonter Remise d’un rapport intermédiaire (environ 4 pages) comportant : – Le rapport préliminaire. Afin de choisir un sujet à la fois intéressant et à votre portée. etc. notes de cours. articles..

L’ordre de passage des équipes sera tiré au sort à 8 heures 30 T OUTE ÉQUIPE DONT LE TRAVAIL CORRESPOND AUX CRITÈRES CI . précis.MQT 63834 11 Présentation des projets Chaque équipe disposera de 5 minutes pour se préparer et de 20 minutes pour présenter son projet.DESSUS ET QUI AURA RÉUSSI À VENDRE SON LOGICIEL À UNE ENTREPRISE POUR UN PRIX NON . Le format suivant est obligatoire : Acétate 1 : Présentation du problème que vous avez choisi de résoudre Acétate 2 : Présentation synthétique des données Acétate 3 : Algorithme Acétate 4 : Structures de données (en justifiant vos choix) Acétate 5 : Difficultés particulières (Démonstration du prototype) Acétate 6 : Résultats de vos tests Acétate 7 : Étude de complexité (théorique et/ou empirique) Acétate 8 : Conclusions ⇒ Soyez clair.DÉRISOIRE SE VERRA ATTRIBUER LA PLUS HAUTE NOTE AU COURS ! Je vous souhaite une excellente session ! . et n’écrivez sur vos acétates que le strict nécessaire.

Sign up to vote on this title
UsefulNot useful