Cours 1: Introduction à l algorithmique



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

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Chapitre 7. Récurrences

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

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

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

Programmation linéaire

Algorithmique et Programmation

Architecture des Systèmes d Information Architecture des Systèmes d Information

MIS 102 Initiation à l Informatique

Chapitre 5 : Flot maximal dans un graphe

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

Les arbres binaires de recherche

ARBRES BINAIRES DE RECHERCHE

Résolution d équations non linéaires

Algorithmes récursifs

Image d un intervalle par une fonction continue

Cours 02 : Problème général de la programmation linéaire

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Algorithmique - Cours et Travaux Dirigés Ecole Normale Supérieure de Lyon

1 Recherche en table par balayage

Limites finies en un point

Licence Sciences et Technologies Examen janvier 2010

La fonction exponentielle

Résolution de systèmes linéaires par des méthodes directes

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Recherche dans un tableau

Fondements de l informatique Logique, modèles, et calculs

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Représentation d un entier en base b

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Resolution limit in community detection

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

Algorithmique, graphes et programmation dynamique Notes de Cours Rapport de Travaux Pratiques. Laurent Canet

Algorithmique, Structures de données et langage C

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Probabilités sur un univers fini

Intégration et probabilités TD1 Espaces mesurés Corrigé

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Continuité d une fonction de plusieurs variables

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

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

Exo7. Limites de fonctions. 1 Théorie. 2 Calculs

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Objets Combinatoires élementaires

Initiation à l algorithmique

Quelques Algorithmes simples

Continuité et dérivabilité d une fonction

Algorithmique et Programmation, IMA

Représentation des Nombres

Quantification Scalaire et Prédictive

3 Approximation de solutions d équations

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

Chapitre VI - Méthodes de factorisation

Équations non linéaires


Chp. 4. Minimisation d une fonction d une variable

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Pour l épreuve d algèbre, les calculatrices sont interdites.

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Théorie et codage de l information

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

4. Les structures de données statiques

Intégration et probabilités TD1 Espaces mesurés

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

ÉPREUVE COMMUNE DE TIPE Partie D

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Suites numériques 3. 1 Convergence et limite d une suite

Chaînes de Markov au lycée

Corrigé des TD 1 à 5

Introduction. Mathématiques Quantiques Discrètes

chapitre 4 Nombres de Catalan

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

CCP PSI Mathématiques 1 : un corrigé

Leçon 01 Exercices d'entraînement

Dualité dans les espaces de Lebesgue et mesures de Radon finies

Les structures de données. Rajae El Ouazzani

LE PROBLEME DU PLUS COURT CHEMIN

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

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

I. Polynômes de Tchebychev

Chapitre 6. Fonction réelle d une variable réelle

LES MÉTHODES DE POINT INTÉRIEUR 1

Texte Agrégation limitée par diffusion interne

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Cours 1 : La compilation

Calcul fonctionnel holomorphe dans les algèbres de Banach

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

CHAPITRE 5. Stratégies Mixtes

Rappels sur les suites - Algorithme

III- Raisonnement par récurrence

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Transcription:

1 Cours 1: Introduction à l algorithmique Olivier Bournez bournez@lix.polytechnique.fr LIX, Ecole Polytechnique 2011-12 Algorithmique

2 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème du maximum Trier

3 Recherche d un algorithme pour calculer x n. On part avec y0 = x (un entier, un réel, une matrice,... ) et un entier n. On souhaite calculer x n le plus rapidement possible.

Plus formellement: On doit construire une suite y 1, y 2,, y k. Règle du jeu: si j ai déjà calculé y0, y 1,, y i 1, alors je peux calculer y i = y j y k, pour 0 j, k < i. Question: trouver le meilleur algorithmque: opt(n) = min{r y 0, y 1,, y r suite correcte avec y r = x n }.

Première solution: Algorithme naïf On peut le faire avec n 1 étapes. En effet, il suffit de faire: y0 = x, pour i = 1 à n, y i = y i 1 y 0.

Méthode plus astucieuse: méthode binaire Plus astucieux: n pair, x n = (x n/2 ) 2. n impair, x n = (x n/2 ) 2 x. n = 0, x n = 1 n = 1, x n = x. D où le programme: fonction carre(int x) { retourner x*x } fonction puissance (int x, int n) { si n==0 alors retourner 1 si n==1 alors retourner x si n est pair alors retourner carre(puissance(x,n div 2)) si n est impair alors retourner carre(puissance(x, n div 2))*x }

Est-ce le meilleur algorithme? Réponse non: (plus petit contre exemple:) 15. Pour 15, méthode binaire prend 6 multiplications. On peut faire mieux: y = x 3 se calcule en deux multiplications, et y 5 = x 15 en trois multiplications, soit un total de 5.

Reformulation de la méthode binaire Sur un exemple: 13 en binaire: 1101. on barre le premier 1 pour chaque 1, on fait carre(x) x: note cx pour chaque 0, on fait carre(x): note c. Ici: 1101 donne cxccx: on calcule x 2,x 3, x 6, x 12, x 13. Cout cc(n) pour calculer x n par cette méthode: nombre de chiffres en base 2 de n + nombre de 1-2. nb de chiffres en base 2 de n: log 2 n + 1 On obtient: log 2 n cc(n) 2 log 2 n.

9 Retour sur le contre-exemple 15 = 1111 en binaire cc(15) = 6. 15 = 5*3. y 1 = x 2, y 2 = x 3. y 3 = y 1 y 1 = x 4, y 4 = y 3 x = x 5. y 5 = y 2 y 4. Idée: méthode des facteurs.

10 Méthode des facteurs On considère n = p q, où p est le plus petit facteur premier de n. On calcule x n en calculant x p et en élevant le résultat à la puissance q. Si n est premier, on calcule x n 1 et on multiplie par x. Sur un exemple: 55 = 5 11. On calcule y = x 5 = x 4 x = (x 2 ) 2 x On calcule y 11 = y 10 y = (y 2 ) 5 y. Au total 8 multiplications.

11 Est-ce le meilleur algorithme? Réponse non: (plus petit contre exemple:) 33. la méthode le fait en 7 multiplications, mais on peut le faire en 6 (par la méthode binaire).

12 Il y a une infinité de nombres pour lesquels la méthode des facteurs est meilleure que la méthode binaire (prendre n = 15 2 k ) ou le contraire (prendre n = 33 2 k ). Pour les puissances de 2, les deux méthodes sont identiques.

13 Méthode de l arbre de Knuth On construit un arbre. On part de (la racine) 1 (donc au niveau 1). Supposons construit les k premiers niveaux. on prend chaque sommet n du kème niveau, de gauche à droite, et on le relie avec les sommets n + 1, n + a 1, n + a 2,..., n + a k 1 = 2n (dans cet ordre), où 1, a 1, a 2,..., a k 1 = n représente le chemin de la racine à n. On ajoute pas un sommet si il est déjà dans l arbre. Arbre obtenu sur le transparent qui suit pour les premiers niveaux. Intérêt: Le chemin menant de la racine à n indique une suite d exposants permettant de calculer x n de façon efficace.

14 1 2 3 4 5 6 8 7 10 9 12 16 14 11 13 15 20 18 24 17 32

Statistiques Optimal? Non, mais... (Plus petit contre exemples:) 77 (puis 154, et 233). Plus petit n tel que méthode de l arbre meilleur que méthode des facteurs et méthode binaire est n = 23. Plus petit n pour lequel la la méthode de l arbre est moins bonne que celle des facteurs est n = 19879 = 103 194. Pour n 100000, l arbre est moins bon que les deux autres méthodes pour seulement 6 entiers.

16 Borne inférieure Théorème. log 2 n opt(n) 2 log 2 n. Par récurrence: la suite y 0 = x,..., y r est telle que y k = x α(k). Par récurrence α(k) 2 k car: c est vrai pour k = 0. y k = y i y j => α(k) = α(i) + α(j). HR: α(i) 2 i et α(j) 2 j. Donc α(k) 2 i + 2 j 2 2 max{i,j}. et puisque i, j k 1, α(k) 2 k. Pour le nombre d étapes k de l algorithme optimal, on doit avoir α(k) = n, et donc log 2 n k = opt(n). Calculer opt(n) est difficile (NP-complet). opt(n) On peut prouver que lim n log 2 n de Yves Robert). = 1 (voir Knuth + cours

17 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème du maximum Trier

18 Calculer le maximum Le problème MAX. On se donne une liste d entiers naturels e 1, e 2,, e n. On veut calculer max{e 1, e 2,, e n }.

18 Calculer le maximum Le problème MAX. On se donne une liste d entiers naturels e 1, e 2,, e n. On veut calculer max{e 1, e 2,, e n }. -1 si la liste est vide.

19 int [] T= new int[100]; int r = max(t);... int max(int [] T) { int max = T[1]; for (int j=2; j<= T.length; j++) { if (T[j] > max) max = T[j];} return max; } Nombre de comparaisons (hors variable de boucle) C(n) = n 1. Nombre d affectations (hors variable de boucle) 1 B(n) n. n = longueur de la liste.

20 Bornes extrêmes B(n) = 1 pour une liste qui débute par son plus grand élément. B(n) = n pour une liste triée. B(n) en moyenne? Attention, pour parler de moyenne, il faut que cela ait un sens. Par exemple, en supposant que les entrées sont des permutations de 1, 2,..., n, et que ces permutations sont équiprobables. 1 B(n) n.

21 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème du maximum Trier

Complexité d un problème, d un algorithme On fixe une mesure élémentaire: nombre de comparaisons, nombre d affectations, mémoire utilisée, temps utilisé,... Cette mesure associe à un algorithme A et une entrée d une valeur Complexite(A, d). On cherche souvent à évaluer cette complexité en fonction d un paramètre naturel n = taille(d), représentatif des entrées. Exemple: A: l algorithme itératif pour MAX précédent. d: une liste donnée en entrée. n = taille(d), le nombre d éléments dans la liste. Complexite(A, d), le nombre de comparaisons de A sur d. 22

On peut alors parler de la complexité (au pire cas) d un algorithme (on fait varier seulement les entrées) Complexite A (n) = max Complexite(A, d). d/taille(d)=n d un problème (on fait varier l algorithme, et les entrées) on considère le meilleur algorithme qui résoud le problème. Ce n est pas (subtile): Complexite(n) = inf A correct max Complexite(A, d) d/taille(d)=n On arrive parfois à parler de la complexité exacte. On doit souvent se limiter à une étude asymptotique, ou à des bornes asymptotiques.

24 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème du maximum Trier

25 Exemple d étude exacte Etude du problème MAX en nombre de comparaisons: Le problème MAX admet une solution avec n 1 comparaisons.

25 Exemple d étude exacte Etude du problème MAX en nombre de comparaisons: Le problème MAX admet une solution avec n 1 comparaisons. Cet algorithme est optimal en nombre de comparaisons.

Preuve Proposition: dans tout algorithme, tout élément autre que le maximum doit être comparé au moins une fois avec un élément qui lui est plus grand. Conséquence: il faut au moins n 1 comparaisons pour résoudre MAX.

Preuve Proposition: dans tout algorithme, tout élément autre que le maximum doit être comparé au moins une fois avec un élément qui lui est plus grand. Preuve: soit i0 le rang du maximum M retourné par l algorithme sur une liste L = e 1.e 2..e n. Par l absurde: soit j0 i 0 tel que e j0 n est pas comparé avec un élément plus grand que lui. e j0 n a donc pas été comparé avec e i0 le maximum Considérer la liste L = e 1.e 2..e j0 1.M + 1.e j0+1..e n obtenue à partir de L en remplaçant l élément d indice j 0 par M+1. L algorithme effectue exactement les mêmes comparaisons sur L et L, sans comparer L [j 0 ] avec L [i 0 ] et donc retournera L [i 0 ], ce qui est incorrect. Conséquence: il faut au moins n 1 comparaisons pour résoudre MAX.

Asymptotiques Pour un processeur capable d effectuer un million d instructions élémentaires par seconde. n n log 2 n n 2 n 3 1.5 n 2 n n! n = 10 < 1 s < 1 s < 1 s < 1 s < 1 s < 1 s 4 s n = 30 < 1 s < 1 s < 1 s < 1 s < 1 s 18 m 10 25 a n = 50 < 1 s < 1 s < 1 s < 1 s 11 m 36 a n = 10 2 < 1 s < 1 s < 1 s 1s 12.9 a 10 17 a n = 10 3 < 1 s < 1 s 1s 18 m n = 10 4 < 1 s < 1 s 2 m 12 h n = 10 5 < 1 s 2 s 3 h 32 a n = 10 6 1s 20s 12 j 31710 a Notations: = le temps dépasse 10 25 années, s= seconde, m= minute, h = heure, a = an.

28 Notation: Notation (Pire Cas) f (n) = O(g(n)) si et seulement si il existe deux constantes positives n 0 et B telles que n n 0, f (n) Bg(n) Ce qui signifie que f ne croît pas plus vite que g. Exemple: Le problème MAX admet une solution itérative en O(n) affectations. L algorithme itératif précédent fonctionne en O(n) affectations. Un algorithme en temps O(1) effectue un nombre constant d opérations. en temps O(n) s appelle un algorithme linéaire. en temps O(n k ) s appelle un algorithme polynomial.

29 Notation Notation (suite) f (n) = Ω(g(n)) si et seulement si il existe deux constantes positives n 0 et B telles que n n 0, f (n) Bg(n) f (n) = Θ(g(n)) si et seulement si il existe trois constantes positives n 0, B et C telles que n n 0, Bg(n) f (n) Cg(n) Exemple: Le problème MAX nécessite Θ(n) comparaisons. (à venir) Trier nécessite Ω(n log n) comparaisons.

30 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème du maximum Trier

Pourquoi trier? Trier est une opération naturelle. Travailler sur des données triées est parfois plus efficace. Exemple: Rechercher un élément dans un tableau à n éléments: O(n) (utiliser le principe de la fonction Dans précédente sur les listes). Rechercher un élément dans un tableau trié à n éléments: O(log n) (par dichotomie).

Pourquoi trier? Trier est une opération naturelle. Travailler sur des données triées est parfois plus efficace. Exemple: Rechercher un élément dans un tableau à n éléments: O(n) (utiliser le principe de la fonction Dans précédente sur les listes). Rechercher un élément dans un tableau trié à n éléments: O(log n) (par dichotomie). Trier devient intéressant dès que le nombre de recherches est en Ω(Complexite(tri)/n).