Vous êtes sur la page 1sur 6

Techniques Algorithmiques et

Programmation

Cyril Gavoille
LaBRI
Laboratoire Bordelais de Recherche
en Informatique, Université de Bordeaux
gavoille@labri.fr

16 août 2020
– 175 pages –
ii

Ce document est publié sous Licence Creative Commons « Attribution - Pas d’Utilisation
cbna Commerciale - Partage dans les Mêmes Conditions 4.0 International (CC BY-NC-SA 4.0) ».
Cette licence vous autorise une utilisation libre de ce document pour un usage non com-
mercial et à condition d’en conserver la paternité. Toute version modifiée de ce document doit être placée sous la
même licence pour pouvoir être diffusée. https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr
iii

Licence 3 : Techniques Algorithmiques et Programmation

Objectifs : Introduire, aux travers d’exemple de problèmes simples, diverses ap-


proches algorithmiques, les programmer et les tester sur machines. Les approches abor-
dées sont :
• Formule close ;
• Exhaustive (Brute-Force) ;
• Récursive ;
• Programmation dynamique ;
• Heuristique ;
• Approximation ;
• Gloutonne (Greedy) ;
• Diviser pour régner (Divide-and-Conquer).
Faute de temps, les approches suivantes ne seront pas abordées :
• Probabiliste ;
• Programmation linéaire ;
• Branchement et élagage (Branch-and-Bound) ;
• Solveur SAT.
Nous programmerons en C avec un tout petit peu d’OpenGL/SDL pour plus de gra-
phismes. Les concepts techniques et les objets que l’on croisera seront : les algorithmes,
la complexité, les graphes, les distances, les points du plan, ...

Pré-requis : langage C, notions algorithmiques, notions de graphes

Quelques ouvrages de référence :

Programmation efficace
Christoph Dürr et Jill-Jênn Vie
Ellipses 2016

The Algorithm Design Manual (2nd edition)


Steven S. Skiena
Springer 2008
iv

Algorithm Design
Robert Kleinberg et Éva Tardos
Pearson Education 2006

Introduction à l’algorithmique (2e édition)


Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et
Clifford Stein
Dunod 2001

Algorithms (4th edition)


Robert Sedgewick et Kevin Wayne
Addison-Wesley 2011

Algorithms
Jeff Erickson
Creative Commons 2019
Table des matières

1 Introduction 1
1.1 Tchisla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Des problèmes indécidables . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Approche exhaustive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Rappels sur la complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4.1 Compter exactement? . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.2 Pour résumer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5 Notations asymptotiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5.1 Exemples et pièges à éviter . . . . . . . . . . . . . . . . . . . . . . . 25
1.5.2 Complexité d’un problème . . . . . . . . . . . . . . . . . . . . . . . 27
1.5.3 Sur l’intérêt des problèmes de décision . . . . . . . . . . . . . . . . 28
1.6 Algorithme et logarithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.6.1 Propriétés importantes . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.6.2 Et la fonction ln n? . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.6.3 Tchisla et logarithme . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.7 Morale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2 Partition d’un entier 43


2.1 Le problème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.2 Formule asymptotique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.3 Approche exhaustive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4 Récurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5 Programmation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.6 Mémorisation paresseuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Cliquez ici pour telecharger le PDF complet