CONTEXTE ET OBJECTIFS Algorithmique et ComplexiTé Présentation du cours ACT - Master1 Informatique Sophie Tison -Lille1- sophie.tison@lifl.fr Les algorithmes sont au coeur de l informatique: tris, recherche, compression, ordonnancement, algorithmes géométriques, recommandation,... Objectif: Avoir des outils pour concevoir un bon -c.à.d. correct et efficace - algorithme pour résoudre un problème. DEMANDE UN CERTAIN SAVOIR-FAIRE Existe-il un algorithme pour résoudre le problème? Connaître quelques notions de calculabilité et de décidabilité. Comment modéliser le problème? Est-ce un problème classique? Savoir modéliser, Connaître et savoir reconnaître des grands classiques
DEMANDE UN CERTAIN SAVOIR-FAIRE Est-ce un problème classique? Savoir modéliser, Connaître et savoir reconnaître des grands classiques Tris, méthodes de sélection, recherche Algorithmique des graphes, Méthodes de hachages Programmation linéaire...... Comment concevoir un algorithme? Schémas d algorithmes, Algorithmic design patterns Diviser pour régner Programmation Dynamique Algorithmes gloutons CELA POSE DE NOMBREUSES QUESTIONS... ET DEMANDE PAS MAL DE SAVOIR-FAIRE. L algorithme est-il correct? Savoir prouver un algorithme... ou tout du moins avoir un minimum de rigueur L algorithme est-il efficace? Savoir analyser la complexité d algorithmes
Peut-on trouver un algorithme plus efficace pour le problème? Est-ce un problème dur? Avoir quelques notions de Complexité des problèmes Si le problème est dur, comment l appréhender! Connaître quelques techniques d Algorithmique Avancée: Méta-heuristiques, Algorithmes probabilistes,... Backtracking, minmax, séparation-évaluation PROGRAMME PRÉVISIONNEL Objectifs du cours Organisation Quelques exemples introductifs Présentation et Rappels (2 cours) Quelques schémas d algorithmes (4 cours) Un peu de complexité de problèmes (3 cours) Un peu d algorithmique avancée (1-2 cours) Quelques notions de décidabilité et calculabilité (1 cours)
RESSOURCES Résumés de cours distribués en amphi, Transparents de cours mis sur le portail au fur et à mesure De nombreux livres comme par exemple:. Cormen, Leiserson, Rivest, Introduction à l algorithmique, Dunod (disponible à la BU) vraiment une référence en algorithmique,. S. Skiena, Algorithm Design Manual, une mine! (Une version on-line proche du livre papier ),. Jon Kleinberg & Eva Tardos, Algorithm design, Addison Wesley 2005 LES TPS Il y aura 12 séances de TP (langage au choix: Java, C, Caml) encadrées pour la mise en oeuvre directe des méthodes étudiées en cours. Les TPs seront évalués. de nombreuses ressources en ligne! EVALUATION Le contrôle continu sera basé sur. les TPs. un DS en milieu de semestre ( a priori le 3 novembre).. éventuellement un bonus donné par le chargé de TD: par exemple, devoirs maison, préparation d exercices... La note de contrôle continu sera CC = 1/3 (note DS) + 2/3 (note TP) + éventuel bonus. La note finale sera sup(exam, (Examen + CC)/2). Objectifs du cours Organisation Quelques exemples introductifs
Problème 1: Trouver le plus court chemin entre deux sommets d un graphe C est un grand classique: algorithme de Dijkstra, algorithme de Ford Bellman, algorithme de Floyd-Warshall,... Problème 2: Trouver le chemin le plus long sans cycle entre deux sommets dans un graphe Si vous trouvez un algorithme efficace, vous gagnez 1 million de dollars. LES 7 PROBLÈMES DU MILLENIUM INSTITUT CLAY 7 problèmes ont été identifiés comme Millenium problems pour leur impact par l Institut Clay, avec pour chacun d eux 1million de dollars de récompense à la clef. Si vous montrez qu on ne peut pas en trouver un, vous gagnez aussi 1 million de dollars! Pour quel problème peut-on trouver un algorithme efficace? LES PROBLÈMES DU MILLENIUM INSTITUT CLAY EULER ET HAMILTON P versus NP la conjecture de Poincaré l hypothèse de Riemann... La conjecture de Poincaré a été prouvée en 2003 par Grigori Perelman par qui a reçu et refusé le prix en 2010. Le problème qui nous concerne ici est P versus NP. Problème 1: Trouver un cycle qui passe une et une seule fois par tous les sommets d un graphe Problème 2: Trouver un cycle qui passe une et une seule fois par tous les arcs d un graphe Pour quel problème peut-on trouver un algorithme efficace?
HAMILTON Problème 1: Trouver un cycle qui passe une et une seule fois par tous les sommets d un graphe EULER ET HAMILTON Problème 2: Trouver un cycle qui passe une et une seule fois par tous les arcs d un graphe C est la recherche d un cycle eulérien: C est la recherche d un cycle hamiltonien: encore un problème à un million de dollars! Il faut et il suffit que le graphe soit connexe sans sommet de degré impair. Il existe un algorithme efficace! LES PONTS DE KOENIGSBERG GROUPES EN PAIX Données: un ensemble d étudiants. Chacun donne la liste de ceux avec qui il s entend. Problème 1: répartir si c est possible! en deux groupes tels que les membres d un même groupe s entendent tous entre eux. Problème 2: répartir si c est possible! en trois groupes tels que les membres d un même groupe s entendent tous entre eux.
GROUPES EN PAIX LE PREMIER EST FACILE... Données: un ensemble d étudiants. Chacun donne la liste de ceux avec qui il s entend. Problème 1: répartir, si c est possible, les étudiants en deux groupes tels que les membres d un même groupe s entendent tous entre eux. tant qu il reste des étudiants non placés Mettre un étudiant au hasard dans A tant qu il reste un ennemi de A(resp. B) non placé si il n a pas d ennemis dans B (resp. A) l y mettre sinon répartition impossible L ALGORITHME EST-IL CORRECT? tant qu il reste des étudiants non placés Mettre un étudiant au hasard dans A tant qu il reste un ennemi de A(resp. B) non placé si il n a pas d ennemis dans B (resp. A) l y mettre sinon répartition impossible si l algo sort une solution, elle est correcte: invariant: Tous les membres de A (resp. B) s entendent. si l algo sort répartition impossible, il n y a pas de solution: pourquoi? pour simplifier supposons que le graphe des ennemis soit connexe. invariant suppplémentaire: si il y a une solution, un groupe contient les étudiants de A, l autre ceux de B. On généralise ensuite au cas de plusieurs composantes connexes. L algo s arrête! GROUPES EN PAIX LE DEUXIÈME EST MOINS FACILE... FACILE, VOUS AVEZ DIT FACILE? Données: un ensemble d étudiants. Chacun donne la liste de ceux avec qui il s entend. Problème 2: répartir si c est possible en trois groupes tels que les membres d un même groupe s entendent tous entre eux. Si vous trouvez un algorithme efficace, vous gagnez 1 million de dollars. Si vous montrez qu on ne peut pas en trouver un, vous gagnez aussi 1 million de dollars! On peut montrer que c est bien un problème à un million de dollars (cf partie 2 du cours). Attention: Dire que le problème 1 est plus facile que le problème 2 veut dire ici qu on connaît un algorithme efficace pour le problème 1 mais qu on n en connaît pas pour le problème 2. On précisera cette notion de facile/dur dans la deuxième partie du cours. Bien sûr ici, pour les mêmes données, si il y a une solution avec deux groupes, il y a une solution avec 3 groupes!
BINÔMES OU TRINÔMES? Données: un ensemble d étudiants. Chacun donne la liste de ceux avec qui il veut bien faire équipe. Problème 1: Regrouper les étudiants en binômes qui s entendent (si possible). Problème 2: Regrouper les étudiants en trinômes qui s entendent Le problème 1 a un algorithme efficace -non trivial-, c est un problème de perfect matching (algorithme de Edmonds). Le deuxième n a pas d algorithme efficace connu, c est encore un problème à un million de dollars. BINÔMES REVISITÉS Données: un ensemble d étudiants. Chacun donne une liste totalement ordonnée par préférence des autres étudiants. Problème des binômes bis: proposer une bonne répartition des étudiants en binômes Qu est-ce qu une bonne répartition? Une répartition est stable si il n y a pas deux binômes (A,B) et (C,D) tels que A préfère travailler avec D, C préfère travailler avec B. Il n y pas toujours de répartition stable! Si il y en a une, il existe un algorithme efficace pour la trouver (Irving 85). Problème proche: les mariages stables ou encore l affectation sur des postes: cette-fois ci il y a deux types d éléments à apparier : (poste, personne)... La semaine prochaine: Cours, TD et TP