1 introduction à lalgorithmique définition et formulation dun algorithme. applications à...

49
1 Introduction à l’algorithmique et formulation d’un algorithme. Applications à différents types de élémentaires. Choix d’un algorithme. Efficacité d’un algorithme. An s et analyse en moyenne. Décomposition fonctionnelle : identificatio ncipales à accomplir et découpage en sous-tâches. Méthodologie de de problème.

Upload: sebastienne-lebrun

Post on 04-Apr-2015

110 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

1

Introductionà

l’algorithmique

Définition et formulation d’un algorithme. Applications à différents types de problèmes.Opérations élémentaires. Choix d’un algorithme. Efficacité d’un algorithme. Analyseen pire cas et analyse en moyenne. Décomposition fonctionnelle : identification destâches principales à accomplir et découpage en sous-tâches. Méthodologie derésolution de problème.

Page 2: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

2

Définition d’un algorithme

Procédure de calcul non ambigüe, finie, déterministe et exprimée en termes d’instructions élémentaires exécutables.Méthode de solution d’un problème en termes d’opérations élémentaires exécutables.

Aucune place pour l’interprétation, l’intuition et la créativité.

Différents algorithmes peuvent résoudre un même problème etdifférents programmes peuvent servir à décrire un même algorithme.

Le choix d’un algorithme pour résoudre un problème peut dépendrede plusieurs facteurs.

Page 3: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

3

Aucune ambiguïté :

L’exécution d’un algorithme avec les mêmes données d’entrée doit toujoursréaliser exactement les mêmes tâches et fournir les mêmes résultats.

Exemple : À chaque jour, miser tout votre avoir sur le cheval le plus cotéjusqu’à ce que vous soyez millionnaire ou ruiné.

Cela dépend du jour où vous commencez à miser.Cela dépend du montant d’argent que vous avez ce jour-là.

Fini : L’exécution d’un algorithme nécessite un nombre fini d’opérationsélémentaires.

Exemple : Deviner un nombre entier positif, négatif ou nul.Deviner un nombre réel.Évaluer la racine carrée du nombre 2.

Définition d’un algorithmeOn doit tout spécifier dans le moindre détail.

Absence de mémoire de son expérience passée.

Déterministe :

Exemple : Explications pour trouver une maison de campagne.Imprimer les résultats d’un programme résolvant un mot-mystère.

Page 4: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

4

Définition d’une opération élémentaireLors de la conception d’un algorithme, le niveau de détail doit être bien définiou encore, le jeu d’instructions ou d’opérations élémentaires disponible.

Le temps d’exécution d’une opération élémentaire est borné par uneconstante qui ne dépend pas des données à manipuler.

Exemple :

Tri d’une suite de n entiers.

Addition de 2 entiers.

Valeur absolue d’un nombre.

OUI NON

Page 5: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

5

Un peu d’histoire …Entre 400 et 300 avant Jésus-Christ, un mathématicien grec Euclide ainventé un algorithme qui détermine le plus grand commun diviseur de 2entiers positifs.

Il s’agit du premier algorithme non trivial.

Le mot algorithme est dérivé du nom d’un mathématicien de Perse,Mohammed alKhowârizmî (en latin Algorismus), qui a vécu au 9ième siècle.

Contribution :algorithmes pour additionner, soustraire, multiplier ou diviserdes nombres décimaux.

Page 6: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

6

Composantes de base d’un algorithmeLecture d’une donnée.

Écriture d’une donnée.

Test qui vérifie si une condition est remplie avec une action à entreprendresur la base du résultat de ce test.

Répétition ou itération d’une suite d’étapes élémentaires.

Conservation d’une donnée en mémoire.

Exemple :

1. Lire un entier positif n.

2. Conserver en mémoire la valeur 0 identifiée par somme.

Affichage de la somme des éléments d’une suite d’entiers.

3. Tant et aussi longtemps que les n nombres ne sont pas lus

3.1. Lire un entier.

3.2. Ajouter cet entier à la valeur identifiée par somme.

4. Écrire la valeur identifiée par somme.

Page 7: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

7

Exemple – Tri d’une pile de feuilles

1.

Trier une grosse pile de feuilles sur un petit bureau avec en main uniquementun stylo.

Placer la pile de feuilles à gauche du bureau.

2. Enlever le capuchon du stylo.

3. Tant et aussi longtemps que la pile de feuilles de gauche contient au moins2 feuilles alors

3.1. Choisissez les 2 premières feuilles de la pile.

3.2. Si les 2 feuilles ne sont pas en ordre, remettre le capuchon du stylo.

3.3. Ordonner les 2 feuilles.

3.4. Prendre la feuille du dessus de la pile de gauche et la placerdans la pile de droite.

4. Placer la dernière feuille de la pile de gauche dans la pile de droite.

Page 8: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

8

Exemple – Tri d’une pile de feuilles (suite)

5. Tant et aussi longtemps que la pile de feuilles de droite n’est pas vide alors

5.1. Prendre la feuille du dessus de la pile de droite et la placerdans la pile de gauche.

6. Si le capuchon du stylo est remis alors retourner à l’étape 2.

6. Terminé.

Page 9: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

9

Exemple – Lister les indices d’un sac de billes

1. { Initialisation. }

Vous avez en main 3 sacs, l’un est rempli de billes numérotées.Les 2 autres sont vides.

But : lister les indices des billes en ordre décroissant.

Le sac # 1 est rempli; les sacs # 2 et #3 sont vides.

2. { À l’aide des sacs # 1 et #2 uniquement, conservez dans la main gauche la bille d’indice le plus élevé tandis que les autres billes auront été transférées du sac # 1 au sac # 2. }

3. Imprimer l’indice de la bille de la main gauche.

4. Placer la bille d’indice le plus élevé (de la main gauche) dans le sac # 3.

5. Si le sac # 2 n’est pas vide alors

5.1. Interchanger les sacs # 1 et # 2.

5.2. Retourner à l’étape # 2.

Page 10: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

10

Lister les indices d’un sac de billes (suite)2. { À l’aide des sacs # 1 et #2 uniquement, conservez dans la main gauche

la bille d’indice le plus élevé tandis que les autres billes seront transférées du sac # 1 au sac # 2. }

2.1. Prendre une bille du sac # 1 dans la main gauche.

2.2. Tant et aussi longtemps que le sac # 1 n’est pas vide alors

2.2.1 Prendre une bille du sac # 1 dans la main droite.

2.2.1 Si l’indice de la bille de la main gauche est plus petit quel’indice de la bille de la main droite alors

échanger les 2 billes des mains gauche et droite.

2.2.3 Placer la bille de la main droite dans le sac # 2.

Page 11: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

11

Remplacement d’une ampoule grillée par un robot ménager

1. { Enlever l’ampoule grillée. }

2. { Mettre en place une nouvelle ampoule. }

1.1 Placer l’escabeau sous l’ampoule grillée.

1.2 { Grimper jusqu’à ce qu’on puisse atteindre l’ampoule. }

1.2.1 Tant et aussi longtemps que nous n’avons pas atteint l’ampoulegravir l’escabeau d’un échelon.

1.3 { Dévisser l’ampoule jusqu’à ce qu’elle se dégage. }

1.3.1 Tant et aussi longtemps que l’ampoule ne se libère pasdévisser l’ampoule d’un tour.

2.1 Choisir une nouvelle ampoule de même puissance.

2.2 Aligner le culot de l’ampoule et le réceptacle du lustre.

Page 12: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

12

Remplacement d’une ampoule grillée par un robot ménager (suite)

2.3 { Vissez l’ampoule à fond. }

2.3.1 Tant et aussi longtemps que l’ampoule n’est pas vissé fermementvisser l’ampoule d’un tour.

2.4 { Descendre de l’escabeau. }

2.4.1 Tant et aussi longtemps que vous n’avez pas atteint le sol descendre l’escabeau d’un échelon.

Page 13: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

13

Multiplication de 2 entiers positifs (méthode à la russe)

1. Écrire le multiplicateur et le multiplicande l’un à côté de l’autre.multiplicateur multiplicande

45 19

3. Tant et aussi longtemps que le nombre sous le multiplicateur est > 1

3.1 Diviser par 2 le nombre sous le multiplicateur, sans tenir compte dureste éventuel.

3.2 Doubler par addition le nombre sous le multiplicande.

2. Si le multiplicateur est impairealors écrire comme résultat la valeur du multiplicande à droite

de la colonne multiplicandesinon écrire comme résultat 0 à droite de la colonne multiplicande

multiplicateur multiplicande45 19

résultat19

3.3 Si le multiplicateur est impairealors écrire comme résultat la valeur du multiplicande à droite

ajoutée au résultat précédentsinon écrire comme résultat la valeur précédente.

Page 14: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

14

Multiplication de 2 entiers positifs (suite)

multiplicateur multiplicande45 1922 3811 765 152

2 3041 608

résultat191995

247247855

4. Écrire le résultat.

résultat855

Note : Les opérations élémentaires sont :multiplication et division par 2,addition.

Page 15: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

15

Algorithme qui vérifie si un nombre entier positif est premier

1. Lire un entier positif n.

2. Pour chaque valeur de i entre 2 et n

2.1 Si le reste de la division de n par i est égale à 0 (i est facteur de n) alors

2.1.1 Écrire que le nombre n n’est pas premier.

2.1.2 L’algorithme prend fin.

3. Écrire que le nombre n est premier.

Démonstration d’Euclide en grec que l’ensembledes nombres premiers est infini.

4. L’algorithme prend fin.

Page 16: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

16

Algorithme qui vérifie si une année est bissextile

Une année est bissextile tous les 400 ans; les siècles ne sont pas bissextiles etune année sur 4 est bissextile.

1. Lire une année n.

2. Si n possède comme facteur 400 alors

2.1 Écrire que n est une année bissextile.

2.2 L’algorithme prend fin.

3. Si n possède comme facteur 100 alors

3.1 Écrire que n n’est pas une année bissextile.

3.2 L’algorithme prend fin.

4. Si n possède comme facteur 4alors écrire que n est une année bissextile.sinon écrire que n n’est pas une année bissextile.

5. L’algorithme prend fin.

Les femmes étaient censées profiterdes années bissextiles pour faire lagrande demande.

Page 17: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

17

Estimé de .

Un joueur de dards se pratique sur une surface carrée où chaque côté est delongueur c. Un cercle de rayon r est inscrit dans ce carré.

Son entraîneur constate qu’il ne rate jamais la surface carrée mais ses dardssont répartis uniformément sur le carré.

Voici un bon moyen d’estimer , se dit-il en lui-même car

# d’essais à l’intérieur du cercle = # total d’essais 4

Page 18: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

18

Estimé de .

1. Mémoriser dans ECHEC la valeur 0.

2. Mémoriser dans REUSSITE la valeur 0.

3. Tant et aussi longtemps que le joueur n’a pas terminé sa pratique,si le lancer est une réussite

alors augmenter la valeur de REUSSITE de 1alors augmenter la valeur de ECHEC de 1.

4. Écrire « Voici l’estimé : ».

5. Écrire la valeur de l’expression : 4 * REUSSITE / (REUSSITE + ECHEC).

Page 19: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

19

Jour d’élection

Dans un pays où le baobab est roi, il existe 4 partis politiques, le Bleu, le VERT,le Rouge et le Blanc. C’est jour d’élection, chaque électeur doit classer lecandidat de chaque parti en commençant par le préféré et en terminant aveccelui qui est rejeté avec le plus de vigueur.

Lorsqu’un candidat est choisi en première position, il gagne 3 points;lorsqu’un candidat est choisi en deuxième position, il gagne 2 points;lorsqu’un candidat est choisi en troisième position, il gagne 1 point;lorsqu’un candidat est choisi en quatrième position, il gagne aucun point.

Déterminer le parti qui prendra le pouvoir dans ce pays d’Afrique.

Page 20: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

20

Jour d’élection (choix d’un président)

1. Conserver dans Bleu la valeur 0.

Conserver dans Blanc la valeur 0.Conserver dans Rouge la valeur 0.

Conserver dans Vert la valeur 0.

2. Tant et aussi longtemps qu’il reste des bulletins de votedans les boîtes de scrutin, procédez comme suit :

2.1 Prendre un bulletin de vote.

2.2 Ajouter 3 points au parti en 1e position.

2.3 Ajouter 2 points au parti en 2ième position.

2.4 Ajouter 1 point au parti en 3ième position.

3. Si le nombre de points du parti Bleu > le nombre de points du parti Vertalors mémoriser dans Gagnant le nombre de points du parti Bleusinon mémoriser dans Gagnant le nombre de points du parti Vert.

4. Si Gagnant < le nombre de points du parti Rougealors mémoriser dans Gagnant le nombre de points du parti Rouge.

Page 21: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

21

Jour d’élection (choix d’un président)

5. Si Gagnant < le nombre de points du parti Blancalors mémoriser dans Gagnant le nombre de points du parti Blanc.

6. Conserver dans Nombre_de_gagnants la valeur 0.7. Si Gagnant est égale au nombre de points du parti Blanc

alors ajouter 1 à Nombre_de_gagnantssinon le candidat Blanc est éliminé.

8. Si Gagnant est égale au nombre de points du parti Bleualors ajouter 1 à Nombre_de_gagnantssinon le candidat Bleu est éliminé.

11. Si Nombre_de_gagnants > 1alors un 2ième scrutin est effectué avec les candidats non éliminéssinon le candidat non éliminé est le nouveau président de ce pays.

9. Si Gagnant est égale au nombre de points du parti Vertalors ajouter 1 à Nombre_de_gagnantssinon le candidat Vert est éliminé.

10. Si Gagnant est égale au nombre de points du parti Vertalors ajouter 1 à Nombre_de_gagnantssinon le candidat Vert est éliminé.

Page 22: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

22

Algorithme pour résoudre une équation du second degré

Il s’agit de trouver les racines si elles existent de l’équation a x2 + b x + c = 0.1. Lire les coefficients a, b et c.

2. Si a est égale à 0 alorsÉcrire " Nous avons une équation du premier degré où b doit être

différent de 0. La racine est : ".Calcul de - c / b.Écrire le résultat du calcul.

2.1

2.22.3

3. Si a est différent de 0 alorsCalcul du discriminant b2 – 4 a c.Mémoriser dans DELTA la valeur du résultat.Si DELTA est plus petit que 0

alors écrire " Il n’existe pas de racines réelles. "sinon calcul de (– b + DELTA) / (2 a).

mémoriser dans RACINE1 le résultat du calcul.calcul de (– b - DELTA) / (2 a).mémoriser dans RACINE2 le résultat du calcul.écrire " Les racines réelles sont : ".écrire les valeurs de RACINE1 et RACINE2.

Page 23: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

23

Calcul de la moyenne et de la variance des notes des étudiants

Soient x1, x2, …, xn les notes obtenues à un examen en Mathématiques duMinistère par des étudiants de sec. IV, il s’agit de calculer les 2 mesuressuivantes :

nMoyenne arithmétique (échantillonnale) : x = 1 xi

n i = 1

nVariance échantillonnale (mesure de dispersion) : s2 = 1 (xi -x)2

n-1 i = 1

Le calcul de la variance échantillonnale crée une difficulté carx n’est pasconnu à priori.

Solution : Réécrire s2 comme suit : ns2 = xi

2 - nx2

i = 1 n - 1

Page 24: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

24

Algorithme permettant de calculer la moyenne et la variance des notes

1. Mémoriser dans n la valeur 0.

2. Mémoriser dans SOMME la valeur 0.

3. Mémoriser dans CARRE la valeur 0.

4. Tant et aussi longtemps que des notes n’ont pas été considérées

4.1 Lire une note dans x.

4.2 Ajouter à SOMME la valeur de x.

4.3 Ajouter à CARRE la valeur de x*x.

4.4 Ajouter à n la valeur de 1.

5. Écrire " La moyenne échantillonnale est : " .

6. Écrire SOMME / n .

7. Écrire " La variance échantillonnale est : " .

8. Écrire la valeur de l’expression : (CARRE – SOMME * SOMME / n) / (n - 1).

Page 25: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

25

Recherche le no. de la page renfermant un mot dans un dictionnaire

1. Lire le mot m à rechercher.

2. Lire le nombre n de pages du dictionnaire.

Supposons que les pages du dictionnaire sont numérotées de 1 à n et quele mot recherché existe dans le dictionnaire.

3. Se positionner à la première page du dictionnaire.

4. Si m est plus petit ou égal au dernier mot de la page courante alors

4.1 Écrire le numéro de la page courante.

4.2 L’algorithme prend fin.

5. Se positionner à la page suivante dans le dictionnaire.

6. Retourner à l’étape 4.

ALGORITHME SÉQUENTIEL

Page 26: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

26

Recherche le no. de la page renfermant un mot dans un dictionnaire

Supposons que les pages du dictionnaire sont numérotées de 1 à n et quele mot recherché existe dans le dictionnaire.

ALGORITHME DE RECHERCHE DICHOTOMIQUE

1. Lire le mot m à rechercher.2. Lire le nombre n de pages du dictionnaire. 3. Mémoriser dans i la valeur de 1. 4. Mémoriser dans j la valeur de n. 5. Tant et aussi longtemps que i < j faire

5.1 Calcul de [(i + j) / 2] où [x] désigne la partie entière de x.

5.2 Mémoriser ce résultat dans k.

5.3 Si m < 1e mot de la page k alors mémoriser k–1 dans j.

5.4 Si m dernier mot de la page k alors mémoriser k dans i et j.

5.5 Si m > dernier mot de la page k alors mémoriser k+1 dans i.

6. Écrire la valeur conservée dans i.

Page 27: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

27

Efficacité d’un algorithme

Il existe habituellement plusieurs algorithmes pour résoudre un problème.

Il faut choisir habituellement celui qui exige le moins de ressourcespour trouver la solution à votre problème.

Qu’entend-on par ressource ?

Le temps nécessaire pour trouver la solution.

La quantité d’information à mémoriser.

Le meilleur algorithme est-il toujours le même peu importe les donnéesdu problème ?

Non, car certains algorithmes ont un bon comportement lorsque leproblème est de petite taille tandis que leur performance est réduitelorsque la taille du problème augmente sensiblement.

L’inverse est aussi vrai.

Lequel choisir ?

Exemple : Les algorithmes de recherche précédents sont-ils aussi efficacesavec un feuillet de quelques pages vs un gros dictionnaire ?

Page 28: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

28

Comment choisir l’algorithme le plus efficace ?

1e approche : approche empirique

Construire chaque algorithme d’intérêt permettant de résoudre notreproblème.

Appliquer à chaque algorithme différentes données du problèmetout en faisant varier la taille du problème.

Sélectionner l’algorithme qui nous semble le plus performant en fonctiondes résultats obtenus.

Exemple :

Considérer les algorithmes de recherche précédents avec des dictionnairesde différentes tailles ainsi que différents mots à rechercher.

Inconvénient : Il faut implanter et exécuter chaque algorithmesur des données différentes.

Page 29: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

29

Comment choisir l’algorithme le plus efficace ?

2ième approche : approche théorique

Calculer le nombre d’opérations élémentaires nécessaires à l’algorithmepour résoudre le problème.

Avantages :

Évite d’implanter des algorithmes inefficaces et ainsi perdre du temps.

Évite d’appliquer aux algorithmes différentes données du problèmetout en faisant varier la taille du problème.

Cette analyse ne dépend pas de l’ordinateur utilisé le cas échéant.

Analyse en pire cas : # d’opérations élémentaires nécessaires à l’algorithmepour résoudre le problème dans le pire cas (les donnéesdu problème où l’algorithme est le plus coûteux).

Analyse en moyenne : # d’opérations élémentaires en moyenne nécessairesà l’algorithme selon la fréquence des données.

Page 30: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

30

Analyse de l’algorithme de recherche séquentiel dans un dictionnaire

1. Lire le mot m à rechercher.

2. Lire le nombre n de pages du dictionnaire.

Supposons que les pages du dictionnaire sont numérotées de 1 à n et quele mot recherché existe dans le dictionnaire.

3. Se positionner à la première page du dictionnaire.

4. Si m est plus petit ou égal au dernier mot de la page courante alors4.1 Écrire le numéro de la page courante.

4.2 L’algorithme prend fin.

5. Se positionner à la page suivante dans le dictionnaire.6. Retourner à l’étape 4.

# d’opérations élémentaires = 3 + 3 (k – 1) + 2 = 3 k + 2où k désigne le no. de page recherché.

Analyse en pire cas : 3 n + 2. Analyse en moyenne* : 2 + 3 n / 2.

* On suppose que la fréquence des mots recherchés est la même ainsi quele nombre de mots dans chaque page.

Page 31: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

31

Analyse de l’algorithme de recherche dichotomique dans un dictionnaire

1. Lire le mot m à rechercher.2. Lire le nombre n de pages du dictionnaire. 3. Mémoriser dans i la valeur de 1. 4. Mémoriser dans j la valeur de n. 5. Tant et aussi longtemps que i < j faire

5.1 Calcul de [(i + j) / 2] où [x] désigne la partie entière de x.

5.2 Mémoriser ce résultat dans k.

5.3 Si m < 1e mot de la page k alors mémoriser k–1 dans j.

Si m dernier mot de la page k alors mémoriser k dans i et j.

5.5 Si m > dernier mot de la page k alors mémoriser k+1 dans i.

6. Écrire la valeur conservée dans i.

# d’opérations élémentaires en pire cas = 4 + 8 + 8 + … 8 + 1 = 5 + 8 log2n

log2n fois

5.4

Page 32: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

32

Évaluation d’un polynôme de degré n

Il s’agit de calculer f(x) = a0 + a1 x + a2x2 + … + an xn pour une valeur de x.

1. { Lecture des données du problème. }

1.1 Lire le degré n du polynôme.

1.2 Pour chaque valeur de i allant de 0 à nlire le coefficient ai.

1.3 Lire la valeur de x.

2. { Calcul de f(x). }

2.1 Mémoriser dans SOMME le coefficient a0.

2.2 Pour chaque valeur de j allant de 1 à n

2.2.1 Mémorisez dans TERME le coefficient aj.

2.2.2 Répétez j fois les opérations suivantes :2.2.2.1 Multiplier TERME par x.

2.2.2.2 Mémoriser dans TERME le résultat de la multiplication.2.2.3 Additionner la valeur de SOMME à celle de TERME.

2.2.4 Mémoriser dans SOMME le résultat de l’addition.

Page 33: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

33

Évaluation d’un polynôme de degré n : analyse de l’algorithme

3. { Écrire la valeur de f(x). }

Écrire la valeur mémorisée dans SOMME.

Calcul du # d’opérations élémentaires

1. { Lecture des données du problème. }

n + 3 opérations de lecture.

2. { Calcul de f(x). } n1 + (3 + 2 j) opérations de calcul. j=1

3. { Écrire la valeur de f(x). }

1 opération d’écriture.

Total : n2 + 5 n + 5 opérations élémentaires.

Algorithme quadratique

Page 34: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

34

Évaluation d’un polynôme de degré n : Règle de Horner

2. { Calcul de f(x). }2.1 Mémoriser dans SOMME le coefficient an.2.2 Pour chaque valeur de j allant de n-1 à 0

2.2.1 Multiplier SOMME par x.2.2.2 Additionner le résultat de la multiplication à aj.2.2.2 Mémoriser dans SOMME le résultat de l’addition.

Calcul du # d’opérations élémentaires

1. { Lecture des données du problème. } n + 3 opérations de lecture.

2. { Calcul de f(x). } n-11 + 3 opérations de calcul. j=0

3. { Écrire la valeur de f(x). } 1 opération d’écriture.

Total : 4 n + 5 opérations élémentaires.

Algorithme linéaire

Page 35: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

35

Comparaison des deux algorithmes

n1 5 10 15

10

50

100

20

Courbe linéaire

Courbe quadratique# d’opérationsélémentaires

Cas particulier : n = 10 45 vs 155 opérations élémentaires.

Page 36: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

36

Calcul de x [a, b] f(x) = f (une valeur fixée à priori), f étant croissante

Il s’agit de calculer l’intervalle [u, v] [a, b] tel que v – u , étant le degré de précision demandé (une valeur fixée à priori),

où il existe un x [u, v] tel que f(x) = f.

a b

f

x

u v

f

une fonction croissante

Note : Pour qu’il y ait une solution au problème, f(a) f f(b).

Page 37: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

37

Calcul de x [a, b] f(x) = f (une valeur fixée à priori), f étant croissante

1. { Initialisation. }

Approche séquentielle

Lire les valeurs de a, b, f et > 0.

2. { Recherche de l’intervalle. }

2.1 Mémoriser dans w la valeur de a.2.2 Tant et aussi longtemps que f(w + ) < f alors ajouter à w la valeur de .

2.3 Si b > w + alors écrire l’intervalle [w, w + ]sinon écrire l’intervalle [w, b].

Total en pire cas : 9 + 3 (b – a) / opérations élémentaires+

(b – a) / évaluations de la fonction f.

Page 38: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

38

Calcul de x [a, b] f(x) = f (une valeur fixée à priori), f étant croissante

1. { Initialisation. }Approche binaire

Lire les valeurs de a, b, f et > 0.

2. { Recherche de l’intervalle. }

2.1 Mémoriser dans u et v les valeurs de a et b.

2.2 Mémoriser dans MILIEU la valeur de (u + v) / 2.

2.3 Calculer f(MILIEU) et conserver dans VALEUR_DE_F le résultat obtenu.

2.4 Si v – u > alorssi VALEUR_DE_F > f

alors conserver dans v la valeur de MILIEUsinon conserver dans u la valeur de MILIEU.

Retourner à l’étape 2.2.

Écrire l’intervalle [u, v].2.5

2.4.1

2.4.2

Total : 8 + 8 log2((b – a) / ) opérations élémentaires+

log2((b – a) / ) évaluations de la fonction f.

Page 39: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

39

Comparaison des 2 algorithmes

Page 40: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

40

Présence d’un mot dans un texte

Déterminer si un mot de longueur m se retrouve au moins une foisdans un texte de longueur n (m n).

1. Pour chaque position i allant de 1 à n – m + 1

1.1 Mémoriser dans j la valeur de 1.

1.2 Tant et aussi longtemps que j m faire Si le (i+j-1)ième caractère du texte est égale au jième caractère du mot

alors augmenter la valeur de j de 1sinon j prend la valeur m + 2.

1.3 Si j est égale à m + 1 alors

1.3.1 Écrire « Il existe au moins une occurrence du mot. ».

1.3.2 L’algorithme prend fin.

2. Écrire « Le mot ne se retrouve pas dans le texte. ».

3. L’algorithme prend fin.

Page 41: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

41

Analyse de l’algorithme

Total en pire cas :

(n – m + 1) (2 + 6m) opérations élémentaires

Quelle est la valeur de m pour laquelle la performance de l’algorithmeest la moins bonne ?

F(m) = (n – m + 1) (2 + 6m) F'(m) = 6 (n – m + 1) – (2 + 6m) = 0 6n – 12 m + 4 = 0 m = (3n + 2) / 6.

Page 42: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

42

Jeu SUDOKU (algorithme difficile à concevoir)

Règles du jeu

Le point de départ est un tableau de dimension 9 x 9 où chaque case est soit,vide, soit, elle contient un chiffre entre 1 et 9.

Exemple :

Il s’agit pour jouer de placer un chiffrede 1 à 9 dans chaque case vide.Chaque ligne, chaque colonne etchaque boîte 3 x 3 délimitée par untrait plus épais doivent contenir tousles chiffres de 1 à 9. Chaque chiffreapparaît donc une seule fois dansune ligne, dans une colonne et dansune boîte 3 x 3.

Page 43: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

43

Jeu KAKURO (algorithme encore plus difficile à concevoir)

Solution du jeu

Page 44: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

44

Algorithmique : méthode de raffinement successif

Problème I: Imaginons un robot domestique à qui nous devons fournir un algorithme lui permettant de préparer une tasse de café.

Une première version de l'algorithme pourrait être: (1) faire bouillir de l'eau (2) mettre le café dans la tasse (3) ajouter l'eau dans la tasse.

Les étapes de cet algorithme ne sont probablement pas assez détaillées pour quele robot puisse les interpréter.

Chaque étape doit donc être affinée en une suite d'étapes plus élémentaires,chacune étant spécifiée d'une manière plus détaillée que dans la première version.

(1) faire bouillir l'eau peut être affinée en (1.1) remplir la bouilloire d'eau (1.2) brancher la bouilloire sur le secteur (1.3) attendre l'ébullition (1.4) débrancher la bouilloire

Page 45: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

45

Algorithmique : méthode de raffinement successif

(2) mettre le café dans la tasse pourrait être affiné en (2.1) ouvrir le pot à café (2.2) prendre une cuiller à café (2.3) plonger la cuiller dans le pot (2.4) verser le contenu de la cuiller dans la tasse (2.5) fermer le pot à café

(3) ajouter de l'eau dans la tasse pourrait être affiné en (3.1) verser de l'eau dans la tasse jusqu'à ce que celle-ci soit pleine.

Certaines étapes étant encore trop complexes et sans doute incompréhensiblespour notre robot, il faut les affiner davantage.

(1.1) remplir la bouilloire d'eau

(1.1.1) mettre la bouilloire sous le robinet (1.1.2) ouvrir le robinet (1.1.3) attendre que la bouilloire soit pleine (1.1.4) fermer le robinet

Page 46: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

46

Raffinement successif: degré de raffinement

Quand il procède à des raffinements des différentes étapes, le concepteur d'unalgorithme doit naturellement savoir où s'arrêter. Autrement dit, il doit savoir quandune étape constitue une primitive adéquate au point de ne pas avoir besoin deraffinement supplémentaire.

Cela signifie évidemment qu'il doit connaître quelle sorte d'étape le processeurpeut interpréter.

Le concepteur de l'algorithme précédent doit savoir que le robot peutinterpréter "brancher la bouilloire" ce qui de ce fait n'exige pas deraffinement, mais qu'en revanche, il ne peut pas interpréter "remplir labouilloire" et que dès lors un raffinement devient nécessaire.

Exemple :

Page 47: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

47

Méthode de raffinement successif : problème II

Problème II : Impression d’une suite de nombres entiers.

Soit la suite G définie de la manière suivante :

G(0) = 1G(1) = N où N est un entier positif,G(2) = N + 2G(i) = G(i-1) + N * G(i-2) + 3 G(i-3) i > 2.

À partir de chaque valeur lue pour N (au nombre de 3), faites imprimer les 21premiers nombres de la suite G. Vous devez les faire imprimer en « escalier »,c’est-à-dire que les nombres de la suite seront disposés de la façon suivante :

G(0)G(1) G(2)G(3) G(4) G(5)G(6) . . .

Il y aura donc 3 escaliers. 2 lignes vides devront séparer 2 escaliers consécutifs.

Page 48: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

48

Méthode de raffinement successif : problème II

Problème II : Impression d’une suite de nombres entiers.

1. Répétez trois fois1.1 { Lecture d’une valeur entière N. }

Lire une valeur entière et conserver cette valeur dans N.

1.2 {Calcul et affichage en «escalier» des 21 premiers nombres de G.

1.3 Répétez 2 fois l’opération qui consiste à faire un saut de ligne.

1.2 { Calcul et affichage en « escalier » des 21 premiers nombres de G.Afficher la valeur de 1.Faire un saut de ligne.Pour chaque ligne i allant de 2 à 61.2.1 { Calcul et affichage de la iième ligne. }1.2.2 Faire un saut de ligne.

1.2.1 { Calcul et affichage de la iième ligne. }Pour chaque indice k allant de j=1,2,…, i-1 j à (j=1,2,…, i-1 j) + i - 1 1.2.1.1 { Calculer G(k) et conserver cette valeur dans Resultat. } 1.2.1.2 Afficher la valeur de Resultat suivie de 5 espaces.

Page 49: 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix

49

Méthode de raffinement successif : problème II

Problème II : Impression d’une suite de nombres entiers.

1.2.1.1 {Calculer G(k) et conserver cette valeur dans Resultat. }Si k est égale à 0 alors Resultat prend la valeur 1.Si k est égale à 1 alors Resultat prend la valeur N.Si k est égale à 2 alors Resultat prend la valeur N + 2.Si k est plus grand que 2 alors1.2.1.1.1Conserver dans u, v et w les valeurs de 1, N et N+2 resp.1.2.1.1.2Pour chaque valeur de m allant de 3 à k

1.2.1.1.2.1 Conserver dans Resultat la valeur de w + N*v + 3*u.1.2.1.1.2.2 Placer dans u la valeur de v.1.2.1.1.2.3 Placer dans v la valeur de w.1.2.1.1.2.4 Placer dans w la valeur de Resultat.

Y a-t-il une méthode plus efficace de calculer chaque élément de la suite G ?