La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix."— Transcription de la présentation:

1 1 Introduction à lalgorithmique Définition et formulation dun algorithme. Applications à différents types de problèmes. Opérations élémentaires. Choix dun algorithme. Efficacité dun algorithme. Analyse en pire cas et analyse en moyenne. Décomposition fonctionnelle : identification des tâches principales à accomplir et découpage en sous-tâches. Méthodologie de résolution de problème.

2 2 Définition dun algorithme Procédure de calcul non ambigüe, finie, déterministe et exprimée en termes dinstructions élémentaires exécutables. Méthode de solution dun problème en termes dopérations élémentaires exécutables. Aucune place pour linterprétation, lintuition et la créativité. Différents algorithmes peuvent résoudre un même problème et différents programmes peuvent servir à décrire un même algorithme. Le choix dun algorithme pour résoudre un problème peut dépendre de plusieurs facteurs.

3 3 Aucune ambiguïté : Lexécution dun algorithme avec les mêmes données dentrée doit toujours ré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 dargent que vous avez ce jour-là. Fini : Lexécution dun algorithme nécessite un nombre fini dopé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 dun algorithme On 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 dun programme résolvant un mot-mystère.

4 4 Définition dune opération élémentaire Lors de la conception dun algorithme, le niveau de détail doit être bien défini ou encore, le jeu dinstructions ou dopérations élémentaires disponible. Le temps dexécution dune opération élémentaire est borné par une constante qui ne dépend pas des données à manipuler. Exemple : Tri dune suite de n entiers. Addition de 2 entiers. Valeur absolue dun nombre. OUI NON

5 5 Un peu dhistoire … Entre 400 et 300 avant Jésus-Christ, un mathématicien grec Euclide a inventé un algorithme qui détermine le plus grand commun diviseur de 2 entiers positifs. Il sagit du premier algorithme non trivial. Le mot algorithme est dérivé du nom dun mathématicien de Perse, Mohammed alKhowârizmî (en latin Algorismus), qui a vécu au 9 ième siècle. Contribution : algorithmes pour additionner, soustraire, multiplier ou diviser des nombres décimaux.

6 6 Composantes de base dun algorithme Lecture dune donnée. Écriture dune donnée. Test qui vérifie si une condition est remplie avec une action à entreprendre sur la base du résultat de ce test. Répétition ou itération dune suite détapes élémentaires. Conservation dune 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 dune suite dentiers. 3. Tant et aussi longtemps que les n nombres ne sont pas lus 3.1. Lire un entier Ajouter cet entier à la valeur identifiée par somme. 4. Écrire la valeur identifiée par somme.

7 7 Exemple – Tri dune pile de feuilles 1. Trier une grosse pile de feuilles sur un petit bureau avec en main uniquement un 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 moins 2 feuilles alors 3.1. Choisissez les 2 premières feuilles de la pile Si les 2 feuilles ne sont pas en ordre, remettre le capuchon du stylo Ordonner les 2 feuilles Prendre la feuille du dessus de la pile de gauche et la placer dans la pile de droite. 4. Placer la dernière feuille de la pile de gauche dans la pile de droite.

8 8 Exemple – Tri dune pile de feuilles (suite) 5. Tant et aussi longtemps que la pile de feuilles de droite nest pas vide alors 5.1. Prendre la feuille du dessus de la pile de droite et la placer dans la pile de gauche. 6. Si le capuchon du stylo est remis alors retourner à létape Terminé.

9 9 Exemple – Lister les indices dun sac de billes 1. { Initialisation.} Vous avez en main 3 sacs, lun 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. { À laide des sacs # 1 et #2 uniquement, conservez dans la main gauche la bille dindice le plus élevé tandis que les autres billes auront été transférées du sac # 1 au sac # 2.} 3. Imprimer lindice de la bille de la main gauche. 4. Placer la bille dindice le plus élevé (de la main gauche) dans le sac # Si le sac # 2 nest pas vide alors 5.1. Interchanger les sacs # 1 et # Retourner à létape # 2.

10 10 Lister les indices dun sac de billes (suite) 2. { À laide des sacs # 1 et #2 uniquement, conservez dans la main gauche la bille dindice 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 Tant et aussi longtemps que le sac # 1 nest pas vide alors Prendre une bille du sac # 1 dans la main droite Si lindice de la bille de la main gauche est plus petit que lindice de la bille de la main droite alors échanger les 2 billes des mains gauche et droite Placer la bille de la main droite dans le sac # 2.

11 11 Remplacement dune ampoule grillée par un robot ménager 1. { Enlever lampoule grillée.} 2. { Mettre en place une nouvelle ampoule.} 1.1 Placer lescabeau sous lampoule grillée. 1.2 { Grimper jusquà ce quon puisse atteindre lampoule.} Tant et aussi longtemps que nous navons pas atteint lampoule gravir lescabeau dun échelon. 1.3 { Dévisser lampoule jusquà ce quelle se dégage.} Tant et aussi longtemps que lampoule ne se libère pas dévisser lampoule dun tour. 2.1 Choisir une nouvelle ampoule de même puissance. 2.2 Aligner le culot de lampoule et le réceptacle du lustre.

12 12 Remplacement dune ampoule grillée par un robot ménager (suite) 2.3 { Vissez lampoule à fond.} Tant et aussi longtemps que lampoule nest pas vissé fermement visser lampoule dun tour. 2.4 { Descendre de lescabeau.} Tant et aussi longtemps que vous navez pas atteint le sol descendre lescabeau dun échelon.

13 13 Multiplication de 2 entiers positifs (méthode à la russe) 1. Écrire le multiplicateur et le multiplicande lun à côté de lautre. multiplicateur multiplicande Tant et aussi longtemps que le nombre sous le multiplicateur est > Diviser par 2 le nombre sous le multiplicateur, sans tenir compte du reste éventuel. 3.2 Doubler par addition le nombre sous le multiplicande. 2. Si le multiplicateur est impaire alorsécrire comme résultat la valeur du multiplicande à droite de la colonne multiplicande sinon écrire comme résultat 0 à droite de la colonne multiplicande multiplicateur multiplicande résultat Si le multiplicateur est impaire alorsécrire comme résultat la valeur du multiplicande à droite ajoutée au résultat précédent sinonécrire comme résultat la valeur précédente.

14 14 Multiplication de 2 entiers positifs (suite) multiplicateur multiplicande résultat Écrire le résultat. résultat 855 Note :Les opérations élémentaires sont : multiplication et division par 2, addition.

15 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 Écrire que le nombre n nest pas premier Lalgorithme prend fin. 3. Écrire que le nombre n est premier. Démonstration dEuclide en grec que lensemble des nombres premiers est infini. 4. Lalgorithme prend fin.

16 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 et une 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 Lalgorithme prend fin. 3. Si n possède comme facteur 100 alors 3.1 Écrire que n nest pas une année bissextile. 3.2 Lalgorithme prend fin. 4. Si n possède comme facteur 4 alors écrire que n est une année bissextile. sinon écrire que n nest pas une année bissextile. 5. Lalgorithme prend fin. Les femmes étaient censées profiter des années bissextiles pour faire la grande demande.

17 17 Estimé de. Un joueur de dards se pratique sur une surface carrée où chaque côté est de longueur c. Un cercle de rayon r est inscrit dans ce carré. Son entraîneur constate quil ne rate jamais la surface carrée mais ses dards sont répartis uniformément sur le carré. Voici un bon moyen destimer, se dit-il en lui-même car # dessais à lintérieur du cercle= # total dessais4

18 18 Estimé de. 1. Mémoriser dans ECHEC la valeur Mémoriser dans REUSSITE la valeur Tant et aussi longtemps que le joueur na pas terminé sa pratique, si le lancer est une réussite alors augmenter la valeur de REUSSITE de 1 alors augmenter la valeur de ECHEC de Écrire « Voici lestimé : ». 5. Écrire la valeur de lexpression : 4 * REUSSITE / (REUSSITE + ECHEC).

19 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. Cest jour délection, chaque électeur doit classer le candidat de chaque parti en commençant par le préféré et en terminant avec celui qui est rejeté avec le plus de vigueur. Lorsquun candidat est choisi en première position, il gagne 3 points; lorsquun candidat est choisi en deuxième position, il gagne 2 points; lorsquun candidat est choisi en troisième position, il gagne 1 point; lorsquun candidat est choisi en quatrième position, il gagne aucun point. Déterminer le parti qui prendra le pouvoir dans ce pays dAfrique.

20 20 Jour délection (choix dun 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 Tant et aussi longtemps quil reste des bulletins de vote dans les boîtes de scrutin, procédez comme suit : 2.1 Prendre un bulletin de vote. 2.2 Ajouter 3 points au parti en 1 e position. 2.3 Ajouter 2 points au parti en 2 ième position. 2.4 Ajouter 1 point au parti en 3 ième position. 3. Si le nombre de points du parti Bleu > le nombre de points du parti Vert alors mémoriser dans Gagnant le nombre de points du parti Bleu sinon mémoriser dans Gagnant le nombre de points du parti Vert. 4. Si Gagnant < le nombre de points du parti Rouge alors mémoriser dans Gagnant le nombre de points du parti Rouge.

21 21 Jour délection (choix dun président) 5. Si Gagnant < le nombre de points du parti Blanc alors mémoriser dans Gagnant le nombre de points du parti Blanc. 6. Conserver dans Nombre_de_gagnants la valeur Si Gagnant est égale au nombre de points du parti Blanc alors ajouter 1 à Nombre_de_gagnants sinon le candidat Blanc est éliminé. 8. Si Gagnant est égale au nombre de points du parti Bleu alors ajouter 1 à Nombre_de_gagnants sinon le candidat Bleu est éliminé. 11. Si Nombre_de_gagnants > 1 alors un 2 ième scrutin est effectué avec les candidats non éliminés sinon le candidat non éliminé est le nouveau président de ce pays. 9. Si Gagnant est égale au nombre de points du parti Vert alors ajouter 1 à Nombre_de_gagnants sinon le candidat Vert est éliminé. 10. Si Gagnant est égale au nombre de points du parti Vert alors ajouter 1 à Nombre_de_gagnants sinon le candidat Vert est éliminé.

22 22 Algorithme pour résoudre une équation du second degré Il sagit de trouver les racines si elles existent de léquation a x 2 + b x + c = 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 Si a est différent de 0 alors Calcul du discriminant b 2 – 4 a c. Mémoriser dans DELTA la valeur du résultat. Si DELTA est plus petit que 0 alorsécrire " Il nexiste 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.

23 23 Calcul de la moyenne et de la variance des notes des étudiants Soient x 1, x 2, …, x n les notes obtenues à un examen en Mathématiques du Ministère par des étudiants de sec. IV, il sagit de calculer les 2 mesures suivantes : n Moyenne arithmétique (échantillonnale) : x= 1 x i ni = 1 n Variance échantillonnale (mesure de dispersion) : s 2 = 1 (x i - x) 2 n-1i = 1 Le calcul de la variance échantillonnale crée une difficulté car x nest pas connu à priori. Solution : Réécrire s 2 comme suit : n s 2 = x i 2 - n x 2 i = 1n - 1

24 24 Algorithme permettant de calculer la moyenne et la variance des notes 1. Mémoriser dans n la valeur Mémoriser dans SOMME la valeur Mémoriser dans CARRE la valeur Tant et aussi longtemps que des notes nont 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 Écrire " La moyenne échantillonnale est : ". 6. Écrire SOMME / n. 7. Écrire " La variance échantillonnale est : ". 8. Écrire la valeur de lexpression : (CARRE – SOMME * SOMME / n) / (n - 1).

25 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 que le 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 Lalgorithme prend fin. 5. Se positionner à la page suivante dans le dictionnaire. 6. Retourner à létape 4. ALGORITHME SÉQUENTIEL

26 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 que le 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 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 < 1 e 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.

27 27 Efficacité dun algorithme Il existe habituellement plusieurs algorithmes pour résoudre un problème. Il faut choisir habituellement celui qui exige le moins de ressources pour trouver la solution à votre problème. Quentend-on par ressource ? Le temps nécessaire pour trouver la solution. La quantité dinformation à mémoriser. Le meilleur algorithme est-il toujours le même peu importe les données du problème ? Non, car certains algorithmes ont un bon comportement lorsque le problème est de petite taille tandis que leur performance est réduite lorsque la taille du problème augmente sensiblement. Linverse est aussi vrai. Lequel choisir ? Exemple :Les algorithmes de recherche précédents sont-ils aussi efficaces avec un feuillet de quelques pages vs un gros dictionnaire ?

28 28 Comment choisir lalgorithme le plus efficace ? 1 e approche : approche empirique Construire chaque algorithme dintérêt permettant de résoudre notre problème. Appliquer à chaque algorithme différentes données du problème tout en faisant varier la taille du problème. Sélectionner lalgorithme qui nous semble le plus performant en fonction des résultats obtenus. Exemple : Considérer les algorithmes de recherche précédents avec des dictionnaires de différentes tailles ainsi que différents mots à rechercher. Inconvénient :Il faut implanter et exécuter chaque algorithme sur des données différentes.

29 29 Comment choisir lalgorithme le plus efficace ? 2 ième approche : approche théorique Calculer le nombre dopérations élémentaires nécessaires à lalgorithme pour résoudre le problème. Avantages : Évite dimplanter des algorithmes inefficaces et ainsi perdre du temps. Évite dappliquer aux algorithmes différentes données du problème tout en faisant varier la taille du problème. Cette analyse ne dépend pas de lordinateur utilisé le cas échéant. Analyse en pire cas : # dopérations élémentaires nécessaires à lalgorithme pour résoudre le problème dans le pire cas (les données du problème où lalgorithme est le plus coûteux). Analyse en moyenne : # dopérations élémentaires en moyenne nécessaires à lalgorithme selon la fréquence des données.

30 30 Analyse de lalgorithme 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 que le 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 Lalgorithme prend fin. 5. Se positionner à la page suivante dans le dictionnaire. 6. Retourner à létape 4. # dopérations élémentaires = (k – 1) + 2 = 3 k + 2 où k désigne le no. de page recherché. Analyse en pire cas : 3 n + 2.Analyse en moyenne* : n / 2. *On suppose que la fréquence des mots recherchés est la même ainsi que le nombre de mots dans chaque page.

31 31 Analyse de lalgorithme 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 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 < 1 e 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. # dopérations élémentaires en pire cas = … = log 2 n log 2 n fois 5.4

32 32 Évaluation dun polynôme de degré n Il sagit de calculer f(x) = a 0 + a 1 x + a 2 x 2 + … + a n x n 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 à n lire le coefficient a i. 1.3 Lire la valeur de x. 2. { Calcul de f(x). } 2.1 Mémoriser dans SOMME le coefficient a Pour chaque valeur de j allant de 1 à n Mémorisez dans TERME le coefficient a j Répétez j fois les opérations suivantes : Multiplier TERME par x Mémoriser dans TERME le résultat de la multiplication Additionner la valeur de SOMME à celle de TERME Mémoriser dans SOMME le résultat de laddition.

33 33 Évaluation dun polynôme de degré n : analyse de lalgorithme 3. { Écrire la valeur de f(x). } Écrire la valeur mémorisée dans SOMME. Calcul du # dopérations élémentaires 1. { Lecture des données du problème. } n + 3 opérations de lecture. 2. { Calcul de f(x). } n 1 + (3 + 2 j) opérations de calcul. j=1 3. { Écrire la valeur de f(x). } 1 opération décriture. Total :n n + 5 opérations élémentaires. Algorithme quadratique

34 34 Évaluation dun polynôme de degré n : Règle de Horner 2. { Calcul de f(x). } 2.1 Mémoriser dans SOMME le coefficient a n. 2.2 Pour chaque valeur de j allant de n-1 à Multiplier SOMME par x Additionner le résultat de la multiplication à a j Mémoriser dans SOMME le résultat de laddition. Calcul du # dopérations élémentaires 1. { Lecture des données du problème. } n + 3 opérations de lecture. 2. { Calcul de f(x). } n 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

35 35 Comparaison des deux algorithmes n Courbe linéaire Courbe quadratique # dopérations élémentaires Cas particulier : n = 1045 vs 155 opérations élémentaires.

36 36 Calcul de x [a, b] f(x) = f (une valeur fixée à priori), f étant croissante Il sagit de calculer lintervalle [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 uv f une fonction croissante Note : Pour quil y ait une solution au problème, f(a) f f(b).

37 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 > { Recherche de lintervalle. } 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 lintervalle [w, w + ] sinon écrire lintervalle [w, b]. Total en pire cas : (b – a) / opérations élémentaires + (b – a) / évaluations de la fonction f.

38 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 > { Recherche de lintervalle. } 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) / Calculer f(MILIEU) et conserver dans VALEUR_DE_F le résultat obtenu. 2.4 Si v – u > alors si VALEUR_DE_F > f alors conserver dans v la valeur de MILIEU sinon conserver dans u la valeur de MILIEU. Retourner à létape 2.2. Écrire lintervalle [u, v] Total : log 2 ((b – a) / ) opérations élémentaires + log 2 ((b – a) / ) évaluations de la fonction f.

39 39 Comparaison des 2 algorithmes

40 40 Présence dun mot dans un texte Déterminer si un mot de longueur m se retrouve au moins une fois dans un texte de longueur n (m n). 1. Pour chaque position i allant de 1 à n – m Mémoriser dans j la valeur de Tant et aussi longtemps que j m faire Si le (i+j-1) ième caractère du texte est égale au j ième caractère du mot alors augmenter la valeur de j de 1 sinon j prend la valeur m Si j est égale à m + 1 alors Écrire « Il existe au moins une occurrence du mot. » Lalgorithme prend fin. 2. Écrire « Le mot ne se retrouve pas dans le texte. ». 3. Lalgorithme prend fin.

41 41 Analyse de lalgorithme Total en pire cas : (n – m + 1) (2 + 6m) opérations élémentaires Quelle est la valeur de m pour laquelle la performance de lalgorithme est 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.

42 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 sagit pour jouer de placer un chiffre de 1 à 9 dans chaque case vide. Chaque ligne, chaque colonne et chaque boîte 3 x 3 délimitée par un trait plus épais doivent contenir tous les chiffres de 1 à 9. Chaque chiffre apparaît donc une seule fois dans une ligne, dans une colonne et dans une boîte 3 x 3.

43 43 Jeu KAKURO (algorithme encore plus difficile à concevoir) Solution du jeu

44 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 que le 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

45 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éhensibles pour 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

46 46 Raffinement successif: degré de raffinement Quand il procède à des raffinements des différentes étapes, le concepteur d'un algorithme doit naturellement savoir où s'arrêter. Autrement dit, il doit savoir quand une étape constitue une primitive adéquate au point de ne pas avoir besoin de raffinement supplémentaire. Cela signifie évidemment qu'il doit connaître quelle sorte d'étape le processeur peut interpréter. Le concepteur de l'algorithme précédent doit savoir que le robot peut interpréter "brancher la bouilloire" ce qui de ce fait n'exige pas de raffinement, mais qu'en revanche, il ne peut pas interpréter "remplir la bouilloire" et que dès lors un raffinement devient nécessaire. Exemple :

47 47 Méthode de raffinement successif : problème II Problème II : Impression dune suite de nombres entiers. Soit la suite G définie de la manière suivante : G(0) = 1 G(1) = Noù N est un entier positif, G(2) = N + 2 G(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 21 premiers nombres de la suite G. Vous devez les faire imprimer en « escalier », cest-à-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.

48 48 Méthode de raffinement successif : problème II Problème II : Impression dune suite de nombres entiers. 1.Répétez trois fois 1.1{ Lecture dune 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.3Répétez 2 fois lopé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 à { Calcul et affichage de la i ième ligne. } 1.2.2Faire un saut de ligne { Calcul et affichage de la i ième ligne. } Pour chaque indice k allant de j=1,2,…, i-1 j à ( j=1,2,…, i-1 j) + i { Calculer G(k) et conserver cette valeur dans Resultat. } Afficher la valeur de Resultat suivie de 5 espaces.

49 49 Méthode de raffinement successif : problème II Problème II : Impression dune suite de nombres entiers {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 alors Conserver dans u, v et w les valeurs de 1, N et N+2 resp Pour chaque valeur de m allant de 3 à k Conserver dans Resultat la valeur de w + N*v + 3*u Placer dans u la valeur de v Placer dans v la valeur de w 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 ?


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

Présentations similaires


Annonces Google