mardi 4 septembre 2018 | IntroductionAlgorithme de Gale et Shapley. Terminaison. Variant. Correction. Invariant. Algorithme sous-spécifié (plusieurs exécutions). Démonstration que ce qui proposent sont favorisés. Exposé de Judicaël Courant sur les mariages stages et les affectations des lycées dans le supérieur. |
mardi 11 septembre 2018 |
File de prioritéType abstrait (interface) VS structure de données (implémentation). File. Liste doublement chaînée. File de priorité. Implémentation naïve. Implémentation avec un tas. Construction d'un tas en temps linéaire. Problème du tri. Tri par tas : variante du tri sélection mais utilisant un tas. Type abstrait : file de priorité. Optimalité du tri par tas. Mise en place du projet wikipedia. |
mardi 18 septembre 2018 |
Structures de données pour un ensembleDiscussion autour des tableaux, vecteurs de bits. Table de hachage. Exemples de fonctions de hachage. Démonstration Arbres binaires de recherche : définitions, recherche d'un élément, ajout et suppression. Notion de structure persistante. Equilibrage : B-arbres. |
mardi 25 septembre 2018 | PAS DE COURS |
mardi 2 octobre 2018 |
Diviser pour régnerThéorème fondamental Multiplication de nombres : algorithme de Karatsuba Multiplication de matrices : algorithme de Strassen Transformation de Fourier rapide Multiplication de polynômes. Passage de la représentation par coefficients et par valeurs via FFT et FFT inverse. |
mardi 9 octobre 2018 | Parcours en profondeurImplémentation des graphes : matrice d'adjacence ou listes d'adjacence. Parcours en profondeur : algorithme, lemme des sommets non vus, complexité linéaire, pre/post, classification des arcs Tri topologique : magnets pour habiller le savant Cosinus Composantes fortement connexes : algorithme de Kosaraju(correction débutée)
|
mardi 16 octobre 2018 |
Correction de l'algorithme de Kosaraju
Parcours en largeurAlgorithme de parcours en largeur : distance des plus courts chemins Correction admise Adaptation pour un graphe pondéré positivement : algorithme de Dijkstra Correction de l'algorithme de Dijkstra Algorithme A* Implémentation de Dijkstra en C++ Demo sur le site d'un tutorial à IJCAI-ECAI 2018 |
mardi 23 octobre 2018 | PAS DE COURS |
jeudi 25 octobre 2018 | Algorithmes gloutonsArbre couvrant minimal Algorithme de Kruskal : exemple et correction Union find : version simple et compression de chemins Magnets qui illustrent la compression de chemins |
28 octobre au 3 novembre 2018 | VACANCES |
mercredi 7 novembre 2018 à 16h | Programmation dynamiqueExemple du problème de la plus longue sous-suite croissante pour expliquer :
|
mardi 13 novembre 2018 |
FlotsProblème du flot maximal Algorithme de Ford-Fulkerson Correction de Ford-Fulkerson : flot maximal = coupe minimale Réduction : exemple du couplage maximal. |
mardi 20 novembre 2018 |
Programmation linéaireIntroduction avec l'exemple du chocolatier. Résolution avec l'outil lp_solve sous linux Discussion sur programmation linéaire réelle, entière, mixte Réduction à la programmation linéaire : plus court chemin, flots, flot de coût minimum, sac à dos Conversion de programme linéaire : problèmes standards et canoniques Algorithme du simplexe : exécution sur l'exemple du chocolatier Discussions : espace des solutions non borné. Prétraitement pour se ramener à un problème canonique avec solution basique s'il y a une solution, ou détecter que l'espace des solutions est vide. Correction et terminaison de l'algo du simplexe admise. |
mardi 4 décembre 2018 |
Algorithme de recherche de solutionsExemple : sac à dos, voyageur de commerce, SAT. Backtracking. Idée générale du backjumping. Réduction à SAT : exemple du jeu Picross (démonstration) Branch and bound illustré sur sac à dos Local search pour voyageur de commerce, pour dessiner des diagrammes d'Euler (démonstration) |
lundi 17/12/2018 – 8h | TERMINAL : sujet |