« INFO704 : Analyse d'algorithmes » : différence entre les versions
Aller à la navigation
Aller à la recherche
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
Responsable |
Responsable 2018: [http://www.lama.univ-savoie.fr/~tavenas Sébastien Tavenas] |
||
<!-- * Xavier Provençal (CM/TD/TP) --> |
<!-- * Xavier Provençal (CM/TD/TP) --> |
||
Ligne 15 : | Ligne 15 : | ||
== TP == |
== TP == |
||
TBA |
|||
⚫ | |||
TP les 10 octobre et 6 novembre. |
TP les 10 octobre et 6 novembre. |
||
- Énoncé du TP, première partie : [https://mycore.core-cloud.net/index.php/s/CmLxKnYRdR3ots9 tp-part-1.pdf]. Plus de détails pour chacuns des trois sujets : |
|||
* [https://mycore.core-cloud.net/index.php/s/pGWYh5foa81qWMQ tp-part-1-CHO.pdf] |
|||
* [https://mycore.core-cloud.net/index.php/s/28cFgEefXqte4hO tp-part-1-CHNO.pdf] |
|||
* [https://mycore.core-cloud.net/index.php/s/qttUkOHtF6Fawel tp-part-1-3C.pdf] |
|||
Voici aussi un exemple d'entrée pour chaque sujet : |
|||
* [https://mycore.core-cloud.net/index.php/s/0vzGaxLoTG7ILMV Graphe-vrai-CHO.pdf] |
|||
* [https://mycore.core-cloud.net/index.php/s/QUHwEnb8nlkpFxh Graphe-vrai-CHNO.pdf] |
|||
* [https://mycore.core-cloud.net/index.php/s/ItC1deMoQ2dZ1So Graphe-vrai-3C.pdf] |
|||
⚫ | |||
- Énoncé du TP, première partie : [http://www.lama.univ-savoie.fr/~provencal/enseignement/INFO704/tp-part-1.pdf tp-part-1.pdf]. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | !-- - Programmes pour générer des instances : [http://www.lama.univ-savoie.fr/~provencal/enseignement/INFO704/gen3SAT.py gen3SAT.py] [http://www.lama.univ-savoie.fr/~provencal/enseignement/INFO704/genCA.py genCA.py] [http://www.lama.univ-savoie.fr/~provencal/enseignement/INFO704/3SATtoCA.py 3SATtoCA.py]. |
||
⚫ | |||
Documents pour les réductions : |
|||
* [https://mycore.core-cloud.net/index.php/s/2kSpPVRP1gIdNEO Avro Chapitre 10] |
|||
* [https://mycore.core-cloud.net/index.php/s/YqRGl3CpFvKZbaX Cormen-Leiserson-Rivest-Stein Coloration] |
|||
* [https://mycore.core-cloud.net/index.php/s/dnSgmAEoKnN4uPe Cormen-Leiserson-Rivest-Stein HNO] (Attention la figure 34.16 est incorrecte. La remplacer par la figure 34.16 de la [https://mycore.core-cloud.net/index.php/s/EUmxSqxp1GdNdnz Version anglaise]) |
|||
* [https://mycore.core-cloud.net/index.php/s/jePhTQqlMMehW5M Hon HO] [https://mycore.core-cloud.net/index.php/s/eQ1hJsUxci863kx Version francaise] |
|||
* [https://mycore.core-cloud.net/index.php/s/MqkZ7PUiHLUz9ZY Garey-Johnson HNO] |
|||
* [https://mycore.core-cloud.net/index.php/s/s8mRmXna8vuMOk5 wiki proof] |
|||
Voici des exemples d'entrée pour 3SAT et Couverture par Sommets : |
|||
* [https://mycore.core-cloud.net/index.php/s/9LYEjRHq2Dc952o 3SAT-vrai] |
|||
* [https://mycore.core-cloud.net/index.php/s/Tj5K5BOFq4KQJLK CS-vrai] |
|||
* [https://mycore.core-cloud.net/index.php/s/3yqvTI5K6pZLgIf 3SAT-faux] |
|||
* [https://mycore.core-cloud.net/index.php/s/qnn6g6DjkwwAqBM CS-faux] |
|||
---> |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
- Notions d'instance et de problème |
- Notions d'instance et de problème |
||
- Notion de complexité asymptotique |
|||
<!-- - Encodage d'une instance |
|||
- 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 : logarithme [https://mycore.core-cloud.net/index.php/s/yjRYKWTIvp6VXgy Logarithme.pdf], ordres de grandeur [https://mycore.core-cloud.net/index.php/s/EDOsgVW03uaTrVH Grand-O.pdf] et correction partielle [https://mycore.core-cloud.net/index.php/s/IJVyy3hokrZIMSw Correction.pdf]. |
|||
- 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]. --> |
|||
TD 1 (14 septembre) : Rappels de mathématiques |
|||
- Grand-O de la notation de Landau |
|||
- Fonctions mathématiques de base : polynômes, exponentielles et logarithmes |
|||
TD2 (18 septembre) : Analyse des algorithmes |
|||
- Complexité d'éléments basiques : instructions, tests, boucles Pour et TantQue |
|||
- Algorithmes gloutons |
|||
- |
- Cas des algorithmes récursifs. |
||
<!-- - [https://mycore.core-cloud.net/index.php/s/j3d7p2BVmcF8um5 Analyse des algorithmes] |
|||
!-- - Retour sur la feuille de rappels et exo "Analyse d'algorithmes, les bases". |
|||
- 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]. |
||
Ligne 45 : | Ligne 73 : | ||
- [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 |
Cours 2 (21 septembre) : Algorithmes récursifs (Diviser pour régner) |
||
TD 3 (24 septembre) : Algorithmes récursifs (Diviser-pour-régner) + Premiers algorithmes de programmation dynamique |
|||
<!-- - Présentation des algorithmes Diviser-pour-régner. |
|||
- Théorème général. [https://mycore.core-cloud.net/index.php/s/dX35SwoTqMaDskG Théorème général] |
|||
- 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 du sous-tableau de somme maximale. --> |
|||
<!-- - 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 |
Cours 3 (28 septembre) : Programmation dynamique. |
||
<!-- - Problème de la distance minimum dans un nuage de points. [https://mycore.core-cloud.net/index.php/s/fh9C1oJ4HymuJI0 Distance] |
|||
⚫ | |||
- Problème du rendu de monnaie. [https://mycore.core-cloud.net/index.php/s/taOj7Moq8gDy9vz Rendu monnaie] |
|||
⚫ | |||
- Complexité d'un algorithme probabiliste. |
- 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" |
- Devoir "Impression équilibrée" |
||
Ligne 62 : | Ligne 95 : | ||
--> |
--> |
||
TD 4 (1 octobre) : Programmation dynamique |
|||
⚫ | |||
Cours 4 (5 octobre) : Complexité des problèmes |
|||
⚫ | |||
- 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 |
Cours 5 (9 octobre) : NP-complétude |
||
<!-- - Problèmes NP-difficiles et NP-complets. |
|||
- Théorème de Cook. |
- Théorème de Cook-Levin. [https://mycore.core-cloud.net/index.php/s/V9OUMtvnDuezpKl Cook-Levin] |
||
- Preuve de NP-Complétude. |
- Preuve de NP-Complétude. !-- : Couverture des arêtes et k-coloriage. -- |
||
--> |
|||
TD 5 (19 octobre) : NP-complétude |
|||
Cours 12 ( 6 novembre) : Analyse amortie? |
|||
== Historique == |
== Historique == |
Version du 18 septembre 2018 à 07:42
Responsable 2018: 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
TBA
Déroulement (2018-2019)
Cours 1 (10 septembre) : Introduction
- Exemple de différents tris - Notions d'instance et de problème - Notion de complexité asymptotique
TD 1 (14 septembre) : Rappels de mathématiques
- Grand-O de la notation de Landau - Fonctions mathématiques de base : polynômes, exponentielles et logarithmes
TD2 (18 septembre) : Analyse des algorithmes
- Complexité d'éléments basiques : instructions, tests, boucles Pour et TantQue - Cas des algorithmes récursifs.
Cours 2 (21 septembre) : Algorithmes récursifs (Diviser pour régner)
TD 3 (24 septembre) : Algorithmes récursifs (Diviser-pour-régner) + Premiers algorithmes de programmation dynamique
- Problème de la multiplication de grands entiers.
Cours 3 (28 septembre) : Programmation dynamique.
TD 4 (1 octobre) : Programmation dynamique
Cours 4 (5 octobre) : Complexité des problèmes
Cours 5 (9 octobre) : NP-complétude
TD 5 (19 octobre) : NP-complétude
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.