« 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 24 : | Ligne 24 : | ||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/tp1_enonce.pdf Sujet du TP 1] |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/tp1_enonce.pdf Sujet du TP 1] |
||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/fichiersTP1/ Fichiers pour le TP] |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/fichiersTP1/ Fichiers pour le TP] |
||
- Nécessité d'importer la librairie Matplotlib |
|||
<!-- |
<!-- |
||
- Pour obtenir un graphe sous windows |
|||
rajouter 'print(commands)' à la fin de fonction buildGnuPlotCommands |
|||
Copier les lignes depuis 'set xlabel ... replot' |
|||
Et les copier dans un émulateur en ligne de gnuplot comme http://gnuplot.respawned.com : |
|||
Les insérer dans 'Plot script' à la place de ce qu'il y a après 'set output 'out.svg' |
|||
- Pour le Problème 2 pour générer des couples de coordonnées aléatoires directement dans python: |
|||
import random |
|||
A= [] |
|||
for i in range(input): |
|||
A.append((random.randint(0,input),random.randint(0,input))) |
|||
print(A) |
|||
- Pour le Problème 2 pour générer des couples de points aléatoires directement dans python: |
|||
import random |
|||
A= [] |
|||
for i in range(input): |
|||
A.append(Point(random.randint(0,input),random.randint(0,input))) |
|||
print(A) |
|||
TP2 le 9 octobre : Problème NP-complet |
TP2 le 9 octobre : Problème NP-complet |
||
Chaque groupe peut choisir un des trois sujets suivants |
Chaque groupe peut choisir un des trois sujets suivants |
||
Ligne 95 : | Ligne 70 : | ||
Cours 1 (7 septembre) : Introduction |
Cours 1 (7 septembre) : Introduction |
||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S1Cours/CM1.pdf Introduction] |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S1Cours/CM1.pdf Introduction] |
||
- Exemple de différents tris |
|||
- Exemple de différents tris <!-- [http://www.lama.univ-savoie.fr/~provencal/enseignement/INFO704/tri.tgz Programme C/gtk pour illustrer différents algorithmes de tri].--> |
|||
- Notions d'instance et de problème |
- Notions d'instance et de problème |
||
- Notion de complexité asymptotique |
- Notion de complexité asymptotique |
||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/ |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S1Cours/grandO.pdf Grand-O de la notation de Landau] |
||
<!-- - Encodage d'une instance |
|||
- 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]. |
|||
--> |
|||
TD 1 (10 septembre) : |
TD 1 (10 septembre) : Analyses d'algorithmes |
||
Analyses d'algorithmes |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/ExoAnalyse.pdf Sujet du TD] |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/ExoAnalyse.pdf Sujet du TD] |
||
<!-- - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/Correction_exercices_2et3.pdf Correction des questions 1 et 2 du TD] --> |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/rappelsLog.pdf Fonctions mathématiques de base : polynômes, exponentielles et logarithmes] |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/rappelsLog.pdf Fonctions mathématiques de base : polynômes, exponentielles et logarithmes] |
||
Ligne 114 : | Ligne 84 : | ||
Algorithmes récursifs (Diviser pour régner) |
Algorithmes récursifs (Diviser pour régner) |
||
- Présentation des algorithmes Diviser-pour-régner. |
- Présentation des algorithmes Diviser-pour-régner. |
||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/ |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S3Cours/fct_rec.pdf Théorème général.] |
||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/ |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S3Cours/distance_min.pdf distance minimale] |
||
⚫ | |||
⚫ | |||
⚫ | |||
- Problème du rendu de monnaie. [https://mycore.core-cloud.net/index.php/s/taOj7Moq8gDy9vz Rendu monnaie] |
|||
!-- - 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] |
|||
⚫ | |||
- 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).] |
|||
--> |
|||
TD 2 (29 septembre) : Exercices d'analyse pour des algos récursifs ("Master Theorem") |
TD 2 (29 septembre) : Exercices d'analyse pour des algos récursifs ("Master Theorem") |
||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/ |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S4TD/exos_diviser_pour_regner.pdf Exercices, complexité des fonctions récursives]. |
||
<!-- - [https://www.csd.uwo.ca/~mmorenom/CS424/Ressources/master.pdf Pour s'entraîner, exercices supplémentaires sur l'application du "Théorème maître" (sur la page de Marc Moreno Maza, MIT)]. --> |
<!-- - [https://www.csd.uwo.ca/~mmorenom/CS424/Ressources/master.pdf Pour s'entraîner, exercices supplémentaires sur l'application du "Théorème maître" (sur la page de Marc Moreno Maza, MIT)]. --> |
||
<!-- Complexité des problèmes |
<!-- Complexité des problèmes |
||
Ligne 146 : | Ligne 104 : | ||
Cours 3 (2 octobre) : |
Cours 3 (2 octobre) : |
||
<!-- |
<!-- |
||
⚫ | |||
Analyse des algorithmes |
|||
⚫ | |||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S3TD/ExoAnalyse.pdf Sujet du TD] |
|||
⚫ | |||
- Complexité d'éléments basiques : instructions, tests, boucles Pour et TantQue |
|||
- Cas des algorithmes récursifs. |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S3TD/BasesAnalyse.pdf 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)]. |
|||
- [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/distance_min.pdf Problème du calcul de la distance minimum entre deux points]. |
|||
--> |
--> |
||
TD 3 (5 octobre) : |
TD 3 (5 octobre) : |
||
⚫ | |||
<!-- Algorithmes récursifs (Diviser-pour-régner) |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S5TD/exo_div_pour_regner.pdf Exercice algorithmes récursifs] |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S5TD/Solution-TD_operationsEntiers.pdf Correction des derniers exos de la feuille de TD.] |
|||
!-- |
|||
- 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. |
|||
-- - [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)]. |
|||
--> |
--> |
||
Version du 1 octobre 2020 à 14:25
Responsable 2020: Sébastien Tavenas
Adresse couriel : sebastien.tavenas@univ-smb.fr
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
Dates provisoires :
- 22/25 septembre - 9 octobre - 16 octobre
TP1 les 22/25 septembre : Analyser la complexité d'algorithmes
- Sujet du TP 1 - Fichiers pour le TP - Nécessité d'importer la librairie Matplotlib
Déroulement (2020)
Cours 1 (7 septembre) : Introduction
- Introduction - Exemple de différents tris - Notions d'instance et de problème - Notion de complexité asymptotique - Grand-O de la notation de Landau
TD 1 (10 septembre) : Analyses d'algorithmes
- Sujet du TD - Fonctions mathématiques de base : polynômes, exponentielles et logarithmes
Cours 2 (17 septembre) :
Algorithmes récursifs (Diviser pour régner)
- Présentation des algorithmes Diviser-pour-régner. - Théorème général. - distance minimale
TD 2 (29 septembre) : Exercices d'analyse pour des algos récursifs ("Master Theorem")
- Exercices, complexité des fonctions récursives.
Cours 3 (2 octobre) :
TD 3 (5 octobre) :
Cours 4 (13 octobre) :
TD 4 (14 octobre) :
Cours 5 (23 octobre, matin) :
TD 5 (23 octobre, après-midi) :
Annales Examen
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.