Complexité des algorithmes (2) Tri par insertion (algo) Coût d une boucle pour. Algo. Nour-Eddine Oussous, Éric Wegrzynowski.

Documents pareils
ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

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

Initiation à l algorithmique

Rappels sur les suites - Algorithme

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

Algorithmes récursifs

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

Chapitre 7. Récurrences

Corrigé des TD 1 à 5

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

Polynômes à plusieurs variables. Résultant

ARBRES BINAIRES DE RECHERCHE

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

Programmation linéaire

CORRECTION EXERCICES ALGORITHME 1

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

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

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

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

Cours de Probabilités et de Statistique

CCP PSI Mathématiques 1 : un corrigé

MIS 102 Initiation à l Informatique

Structures algébriques

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

INTRODUCTION. 1 k 2. k=1

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

1 Recherche en table par balayage

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.

Simulation de variables aléatoires

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

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

Représentation d un entier en base b

Fonction inverse Fonctions homographiques

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

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

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

Les arbres binaires de recherche

Raisonnement par récurrence Suites numériques

Résolution d équations non linéaires

Programmation C++ (débutant)/instructions for, while et do...while

La persistance des nombres

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

Journées Télécom-UPS «Le numérique pour tous» David A. Madore. 29 mai 2015

Chapitre 5 : Flot maximal dans un graphe

TP1 Méthodes de Monte Carlo et techniques de réduction de variance, application au pricing d options

Cours de mathématiques

Triangle de Pascal dans Z/pZ avec p premier

Compter à Babylone. L écriture des nombres

Algorithmique et Programmation, IMA

4. Les structures de données statiques

Limites finies en un point

Correction TD algorithmique

Cryptographie et fonctions à sens unique

Par combien de zéros se termine N!?

Fonctions homographiques

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

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)

Ma banque, mes emprunts et mes intérêts

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

Quelques tests de primalité

Méthodes de Simulation

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

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

Amphi 3: Espaces complets - Applications linéaires continues

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

Optimisation Discrète

Continuité et dérivabilité d une fonction

Une introduction aux codes correcteurs quantiques

Le produit semi-direct

Tests non-paramétriques de non-effet et d adéquation pour des covariables fonctionnelles

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

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

Quantification Scalaire et Prédictive

année - Tronc commun - Harmonisation informatique

Quelques algorithmes simples dont l analyse n est pas si simple

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Bureau N301 (Nautile)

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

Correction du baccalauréat ES/L Métropole 20 juin 2014

Algorithmique I. Algorithmique I p.1/??

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

Logique. Plan du chapitre

Chapitre 2. Matrices

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

I. Polynômes de Tchebychev

Algorithmique et Programmation

Recherche dans un tableau

Plus courts chemins, programmation dynamique

Plan du cours Cours théoriques. 29 septembre 2014

Algorithmes de recherche

Bases de données documentaires et distribuées Cours NFE04

Exercice autour de densité, fonction de répatition, espérance et variance de variables quelconques.

Initiation à LabView : Les exemples d applications :

Optimisation des fonctions de plusieurs variables

Fonctions de plusieurs variables

Informatique Générale

Algorithmique et Programmation Fonctionnelle

Transcription:

Nour-Eddine Oussous, Éric Wegrzynowski Analyse des boucles Pour Analyse des boucles Tant Que Analyse de schémas récursifs 1 : factorielle : Tours de Hanoï Principe général 1er octobre 008 Coût d une boucle pour Dans la boucle pour i v a r i a n t de a à b f a i r e ACTION(i ) f i n pour si f (i) désigne le coût de l exécution de ACTION(i), alors le coût de la boucle est c = f (i) Tri par insertion (algo) Données : un tableau A[1..n] d entiers But : trier le tableau A par ordre croissant Var. locales : i pour i v a r i a n t de à n f a i r e i n s e r e r (A,i ) f i n pour

Le coût de l algorithme dépend 1. de la taille n du tableau. du contenu du tableau 3. du coût des opérations élémentaires (échanges, comparaisons, accès) Nous nous intéressons 1. au nombre d échanges d éléments du tableau e(a, n),. au nombre de comparaisons d éléments du tableau c(a, n) En désignant par e (A, i) c (A, i) les nombres d échanges de comparaisons dans l action inserer(a,i), on a e(a, n) = c(a, n) = e (A, i) c (A, i) Comme on a vu que on a 0 = n 1 = 0 e(a, n) 0 e (A, i) i 1 1 c (A, i) i 1 n 1 i 1 = i = 1 c(a, n) n 1 i 1 = i = Tri par insertion (conclusion) Encadrements obtenus : 0 e(a, n) Θ(n) = n 1 c(a, n) Bornes des encadrements atteintes = Θ(n ) = Θ(n ) borne inférieure atteinte pour un tableau déjà trié borne supérieure atteinte pour un tableau trié dans l ordre inverse

s de sommes i = i = 1 = n n(n + 1) n(n + 1)(n + 1) 6 = Θ(n ) = Θ(n 3 ) Lien entre sommes intégrales Soient a b deux entiers. Soit f : [a, b] R une fonction croissante (resp. décroissante) continue sur [a, b]. Alors ( resp. b 1 f (i) +1 f (i) b a b a f (x)dx f (x)dx f (i) (1) +1 b 1 f (i) ) () Plus généralement pour k N, i k = Θ(n k+1 ) Si q 1 q i = qn+1 1 q 1 = Θ(q n ) Coût d une boucle tant que Dans la boucle en notant tant que C(x ) f a i r e ACTION(x ) f i n tant que x 0 la valeur initiale de la donnée x, x 1, x,..., x k les valeurs qu elle prend successivement à chaque étape, x k+1 la première valeur de la donnée pour laquelle C(x k+1 ) n est pas satisfaite, g(x i ) le coût de la condition C(x i ), f (x i ) le coût de l action ACTION(x i ), le coût de la boucle est c = k k+1 f (x i ) + g(x i ) Multiplication de deux entiers Le problème Données : a b deux entiers naturels But : calculer a b Plusieurs algorithmes variant selon les opérations élémentaires disponibles : 1. multiplication disponible : solution triviale. seule l addition des entiers est disponible : solution avec boucle pour (exercice) 3. addition division par deux des entiers disponibles.

Méthode égyptienne Calcul du produit de a = 67 par b = 1. t u v 67 1 0 134 10 67 68 5 67 536 335 107 1 335 1407 1407 opération en cours Les nombres à multiplier u 1 t := t + t, u := u/ u = 1 terminé suppression des lignes où u est pair somme des valeurs restantes dans la colonne t utilisation d une variable v pour le calcul de la somme u impair v := v + t 67 1 = 1407 Seules opérations utilisées :+ Multiplication égyptienne : algo Données : a b deux entiers naturels, b > 0 But : calculer a b Variables locales : t, u, v mult (a,b ) : t := a ; u : = b ; v : = 0 ; {t u + v = a b } tant que u > 1 f a i r e s i u i m p a i r a l o r s v := v + t ; f i n s i ; t := t + t ; u := u ; {t u + v = a b } f i n tant que {t u + v = a b, u = 1 } r e t o u n e r t + v ; on s intéresse au nombre d additions effectuées ce coût ne dépend que de b c(b) = nombre d additions pour multiplier par b À chaque étape du tant que une ou deux additions selon la parité de u meilleur des cas : 1 addition à chaque étape. C est le cas si b est une puissance de : b = p. Dans ce cas c(b) = p + 1 pire des cas : additions à chaque étape. C est le cas si b est une puissance de moins un : b = p 1. Dans ce cas c(b) = (p 1) + 1= p 1

1 : factorielle Dans tous les cas, si p 1 b p 1 on a p c(b) p 1 En tenant compte du fait que p = Θ(log (b)), on a c(b) = Θ(p) = Θ(log (b)) c algorithme est logarithmique en fonction de la valeur de b ou bien linéaire en fonction de la taille p de b f a c t (n) : s i n = 0 a l o r s f a c t := 1 sinon f a c t := n f a c t (n 1) f i n s i coût recherché = nbre de multiplications dépend de n c(n) = nbre de mult pour calculer n! Cas de base Cas récursif c(0) = 0 n 1 c(n) = 1 + c(n 1) c(n) = n rithme linéaire en la valeur de n rithme exponentiel en la taille de n : Tours de Hanoï Principe général H(n,D,A,I ) : s i n = 1 a l o r s d e p l a c e r de D v e r s A sinon H(n 1,D,I,A) ; d e p l a c e r de D v e r s A ; H(n 1,I,A,D ) ; f i n s i coût recherché = nbre de déplacements dépend de n c(n) = nbre de déplacements Cas de base Cas récursif c(1) = 1 n 1 c(n) = 1 + c(n 1) c(n) = n 1 rithme exponentiel en la valeur de n Schéma d analyse récursive Le coût d un algorithme récursif peut toujours s exprimer sous forme d une équation de récurrence. la résolution des équations de récurrence peut s avérer parfois délicate mais peut toujours être programmée