Introduction à l algorithmique. David Cachera ENS Cachan Bretagne



Documents pareils
ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

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

Représentation des Nombres

Programmation linéaire

Chapitre 7. Récurrences

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

Rappels sur les suites - Algorithme

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

1 Recherche en table par balayage

Quelques algorithmes simples dont l analyse n est pas si simple

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

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

Calculateur quantique: factorisation des entiers

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

Recherche dans un tableau

4. Les structures de données statiques

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

Représentation d un entier en base b

Probabilités sur un univers fini

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

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

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

Introduction à l étude des Corps Finis

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

Programmes des classes préparatoires aux Grandes Ecoles

Algorithmique I. Algorithmique I p.1/??

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

TABLE DES MATIÈRES CHAPITRE I. Les quanta s invitent

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

I. Polynômes de Tchebychev

Algorithmique et Programmation

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

Calculs de probabilités

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

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

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

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

# 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>

Carl-Louis-Ferdinand von Lindemann ( )

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

ARBRES BINAIRES DE RECHERCHE

Compter à Babylone. L écriture des nombres

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Chapitre VI - Méthodes de factorisation

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Licence Sciences et Technologies Examen janvier 2010

Les arbres binaires de recherche

Algorithmes récursifs

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Conversion d un entier. Méthode par soustraction

Développement décimal d un réel

PRECISION - REJET DE PERTURBATIONS T.D. G.E.I.I.

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

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

MIS 102 Initiation à l Informatique

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

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

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

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

Théorie et codage de l information

Résolution d équations non linéaires

MABioVis. Bio-informatique et la

Algorithmes de recherche


IV- Comment fonctionne un ordinateur?

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

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Plus courts chemins, programmation dynamique

Chapitre 5 : Flot maximal dans un graphe

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Chapitre 2. Eléments pour comprendre un énoncé

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Etude de fonctions: procédure et exemple

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

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Algorithmique, Structures de données et langage C

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

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

Algorithme. Table des matières

Cours d algorithmique pour la classe de 2nde

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

Limitations of the Playstation 3 for High Performance Cluster Computing

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Quantification Scalaire et Prédictive

ELEC2753 Electrotechnique examen du 11/06/2012

Probabilités sur un univers fini

Limites finies en un point

Sites web éducatifs et ressources en mathématiques

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Cours d Informatique

Organigramme / Algorigramme Dossier élève 1 SI

Le chiffre est le signe, le nombre est la valeur.

Image d un intervalle par une fonction continue

LE PROBLEME DU PLUS COURT CHEMIN

Algorithmique et Programmation, IMA

Transcription:

1 Introduction à l algorithmique David Cachera ENS Cachan Bretagne

2 Plan Introduction à l algorithmique Notion de complexité Recherche dichotomique Calculs de puissance

3 Un peu d histoire Etymologie algiros (pénible, malade) + arithmos (nombre) = algorisme Abu Mohammed ibn Mûsâ al-khowârizmî (IX e s) Al-jabr wa'l-muqabalah «remise en place et simplification» : règles de calcul sur la représentation décimale Moyen-âge : algoristes vs. abaquistes

Un peu d histoire : machines 4

5 Un peu d histoire XIX e -XX e siècles : du calcul à la procédure fin XIX e : axiomatisation des mathématiques (Cantor, Bolzano...) quels problèmes peut-on résoudre de façon mécanique? pas de machine concrète : dispositif abstrait programme de Hilbert : décrire et prouver les résultats mathématiques de façon finitaire et systématique impossible : Gödel

6 Procédure effective : différents modèles idée commune : décomposition en calculs élémentaires fonctions récursives circuits machine de Turing (1936) tous sont équivalents!

7 Définition (Universalis) : «spécification d'un schéma de calcul, sous forme d'une suite d'opérations élémentaires obéissant à un enchaînement déterminé.»... insuffisante : nombre fini de données nombre fini d étapes, chaque étape étant formée d un nombre fini d opérations effectives terminaison déterminisme programme : description d un algorithme dans un langage «compris» par une machine

8 Calculabilité et complexité Peu de problèmes ont une solution algorithmique problème de l arrêt : il n existe pas de programme qui, étant donné le texte d un programme, répond «oui» si celui-ci s arrête en temps fini, «non» sinon résultat indépendant de la modélisation de la notion de programme (ou algorithme) théorie de la calculabilité (décidabilité)

9 Calculabilité et complexité Pour ceux qui admettent une solution, les algorithmes sont-ils utilisables en pratique? pour un problème donné, il peut y avoir plusieurs algorithmes différents plus ou moins adaptés à un langage de programmation donné utilisant plus ou moins de ressources de calcul temps mémoire évaluation de la complexité

10 Complexité Évaluer le nombre d opérations élémentaires (ou la quantité de mémoire) nécessaires à l exécution de l algorithme. Notion robuste Indépendante d un ordinateur donné Indépendante du langage de programmation, du compilateur Exprimée en fonction de la taille de la donnée à traiter Modèle abstrait Pas un temps en microsecondes Pas un nombre exact : ordre de grandeur opération élémentaire Opération qui prend un temps considéré comme constant Réalisme du modèle? ex coût de transfert vs. coût de calcul Mais les méthodes de calcul restent les mêmes

11 Un premier exemple : recherche d un élément dans une collection

12 Recherche d un élément dans une collection? Modélisation du problème : un tableau T de n éléments chaque élément est indicé par un entier entre 1 et n on recherche l élément X en parcourant tout le tableau on s arrête dès qu on a trouvé X

13 Algorithme pour i = 0 à n-1 faire si T[i] = X alors sortir fin pour Remarques pseudo-code : pas un langage de programmation pas de déclaration préalable des objets comment sait-on que X a été trouvé? si i < n, i est l indice minimal d une case du tableau contenant X

14 Correction de l algorithme L algorithme termine toujours (boucle pour, sans modification de i) Si à la fin i<n, c est qu on est sorti de la boucle avant sa terminaison normale, donc T[i] = X Sinon? Notion d invariant de boucle à chaque retour au début de la boucle, on vérifie la propriété I : pour tout k tel que 0!k<i, T[k] " X conservation de l invariant on note i la valeur de i après l exécution du corps de la boucle : si T[i]=X alors i =i sinon i =i+1 si I est vrai pour i, alors I est vrai pour i si à la fin i=n, l invariant nous permet de conclure que X n est pas dans T l invariant nous fournit aussi la minimalité de i

15 Complexité maximale pour i = 0 à n-1 faire si T[i] = X alors sortir fin pour Questions fondamentales : que compter? En fonction de quoi? Paramètre : taille du tableau (n) Opération élémentaire comparaison T[i]=X hypothèse de complexité unitaire Complexité au pire : n comparaisons de X à T[i] Cmax(n) = n

16 Complexité en moyenne De façon générale, pour un algorithme A, Cmoy(n)=!d Dn p(d).c(a,d) Dn : ensemble des données de taille n p(d) : probabilité d avoir la donnée d en entrée de l algorithme C(A,d) : coût de l algorithme A sur la donnée d On a la relation Cmin(n) " Cmoy(n) " Cmax(n)

17 Complexité en moyenne pour i = 0 à n-1 faire si T[i] = X alors sortir fin pour Ici, on considère tous les éléments de T sont distincts q la probabilité que X soit dans T si X est dans T, toutes les positions sont équiprobables Pour i entre 0 et n-1, on note Di les données où X apparaît à la i e place, et D0 celles où X est absent. On a alors p(di)=q/n et p(d0)=1- q C(A,d) = i+1 si d Di, C(A,d)= n si d D0 donc Cmoy(n)=(1- q).n +! (i+1).(q/n)=(1- q).n + (n +1).q/2

18 Ordres de grandeur f O(g) «f=o(g)» il existe une constante positive c et un entier n0 tels que f(n)! c. g(n) pour tout n # n0 f est dominée asymptotiquement par g f $(g) il existe deux constantes positives c et C et un entier n0 tels que C. g(n)! f(n)! c. g(n) pour tout n # n0 f et g sont de même ordre de grandeur asymptotique temps constant linéaire O(c)!(n) quadratique!(n 2 ) polynomial O(n p ) (au plus) exponentiel O(2 np )

19 Ordres de grandeur n 10 50 100 300 n " log2(n) 33 282 665 2469 n 2 100 2500 10000 90000 n 3 1000 125 000 1 000 000 27. 10 6 n 5 100 000 312 500 000...(11 chiffres)...(13 chiffres) 2 n 1024...(16 chiffres)...(31 chiffres)...(91 chiffres) nombre de protons dans l univers : 79 chiffres nombres de secondes depuis le big bang : 24 chiffres

Recherche dichotomique 20

21 Recherche dichotomique Recherche d un élément dans un tableau linéaire au pire et en moyenne Peut-on faire mieux? tableau trié : recherche dichotomique Image: dan / FreeDigitalPhotos.net

22 Recherche dichotomique On recherche l élément X dans le tableau T, de taille n soit M l élément au milieu de T si X=M, fin de la recherche si X>M, X ne peut se trouver que dans la moitié droite de T si X<M, X ne peut se trouver que dans la moitié gauche de T g??? d 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

23 Recherche dichotomique g:=0 ; d:=n-1 tant que g d faire m:=(g+d) div 2 si X=T[m] alors res:=m ; sortir sinon si X<T[m] alors d:=m-1 sinon g:=m+1 fin tant que si g>d alors res:=0 Remarque : g et d peuvent «dépasser» des bornes de T, mais pas m

24 Correction Il faut montrer que l algorithme termine toujours s il existe un entier i entre 1 et n tel que T[i]=X alors l algorithme termine avec res entre 1 et n tel que T[res]=X réciproquement, si res est strictement positif à la fin, c est que X est dans le tableau Terminaison on considère la suite (gi,di) des bornes dans les itérations successives de la boucle g0=0 et d0=n-1 mi=(gi+di) div 2 à l itération k, si gk>dk ou si T[mk]=X alors on sort de la boucle si gk!dk et X<T[mk], il y a une nouvelle itération avec gk+1=gk et dk+1=mk-1<dk le cas X>T[mk] est symétrique la suite des écarts (dk - gk) est donc strictement décroissante

25 Correction Retour d un résultat toujours avec la suite (gi,di), on considère p l indice d arrêt : pour k<p on a gk!dk, et soit gp>dp, soit X=T[mp] on montre par récurrence sur k la propriété P suivante pour tout k entre 0 et p, il existe un entier ik tel que gk! ik!dk et T[ik]=X

26 Complexité de la recherche dichotomique On évalue le nombre de comparaisons entre X et T[m] À chaque itération, la taille de la portion de T dans laquelle se fait la recherche est divisée par 2 Relation de récurrence : C(n)! 2 + C(n div 2) On montre par récurrence forte sur n que C(n)! 2 log2(n) + 2 vrai pour n=1 si vrai pour k<n, alors C(n)! 2 + (2 log2(n div 2) + 2)! 2 + (2 log2(n/2) + 2)! 2 + 2 log2(n) Complexité au pire en O(log2(n)) (en fait, $(log2 (n)) ) Complexité en moyenne : aussi en $(log2 (n)) (plus difficile)

Calcul de puissance 27

28 Algorithme de multiplication Complexité? x Algorithme naïf : complexité en O(n 2 ), où n est la taille (nombre de chiffres) des opérandes Rem : il existe des solutions (logicielles et matérielles) plus astucieuses...

29 Calcul de A n A quoi ça sert? puissances de grands entiers : cryptographie (RSA) chemins dans des graphes : puissances de matrices Algo naïf : A A A A A A A... A : n-1 multiplications On va essayer d être plus efficace si n est une puissance de 2 : A, A 2, A 4,... A n si n est pair : A n = (A n/2 ) 2 si n est impair : A n = A A n-1 on va s appuyer sur le codage binaire de n n pair : l écriture binaire de n se termine par 0 n impair : l écriture binaire de n se termine par 1 ex. n = 23 : 10111

30 Algorithme «SX» [Inde - II e s av JC] 10111 =10110+1=1011*2+1: A 10111 =A carre(a 1011 ) A 23 =A carre(a carre(a carre(carre(a 1)))) puissances successives : 1 2 4 5 10 11 22 23 on transforme l écriture binaire de n 0 donne S (square) 1 donne SX (square and multiply) ex : 23 donne SXSSXSXSX algo : commencer à 1 lire le mot de S et X de gauche à droite S : élévation au carré X : multiplication par A

31 Algo «SX» + pas de stockage intermédiaire - on commence par les poids forts nombre de multiplications : longueur binaire de n + nombre de 1 optimisation : commencer par A au lieu de 1 permet d économiser 2 multiplications

32 Dans l autre sens... Démarrage par les poids faibles? (multiplication des égyptiens) n = ak 2 k + ak-1 2 k-1 +... + a1 2 + a0 A n =(A 2k ) a k (A 2 k-1 ) a k-1 (A 2 ) a 1 (A) a 0 stocker les A p pour les puissances successives de 2 multiplier lorsque le bit correspondant est à 1

33 Dans l autre sens... r:=1 ; y:=a pour i de 0 à k faire si a[i]=1 alors r := r * y y := y * y fin pour Nombre de multiplications : longueur binaire de n + nombre de 1 Optimalité des méthodes binaires? ex. n=15=1111 6 avec SX optimisé A 15 =A5 A5 A5

34 Conclusion Algorithmique trouver des solutions effectives à un problème modélisation du problème notion de structure de données (ici tableau) souci d efficacité Calculs de complexité : analyse des algorithmes au pire (maximale), en moyenne moyenne : souvent techniques difficiles, notions de probabilité

35 Correction Retour d un résultat toujours avec la suite (gi,di), on considère p l indice d arrêt : pour k<p on a gk!dk, et soit gp>dp, soit X=T[mp] on montre par récurrence sur k la propriété P suivante pour tout k entre 0 et p, il existe un entier ik tel que gk! ik!dk et T[ik]=X la propriété P est vraie pour k=0 supposons P vraie pour k<p par hypothèse de récurrence, gk!dk, et mk=(gk+dk) div 2 le cas X=T[mk] est impossible car k<p, il reste donc deux cas soit X<T[mk], et alors ik < mk puisque la liste est triée ; comme gk+1=gk et dk+1=mk -1, on a gk+1!ik!dk+1 et X=T[ik] : on pose ik+1=ik le deuxième cas est symétrique la récurrence est établie, on a donc gk! ik!dk, et X est bien découvert dans le tableau