Vous êtes sur la page 1sur 2

Abu Abd Allah Muhammad ben Musa al-Khawarizmi

Mathematiques discr`etes
Algorithmes
Cours 14, MATH/COSC 1056F
Julien Dompierre
D
epartement de math
ematiques et dinformatique
Universit
e Laurentienne

13 octobre 2010, Sudbury

Definition : algorithme

Mathematicien perse, ne vers 783 `a Khiva dans le Khwarezm qui a


donne son nom, decede vers 850 `a Bagdad.
en Algoritmi, puis
Son nom, al-Khuwarizmi, latinise au Moyen Age
en Algorisme par les Europeens, est `a lorigine du mot algorithme,
qui veut dire procedure.
Il est lauteur de louvrage intitule Al- abr wal-muqabalah, qui
signifie La transposition et la reduction, publie en 825. Le terme
al-jabr fut repris par les Europeens et devint plus tard le mot
alg`ebre.
Il est le premier `
a parler du syst`eme des chiffres indiens. On doit
aussi `
a al-Khuwarizma la tradition consistant `a appeler linconnue
dune equation mathematique x.

Recherche de lelement maximale dans une suite finie

Definition

Un algorithme est une procedure precise qui sert `


a resoudre un
probl`eme `a laide dun nombre fini detapes.
Les algorithmes partages generalement plusieurs proprietes :

les entr
ees dont depend lalgorithme.

les sorties qui resulte de lapplication de lalgorithme.

la pr
ecision, les etapes sont claires et sans equivoque.

la finitude, lalgorithme sarrete `a coup s


ur apr`es un certain
nombre detapes.

lefficacit
e, lalgorithme est aussi rapide que possible pour
obtenir le resultat.

la g
en
eralit
e, lalgorithme sapplique `
a toute une classe de
probl`emes.

Voici le pseudocode dun algorithme qui trouve le plus grand


nombre dans une suite finie de nombres entiers.
proc
edure TrouveLeMaximum(a1 , a2 , ..., an : entiers)
MaximumActuel := a1
pour i := 2 `
an
d
ebut
si ai > MaximumActuel alors MaximumActuel := ai
fin
{MaximumActuel est le plus grand nombre de cette suite}

Calcul iteratif de n factoriel

Voici le pseudocode dun algorithme qui calcul de facon iteratif n!.


proc
edure factoriel (n : entier)
produit := 1
pour i := 2 `
an
d
ebut
produit := produit i
fin
{ produit correspond `a n! }

Algorithme de fouille binaire


Cet algorithme recherche un nombre dans une liste finie et
ordonn
ee de nombres.
proc
edure fouille binaire(x : entier, a1 , a2 , ..., an : n entiers croissants)
i := 1 {i est lextremite gauche de lintervalle de recherche}
j := n {j est lextremite droite de lintervalle de recherche}
tant que i < j
d
ebut
m := (i + j)/2
si x > am alors i := m + 1
sinon j := m
fin
si x = ai alors emplacement := i
sinon emplacement := 0
{emplacement est lindice de lelement qui est egal `
ax
ou est egal `a 0 si x nest pas dans la liste}

Algorithme de fouille lineaire


Cet algorithme recherche un nombre dans une liste finie de
nombres.
proc
edure fouille lineaire(x : entier, a1 , a2 , ..., an : n entiers distincts)
i := 1
tant que (i n et x 6= ai )
d
ebut
i := i + 1
fin
si i n alors emplacement := i
sinon emplacement := 0
{emplacement est lindice de lelement qui est egal `a x
ou est egal `
a 0 si x nest pas dans la liste}