« INFO704 : Analyse d'algorithmes » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 31 : | Ligne 31 : | ||
- Notions d'instance et de problème |
- Notions d'instance et de problème |
||
- Encodage d'une instance |
- Encodage d'une instance |
||
- Feuille de rappels et |
- Feuille de rappels et exercices : logarithme et ordres de grandeur. <!-- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/grandO.pdf Grand-O]. |
||
- Feuille de rappels et exo [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/log_exp.pdf Logarithme et exponentielle]. |
- Feuille de rappels et exo [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/log_exp.pdf Logarithme et exponentielle]. |
||
- Feuille de rappels et exo [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/analyse_algo_base.pdf Analyse d'algorithmes, les bases]. --> |
- Feuille de rappels et exo [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/analyse_algo_base.pdf Analyse d'algorithmes, les bases]. --> |
||
Cours 3 (19 septembre) : Complexité |
Cours 3 (19 septembre) : Complexité des algorithmes gloutons et Diviser-pour-régner |
||
- Algorithmes gloutons |
|||
⚫ | |||
- Présentation des algorithmes Diviser-pour-régner. |
|||
⚫ | |||
- Tests empiriques de la complexité des fonctions récursives : [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/graphChrono.tgz Script pour fabriquer une courbes des temps de calcul (utilise gnuplot)]. |
- Tests empiriques de la complexité des fonctions récursives : [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/graphChrono.tgz Script pour fabriquer une courbes des temps de calcul (utilise gnuplot)]. |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/fct_rec.pdf Théorèmes relatifs à la complexité temporelle des fonctions récursives]. |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/fct_rec.pdf Théorèmes relatifs à la complexité temporelle des fonctions récursives]. |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/exo_div_pour_regner.pdf Exercices, complexité des fonctions récursives]. |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/exo_div_pour_regner.pdf Exercices, complexité des fonctions récursives]. |
||
- [http://www.csail.mit.edu/~thies/6.046-web/master.pdf Exercices supplémentaires sur l'application du "Théorème maître" (sur la page de Bill Thies, MIT)]. |
- [http://www.csail.mit.edu/~thies/6.046-web/master.pdf Exercices supplémentaires sur l'application du "Théorème maître" (sur la page de Bill Thies, MIT)]. |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/distance_min.pdf Problème du calcul de la distance minimum entre deux points]. |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/distance_min.pdf Problème du calcul de la distance minimum entre deux points]. --> |
||
Cours 4 et 5 (26 septembre) : Diviser-pour-régner (suite et fin). |
Cours 4 et 5 (26 septembre) : Complexité des algorithmes Diviser-pour-régner (suite et fin) + Programmation dynamique. |
||
- Comparaison d'approches naïves VS diviser-pour régner (théorie et implémentation). |
- 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 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. |
- Problème de la multiplication de grands entiers. |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/graphChrono.tgz Deuxième version du script graphChrono.py pour fabriquer une courbes des temps de calcul (utilise gnuplot)]. |
<!-- - [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/graphChrono.tgz Deuxième version du script graphChrono.py pour fabriquer une courbes des temps de calcul (utilise gnuplot)]. --> |
||
Cours 6 et 7 (3 et 9 octobre) : |
Cours 6 et 7 (3 et 9 octobre) : Probabilités. |
||
- Complexité en cas moyen. |
|||
⚫ | |||
- Complexité d'un algorithme probabiliste. |
|||
⚫ | <-- - 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]. |
- 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.py Code à compléter (Python 2).] |
||
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/impression_eq-python3.py Code à compléter (Python 3).] |
- [http://lama.univ-savoie.fr/~provencal/enseignement/INFO704/impression_eq-python3.py Code à compléter (Python 3).] |
||
--> |
--> |
||
Cours 8 et 9 (17 octobre) : |
Cours 8 et 9 (17 octobre) : Complexité des problèmes |
||
- Algorithmes de type "Retour sur bande". |
|||
- Cycle Eulérien VS Cycle Hamiltonien. |
|||
- Complexité d'un problème. |
- Complexité d'un problème. |
||
- Classe P. |
- Classe P. |
||
<!-- - Types de problèmes ( décision, optimisation, existence ). --> |
|||
- Réduction polynomiale. |
- Réduction polynomiale. |
||
- Algorithme de vérification. |
- Algorithme de vérification. |
||
- Classe NP. |
- Classe NP. |
||
Cours 10 et 11 (24 octobre) : |
Cours 10 et 11 (24 octobre) : NP-complétude |
||
- Problèmes NP-difficiles et NP-complets. |
- Problèmes NP-difficiles et NP-complets. |
||
- Théorème de Cook. |
- Théorème de Cook. |
||
- Preuve de NP-Complétude : Couverture des arêtes et k-coloriage. |
- Preuve de NP-Complétude. <!-- : Couverture des arêtes et k-coloriage. --> |
||
Cours 12 ( 6 novembre) : |
Cours 12 ( 6 novembre) : Analyse amortie? |
||
== Historique == |
== Historique == |
Version du 12 septembre 2017 à 00:24
Responsable 2017: Sébastien Tavenas
Quelques ressources bibliographiques
Ouvrage de référence :
- Cormen, Leiserson, Rivest et Stein, Algorithmique, 3e edition (2009). ( Aussi appelé "Introduction à l'algorithmique" pour les deux premières éditions )
Autres références bibliographiques :
- Wilf, Algorithms and Complexity, (1994). Disponible en ligne
- Garey et Johnson, Computers and intractability a guide to the theory of NP-completeness. (1979).
- Hopcroft et Ullman, Introduction to automata theory, languages, and computation, (1979).
TP
TP les 10 octobre et 6 novembre.
Déroulement (2017-2018)
Cours 1 et 2 (12 septembre) : Introduction
- Exemple "Tri lent" - Notions d'instance et de problème - Encodage d'une instance - Feuille de rappels et exercices : logarithme et ordres de grandeur.
Cours 3 (19 septembre) : Complexité des algorithmes gloutons et Diviser-pour-régner
- Algorithmes gloutons - Présentation des algorithmes Diviser-pour-régner.
Cours 4 et 5 (26 septembre) : Complexité des algorithmes Diviser-pour-régner (suite et fin) + Programmation dynamique.
- 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 de la multiplication de grands entiers.
Cours 6 et 7 (3 et 9 octobre) : Probabilités.
- Complexité en cas moyen. - Complexité d'un algorithme probabiliste.
<-- - Solutions aux exercices du cours précédent : dmin.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).
-->
Cours 8 et 9 (17 octobre) : Complexité des problèmes
- Complexité d'un problème. - Classe P. - Réduction polynomiale. - Algorithme de vérification. - Classe NP.
Cours 10 et 11 (24 octobre) : NP-complétude
- Problèmes NP-difficiles et NP-complets. - Théorème de Cook. - Preuve de NP-Complétude.
Cours 12 ( 6 novembre) : Analyse amortie?
Historique
Ce cours était donné précédemment par Xavier Provençal. Ce cours est une refonte de INFO724 Algorithmique avancée, graphes et NP-complétude.