Si vous n'y voyez pas clair rapprochez-vous !. Algorithmique, algorithmie, algorithme Origine des...

Post on 05-Apr-2015

106 views 0 download

Transcript of Si vous n'y voyez pas clair rapprochez-vous !. Algorithmique, algorithmie, algorithme Origine des...

Si vous n'y voyez pas clair

rapprochez-vous !

Algorithmique, algorithmie, algorithme

Origine des mots

XIIIème siècle, de la traduction en latin d'un mémoire de Mohammed Ibn Musa Abu Djefar (IXème siècle) dit

Al-Khwarismi

Définition

Séquence d'opérations visant à la résolution d'un problème en un temps fini

(mentionner la condition d'arrêt)

Algorithme mathématique

Simplifier le rationnel 18 / 30

= 3 / 5

Algorithme d’Euclide

Soit deux entiers naturels A et B, on commence par tester si A = B. Si oui, alors le PGCD est égal à A (ou B). Sinon, on remplace A par A-B si A > B ou on remplace B par B - A si B > A

PGCD (A, B) = PGCD (B, A) =

PGCD (A-B, B) si A > BPGCD (B-A, A) si B > AA (ou B) si B = A

Trace d’une matrice carrée

a11 a12 ... a1N

a21 a22 ... a2N

...

aN1 aN2 ... aNN

M =

Trace (M) = a11 + a22 + ... + aNN

Faire un bronx

Ingrédients (pour 8 personnes) :

Les proportions sont mesurées avec un petit verre cocktail

2 verres de gin1 verre 1/2 de cinzano doux1 verre 1/2 de cinzano sec4 verres de jus d'orange (naguère, le volume du jus d'orange représentait la moitié du volume de gin)

Technique:

1. Mettre les verres vides au réfrigérateur pendant une demi-heure.

2. Verser tous ces ingrédients dans le shaker et secouer pour bien mélanger.

3. Servir dans les verres glacés: ne pas ajouter de glace.

Est-ce un algorithme ?

Mettre les verres vides au réfrigérateur pendant une demi-heure.

Verser tous ces ingrédients dans le shaker et secouer

pour bien mélanger.

Servir dans les verres glacés: ne pas ajouter de glace.

1.

2.

3.

Séquence d’instructions

1. Mettre les verres vides au réfrigérateur pendant une demi-heure.

2.1 Verser tous ces ingrédients dans le shaker

2.2 et secouer pour bien mélanger.

3. Servir dans les verres glacés : ne pas ajouter de glace.

Action complexe

Secouer pour bien mélanger.

. // ne pas ajouter de glace

1. Mettre les verres vides au réfrigérateur pendant une demi-heure.

1.1 Mettre les verres vides au réfrigérateur

1.2 Armer un minuteur à ½ heure

1.3 Attendre la sonnerie du minuteur // ou faire n'importe quoi d'autre interruptible à la sonnerie

Ingrédients :(pour 8 personnes)

= Spécifications

( 2 verres de gin, 1 verre 1/2 de Cinzano doux, ... )

FaireUnBronx

= Identificateur

de fonction Ingrédients

= Paramètres données

8 verres d’apéritif = Résultat de la fonction

pour 8 personnes

8 verres d’apéritif FaireUnBronx ( 2 verres de gin, 1 verre 1/2 de Cinzano doux, ... )

Mettre les verres vides au réfrigérateur; Armer un minuteur à ½ heure; Attendre la sonnerie du minuteur; Verser tous ces ingrédients dans le shaker; Secouer pour bien mélanger; Servir dans les verres glacés; // ne pas ajouter de glace.

Coller du tube de PVC

Le tube PVC est devenu le matériau courant des évacuations d’eauUne canalisation est constituée ...

1. Nettoyer les surfaces à coller avec du papier de verre fin2. Eventuellement les dégraisser au trichloréthylène3. Etaler de la colle sur les deux surfaces4. Emboîter les deux éléments bien à fond et dans la position souhaitée. La colle sèche en quelques minutes

Fonction

Commentaires

Ingrédients ?

Résultats ?

Remarques

Eventuellement les dégraisser au trichloréthylène

instruction conditionnelle

Quelle est la condition ?

si les surfaces sont grasses, alors les dégraisser ...

Prédicat (vrai ou faux)

Sinon RIEN !

Cas général :

- Plusieurs actions à enchaîner si condition remplie

- Plusieurs autres actions à enchaîner dans le cas contraire

- Dans tous les cas reprendre ensuite le traitement normal

Et sinon ?

Action1;

Action2;

Action3;

Action4;

Action5;

Action6;

Action7;

A faire dans tous les cas

A faire dans tous les cas

A faire si une certaine condition est vraie

A faire si cette même condition est fausse

Action1;Action2;

si (une condition est vérifiée)Action3;Action4;

si (cette condition n’est pas vérifiée)Action5;Action6;

dans tous les casAction7;

Décalage = Indentation

Schéma alternatif

Action1;Action2;

si (une condition est vérifiée)Action3;Action4;sinonAction5;Action6;fin si

Action7;

Action3;Action4;

Action5;Action6;

Schémas séquentiels

Baisers au chocolat

Ingrédients (pour 24 baisers) :

- 48 petites meringues achetées toutes préparées

Pour la crème au beurre au chocolat ou au café:

- 200 gr de beurre fin- 4 jaunes d'oeufs- 125 g de sucre- 1 c. à c. de fécule- 50 g de chocolat fondant ou quelques gouttes d'essence de café- 1/2 l de lait bouillant

1. Travailler les jaunes d'oeufs et le sucre dans un plat en remuant au fouet ou au batteur électrique jusqu'à ce que le mélange devienne blanc et mousseux; ajouter la fécule.

2. Casser le chocolat en menus morceaux; le faire fondre à chaleur douce ou au micro-ondes avec 2 cuillères à soupe de lait; lorsqu'il est fondu, ajouter le reste de lait bouillant; remettre sur le feu et quand il est chaud, le verser peu à peu sur les jaunes d'oeufs en remuant énergiquement; remettre sur le feu et laisser épaissir sans faire bouillir et sans cesser de tourner; retirer du feu et laisser refroidir.

3. Mettre le beurre dans une terrine et le travailler à la spatule de bois jusqu'à ce qu'il soit ramolli sans être fondu; il doit avoir la consistance d'une pommade.

4. La crème étant presque froide, l'incorporer au beurre ramolli sans cesser de remuer; mettre dans un endroit frais mais non au frigo; lorsque la crème au beurre est froide, coller les meringues deux par deux avec une cuillère de cette crème au beurre.

1.Travailler les jaunes d'oeufs et le sucre dans un plat en remuant au fouet ou au batteur électrique jusqu'à ce que le mélange devienne blanc et mousseux; ajouter la fécule.

1.1 Travailler les jaunes d'oeufs et le sucre dans un plat en remuant au fouet ou au batteur électrique jusqu'à ce que le mélange devienne blanc et mousseux;

1.2 Ajouter la fécule;

2. Casser le chocolat en menus morceaux; le faire fondre à chaleur douce ou au micro-ondes avec 2 cuillères à soupe de lait; lorsqu'il est fondu, ajouter le reste de lait bouillant; remettre sur le feu et quand il est chaud, le verser peu à peu sur les jaunes d'oeufs en remuant énergiquement; remettre sur le feu et laisser épaissir sans faire bouillir et sans cesser de tourner; retirer du feu et laisser refroidir.

2.1 Casser le chocolat en menus morceaux; 2.2 Le faire fondre à chaleur douce ou au micro-ondes avec 2 cuillères à soupe de lait;2.3 Lorsqu'il est fondu, ajouter le reste de lait bouillant;2.4 Remettre sur le feu 2.5 et quand il est chaud, le verser peu à peu sur les jaunes d'oeufs en remuant énergiquement; 2.6 remettre sur le feu ...

2.1 Casser le chocolat en menus morceaux; 2.2 Le faire fondre à chaleur douce ou au micro-ondes avec 2 cuillères à soupe de lait;2.3 Lorsqu'il est fondu, ajouter le reste de lait bouillant;2.4 Remettre sur le feu 2.5 et quand il est chaud, le verser peu à peu sur les jaunes d'oeufs en remuant énergiquement; 2.6 remettre sur le feu ...

2.2 Le faire fondre à chaleur douce ou au micro-ondes avec 2 cuillères à soupe de lait jusqu’à ce qu’il soit fondu;2.3 Ajouter le reste de lait bouillant;2.4 Remettre sur le feu jusqu’à ce qu’il soit chaud;2.5 Le verser peu à peu sur les jaunes d'oeufs en remuant énergiquement;

3. Mettre le beurre dans une terrine et le travailler à la spatule de bois jusqu'à ce qu'il soit ramolli sans être fondu; il doit avoir la consistance d'une pommade.

4. La crème étant presque froide, l'incorporer au beurre ramolli sans cesser de remuer; mettre dans un endroit frais mais non au frigo; lorsque la crème au beurre est froide, coller les meringues deux par deux avec une cuillère de cette crème au beurre.

Les multiples formes de structures répétitives

3. Serrer la poignée d'un demi-tour;

4. Faire tourner le coupe-tube autour du tube;

Couper du tube de cuivre

// On utilise un coupe-tube à molette

1. Placer le tube dans le coupe-tube, à l'endroit de la coupe;

2. Serrer la poignée du coupe-tube pour que la molette soit en appui sur le tube;

5. Répéter les opérations 3 et 4 jusqu'à coupure complète;

6. Ebavurer l'intérieur du tube à la lime ou au couteau;

Couper du tube de cuivre

// On utilise un coupe-tube à molette

Placer le tube dans le coupe-tube, à l'endroit de la coupe;

Serrer la poignée du coupe-tube pour que la molette soit en appui sur le tube;

répéter

Serrer la poignée d'un demi-tour;

Faire tourner le coupe-tube autour du tube;

jusqu'à (coupure complète)

Ebavurer l'intérieur du tube à la lime ou au couteau;

1. Prendre la bûche;

Scier du bois

2. si (sa longueur > 30 cm)

alors

Lui enlever 30 cm;

Stocker le morceau coupé;

fin si3 Remonter à 2)

ou mieux :

4. Stocker le reste de la bûche

sinon

aller en 4)

2. tant que (sa longueur > 30 cm)

répéter

Lui enlever 30 cm;

Stocker le morceau coupé;

fin répéter

1. Prendre la bûche;

Scier du bois

3. Stocker le reste de la bûche

ou, différent :

jusqu'à (sa longueur <= 30 cm)

mais pas :

1. Prendre la bûche;

Scier du bois

3. Stocker le reste de la bûche

2. répéter

Lui enlever 30 cm;

Stocker le morceau coupé;

jusqu’à ce que (sa longueur <= 30 cm)

répéter

Actions1; ...

Actions2; ...

Actions3; ...

fin répéter

Nombreuses formes de boucles

Forme plus générale

boucle infinie

répéter

Actions1; ...

Actions2; ...

Actions3; ...

fin répéter

si (condition 1 vraie) alors sortir;

Une boucle avec sortie

équivalent à :

répéter

Actions1; ...

Actions2; ...

Actions3; ...

fin répéter

jusqu’à (condition 1 vraie)

répéter

Actions1; ...

Actions2; ...

Actions3; ...

fin répéter

si (condition 1 vraie) alors sortir;

équivalent à :

répéter

Actions1; ...

Actions2; ...

Actions3; ...

jusqu’à (condition 1 vraie)

Une autre boucle avec sortie

répéter

Actions1; ...

Actions2; ...

Actions3; ...

fin répéter

si (condition 1 vraie) alors sortir;

si (condition 2 vraie) alors sortir;

si (condition 3 vraie) alors sortir;

si (condition 4 vraie) alors sortir;

Forme la plus générale

Avancer d'un pas jusqu'à ce que vous soyez au bord de la falaise

Aller au bord de la falaise

répéter Avancer d'un pas ; ?????

jusqu’à (au bord de la falaise)

jusqu’à (au bord de la falaise)répéter

Avancer d'un pas;fin répéter

ou

Boucle à compteur

pour les valeurs successives d’un compteur variant de 1 à 100répéter

Traitement (par exemple "dormir" 1 seconde);

fin répéter

Compter jusqu’à 100

peut aussi être écrit :

Prendre un compteur qu’on désignera par Compteur;Initialiser le Compteur à 1;répéter

Traitement (par exemple "dormir" 1 seconde); si (Compteur = 100) alors sortir; Ajouter 1 au Compteur ;

fin répéter

CompterJusqua100 ( )

Identificateur de la fonction

Pas d’ingrédient(de paramètre)

Ne « renvoie » rien

Prendre un compteur qu’on désignera par Compteur;Initialiser le Compteur à 1; // ou Compteur 1;répéter

Traitement (par exemple "dormir" 1 seconde); si (Compteur = 100) alors sortir; Ajouter 1 au Compteur ; // Compteur Compteur + 1;

fin répéter

local à la fonction

Identificateur d’un objet

Affectation

Incrémentation

Déclaration

Affectation

Prendre le compteur CompteurCompteur ??? ;répéter si (Compteur = ??? ) alors sortir; Traitement (par exemple "dormir" 1 seconde); Compteur Compteur + 1;

fin répéter

Autre version

CompterJusqua100 ()

0

100

ou, beaucoup mieux :

Prendre le compteur CompteurCompteur ??? ;répéter si (Compteur = ??? ) alors sortir; Traitement (par exemple "dormir" 1 seconde); Compteur Compteur + 1;

fin répéter

Dernière version

CompterJusquaN (une valeur entière N) // N est la valeur maximale

0

N

pour chaque élément d’un ensemble donnérépéter

Traitement de l’élément;

fin répéter

Autre type de boucle

dite « boucle ForEach »

Imprimer le fichier;

fichier du répertoire courant

l'ensemble peut être une liste, un tableau, ...

Comment écrire l'algorithme permettant de fendre du bois ( Ø <= 10 cm) ?

1. Mesurer Ø de la bûche2. Si bûche trop grosse : la fendre en deux.3. pour chacun des 2 morceaux répéter4. si (il est trop gros) alors le fendre en deux sinon le ranger fin si5. fin répéter

34

Récursivité

L'algorithmique ? C’est simple ...

DEA Algorithmique

Université Pierre et Marie Curie (PARIS 6) Université Denis Diderot (PARIS 7)

Université Paris Sud (PARIS 11) Ecole Normale Supérieure (Ulm)

Ecole Normale Supérieure de Cachan Ecole Polytechnique

Ecole Nationale Supérieure des Télécommunications (ENST) Ecole Nationale Supérieure des Techniques Avancées (ENSTA)

En convention avec l'INRIA

Les techniques mises en œuvre pour la résolution de ces

questions font appel à des domaines des mathématiques

en plein essor comme :

la combinatoire, l’algèbre, la théorie des nombres et certains chapitres de l’analyse.

Ces techniques permettent de comprendre en profondeur

la nature des problèmes rencontrés, de leur donner des solutions

rigoureuses et efficaces et de construire des programmes

fiables et performants....

Objectifs

L’algorithmique constitue un des corps de doctrine privilégié

de l’informatique. Les problèmes actuels de l’algorithmique

trouvent leur source dans les questions rencontrées pour la

réalisation de logiciels efficaces et ceci dans tous les domaines

d’application de l’informatique :

systèmes, processus de calcul, gestion des ressources en mémoire, structure des systèmes et réseaux, étude et amélioration des performances, modélisation, sécurité, bases de données, réalisation d’outils de calcul et d’analyse.

Enseignements

Les enseignements débutent par un tronc commun autour de

quatre thèmes généraux :

Géométrie algorithmique, introduction à la complexité, problèmes algorithmiques et combinatoires, automates.

Ensuite, une variété de thèmes sont plus spécifiquement

distingués et présentés dans des filières :

analyse d'algorithmes, automates et mots, calcul formel, combinatoire, complexité codage et cryptographie, géométrie image et robotique, algorithmique de la vérification, modélisation des réseaux, algorithmes et modèles de calcul ...

Les domaines de recherche ou d’application accessibles à

partir des enseignements du DEA ... couvrent, outre les thèmes

évoqués plus haut, les sujets suivants :

l’optimisation d’algorithmes et de protocoles, la modélisation, la programmation parallèle ou distribuée, la théorie des automates et ses applications, la vision par ordinateur et les calculs d’ingénierie

que l’on retrouve en robotique et conception assistée

par l’ordinateur.