Vous êtes sur la page 1sur 4

LA DICHOTOMIE.

Une mthode dichotomique (du grec dikhotomia = action de partager en deux) est une mthode
algorithmique de recherche o chaque tape on coupe l'espace de recherche en deux parties pas
forcment gales, le but tant de diminuer l'espace de recherche, c'est un principe ancien.
On retrouve une trace de ce principe dans la Grce antique par l'intermdiaire d'un paradoxe de
Znon.
On peut appliquer la mthode de la dichotomie trois types de problmes :
1-Introduction par la recherche d'un nombre inconnu.
Objectif : Faire merger la mthode par dichotomie laide du jeu : dterminer le plus
rapidement un entier choisi arbitrairement entre 1 et 100 par lordinateur .
a) Etape 1 : le jeu .
Le principe est celui d'un jeu : une personne choisit un nombre au hasard entre 1 et 100 .
1)Programmer l'aide d'algobox, lalgorithme Devine_nombre :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
25
26
27
28
29

VARIABLES
nb_inconnu EST_DU_TYPE NOMBRE
nb_coups EST_DU_TYPE NOMBRE
nb_propose EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
nb_coups PREND_LA_VALEUR 1
nb_inconnu PREND_LA_VALEUR round(99*random())+1
AFFICHER "Proposez une valeur pour le nombre inconnu."
LIRE nb_propose
TANT_QUE (nb_inconnu!=nb_propose) FAIRE
DEBUT_TANT_QUE
nb_coups PREND_LA_VALEUR nb_coups+1
SI (nb_inconnu>nb_propose) ALORS
DEBUT_SI
AFFICHER "Votre nombre est plus petit que le nombre inconnu."
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Votre nombre est plus grand que le nombre inconnu."
FIN_SINON
AFFICHER "Proposez une autre valeur pour le nombre inconnu."
LIRE nb_propose
FIN_TANT_QUE
AFFICHER "Gagn en "
AFFICHER nb_coups
AFFICHER " coups !"
FIN_ALGORITHME

2)Le tester
b) Etape 2 : l'algorithme qui automatise la dmarche.
On propose d'automatiser la dmarche de recherche l'aide d'un algorithme.
Voici un algorithme incomplet.
1
2
3
4
5
6
7
8
9
10

VARIABLES
nb_inconnu EST_DU_TYPE NOMBRE
nb_propose EST_DU_TYPE NOMBRE
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
nb_coups EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
nb_inconnu PREND_LA_VALEUR round(99*random())+1
a PREND_LA_VALEUR 1
b PREND_LA_VALEUR 100

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

nb_coups PREND_LA_VALEUR 1
TANT_QUE (b>a+1) FAIRE
DEBUT_TANT_QUE
nb_coups PREND_LA_VALEUR nb_coups+1
nb_propose PREND_LA_VALEUR floor((a+b)/2)
SI (nb_propose<nb_inconnu) ALORS
DEBUT_SI
a PREND_LA_VALEUR nb_propose
FIN_SI
SINON
DEBUT_SINON
b PREND_LA_VALEUR nb_propose
FIN_SINON
FIN_TANT_QUE
nb_propose PREND_LA_VALEUR round(nb_propose)
AFFICHER "La valeur inconnue est : "
AFFICHER nb_propose
AFFICHER " touve en "
AFFICHER nb_coups
AFFICHER " coups."
FIN_ALGORITHME

Questions :
1 - Tester cet algorithme avec AlgoBox.
2 - Quel est le nombre maximal de coups ncessaires pour trouver un nombre inconnu ? Comparer
avec un algorithme qui balaierait les valeurs de 0 50 ( pour les plus rapides ) .
Remarque : la recherche dichotomique au lyce s'appuie de manire naturelle sur l'ensemble des
rels, mais pourrait tre utilise sur des listes de donnes.
Question :
3 - Comment applique-t-on la recherche dichotomique une liste quelconque de valeurs relles ?
2-Rsolution d'une quation du type f ( x)=0 .
Soit f une fonction strictement monotone, continue et changeant de signe sur l'intervalle [a;b ] ,
c'est--dire f (a) f (b)< 0 . L'espace de recherche est l'intervalle [a;b ] .
Deux exemples :

chaque tape, on partage l'intervalle en deux en considrant le centre de cet intervalle c, ensuite
suivant le signe de f(c), on restreint l'intervalle de recherche la moiti de l'intervalle prcdent. Et
on continue en appliquant l'intervalle obtenu la mme procdure qu' l'intervalle de recherche, et
ainsi de suite
La recherche de la solution s'arrte lorsque le centre du dernier intervalle obtenu est considr
comme tant suffisamment proche de la solution cherche. Pour cela, on se rfre une condition

d'arrt fixe au dpart.


La prcision ne porte pas sur f (c) car f( c)< eps n'implique pas que c soit proche de x0 o
f ( x0)=0 .
Question :
1 - Trouver un exemple illustrant cette situation.
L'approximation choisie sera enfin le milieu du dernier intervalle utilis.
Un exemple :
Soit la fonction f ( x)= x3 2x+ 5 , dans un premier temps il faut dterminer un
intervalle [a;b] dont les bornes sont de prfrence des entiers conscutifs.
Cette recherche peut tre demande aux lves de plusieurs manires : tableur de la
calculatrice, graphiquement...Dans notre cas, l'intervalle de recherche utilis est :
[-3;-2].
Corps de l'algorithme :
tant que b-a > eps faire
b+ a
c
;
2
si f(c)=0 alors a c et b c
sinon si f(a)f(c)<0 alors b c
sinon a c
finsi
finsi
fintant
Afficher a.

Questions:
Appliquer cet algorithme, l'aide d'Algobox, pour une solution de x32 x+ 5=0 .
Mme question avec :
3

x 10=0

x sin x=0 .

Approfondissement (Pour les plus rapides) :


3-Recherche d'un maximum.
La recherche d'un maximum pour une fonction f donne sur un intervalle [a;b] o il y a un
changement de variations et un seul .
Le principe de dichotomie se droule de la manire suivante :

On coupe l'intervalle de recherche en deux parties, suivant le milieu mil de l'intervalle. Puis
on dtermine le milieu de chacun des deux intervalles forms q1 et q2.
On calcule les valeurs atteintes par f au milieu de l'intervalle de recherche f(mil), et aux
milieux des deux demi intervalles f(q1) et f(q2).
Enfin, on compare f(q1) f(mil) et f(q2) f(mil) :
Si f(q1)>f(mil) le maximum est dans l'intervalle [a; mil] qui a pour milieu q1;
Si f(q2)>f(mil) le maximum est dans l'intervalle [mil;b] qui a pour milieu q2 ;

si aucun des cas prcdents ne se produit, le maximum est dans l'intervalle [q1;q2] qui a
pour milieu mil.
On recommence au dbut et on s'arrte lorsque le longueur de l'intervalle obtenu est
infrieur la prcision choisie, l'approximation du nombre o le maximum est atteint sera
donn par le centre du dernier intervalle obtenu.

Schma :

Exercice :
crire cet algorithme en langage naturel.
Adapter cet algorithme la recherche d'un minimum.
Utiliser, si besoin est, ces algorithmes, l'aide d'Algobox, pour dterminer les extrema de
f ( x)=

4x
6
1+ x

g( x)=x sin x ;
5

h(x)= x 2 x + 2x 26 x + 19 x+ 22 .