Algorithmique L3.

Documents pareils
ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Calculabilité Cours 3 : Problèmes non-calculables.

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Algorithmique I. Algorithmique I p.1/??

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Chapitre 7. Récurrences

4. Les structures de données statiques

Cours de Master Recherche

Quelques Algorithmes simples

Machines virtuelles Cours 1 : Introduction

Feuille TD n 1 Exercices d algorithmique éléments de correction

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

Algorithmes de recherche

L exclusion mutuelle distribuée

MIS 102 Initiation à l Informatique

Introduction à l étude des Corps Finis

Algorithmique et Programmation

Quelques algorithmes simples dont l analyse n est pas si simple

Plus courts chemins, programmation dynamique

Optimisation for Cloud Computing and Big Data

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Programmation linéaire

UE Programmation Impérative Licence 2ème Année

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Définitions. Numéro à préciser. (Durée : )

Les arbres binaires de recherche

Analyse et programmation 1

Correction TD algorithmique

Initiation à l algorithmique

Rappels sur les suites - Algorithme

Représentation d un entier en base b

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Parallélisme et Répartition

Probabilités sur un univers fini

Cours Optimisation Partie Optimisation Combinatoire. Année scolaire Gérard Verfaillie ONERA/DCSD/CD, Toulouse

1 Recherche en table par balayage

Calculateur quantique: factorisation des entiers

Bases de programmation. Cours 5. Structurer les données

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

ALGORITHMIQUE ET PROGRAMMATION En C

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Algorithme. Table des matières

INF601 : Algorithme et Structure de données

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Resolution limit in community detection

Entraînement au concours ACM-ICPC

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Algorithmes de recherche d itinéraires en transport multimodal

Corrigé des TD 1 à 5

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Cours d initiation à la programmation en C++ Johann Cuenin

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

Application de K-means à la définition du nombre de VM optimal dans un cloud

Masses de données. 1. Introduction 2. Problématiques 3. Socle de formation (non présenté) 4. Liens avec Formation INSA

Sites web éducatifs et ressources en mathématiques

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Nouvelles propositions pour la résolution exacte du problème de sac à dos bi-objectif unidimensionnel en variables binaires

Cryptographie et fonctions à sens unique

Sécurité par compression! ReSIST Gilles RICHARD IRIT

Logiciel Libre Cours 3 Fondements: Génie Logiciel

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Théorie et codage de l information

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

La couche physique de l ADSL (voie descendante)

Suites numériques 4. 1 Autres recettes pour calculer les limites

Algorithmique et Programmation, IMA

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Comparer l intérêt simple et l intérêt composé

L ANALYSE EN COMPOSANTES PRINCIPALES (A.C.P.) Pierre-Louis GONZALEZ

Annexe 6. Notions d ordonnancement.

LE PROBLEME DU PLUS COURT CHEMIN

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Chapitre 5 : Flot maximal dans un graphe

Introduction à l algorithmique et à la programmation (Info 2)

Techniques d interaction dans la visualisation de l information Séminaire DIVA

Licence 2 Mathématiques- Semestre 3 Introduction aux mathématiques

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Introduction à MATLAB R

Console IAP Manuel d utilisation

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Conception des bases de données : Modèle Entité-Association

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Sujet 1 : Diagnostique du Syndrome de l apnée du sommeil par des techniques d analyse discriminante.

Conversion d un entier. Méthode par soustraction

Polynômes à plusieurs variables. Résultant

Transcription:

Algorithmique L3 http://www.liafa.jussieu.fr/~francoisl/l3algo.html

Plan 1 Informations générales 2 Introduction 3 Arbres binaires de recherche

Plan 1 Informations générales 2 Introduction 3 Arbres binaires de recherche

Equipe enseignante : Cours : François Laroussinie TD Groupe 1 : A. Carraro (jeudi 14h30 16h30; 478F) TD Groupe 2 : S. Jacob (mardi 14h30 16h30; 473F) TD Groupe 3 : T.-H. To (mardi 8h30 10h30; 470E) TD Groupe 4 (math-info) : M. Ferbus (mardi 16h30 18h30; 376F) TD Groupe 5 (EIDD) : S. Perifel (vendredi 10h45 12h45; 056A Bât. Condorcet)

Organisation des cours Cours et TD!!

Organisation des cours Cours et TD!! Cours + Poly TDs : feuilles d exercices + corrigés Une page web : http://www.liafa.jussieu.fr/~francoisl/l3algo.html

A faire tout de suite... RÉPONDRE AU QUESTIONNAIRE EN LIGNE! http://www.liafa.jussieu.fr/~francoisl/l3algo.html

Evaluation des connaissances Contrôle continu (coef. 0.35) + Examen (coef. 0.65) Contrôle continu = Devoir maison + TD noté Devoir maison : sujet donné la semaine du 11 octobre, à rendre le 1er novembre. TD noté : semaine du 22 novembre. Examen : début janvier.

Plan du cours Introduction Arbres binaires de recherche Définition, opérations de base Complexité (pire cas, moyenne) ABR équilibrés Algorithmique dans les graphes Parcours Composantes fortement connexes Arbres couvrants minimaux Plus courts chemins Bonus

Plan 1 Informations générales 2 Introduction 3 Arbres binaires de recherche

Vocabulaire un ordinateur = un objet, des ressources matérielles (le hardware). un algorithme = une recette, une méthode pour obtenir un résultat. un programme = un algorithme écrit dans un langage de programmation. un problème algorithmique = un problème à résoudre.

Vocabulaire un ordinateur = un objet, des ressources matérielles (le hardware). un algorithme = une recette, une méthode pour obtenir un résultat. un programme = un algorithme écrit dans un langage de programmation. un problème algorithmique = un problème à résoudre. Des exemples!

Algorithme Un algorithme est la description univoque d une méthode effective pour résoudre un problème, exprimée à l aide d une suite d instructions élémentaires.

Problèmes algorithmiques Données : un entier a Résultat : la somme 1+2+3+...+a Données : une liste de mots Résultat : la liste triée dans l ordre alphabétique Données : une liste de mots Résultat : une liste de pages Web contenant ces mots Données : une carte, deux villes A et B Résultat : un plus court chemin entre A et B Données : un programme P, une donnée a Résultat : réponse à est-il vrai que le résultat de P appliqué à a vaut 8a+5?... Un algorithme doit résoudre toutes les instances d un problème.

Exemple La recherche du minimum dans une liste d entiers...

Exemple La recherche du minimum dans une liste d entiers... 1 Noter le premier entier de la liste 2 Pour tous les entiers suivants, faire : Si l entier est inférieur à celui noté Alors remplacer celui-ci par le nouvel entier 3 Renvoyer le nombre noté.

Exemple La recherche du minimum dans une liste d entiers... En pseudo-code : Recherche du minimum Données : liste non vide d entiers L Résultat : entier m le plus petit de L m L(1) pour chaque i allant de 2 à L faire si L(i) < m alors m L(i) retourner m

Exemple La recherche du minimum dans une liste d entiers... En pseudo-code : Recherche du minimum Données : liste non vide d entiers L Résultat : entier m le plus petit de L m L(1) pour chaque i allant de 2 à L faire si L(i) < m alors m L(i) retourner m Des instances : [3, 10, 5, 24, 2, 12] [10]

Un problème...des algorithmes? Pour un problème donné, il peut y avoir plusieurs algorithmes différents...ou aucun!

Un problème...des algorithmes? Pour un problème donné, il peut y avoir plusieurs algorithmes différents...ou aucun! Lorsqu il existe plusieurs algorithmes, on peut les comparer selon plusieurs critères : les idées sous-jacentes, leur structure (récursif / itératif, glouton, prog. dynamique, diviser pour régner,...), les structures de données utilisées, la complexité algorithmique (i.e. les ressources temps, mémoire nécessaires à son exécution).

Complexité d un algorithme Complexité en temps ou en espace mémoire.

Complexité d un algorithme Complexité en temps ou en espace mémoire. Objectif : trouver un ordre de grandeur du nombre d opérations élémentaires nécessaires à l exécution de l algorithme. On ne veut pas mesurer le temps nécessaire en minutes ou microsecondes. On veut une notion robuste : indépendante d un ordinateur donné, d un compilateur, d un langage de programmation, etc. et exprimée en fonction de la taille de la donnée à traiter.

Complexité d un algorithme Complexité en temps ou en espace mémoire. Objectif : trouver un ordre de grandeur du nombre d opérations élémentaires nécessaires à l exécution de l algorithme. On ne veut pas mesurer le temps nécessaire en minutes ou microsecondes. On veut une notion robuste : indépendante d un ordinateur donné, d un compilateur, d un langage de programmation, etc. et exprimée en fonction de la taille de la donnée à traiter. opération élémentaire : opération qui prend un temps constant (ou presque).

Complexité en temps d un algorithme Coût de A sur x : l exécution de l algorithme A sur la donnée x requiert C A (x) opérations élémentaires.

Complexité en temps d un algorithme Coût de A sur x : l exécution de l algorithme A sur la donnée x requiert C A (x) opérations élémentaires. Complexité dans le pire cas : C A (n) def = max C A (x) x. x =n

Complexité en temps d un algorithme Coût de A sur x : l exécution de l algorithme A sur la donnée x requiert C A (x) opérations élémentaires. Complexité dans le pire cas : Complexité en moyenne C A (n) def = max C A (x) x. x =n C moy def A (n) = p(x) C A (x) x. x =n p : distribution de probabilités sur les données de taille n.

Algorithmes efficaces...et au delà! Quelques familles d algorithmes selon leur complexité : les algorithmes sous-linéaires : par exemple, en O(log(n)) les algorithmes linéaires : O(n) et quasi-linaires : O(n log(n)) les algorithmes polynomiaux : O(n k )

Algorithmes efficaces...et au delà! Quelques familles d algorithmes selon leur complexité : les algorithmes sous-linéaires : par exemple, en O(log(n)) les algorithmes linéaires : O(n) et quasi-linaires : O(n log(n)) les algorithmes polynomiaux : O(n k ) les algorithmes exponentiels : O(2 p(n) )...doublement exponentiels : O(2 2p(n) )... NB : O(g(n)) contient l ensemble des fonctions majorées par un c g(n) avec c > 0 au delà d un certain n 0...

Complexité en temps cela renvoie à de vraies différences!

fct \n 10 50 100 300 5n 50 250 500 1500 n log 2 (n) 33 282 665 2469 n 2 100 2500 10000 90000 n 3 1000 125000 10 6 (7c) 27 10 6 (8c) 2 n 1024...(16c)...(31c)...(91c) n! 3.6 10 6 (7c)...(65c)...(161c)...(623c) n n 10 10 9 (11c)...(85c)...(201c)...(744c) Notation : (Xc) signifie s écrit avec X chiffres en base 10. (le nb de protons dans l univers comporte 79 chiffres...et le nb de microsecondes depuis le big-bang a 24 chiffres!!)

Recherche dans un annaire Combien de comparaisons sont n cessaires pour savoir si il y a un M. Turing dans un annuaire de 1 million de noms?

Recherche dans un annaire Combien de comparaisons sont n cessaires pour savoir si il y a un M. Turing dans un annuaire de 1 million de noms? 20 comparaisons dans le pire cas!

Recherche dans un annaire Combien de comparaisons sont n cessaires pour savoir si il y a un M. Turing dans un annuaire de 1 million de noms? 20 comparaisons dans le pire cas! La première comparaison permet d éliminer 500000 noms, la seconde 250000, la 3ème 125000, la 4ème 62500, la 5ème 31250,...

Algorithmes efficaces...ou pas! Considérons un algorithme de complexité f(n) qui permette de résoudre en une heure les instances de taille X d un problème sur un ordinateur aujourd hui. Alors un ordinateur 1000 fois plus rapide permettrait en une heure de résoudre les instances de taille... 1000 X si f(n) = n,

Algorithmes efficaces...ou pas! Considérons un algorithme de complexité f(n) qui permette de résoudre en une heure les instances de taille X d un problème sur un ordinateur aujourd hui. Alors un ordinateur 1000 fois plus rapide permettrait en une heure de résoudre les instances de taille... 1000 X si f(n) = n, 31,6 X si f(n) = n 2,

Algorithmes efficaces...ou pas! Considérons un algorithme de complexité f(n) qui permette de résoudre en une heure les instances de taille X d un problème sur un ordinateur aujourd hui. Alors un ordinateur 1000 fois plus rapide permettrait en une heure de résoudre les instances de taille... 1000 X si f(n) = n, 31,6 X si f(n) = n 2, X +9,97 si f(n) = 2 n. (voir Algorithmics, the spirit of computing, D. Harel)

Autre exemple Imaginons un véhicule dont la consommation d énergie est une fonction linéaire (n) ou exponentielle (2 n ) de la distance à parcourir. Si l on peut faire 50 kilomètres avec un réservoir V, alors un réservoir 1000 fois plus gros, permettra de parcourir... 50000 km si la consommation est linéaire, et 60 km si la consommation est exponentielle!

A la recherche du bon algorithme Étant donné un problème, on cherche donc des algorithmes : corrects : qu ils calculent bien ce que l on veut, efficaces : nécessitant des ressources (temps, mémoire) raisonnables, et optimaux : cf le futur cours de complexité!

A la recherche du bon algorithme Étant donné un problème, on cherche donc des algorithmes : corrects : qu ils calculent bien ce que l on veut, efficaces : nécessitant des ressources (temps, mémoire) raisonnables, et optimaux : cf le futur cours de complexité! Peu de problèmes admettent des algorithmes utilisables en pratique. Il est important de savoir concevoir, vérifier et analyser des algorithmes.

Plan 1 Informations générales 2 Introduction 3 Arbres binaires de recherche