En cours de rédaction
Source : Données et algorithmes (Mooc Fun)
Contexte : recherche d'un mots dans un tableau.
Enoncé
Algorithme
A faire
Complexité
Le point important dans l’évaluation du temps d'exécution est le nombre de comparaisons que l’on va effectuer : on peut voir l’opération de comparaison entre deux mots comme une sorte d'’« unité de mesure » du temps nécessaire. Essayons alors d’évaluer ce nombre, en considérant que le tableau contient N mots.
Deux cas possibles :
Enoncé
On compare le mot cherché à l’élément central du tableau. * Si le mot cherché est avant l’élément central, on sait qu'il suffit de regarder dans la première moitié du tableau. * Symétriquement, si le mot cherché est après l'élément central, on sait qu’il suffit de regarder dans la deuxième moitié du tableau.
Algorithme
A faire
Complexité
Le point important ici est que, dans les deux cas où on échoue, la moitié des éléments du tableau a été éliminé. Si l’on répète l’opération ci-dessus sur la moitié restante, il nous restera au pire un quart du tableau initial ; si on la répète à nouveau (pour la troisième fois donc), il restera un huitième du tableau initial, etc : la taille du tableau restant diminue d’un facteur 2 à chaque comparaison !
On voit donc que pour i comparaisons, la taille du tableau restant (dans lequel le mot est susceptible de se trouver) est de N/2i. Nous pourrons nous arrêter lorsque cette taille sera 1, puisque là il sera facile de dire si le mot est correct ou non (c’est ou ce n’est pas le seul élément du tableau restant). Pour que N/2i soit égal à 1, il faut que i soit égal à log2(N) (le logarithme à base 2 ; c’est une fonction qui croît très lentement, sa valeur augmentant de 1 lorsque son paramètre est doublé, avec log2(1) = 0).
On effectue les tests sur un tableau de 100000 mots. On suppose que le temps nécessaire à la comparaison de deux mots est de 1ms.
On se place dans la situation la plus favorable.