« INFO704 : Analyse d'algorithmes » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 164 : | Ligne 164 : | ||
Cours 4 (1 octobre) : Complexité des problèmes |
Cours 4 (1 octobre) : Complexité des problèmes |
||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/Levenshtein.pdf Correction sur la distance de Levenshtein.] |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/Levenshtein.pdf Correction sur la distance de Levenshtein.] |
||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/ |
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/presentation1.0.pdf Introduction aux classes de complexité.] |
||
<!-- - Complexité d'un problème. |
<!-- - Complexité d'un problème. |
||
- Classe P. |
- Classe P. |
Version du 1 octobre 2019 à 13:08
Responsable 2019: 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
TP1 le 25 septembre : Analyser la complexité d'algorithmes
- Sujet du TP 1
Fichiers pour le TP :
- Fichiers pour GraphChrono - Fichiers pour Problème 2 - Fichiers pour Problème 3
- Pour le problème 1, vous pouvez ajouter cette partie dans votre programme et utiliser le générateur pour le Problème 2
import sys filename = sys.argv[1] tab = [] with open(filename, "r") as file: for line in file: tab.append( 1)
- 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 directement 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
TP3 le 18 octobre : Réductions polynomiales
Déroulement (2019-2020)
Cours 1 (9 septembre) : Introduction
- Introduction - Exemple de différents tris - Notions d'instance et de problème - Notion de complexité asymptotique
TD 1 (13 septembre) : Rappels de mathématiques
- Grand-O de la notation de Landau - Fonctions mathématiques de base : polynômes, exponentielles et logarithmes - Correction des questions 1 et 2 du TD
TD2 (16 septembre) : Analyse des algorithmes
- Complexité d'éléments basiques : instructions, tests, boucles Pour et TantQue - Cas des algorithmes récursifs. - Analyse des algorithmes
Cours 2 (18 septembre) : Algorithmes récursifs (Diviser pour régner)
- Présentation des algorithmes Diviser-pour-régner. - Théorème général. - Problème distance minimale
TD 3 (23 septembre) : Algorithmes récursifs (Diviser-pour-régner)
- Exercice algorithmes récursifs
Cours 3 (30 septembre) : Programmation dynamique.
TD 4 (30 septembre) : Programmation dynamique
Cours 4 (1 octobre) : Complexité des problèmes
- Correction sur la distance de Levenshtein. - Introduction aux classes de complexité.
Cours 5 (7 octobre) : Réductions de NP-complétude
TD 5 (15 octobre) : NP-complétude
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.