Dichotomie

Dichotomie

La dichotomie (« couper en deux » en grec) est, en algorithmique, un processus itératif ou récursif de recherche où, à chaque étape, on coupe en deux parties (pas forcément égales) un espace de recherche qui devient restreint à l'une de ces deux parties.

On suppose bien sûr qu'il existe un test relativement simple permettant à chaque étape de déterminer l'une des deux parties dans laquelle se trouve une solution. Pour optimiser le nombre d'itérations nécessaires, on s'arrangera pour choisir à chaque étape deux parties sensiblement de la même « taille » (pour un concept de « taille » approprié au problème), le nombre total d'itérations nécessaires à la complétion de l'algorithme étant alors logarithmique en la taille totale du problème initial.

L'algorithme s'applique typiquement à la recherche d'un élément dans un ensemble fini ordonné et organisé en séquence. La fonction de « taille » du problème sera alors le cardinal de l'espace (fini) de recherche, et à chaque étape, on coupera l'espace de recherche en deux parties de même taille (à un élément près) de part et d'autre de l'élément médian.

La dichotomie peut être vue comme une variante simplifiée de la stratégie plus générale diviser pour régner appliquée au cas particulier de la recherche itérative d'une solution, où le traitement des sous-espaces exclus de la recherche et de sa recombinaison peuvent être court-circuités.

Sommaire

Exemple

Prenons un exemple simple et ludique pour illustrer le mécanisme de recherche par dichotomie :

Pierre propose à Paul le jeu suivant : « choisis en secret un nombre compris entre 0 et 100 ; je vais essayer de le deviner le plus rapidement possible, en ne pouvant que te poser des questions auxquelles tu réponds par oui ou par non ». Paul choisit 66 et attend les questions de Pierre :

  • Pierre sait que le nombre est entre 0 et 100 ; au milieu se trouve 50, il demande donc : « Est-ce que le nombre est plus grand que 50 ? »
  • Paul : « Oui »
  • Pierre sait maintenant que le nombre est entre 51 et 100 ; au milieu se trouve 75, il demande donc : « Est-ce que le nombre est plus grand que 75 ? »
  • Paul : « Non »
  • Pierre sait maintenant que le nombre est entre 51 et 75 ; au milieu se trouve 63, il demande donc : « Est-ce que le nombre est plus grand que 63 ? »
  • Paul : « Oui »
  • Pierre sait maintenant que le nombre est entre 64 et 75 ; au milieu se trouve 69, il demande donc : « Est-ce que le nombre est plus grand que 69 ? »
  • Paul : « Non »
  • Pierre sait maintenant que le nombre est entre 64 et 69 ; au milieu se trouve 66, il demande donc : « Est-ce que le nombre est plus grand que 66 ? »
  • Paul : « Non »
  • Pierre sait maintenant que le nombre est entre 64 et 66 ; au milieu se trouve 65, il demande donc : « Est-ce que le nombre est plus grand que 65 ? »
  • Paul : « Oui »
  • Pierre sait maintenant que le nombre est entre 66 et 66, autrement dit qu'il s'agit de 66 : il a trouvé le nombre choisi par Paul.
Cette méthode itérative permet à Pierre de trouver le nombre en posant en moyenne moins de questions que s'il procédait par des questions du type « Est-ce que le nombre est égal à 30 ? ».

Le nombre maximal M de questions à poser afin d'obtenir la réponse est la valeur du premier exposant entier de 2 supérieur ou égal au nombre N de réponses possibles, ou encore M est le premier entier supérieur ou égal au logarithme en base 2 de N.

M = \lceil  \log_2(N) \rceil

Pour l'exemple de Pierre et Paul, il y a N = 101 réponses possibles : le premier exposant de 2 supérieur à 101 est 128, soit 27, il faut donc un maximum M = 7 essais (26 = 64 serait trop faible). Ou encore :

M = \lceil \log_2(101) \rceil = \lceil 6.658211483... \rceil = 7

Algorithme

//déclarations
 début, fin, val, mil : Entiers
 t : Tableau [0..100] d'entiers classé
 trouvé : Booléen
 
//initialisation
 début ← 0 
 fin ← 100
 trouvé ← faux
 Saisir val

//Boucle de recherche
  Répéter
   mil ← partie entière( début + ((fin-début) / 2) )
   Si t[mil] = val alors
     trouvé ← vrai
   Sinon
     Si val > t[mil] Alors
       début ← mil+1
       
     Sinon
       fin ← mil-1
       
     FinSi
    FinSi
   // La condition début inférieur ou égal à fin permet d'éviter de faire
   // une boucle infinie si 'val' n'existe pas dans le tableau.
   Tant que trouvé = faux ET début ≤ fin
//Affichage du résultat
Si trouvé Alors
     Afficher "La valeur ", val , " est au rang ", mil
  Sinon
     Afficher "La valeur ", val , " n'est pas dans le tableau"
FinSi

Autre exemple

Cette méthode est très efficace pour la recherche des zéros approchés d'une fonction continue au voisinage du zéro cherché (théorème des valeurs intermédiaires), à condition qu'on puisse déterminer le signe de f((a+b)/ 2) à chaque itération. Elle prend alors le nom de méthode de dichotomie :

Soit f une fonction telle que:

  • f(a) < 0
  • f(b) > 0
  • f est continue strictement croissante sur [a;b] (a < b)

Alors une dichotomie permet de trouver rapidement la valeur y telle que f(y) = 0.

  1. Partir du couple de valeurs (a, b);
  2. Évaluer la fonction en (a+b)/2;
  3. Si f((a+b)/2) < 0, remplacer a par (a+b)/2, sinon remplacer b par (a+b)/2;
  4. Recommencer à partir du nouveau couple de valeurs jusqu'à ce que la différence entre les deux valeurs soit inférieure à la précision voulue.

Une implémentation simple de cet algorithme se trouve dans l'article Objective Caml.

Champ d'application

En dehors des considérations mathématiques, la méthode de détection de problème par dichotomie peut être appliquée à de nombreux processus.

Par exemple, en industrie, si un produit passant par x phases de transformation présente une anomalie, il est très pratique d'utiliser la dichotomie pour analyser les transformations (ou processus) par groupe plutôt que un par un. Cela permet aussi d'effectuer des réglages précis par étape.

La méthode de dichotomie peut, par exemple, être utilisée si l'on rencontre un problème lorsque l'on groupe 6 appareils. Le système tombe toujours en panne sans que l'on sache de quel appareil cela provient. On peut alors les regrouper par 3 et effectuer un test. Si les deux groupes tombent en panne, on peut en déduire que cela vient probablement d'une faiblesse du modèle des 6 appareils. Si un seul des deux groupes tombe en panne, on en déduit que c'est un appareil de ce groupe qui pose problème. Il n'y a plus qu'à grouper 2 des 3 appareils susceptibles d'être la source de la panne : en 3 temps maximum, on teste ainsi les 6 appareils.

Il faut toutefois émettre l'hypothèse que deux appareils ne puissent « tomber » en panne simultanément. Cette situation est, de façon théorique, quasi-impossible mais, dans les faits, peut se produire macroscopiquement puisque le test de vérification de l'état de marche global est effectué à intervalles plus grands que le risque de survenue des pannes. Cela ne compromet évidemment pas la méthode, mais restreint cependant son champ de validité : un seul élément doit être recherché pour qu'elle soit opérationnelle.


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Dichotomie de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • dichotomie — [ dikɔtɔmi ] n. f. • 1750; gr. dikhotomia 1 ♦ Astron. Phase de la Lune pendant laquelle une seule moitié de son disque est visible. 2 ♦ (1803) Bot. Mode de ramification par divisions successives en deux branches. ⇒ bifurcation. 3 ♦ (1907) Méd.… …   Encyclopédie Universelle

  • Dichotomie — Sf Zweiteilung, Gegensatz per. Wortschatz fach. (18. Jh.) Entlehnung. Entlehnt aus gr. dichotomía Zweiteilung , einer Ableitung von gr. dichótomos halbiert, geteilt , zu der Kompositionsform von gr. dícha entzwei, auseinander und gr. tomos, Nomen …   Etymologisches Wörterbuch der deutschen sprache

  • Dichotŏmie — (v. gr.), 1) Theilung der Einheit in 2 Theile, jedes Theiles dann wieder in 2 u.s.f.; 2) gleiche Eintheilung eines Satzes in 2 Glieder, u. jedes Gliedes eben so wieder in 2, so daß darunter befaßte immer entweder das eine od. das andere ist; 3)… …   Pierer's Universal-Lexikon

  • Dichotomīe — (griech., von dicha, »zwiefach«), Teilung der Einheit in zwei Teile, jedes Teiles dann wieder in zwei etc. (s. Einteilung); in der Botanik gabelartige Verzweigung eines Pflanzenteils, inbes. der Sprosse und Wurzeln …   Meyers Großes Konversations-Lexikon

  • Dichotomie — Dichotomīe (grch.), s. Gabelung …   Kleines Konversations-Lexikon

  • Dichotomie — Dichotomie, griech., Eintheilung in Zwei; in der Botanik die Gabeltheilung der Aeste; in der Astronomie die Mondsphase, wo die Scheibe genau zur Hälfte beleuchtet ist; der Augenblick des Eintretens dieser Phase wurde von Aristarch von Samos zur… …   Herders Conversations-Lexikon

  • dichotomie — DICHOTOMIE. s. f. (On prononce Dicotomie.) Terme d Astronomie. État de la lune quand on n en voit que la moitié …   Dictionnaire de l'Académie Française 1798

  • Dichotomie — Illustration einer Dichotomie mit zwei separaten Kreisen. Dichotomie (griechisch dichótomos, „halbgeteilt, entzweigeschnitten“ aus dícha „entzwei, getrennt“ und témnein „schneiden“[1]; manchmal auch Dychotomie) (auch: Zweiteilung oder… …   Deutsch Wikipedia

  • Dichotomie — Zweiteilung * * * Di|cho|to|mie 〈[ ço ] f. 19〉 1. 〈Bot.〉 gabelartige Verzweigung, einfache Aufspaltung in Richtung der Längsachsen 2. 〈Philos.〉 Zweiteilung, Gliederung nach zwei Gesichtspunkten [→ dichotom] * * * Di|cho|to|mie, die; , n [griech.… …   Universal-Lexikon

  • dichotomie — (di ko to mie) s. f. 1°   Terme de botanique. Mode de division par deux des rameaux et des pédoncules sur la tige.    Fig. Classification, raisonnement qui procède par dichotomie, c est à dire en divisant chaque chose, chaque proposition en deux …   Dictionnaire de la Langue Française d'Émile Littré

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”