Exemples d algorithmes

Documents pareils
1 Recherche en table par balayage

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

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

Corrigé des TD 1 à 5

CCP PSI Mathématiques 1 : un corrigé

Recherche dans un tableau

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

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

Correction TD algorithmique

Algorithmique et Programmation, IMA

Les deux points les plus proches

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

Algorithmes récursifs

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

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

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

4. Les structures de données statiques

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

Initiation à la programmation en Python

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

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

3 Approximation de solutions d équations

Algorithmique I. Algorithmique I p.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)

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

Rappels sur les suites - Algorithme

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

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

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

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

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

TSTI 2D CH X : Exemples de lois à densité 1

Programmation Linéaire - Cours 1

Algorithmique et Programmation

Jean-Philippe Préaux

3. Conditionnement P (B)

Quelques tests de primalité

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

ARBRES BINAIRES DE RECHERCHE

Les arbres binaires de recherche

Leçon 01 Exercices d'entraînement

LEÇON N 7 : Schéma de Bernoulli et loi binomiale. Exemples.

DUT Techniques de commercialisation Mathématiques et statistiques appliquées

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

INTRODUCTION. 1 k 2. k=1

La classification automatique de données quantitatives

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Cours d algorithmique pour la classe de 2nde

Raisonnement par récurrence Suites numériques

Examen Médian - 1 heure 30

Programmation linéaire

Développement décimal d un réel

Comparaison de fonctions Développements limités. Chapitre 10

Continuité et dérivabilité d une fonction

Algorithmique et structures de données I

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

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

Licence Sciences et Technologies Examen janvier 2010

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Optimisation, traitement d image et éclipse de Soleil


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

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

alg - Classes, instances, objets [oo] Exercices résolus

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

Angles orientés et trigonométrie

Initiation à la Programmation en Logique avec SISCtus Prolog

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

Limites finies en un point

Introduction à MATLAB R

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

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

Représentation d un entier en base b

Simulation de variables aléatoires

V- Manipulations de nombres en binaire

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

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Cours Informatique Master STEP

Programmation linéaire

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Chapitre 5. Le ressort. F ext. F ressort

Initiation à LabView : Les exemples d applications :

Mathématiques Algèbre et géométrie

I. Polynômes de Tchebychev

L ALGORITHMIQUE. Algorithme

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

ACTUARIAT 1, ACT 2121, AUTOMNE 2013 #16

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

Algorithmique, Structures de données et langage C

Mathématiques financières

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

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

Texte Agrégation limitée par diffusion interne

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

Statistiques à une variable

NOTE SUR LA MODELISATION DU RISQUE D INFLATION

Fonctions homographiques

Transcription:

Exemples d algorithmes Algorithmique et Programmation LYCÉE CARNOT (DIJON), 2016-2017 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 1 / 51

Sommaire 1 Indice du maximum 2 Recherche dans un tableau 3 Moyenne, variance et écart type 4 Recherche dichotomique dans un tableau trié 5 Recherche d un mot dans une chaîne de caractères 6 Complément : l exponentiation Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 2 / 51

Indice du maximum Sommaire 1 Indice du maximum Algorithme Invariant de boucle et correction Terminaison 2 Recherche dans un tableau 3 Moyenne, variance et écart type 4 Recherche dichotomique dans un tableau trié 5 Recherche d un mot dans une chaîne de caractères 6 Complément : l exponentiation Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 3 / 51

Indice du maximum Algorithme Algorithme Algorithm 1 Indice du maximum entrée: T un tableau de n valeurs résultat: imax l indice du maximum du tableau indicemax(t) 1: n=taille(t) 2: imax=0 3: max T[0] 4: pour i entre 1 et n-1 faire 5: si T[i]> max alors 6: imax i 7: max T[i] 8: fin si 9: fin pour 10: renvoi: imax Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 4 / 51

Indice du maximum Invariant de boucle et correction Invariant de boucle et correction La variable max contient le maximum de T[0:i] et imax l indice de sa première apparition. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 5 / 51

Indice du maximum Terminaison Terminaison Absence de boucle conditionnelle Tant que. Pas de récursivité. Présence uniquement d une boucle inconditionnelle Pour. Le nombre d itérations est fini. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 6 / 51

Indice du maximum au mieux n + 1 (max en première position) au pire 3.n (tableau strictement croissant). Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 7 / 51

Indice du maximum au mieux n + 1 (max en première position) au pire 3.n (tableau strictement croissant). Donc C(n) = Θ(n). Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 7 / 51

Recherche dans un tableau Sommaire 1 Indice du maximum 2 Recherche dans un tableau Algorithme Invariant de boucle et correction Terminaison 3 Moyenne, variance et écart type 4 Recherche dichotomique dans un tableau trié 5 Recherche d un mot dans une chaîne de caractères 6 Complément : l exponentiation Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 8 / 51

Recherche dans un tableau Algorithme Algorithme Algorithm 2 Recherche dans un tableau entrée: T un tableau de n valeurs et x un élément (pas forcément du tableau) résultat: -1 si x T, l indice de la première occurrence de x dans le tableau T recherche(t,x) 1: i 0 2: n taille(t ) 3: tant que i<n et T[i] x faire 4: i i+1 5: fin tant que 6: si i=n alors i -1 7: fin si 8: renvoi: i Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 9 / 51

Recherche dans un tableau Invariant de boucle et correction Invariant de boucle et correction A chaque itération, x n apparaît pas dans les i + 1 premières cases du tableau. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 10 / 51

Recherche dans un tableau Terminaison Terminaison La suite des valeurs prises par i, entier, est strictement croissante et major?e par n. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 11 / 51

Recherche dans un tableau au mieux 2 (tableau vide) ou 3 (x en première position) au pire 2.n + 2 (x n apparaît pas). Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 12 / 51

Recherche dans un tableau au mieux 2 (tableau vide) ou 3 (x en première position) au pire 2.n + 2 (x n apparaît pas). Donc C(n) = O(n). Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 12 / 51

Moyenne, variance et écart type Sommaire 1 Indice du maximum 2 Recherche dans un tableau 3 Moyenne, variance et écart type Rappel Algorithme Invariant de boucle et correction Terminaison 4 Recherche dichotomique dans un tableau trié 5 Recherche d un mot dans une chaîne de caractères 6 Complément : l exponentiation Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 13 / 51

Moyenne, variance et écart type Rappel Rappel Moyenne Moy(T ) = 1 n T [i] n i=1 1 n Variance Var(T ) = T [i] n 2 Moy(T )2 i=1 Ecart type σ(t ) = Var(T ) Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 14 / 51

Moyenne, variance et écart type Algorithme Algorithme Algorithm 3 Moyenne et variance entrée: T un tableau de n valeurs résultats: Moy, la moyenne de T ; Var, la variance de T ; σ, l écart type de T MoyVar(T) 1: n taille(t ) 2: som 0 3: somcar 0. 4: pour i entre 0 et n-1 faire 5: som som+t[i] 6: somcar somcar+t[i] 2 7: fin pour 8: moy som/n 9: Var somcar /n-moy 2 10: renvoi: moy,var,racine(var) Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 15 / 51

Moyenne, variance et écart type Invariant de boucle et correction Invariant de boucle et correction A chaque itération i : som = somcar = i 1 T [j] j=0 i 1 T [j] 2 j=0 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 16 / 51

Moyenne, variance et écart type Terminaison Terminaison Présence uniquement d une boucle inconditionnelle Pour. Le nombre d itérations est fini. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 17 / 51

Moyenne, variance et écart type Dans la boucle Pour, il faut : Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 18 / 51

Moyenne, variance et écart type Dans la boucle Pour, il faut : ajouter T[i] à somme : C+ = 1 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 18 / 51

Moyenne, variance et écart type Dans la boucle Pour, il faut : ajouter T[i] à somme : C+ = 1 calculer le carré de T[i] : C+ = 1 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 18 / 51

Moyenne, variance et écart type Dans la boucle Pour, il faut : ajouter T[i] à somme : C+ = 1 calculer le carré de T[i] : C+ = 1 l ajouter à somcar : C+ = 1 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 18 / 51

Moyenne, variance et écart type Dans la boucle Pour, il faut : ajouter T[i] à somme : C+ = 1 calculer le carré de T[i] : C+ = 1 l ajouter à somcar : C+ = 1 A chaque itération de la boucle, le coût C est donc de 3. Avec les différentes affectations en début et en fin de programme, on obtient un coût total C(n) : Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 18 / 51

Moyenne, variance et écart type Dans la boucle Pour, il faut : ajouter T[i] à somme : C+ = 1 calculer le carré de T[i] : C+ = 1 l ajouter à somcar : C+ = 1 A chaque itération de la boucle, le coût C est donc de 3. Avec les différentes affectations en début et en fin de programme, on obtient un coût total C(n) : C(n) = 3.n + 9 = Θ(n) Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 18 / 51

Sommaire Recherche dichotomique dans un tableau trié 1 Indice du maximum 2 Recherche dans un tableau 3 Moyenne, variance et écart type 4 Recherche dichotomique dans un tableau trié Algorithme Invariant de boucle et correction Terminaison Correction 5 Recherche d un mot dans une chaîne de caractères 6 Complément : l exponentiation Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 19 / 51

Recherche dichotomique dans un tableau trié Algorithme Algorithme Algorithm 4 Recherche dichotomique dans un tableau trié entrée: T un tableau de n valeurs et x un élément (pas forcément du tableau) résultat: -1 si x T, l indice d un x dans le tableau T 1: DichoSearch(T,x) 2: n taille(t ) 3: min,max,mil 0,n-1,(min+max)//2 4: tant que min<max et T[mil] x faire 5: si T[mil]<x alors 6: min mil+1 7: sinon 8: max mil-1 9: fin si 10: mil (min+max)//2 11: fin tant que 12: si T[mil] x alors 13: rep -1 14: sinon 15: rep mil 16: fin si 17: renvoi: rep Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 20 / 51

Recherche dichotomique dans un tableau trié Invariant de boucle et correction Invariant de boucle et correction Proposition P (k) : A la fin de l étape k (donc si x n a pas été trouvé) et si x est dans le tableau T alors max min < n 2 k T [min] x T [max] Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 21 / 51

Recherche dichotomique dans un tableau trié Invariant de boucle et correction Démonstration par récurrence A la fin de l étape 0, donc juste avant la boucle, si x est dans le tableau (trié), on a bien T [0] = T [min] x T [max] = T [n 1] max min = n 1 < n 2 0 = n Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 22 / 51

Recherche dichotomique dans un tableau trié Invariant de boucle et correction Si P (k) est vraie à la fin de l étape k, appelons a la valeur de min, b celle de max tels que b a < n k. Alors mil devient : 2 min + max a + b mil = = 2 2 Si T [mil] x, on ne sort pas de la boucle, et Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 23 / 51

Recherche dichotomique dans un tableau trié Invariant de boucle et correction Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 24 / 51

Recherche dichotomique dans un tableau trié Invariant de boucle et correction soit T [mil] > x, alors min prend la valeur mil + 1 = max reste à b. Si x est dans le tableau (trié), on a alors bien T [min] x T [max], et a + b a + b max min = b 1 < b 2 2 = b a 2 a + b + 1 et 2 < n 2 k+1 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 24 / 51

Recherche dichotomique dans un tableau trié Invariant de boucle et correction soit T [mil] > x, alors min prend la valeur mil + 1 = max reste à b. Si x est dans le tableau (trié), on a alors bien T [min] x T [max], et a + b a + b max min = b 1 < b 2 2 = b a 2 soit T [mil] < x, alors max prend la valeur mil 1 = min reste à a. Si x est dans le tableau (trié), on a alors bien T [min] x T [max], et a + b max min = 1 a < 2 a + b 2 a + b + 1 et 2 a + b 2 < n 2 k+1 1 et a = b a < n 2 2 k+1 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 24 / 51

Recherche dichotomique dans un tableau trié Invariant de boucle et correction soit T [mil] > x, alors min prend la valeur mil + 1 = max reste à b. Si x est dans le tableau (trié), on a alors bien T [min] x T [max], et a + b a + b max min = b 1 < b 2 2 = b a 2 soit T [mil] < x, alors max prend la valeur mil 1 = min reste à a. Si x est dans le tableau (trié), on a alors bien T [min] x T [max], et a + b max min = 1 a < 2 d où la récurrence. CQFD a + b 2 a + b + 1 et 2 a + b 2 < n 2 k+1 1 et a = b a < n 2 2 k+1 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 24 / 51

Recherche dichotomique dans un tableau trié Terminaison Terminaison Comme la différence max min = Err est à valeur dans N (Err N) et que max min < n k donc si k assez grand max min = 0. 2 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 25 / 51

Recherche dichotomique dans un tableau trié Correction Correction Soit on tombe sur x à un moment, soit on arrive à min = max, et si x est dans le tableau, T [min] x T [max]. Le résultat renvoyé est bien le bon. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 26 / 51

Recherche dichotomique dans un tableau trié A chaque étape de la boucle Tant que, il se produit : deux tests : C+ = 2 une affectation (cas si ou sinon) : C+ = 1 une somme + une division+une affectation : C+ = 3 Or x se loge dans un intervalle max min < n k et on s arrête au plus 2 tard quand min = max. Ainsi, au plus, on a k itérations tel que n 2 k < 1 2k > n k. ln(2) > ln(n) k > log 2 (n) donc au plus log 2 (n) + 1 itérations. Ainsi, le coût pour la boucle est C(n) = 4. (log 2 (n) + 1) = O(ln(n)). Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 27 / 51

Recherche dichotomique dans un tableau trié Recherche dichotomique dans un tableau trié de flottants Le cas de la recherche dichotomique dans un tableau trié de flottants ressemble beaucoup. Il suffit d ajouter une précision ɛ > 0 en argument et de remplacer T [mil] = x par T [mil] x < ɛ. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 28 / 51

Recherche d un mot dans une chaîne de caractères Sommaire 1 Indice du maximum 2 Recherche dans un tableau 3 Moyenne, variance et écart type 4 Recherche dichotomique dans un tableau trié 5 Recherche d un mot dans une chaîne de caractères Principe Algorithme Algorithme Invariant de boucle et correction 6 Complément : l exponentiation Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 29 / 51

Recherche d un mot dans une chaîne de caractères Principe Principe Pour écrire un algorithme naïf de recherche d un mot dans une chaîne de caractères (ChercheMot(mot,chaine)), on utilise une fonction TestMot(mot,chaine,i) qui teste la coïncidence entre les lettres de mot à une position i de chaine jusqu à trouver une lettre différente dans la successions des lettres. Il renvoie alors vrai si toutes les lettres de mot se succèdent dans chaine à la position i ; faux sinon. La fonction ChercheMot(mot,chaine) balaye les lettres chaînes en appelant pour chaque lettre la fonction ChercheMot jusqu à ce que cette dernière renvoie vrai ou que le nombre de lettres de chaine restant soit inférieur à la taille de mot. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 30 / 51

Recherche d un mot dans une chaîne de caractères Algorithme Algorithme Algorithm 5 Teste la présence d un mot à partir d une position dans une chaîne de caractères. entrée: mot et chaine deux chaînes de caractères, i, un indice résultat: vrai si mot correspond aux premiers caractères de chaine à partir de l indice i ; faux sinon 1: TestMot(mot,chaine,i) 2: j,m 0,taille(mot ) 3: tant que j<m et mot [j]=chaine[i+j] faire 4: j j+1 5: fin tant que 6: renvoi: j==m Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 31 / 51

Recherche d un mot dans une chaîne de caractères Algorithme Algorithme Algorithm 6 Recherche d un mot dans une chaîne de caractères. entrée: mot et chaine deux chaînes de caractères résultat: l indice de la première occurrence de mot dans chaine ; sinon -1 ChercheMot(mot,chaine) 1: i,n,m,pos,pastrouv 0,taille(chaine),taille(mot),0,vrai 2: tant que i n-m et pastrouv faire 3: pastrouv non(testmot(mot,chaine, i )) 4: i i+1 5: fin tant que 6: si pastrouv alors 7: i -1 8: fin si 9: renvoi: i Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 32 / 51

Recherche d un mot dans une chaîne de caractères Invariant de boucle et correction Invariant de boucle et correction pour Testmot : les j premières lettres de mot se suivent dans chaine pour ChercheMot : mot ne se trouve pas dans les i premières positions de chaine Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 33 / 51

Recherche d un mot dans une chaîne de caractères En comparaison : pour Testmot : la boucle est parcourue au plus m fois. pour ChercheMot : la boucle est parcourue au mieux 1 fois ; au pire, n m fois. Avec l appel de Testmot C(n) = m.(n m + 1) = O (m.(n m)) Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 34 / 51

Complément : l exponentiation Sommaire 1 Indice du maximum 2 Recherche dans un tableau 3 Moyenne, variance et écart type 4 Recherche dichotomique dans un tableau trié 5 Recherche d un mot dans une chaîne de caractères 6 Complément : l exponentiation Exponentiation «naïve» Exponentiation rapide itérative Exponentiation rapide récursive Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 35 / 51

Exponentiation «naïve» Principe Complément : l exponentiation Exponentiation «naïve» Multiplier x n fois par lui même. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 36 / 51

Exponentiation «naïve» Algorithme Complément : l exponentiation Exponentiation «naïve» Algorithm 7 Exponentiation «naïve» entrée: n un entier positif et x un nombre réel résultat: un nombre réel r = x n Exponaive(x,n) 1: si n==0 alors 2: renvoi: 1 3: sinon 4: r x 5: pour i de 2 à n faire 6: r x 7: fin pour 8: fin si Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 37 / 51

Exponentiation «naïve» Terminaison Complément : l exponentiation Exponentiation «naïve» Présence uniquement d une boucle inconditionnelle Pour. Le nombre d itérations est fini. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 38 / 51

Exponentiation «naïve» Invariant de boucle et correction Complément : l exponentiation Exponentiation «naïve» A chaque itération i, r = x i. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 39 / 51

Exponentiation «naïve» Complément : l exponentiation Exponentiation «naïve» A chaque itération, il faut faire une multiplication C(n) = Θ(n). Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 40 / 51

Complément : l exponentiation Exponentiation rapide itérative Exponentiation rapide itérative Algorithme Algorithm 8 Exponentiation rapide itérative entrée: n un entier positif et x un nombre réel résultat: un nombre réel r = x n ExpoRapide(x,n) 1: si n==0 alors 2: renvoi: 1 3: sinon 4: r 1 5: tant que n > 0 faire 6: si n modulo 2==1 alors 7: r r.x 8: fin si 9: x x.x 10: n n//2 11: fin tant que 12: renvoi: r 13: fin si Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 41 / 51

Complément : l exponentiation Exponentiation rapide itérative Exponentiation rapide itérative Principe Se servir des résultats intermédiaires pour accélérer le processus de calcul de x n en décomposant n en puissance de 2. EXEMPLE : calculer x 5. On calcule x 2 puis x 4 et finalement x 5. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 42 / 51

Complément : l exponentiation Exponentiation rapide itérative Exponentiation rapide itérative Terminaison La boucle conditionnelle s arrête dès que n cesse d être strictement positif. Or n est une suite d entier (division euclidienne) décroissante puisque n est divisé par 2 à chaque itération. La suite est strictement décroissante et minorée ; l algorithme termine. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 43 / 51

Complément : l exponentiation Exponentiation rapide itérative Exponentiation rapide itérative Propriété on appelle r i, x i et n i les valeurs de r, x et n après l itération i dans la boucle while. Avec i = 0, on a r 0 = 1, x 0 = x et n 0 = n. On note P(k), la propriété : Proposition P (i) : à la fin de l étape i, x n = r i.x n i i Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 44 / 51

Complément : l exponentiation Exponentiation rapide itérative DÉMONSTRATION : au rang 0 : montrons P (0) r 0.x n 0 0 = 1.x n = x n la propriété est donc vraie au rang 0 au rang i : montre que P (i 1) P (i) Supposons P (i 1) vraie : x n = r i 1.x n i 1 i 1, alors : soit n i 1 (mod 2) == 1 et r i = r i1.x, x i = x 2 r i.x n i i = r i1.x.x 2.n i i 1 = x n x n i 1 i 1.x 2.n i +1 i 1 = x n i 1 et n i 1 = 2.n i + 1 d où soit n i 1 (mod 2) == 0 et r i = r i1, x i = x 2 i 1 et n i 1 = 2.n i d où r i.x n i = r i i1.x 2.n i i 1 = x n.x 2.n i i 1 = x n x n i 1 i 1 ainsi P (i 1) P (i) Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 45 / 51

Complément : l exponentiation Exponentiation rapide itérative Exponentiation rapide itérative Invariant de boucle et correction A chaque itération i, P (i) est vraie. Or pour k N tel que n k = 0, P (k) étant vraie x n = r k.x n k = r k k. L algorithme retournant r k puisque n k = 0, la valeur renvoyée est donc bien x n Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 46 / 51

Complément : l exponentiation Exponentiation rapide itérative Exponentiation rapide itérative A chaque itération i, n i = n i 1 n i1 2 2 n i. Ainsi, si m est le nombre 2 d itérations permettant de calculer x n alors : 1 = n m 1 = n 2 m 1 (m 1). ln(2) ln(n) C(m) = O(ln(m)) Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 47 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive Principe Se servir des résultats intermédiaires pour accélérer le processus de calcul de x n en décomposant n en puissance de 2. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 48 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive Algorithme Algorithm 9 Exponentiation rapide récursive entrée: n un entier positif et x un nombre réel résultat: un nombre réel r = x n ExpoRec(x,n) 1: si n==0 alors 2: renvoi: 1 3: sinon 4: si n modulo 2==0 alors 5: renvoi: ExpoRec(x.x,n/2) 6: sinon 7: renvoi: x.exporec(x.x,(n-1)/2) 8: fin si 9: fin si Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 49 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive Terminaison n décrit une suite d entiers strictement décroissante et minorée. L algorithme se termine. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 50 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive si n = 1, un test, un produit, une division C(1) = 3 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive si n = 1, un test, un produit, une division C(1) = 3 sinon, un test, un produit, une division : C(n) = C(n/2) + 3 Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive si n = 1, un test, un produit, une division C(1) = 3 sinon, un test, un produit, une division : C(n) = C(n/2) + 3 On suppose l algorithme logarithmique. L algorithme est donc bien de complexité logarithmique. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive si n = 1, un test, un produit, une division C(1) = 3 sinon, un test, un produit, une division : C(n) = C(n/2) + 3 On suppose l algorithme logarithmique. on pose alors :C(n) = a. log 2 (n) + c L algorithme est donc bien de complexité logarithmique. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive si n = 1, un test, un produit, une division C(1) = 3 sinon, un test, un produit, une division : C(n) = C(n/2) + 3 On suppose l algorithme logarithmique. on pose alors :C(n) = a. log 2 (n) + c C(n/2) = a. log 2 (n/2) + c = a. log 2 (n) a. log 2 (2) + c = a. log 2 (n) a + c C(n) = a. log 2 (n) a + c + 3 = a. log 2 (n) + c L algorithme est donc bien de complexité logarithmique. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive si n = 1, un test, un produit, une division C(1) = 3 sinon, un test, un produit, une division : C(n) = C(n/2) + 3 On suppose l algorithme logarithmique. on pose alors :C(n) = a. log 2 (n) + c C(n/2) = a. log 2 (n/2) + c = a. log 2 (n) a. log 2 (2) + c = a. log 2 (n) a + c C(n) = a. log 2 (n) a + c + 3 = a. log 2 (n) + c on a donc a = 3 L algorithme est donc bien de complexité logarithmique. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive si n = 1, un test, un produit, une division C(1) = 3 sinon, un test, un produit, une division : C(n) = C(n/2) + 3 On suppose l algorithme logarithmique. on pose alors :C(n) = a. log 2 (n) + c C(n/2) = a. log 2 (n/2) + c = a. log 2 (n) a. log 2 (2) + c = a. log 2 (n) a + c C(n) = a. log 2 (n) a + c + 3 = a. log 2 (n) + c on a donc a = 3 or 3 = C(1) = a. log 2 (1) + c = c donc c = 3 L algorithme est donc bien de complexité logarithmique. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51

Complément : l exponentiation Exponentiation rapide récursive Exponentiation rapide récursive si n = 1, un test, un produit, une division C(1) = 3 sinon, un test, un produit, une division : C(n) = C(n/2) + 3 On suppose l algorithme logarithmique. on pose alors :C(n) = a. log 2 (n) + c C(n/2) = a. log 2 (n/2) + c = a. log 2 (n) a. log 2 (2) + c = a. log 2 (n) a + c C(n) = a. log 2 (n) a + c + 3 = a. log 2 (n) + c on a donc a = 3 or 3 = C(1) = a. log 2 (1) + c = c donc c = 3 C(n) = 3. log 2 (n) + 3 = θ(ln(n)) L algorithme est donc bien de complexité logarithmique. Informatique pour tous (MPSI & PCSI) ALGO-PROG Exemples d algos Année 2016-2017 51 / 51