« INFO704 : Analyse d'algorithmes » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Ligne 43 : Ligne 43 :


Cours 7 et 8 (4 octobre) : Programmation dynamique.
Cours 7 et 8 (4 octobre) : Programmation dynamique.
- Solutions aux exercices du cours précédent : [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/solutionsDPR/dmin.cpp dmin.cpp] [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/solutionsDPR/multGrandsEntiers.cpp multGrandsEntiers.cpp] [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/solutionsDPR/sommeMax.cpp sommeMax.cpp]
- Solutions aux exercices du cours précédent : [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/solutionsDPR/dmin.cpp dmin.cpp] [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/solutionsDPR
/multGrandsEntiers.cpp multGrandsEntiers.cpp] [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/solutionsDPR/sommeMax.cpp sommeMax.cpp]
- Distance de Levenshtein [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/Levenshtein.py Levenshtein.py] [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/animaux Petite banque de mots].
- Devoir "Impression équilibrée"
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/impression_eq.py Code à compléter (Python 2).]
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/impression_eq-python3.py Code à compléter (Python 3).]


== Historique ==
== Historique ==

Version du 4 octobre 2016 à 13:09

Responsable pour 2015--2016: Xavier Provençal
  • Xavier Provençal (CM/TD/TP)

Quelques ressources bibliographiques

Ouvrage de référence :

  1. Cormen, Leiserson, Rivest et Stein, Algorithmique, 3e edition (2009). ( Aussi appelé "Introductino à l'algorithmique" pour les deux premières éditions )

Autres références bibliographiques :

  1. Wilf, Algorithms and Complexity, (1994). Disponible en ligne
  2. Garey et Johnson, Computers and intractability a guide to the theory of NP-completeness. (1979).
  3. Paschos, Complexité et approximation polynomiale, (2004).
  4. Hopcroft et Ullman, Introduction to automata theory, languages, and computation, (1979).

TP

À venir.

Déroulement (2016-2017)

Cours 1 et 2 (13 septembre) : Introduction

- Exemple "Tri lent" Programme C/gtk pour illustrer différents algorithmes de tri.
- Notions d'instance et de problème
- Encodage d'une instance
- Feuille de rappels et exo Grand-O.
- Feuille de rappels et exo Logarithme et exponentielle.
- Feuille de rappels et exo Analyse d'algorithmes, les bases.

Cours 3 et 4 (20 septembre) : Complexité temporelle des fonctions simples

- Retour sur la feuille de rappels et exo "Analyse d'algorithmes, les bases".
- Tests empiriques de la complexité des fonctions récursives : Script pour fabriquer une courbes des temps de calcul (utilise gnuplot).
- Théorèmes relatifs à la complexité temporelle des fonctions récursives.
- Exercices, complexité des fonctions récursives.
- Exercices supplémentaires sur l'application du "Théorème maître" (sur la page de Bill Thies, MIT).
- Problème du calcul de la distance minimum entre deux points.

Cours 5 et 6 (27 septembre) : Diviser-pour-régner (suite et fin).

- Comparaison d'approches naïves VS diviser-pour régner (théorie et implémentation).
- Problème de la distance minimum dans un nuage de points.
- Problème du sous-tableau de somme maximale.
- Problème de la multiplication de grands entiers.
- Deuxième version du script graphChrono.py pour fabriquer une courbes des temps de calcul (utilise gnuplot).

Cours 7 et 8 (4 octobre) : Programmation dynamique.

- Solutions aux exercices du cours précédent : dmin.cpp  [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/solutionsDPR

/multGrandsEntiers.cpp multGrandsEntiers.cpp] sommeMax.cpp

- Distance de Levenshtein Levenshtein.py Petite banque de mots.
- Devoir "Impression équilibrée"
  - Code à compléter (Python 2).
  - Code à compléter (Python 3).

Historique

Ce cours est une refonte de INFO724 Algorithmique avancée, graphes et NP-complétude.