« 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 2021: Sébastien Tavenas |
||
Adresse couriel : sebastien.tavenas@univ-smb.fr |
Adresse couriel : sebastien.tavenas@univ-smb.fr |
||
== Problèmes == |
|||
== Quelques ressources bibliographiques == |
|||
Problème 1 : |
|||
Ouvrage de référence : |
|||
- Il y a N produits à acheter, chacun ayant un certain prix. Vous avez une somme E d'euros à votre disposition. Le but est d'obtenir le nombre maximum d'objets possible. |
|||
# Cormen, Leiserson, Rivest et Stein, Algorithmique, 3e edition (2009). ( Aussi appelé "Introduction à l'algorithmique" pour les deux premières éditions ) |
|||
- Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test commence par une ligne avec les valeurs N et E. La ligne suivante contient N entiers: la liste des prix des N produits. |
|||
- Sortie : Le nombre de produits que l'on peut obtenir à chaque test. |
|||
- Taille maximale des paramètres : |
|||
#== Quelques ressources bibliographiques == |
|||
# |
|||
# Wilf, Algorithms and Complexity, (1994). [http://www.math.upenn.edu/%7Ewilf/AlgoComp.pdf Disponible en ligne] |
|||
#Ouvrage de référence : |
|||
# Garey et Johnson, Computers and intractability a guide to the theory of NP-completeness. (1979). |
|||
## Cormen, Leiserson, Rivest et Stein, Algorithmique, 3e edition (2009). ( Aussi appelé "Introduction à l'algorithmique" pour les deux premières #éditions ) |
|||
<!-- # Paschos, Complexité et approximation polynomiale, (2004). --> |
|||
# |
|||
# Hopcroft et Ullman, Introduction to automata theory, languages, and computation, (1979). |
|||
#Autres références bibliographiques : |
|||
## Wilf, Algorithms and Complexity, (1994). [http://www.math.upenn.edu/%7Ewilf/AlgoComp.pdf Disponible en ligne] |
|||
== TP == |
|||
## Garey et Johnson, Computers and intractability a guide to the theory of NP-completeness. (1979). |
|||
#<!-- # Paschos, Complexité et approximation polynomiale, (2004). --> |
|||
Dates provisoires : |
|||
## Hopcroft et Ullman, Introduction to automata theory, languages, and computation, (1979). |
|||
- 22/25 septembre |
|||
# |
|||
- 9 octobre |
|||
#== TP == |
|||
- 16 octobre |
|||
# |
|||
#Dates provisoires : |
|||
# - 22/25 septembre |
|||
# - 9 octobre |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/tp1_enonce.pdf Sujet du TP 1] |
|||
# - 16 octobre |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/fichiersTP1/ Fichiers pour le TP] |
|||
# |
|||
- Nécessité d'importer la librairie matplotlib |
|||
# |
|||
#TP1 les 22/25 septembre : Analyser la complexité d'algorithmes |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/tp1_enonce.pdf Sujet du TP 1] |
|||
TP2 le 9 octobre : Problème NP-complet |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP1/fichiersTP1/ Fichiers pour le TP] |
|||
# - Nécessité d'importer la librairie matplotlib |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP2/instances/ Exemples d'entrée] |
|||
# |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP2/generator.py Générateur aléatoire d'entrées] |
|||
# |
|||
#TP2 le 9 octobre : Problème NP-complet |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP2/tp-part-1.pdf Sujet du TP 2 (Partie I)] |
|||
TP3 le 16 octobre : Réductions |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP2/instances/ Exemples d'entrée] |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP2/generator.py Générateur aléatoire d'entrées] |
|||
# |
|||
- Nécessité d'importer la librairie pycosat |
|||
# |
|||
#TP3 le 16 octobre : Réductions |
|||
<!--- |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/tp-part-2.pdf Sujet du TP 2 (Partie II)] |
|||
TP les 10 octobre et 6 novembre. |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/solveClique.py Esquisse de résolveur pour Clique] |
|||
# - Nécessité d'importer la librairie pycosat |
|||
- É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] |
|||
#TP les 10 octobre et 6 novembre. |
|||
* [https://mycore.core-cloud.net/index.php/s/qttUkOHtF6Fawel tp-part-1-3C.pdf] |
|||
# |
|||
Voici aussi un exemple d'entrée pour chaque sujet : |
|||
# - É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/ |
# * [https://mycore.core-cloud.net/index.php/s/pGWYh5foa81qWMQ tp-part-1-CHO.pdf] |
||
* [https://mycore.core-cloud.net/index.php/s/ |
# * [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 : |
|||
TP3 le 18 octobre : Réductions polynomiales |
|||
# * [https://mycore.core-cloud.net/index.php/s/0vzGaxLoTG7ILMV Graphe-vrai-CHO.pdf] |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/tp-part-2.pdf Énoncé du TP, deuxième partie]. |
|||
# * [https://mycore.core-cloud.net/index.php/s/QUHwEnb8nlkpFxh Graphe-vrai-CHNO.pdf] |
|||
- Documents pour les réductions : |
|||
# * [https://mycore.core-cloud.net/index.php/s/ItC1deMoQ2dZ1So Graphe-vrai-3C.pdf] |
|||
* [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Avro--Chapter10--ChallengingReductions.pdf Avro Chapitre 10] |
|||
#----- |
|||
* [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_Coloration.pdf Cormen-Leiserson-Rivest-Stein Coloration] |
|||
#TP3 le 18 octobre : Réductions polynomiales |
|||
* [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_HNO.pdf Cormen-Leiserson-Rivest-Stein HNO](Attention la figure 34.16 est incorrecte. La remplacer par la figure 34.16 de la [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_HNO_english.pdf Version anglaise]) |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/tp-part-2.pdf Énoncé du TP, deuxième partie]. |
|||
# - Documents pour les réductions : |
|||
* [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/garey-HNO.pdf Garey-Johnson HNO] |
|||
* [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/ |
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Avro--Chapter10--ChallengingReductions.pdf Avro #Chapitre 10] |
||
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_Coloration.pdf Cormen-Leiserson-Rivest-Stein #Coloration] |
|||
- Voici des exemples d'entrée pour 3SAT et Couverture par Sommets : |
|||
* [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/ |
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_HNO.pdf Cormen-Leiserson-Rivest-Stein HNO] |
||
#(Attention la figure 34.16 est incorrecte. La remplacer par la figure 34.16 de la [https://www.lama.univ-#savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cormen_HNO_english.pdf Version anglaise]) |
|||
* [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/ |
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/Cours_Hon_HO2.pdf Hon HO] [https://mycore.core-#cloud.net/index.php/s/eQ1hJsUxci863kx Version francaise] |
||
* [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/ |
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/garey-HNO.pdf Garey-Johnson HNO] |
||
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/DocsReduction/wiki_proof.pdf wiki proof] |
|||
# - Voici des exemples d'entrée pour 3SAT et Couverture par Sommets : |
|||
--> |
|||
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/Instances/3sat_vrai 3SAT-vrai] |
|||
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/Instances/CS_vrai CS-vrai] |
|||
== Déroulement (2020) == |
|||
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/Instances/3sat_faux 3SAT-faux] |
|||
# * [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/TP3/Instances/CS_faux CS-faux] |
|||
Cours 1 (7 septembre) : Introduction |
|||
# |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S1Cours/CM1.pdf Introduction] |
|||
#--> |
|||
- Exemple de différents tris |
|||
# |
|||
- Notions d'instance et de problème |
|||
#== Déroulement (2020) == |
|||
- Notion de complexité asymptotique |
|||
# |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S1Cours/grandO.pdf Grand-O de la notation de Landau] |
|||
#Cours 1 (7 septembre) : Introduction |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S1Cours/CM1.pdf Introduction] |
|||
# - Exemple de différents tris |
|||
TD 1 (10 septembre) : Analyses d'algorithmes |
|||
# - Notions d'instance et de problème |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/ExoAnalyse.pdf Sujet du TD] |
|||
# - Notion de complexité asymptotique |
|||
- [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/S1Cours/grandO.pdf Grand-O de la notation de Landau] |
|||
# |
|||
# |
|||
Cours 2 (17 septembre) : Algorithmes récursifs (Diviser pour régner) |
|||
#TD 1 (10 septembre) : Analyses d'algorithmes |
|||
- Présentation des algorithmes Diviser-pour-régner. |
|||
# - [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/rappelsLog.pdf 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. |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S4TD/exos_diviser_pour_regner.pdf Exercices, complexité des fonctions récursives]. |
|||
# - [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/S3Cours/distance_min.pdf distance minimale] |
|||
# |
|||
# |
|||
#TD 2 (29 septembre) : Exercices d'analyse pour des algos récursifs ("Master Theorem") |
|||
Cours 3 (2 octobre) : Programmation dynamique |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S4TD/exos_diviser_pour_regner.pdf Exercices, complexité des fonctions #récursives]. |
|||
- Algorithme récursif pour les nombres de Fibonacci |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/Solution-TD_operationsEntiers.pdf Solutions des questions 6 et 7]. |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S2TD/Solution_Question5.pdf Solution de la question 5]. |
|||
# |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S6TD/Cours_ProgDyn_Fibo_Levenshtein.pdf Présentation 'tablette' vue en cours] |
|||
# |
|||
#Cours 3 (2 octobre) : Programmation dynamique |
|||
# - Algorithme récursif pour les nombres de Fibonacci |
|||
TD 3 (5 octobre) : Exercices sur la programmation dynamique |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S5Cours/decoupe_barre_acompleter.py Programme python pour le problème #de découpe de barres] |
|||
# - Algorithme de [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S5Cours/Levenshtein.pdf Levenshtein] |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S6TD/Cours_ProgDyn_Fibo_Levenshtein.pdf Présentation 'tablette' vue en #cours] |
|||
- Si besoin, problème du sous-tableau de somme maximale. |
|||
# |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S6TD/Notes_TD_progDyn.pdf Notes lors de la correction] |
|||
# |
|||
#TD 3 (5 octobre) : Exercices sur la programmation dynamique |
|||
# |
|||
Cours 4 (13 octobre) : Premières réductions algorithmiques |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S6TD/exemples_pour_prog_dynamique.pdf Sujet du TD] |
|||
- Un liste de réductions algorithmiques entre différents problèmes |
|||
# - Si besoin, problème du sous-tableau de somme maximale. |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S7TD/Notes_red_3SUM_3Collinear.pdf Note sur les mathématiques derrière la réduction de 3SUM vers 3COLLINEAR] |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S6TD/Notes_TD_progDyn.pdf Notes lors de la correction] |
|||
<!-- Réductions de NP-complétude |
|||
# |
|||
!-- - Problèmes NP-difficiles et NP-complets. |
|||
# |
|||
- Théorème de Cook-Levin. [https://mycore.core-cloud.net/index.php/s/V9OUMtvnDuezpKl Cook-Levin] |
|||
#Cours 4 (13 octobre) : Premières réductions algorithmiques |
|||
- Preuve de NP-Complétude. !-- : Couverture des arêtes et k-coloriage. -- |
|||
# - Un liste de réductions algorithmiques entre différents problèmes |
|||
--> |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S7TD/Notes_red_3SUM_3Collinear.pdf Note sur les mathématiques derrière la #réduction de 3SUM vers 3COLLINEAR] |
|||
<!-- Complexité des problèmes |
|||
#<!-- Réductions de NP-complétude |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/presentation1.0.pdf Introduction aux classes de complexité.] |
|||
#!-- - Problèmes NP-difficiles et NP-complets. |
|||
!-- - Complexité d'un problème. |
|||
# - Théorème de Cook-Levin. [https://mycore.core-cloud.net/index.php/s/V9OUMtvnDuezpKl Cook-Levin] |
|||
- Classe P. |
|||
# - Preuve de NP-Complétude. !-- : Couverture des arêtes et k-coloriage. -- |
|||
!-- - Types de problèmes ( décision, optimisation, existence ). -- |
|||
#--> |
|||
- Réduction polynomiale. |
|||
#<!-- Complexité des problèmes |
|||
- Algorithme de vérification. |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/presentation1.0.pdf Introduction aux classes de complexité.] |
|||
- Classe NP. |
|||
#!-- - Complexité d'un problème. |
|||
--> |
|||
# - Classe P. |
|||
TD 4 (14 octobre) : Clique et consorts |
|||
#!-- - Types de problèmes ( décision, optimisation, existence ). -- |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/Clique-EI-CS.pdf Réductions autour de Clique et NP-complétude de Clique] |
|||
# - Réduction polynomiale. |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/ProblemeSAT.pdf Notes sur le problème SAT] |
|||
# - Algorithme de vérification. |
|||
<!-- Programmation dynamique |
|||
# - Classe NP. |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S7TD/TD-prog_dynamique.pdf Énoncé de TD.] |
|||
#--> |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/Levenshtein.pdf Correction sur la distance de Levenshtein.] |
|||
#TD 4 (14 octobre) : Clique et consorts |
|||
--> |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/Clique-EI-CS.pdf Réductions autour de Clique et NP-complétude de #Clique] |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S8Cours/ProblemeSAT.pdf Notes sur le problème SAT] |
|||
Cours 5 (23 octobre, matin) : Classes de complexité et NP-complétude |
|||
#<!-- Programmation dynamique |
|||
- [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/IntroNPcompletude.pdf Petite introduction en survol de la NP-complétude] |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S7TD/TD-prog_dynamique.pdf Énoncé de TD.] |
|||
# - [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/S9Cours/Levin-Cook.pdf Hors programme : slides sur les classes de complexité que j'avais utilisé lors d'une année antérieure quand je faisais la preuve du théorème de Levin-Cook] |
|||
# |
|||
#Cours 5 (23 octobre, matin) : Classes de complexité et NP-complétude |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/IntroNPcompletude.pdf Petite introduction en survol de la NP-#complétude] |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/INFO704-Classes_de_complexite.pdf Notes de cours sur les classes #de complexité] |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/VraiFaux-NP-completude.pdf Petit Vrai/Faux sur la NP-complétude] |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S9Cours/Levin-Cook.pdf Hors programme : slides sur les classes de #complexité que j'avais utilisé lors d'une année antérieure quand je faisais la preuve du théorème de Levin-Cook] |
|||
# |
|||
#TD 5 (23 octobre, après-midi) : Classes de complexité et NP-complétude |
|||
== Annales Examen == |
|||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S10TD/Enonce_TD.pdf Énoncé du TD] |
|||
[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/ |
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S10TD/INFO704-Probleme_sac_a_dos.pdf Problème du sac à dos] |
||
# - [https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/S10TD/Corrige_exercice3.pdf Corrigé de l'exercice 3 du TD] |
|||
# |
|||
== Historique == |
|||
# |
|||
Ce cours était donné précédemment par Xavier Provençal. |
|||
#== Annales Examen == |
|||
Ce cours est une refonte de [http://lama.univ-savoie.fr/mediawiki/index.php/INFO724_:_Algorithmique_avanc%C3%A9e,_graphes_et_NP-Compl%C3%A9tude INFO724 Algorithmique avancée, graphes et NP-complétude]. |
|||
# |
|||
#[https://www.lama.univ-savoie.fr/pagesmembres/tavenas/info704/Examen/examen.pdf Examen 2017] |
|||
# |
|||
#== Historique == |
|||
#Ce cours était donné précédemment par Xavier Provençal. |
|||
#Ce cours est une refonte de [http://lama.univ-savoie.fr/mediawiki/index.php/INFO724_:_Algorithmique_avanc%C3%A9e,_graphes_et_NP-#Compl%C3%A9tude INFO724 Algorithmique avancée, graphes et NP-complétude]. |
|||
# |
Version du 10 octobre 2021 à 16:14
Responsable 2021: Sébastien Tavenas
Adresse couriel : sebastien.tavenas@univ-smb.fr
Problèmes
Problème 1 :
- Il y a N produits à acheter, chacun ayant un certain prix. Vous avez une somme E d'euros à votre disposition. Le but est d'obtenir le nombre maximum d'objets possible.
- Entrée : La première ligne indique le nombre de tests à réaliser. Chaque test commence par une ligne avec les valeurs N et E. La ligne suivante contient N entiers: la liste des prix des N produits. - Sortie : Le nombre de produits que l'on peut obtenir à chaque test. - Taille maximale des paramètres :
- == 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
- TP2 le 9 octobre : Problème NP-complet
- - Sujet du TP 2 (Partie I)
- - Exemples d'entrée
- - Générateur aléatoire d'entrées
- TP3 le 16 octobre : Réductions
- - Sujet du TP 2 (Partie II)
- - Esquisse de résolveur pour Clique
- - Nécessité d'importer la librairie pycosat
- == 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.
- - Solutions des questions 6 et 7.
- - Solution de la question 5.
- Cours 3 (2 octobre) : Programmation dynamique
- - Algorithme récursif pour les nombres de Fibonacci
- - Programme python pour le problème #de découpe de barres
- - Algorithme de Levenshtein
- - Présentation 'tablette' vue en #cours
- TD 3 (5 octobre) : Exercices sur la programmation dynamique
- - Sujet du TD
- - Si besoin, problème du sous-tableau de somme maximale.
- - Notes lors de la correction
- Cours 4 (13 octobre) : Premières réductions algorithmiques
- - Un liste de réductions algorithmiques entre différents problèmes
- - Note sur les mathématiques derrière la #réduction de 3SUM vers 3COLLINEAR
- TD 4 (14 octobre) : Clique et consorts
- - Réductions autour de Clique et NP-complétude de #Clique
- - Notes sur le problème SAT
- Cours 5 (23 octobre, matin) : Classes de complexité et NP-complétude
- - Petite introduction en survol de la NP-#complétude
- - Notes de cours sur les classes #de complexité
- - Petit Vrai/Faux sur la NP-complétude
- - Hors programme : slides sur les classes de #complexité que j'avais utilisé lors d'une année antérieure quand je faisais la preuve du théorème de Levin-Cook
- TD 5 (23 octobre, après-midi) : Classes de complexité et NP-complétude
- - Énoncé du TD
- - Problème du sac à dos
- - Corrigé de l'exercice 3 du TD
- == Annales Examen ==
- Examen 2017
- == 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.