• Aucun résultat trouvé

PartieI:lacuissondescoquillettes Introductionàl’algorithmique

N/A
N/A
Protected

Academic year: 2022

Partager "PartieI:lacuissondescoquillettes Introductionàl’algorithmique"

Copied!
4
0
0

Texte intégral

(1)

Informatique 2010-2011 : TD 1. MPSI B Hoche

Introduction à l’algorithmique

Unalgorithme est un enchaînement d’actions.

Autres mots pour "action" : commande, instruction.

On décrit un algorithme à l’aide de diverses conventions de langage : langage naturel, schéma , pseudo-code, code.

Les documents de la liste du dessus respectent des conventions de plus en plus précises.

Uncode est un texte respectant la syntaxe d’un langage de programmation.

L’objet de cette introduction est de présenter diverses notions et conventions à partir d’un exemple d’algorithme totalement évident. On utilisera ensuites ces notions et convention pour décrire un algorithme de numération.

Partie I : la cuisson des coquillettes

Partons de la description de l’algorithme dans un livre de cuisine (figure 1) qui date des années 60. On se propose de traduire (implémenter) l’algorithme de

Fig.1 – Un algorithme en langage "naturel" (Ginette Mathiot)

cuisson des pâtes en utilisant des conventions plus modernes et qui se prêtent mieux à la généralisation.

On peut simplement aller à la ligne entre chaque commande utiliser : 250 g de pâtes, 35 g de sel, 3 litres d’eau

-faire bouillir de l’eau salée -mettre les pâtes dans l’eau -laisser cuire 5mn

Dans un schéma conventionnel (Fig 2), on utilise des rectangles et des flèches.

On peut aussi introduire la notion de couche, chaque commande est en fait un

Fig.2 – Un schéma simpliste

enchaînement de commandes plus simples (faisant partie d’une couche d’un niveau inférieur) que l’on choisit de ne pas préciser.

On va maintenant détailler certaines des commandes précédentes et introduire la notion devariable. Une variable est unnom qui sert à désigner quelque chose.

On va introduire aussi la notion d’affectation (on dit aussi assignation) qui sera codée par une flèche<--ainsi que la notion d’opérationet celle defonction.

Nous allons utiliser deux variables : Cassy et Eg et former un nouveau schéma : Dans ce schéma les instructions

Fig.3 – affectations, opérations, fonctions

"faire bouillir" Cassy

"chauffer" Cassy, 5mn

"vider" Cassy

"vider" Eg

Cette création est mise à disposition selon le Contrat

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

1 Rémy Nicolai TD1101

(2)

Informatique 2010-2011 : TD 1. MPSI B Hoche

sont des appels defonction contenant des paramètres comme Cassy ou Eg. L’ap- pel d’une fonction exécute un enchaînement de commandes qui peut modifier ou non les objets désignés par les paramètres et renvoyer ou non un autre objet.

Par exemple, les fonctions"faire bouillir","chauffer" "secouer"modifient l’état de l’objet désigné par Cassy ou Eg. En revanche "vider" ne modifie pas l’objet désigné par le paramètre maisrenvoie quelque chose obtenu à partir de ce paramètre (le contenu de la casserole ou de l’égouttoir).

Introduisons maintenant la notion de structure de contrôle dans l’enchaînement des commandes. On va évaluer quelque chose à "vrai" ou "faux" et diriger vers des enchaînements différents suivant le résultat.

Détaillons ainsi la commande"faire bouillir" Cassysuivant la figure4

Fig.4 – structure de contrôle

Partie II : numération en base b

Proposition. Soit b un entier naturel supérieur ou égal à 2. Pour tout entier naturelxentre0 etbn1, il existe un unique n-uplet

(a0, a1,· · ·, an−1)∈ {0,1,· · · , b−1}n tel que

x=a0+a1b+· · ·+an−1bn−1

Cette proposition traduit l’existence et l’unicité de la décomposition d’un entier dans une base arbitraire. On utilise en particulier les basesb= 2 (binaire),b= 10 (décimale),b= 16 (héxadécimal),b= 201,b= 60 (sexagésimale)2

Preuve. Pour démontrer cette proposition, on va remarquer qu’elle est équivalente à la bijectivité d’une certaine application entre deux ensembles finis ayant le même

1voir le système de numération maya. Cette base semble aussi avoir été utilisée par les Gaulois, le 80 quatre-vingt en serait un lointain vestige (ref wikipédia)

2utilisé par les mésopotamiens voir en particulier les tablettes cuneiformes de Plimpton

nombre d’éléments. Pour une telle application, l’injectivité entraîne la surjectivité donc la bijectivité.

La démonstration de l’injectivité estconstructive. Si un entier est décomposé alors chaqueaise calcule algorithmiquement en fonction dexet deb. Ceci assure l’unicité de la décomposition donc l’injectivité de la fonction.

Considérons la fonction Φ

({0,1,· · ·, b−1}n→{0,1,· · · , bn1}

(a0, a1,· · · , an−1)→a0+a1b+· · ·+an−1bn−1 En fait, il faut commencer par montrer que

a0+a1b+· · ·+an−1bn−1∈ {0,1,· · ·, bn1}

Ceci résulte de l’encadrement

0≤a0+a1b+· · ·+an−1bn−1(b1) + (b1)b+· · ·+ (b1)bn−1

(b1)(1 +b+· · ·+bn−1) =bn1 On démontre exactement de la même manière que, pour desm≤n:

a0+a1b+· · ·+am−1bm−1∈ {0,1,· · · , bm1}

Ceci servira plus loin pour justifier un des deux algorithmes proposés.

La proposition est exactement équivalente à la bijectivité de la fonction Φ. Les ensembles de départ et d’arrivée ont le même nombre d’éléments à savoirbn. Si la fonction Φ est injective, les images sont deux à deux distinctes. Il y a donc autant d’images distinctes que d’éléments dans l’ensemble de départ. Mais alors tous lesbn éléments de l’ensemble d’arrivée sont des images puisque cet ensemble ne contient quebn éléments.

Démontrons maintenant l’injectivité3. On suppose x=a0+a1b+· · ·+an−1bn−1

On peut adopter un algorithme "glouton" en cherchant d’abord les "plus gros mor- ceaux" c’est à dire le nombrean−1debn−1 contenus dans x. Comme

0≤a0+a1b+· · ·+an−2bn−2≤bn−11

3On peut présenter cette démonstration comme une analyse-synthèse. L’analyse correspond à l’injectivité ou à l’unicité, son argumentation est algorithmique. La synthèse correspond à la surjectivité ou à l’existence, son argumentation repose sur la théorie des ensembles

Cette création est mise à disposition selon le Contrat

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

2 Rémy Nicolai TD1101

(3)

Informatique 2010-2011 : TD 1. MPSI B Hoche

ce nombre est le reste de la division dexparbn−1et an−1 en est le quotient. Ceci assure l’unicité dean−1et on peut poursuivre le raisonnement en divisant le reste précédent parbn−2.

On peut aussi procéder en partant du bas. Dans la division parb de x=a0+a1b+· · ·+am−1bm−1=a0+ (a1+a2b+· · ·+an−1bn−2)b le reste esta0 et le quotient est a1+a2b+· · ·+an−1bn−2. Ceci assure l’unicité dua0 et le raisonnement se poursuit en divisant parb le quotient précédent. Le schéma conventionnel de cet algorithme est présenté en figure5

Fig.5 – algorithme de numération

On remarquera l’assignation arbitraire d’un objet quelconque à la variableres (résultat) au début du processus. On remarquera aussi dans l’instruction

res <-- restediv(x,b) , res

la place des deux variables par rapport à la virgule pour assurer que les différents termes s’écrivent bien de droite à gauche comme dans une écriture décimale usuelle.

Exponentiation rapide

L’algorithme d’exponentiation rapidepermet de calculeraeaet esont des nombres naturels en effectuant moins (beaucoup moins !) deemultiplications.

Le premier cas est celui où l’exposanteest une puissance de 2. Pour calculer xm=a(2m)

on peut utiliser seulementm(au lieu de 2m) multiplications en remarquant que x0=a, xm+1=x2m

Dans le cas général, on peut utiliser la décomposition deeen base 2. Les coefficients sont 0 ou 1 et seuls les 1 "comptent" dans le calcul de la puissance

e = c0+c121+c222+· · ·+cm2m ae = ac0ac121· · ·acm2m

ae = xi1xi2...

aveci1,i2associés aux coefficients non nuls de la décomposition

1. Mettre en oeuvre le principe précédent pour calculer ae sur un exemple en décomposant e en base 2 (par une succession d’opérations sans chercher à former un programme). Vérifier en calculant directement.

2. On modifie légèrement l’algorithme de décomposition deeen base 2 en cal- culant toutes les puissances dea dont l’exposant est une puissance de 2 et en multipliant ces nombres lorsque c’est nécessaire. Ce nouvel algorithme est présenté dans le diagramme de la figure6 que vous devez traduire dans la syntaxe Maple.

Cette création est mise à disposition selon le Contrat

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

3 Rémy Nicolai TD1101

(4)

Informatique 2010-2011 : TD 1. MPSI B Hoche

Fig.6 – exponentiation rapide

Cette création est mise à disposition selon le Contrat

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

4 Rémy Nicolai TD1101

Références

Documents relatifs

Paternité-Pas d'utilisations commerciale-Partage des Conditions Initiales à l'Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/.. 1

Paternité-Partage des Conditions Initiales à l'Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-sa/2.0/fr/.. 2 Rémy

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/.. 1

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/. 1

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/. 1

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/. 1

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/b. 3

Paternité-Pas d’utilisations commerciale-Partage des Conditions Initiales à l’Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/.. 1