1. Recherche dichotomique Définition • La recherche d’une information dans un annuaire illustre cette idée. On cherche si telle personne est présente dans l’annuaire afin d’en déterminer l’adresse. • Plus généralement, c’est l’un des mécanismes principaux des bases de données : à l’aide d’un identifiant, on souhaite retrouver les informations correspondantes. • Dans cette famille d’algorithmes, la recherche dichotomique permet de traiter efficacement des données représentées dans un tableau de façon ordonnée. Idée de base • L’idée centrale de cette approche repose sur l’idée de réduire de moitié l’espace de recherche à chaque étape : on regarde la valeur du milieu et si ce n’est pas celle recherchée, on sait qu’il faut continuer de chercher dans la première moitié ou dans la seconde. • À chaque étape, on coupe l’intervalle de recherche en deux, et on en choisit une moitié. On dit que l’on procède par dichotomie, du grec dikha (en deux) et tomos (couper). L’algorithme 1. on détermine l’élément m au milieu du tableau ; 2. si c’est la valeur recherchée, on s’arrête avec un succés ; 3. sinon, deux cas sont possibles : (a) si m est plus grand que la valeur recherchée, comme la tableau est trié, cela signifie qu’il suffit de continuer à chercher dans la première moitié du tableau ; (b) sinon, il suffit de chercher dans la moitié droite. 4. on répète cela jusqu’avoir trouvé la valeur recherchée, ou bien avoir réduit l’intervalle de recherche à un intervalle vide, ce qui signifie que la valeur recherchée n’est pas présente. 2. Nombre d’Or Définition • La méthode du nombre d'or est un algorithme d'optimisation, c'est-à- dire de recherche de l'extremum d'une fonction, dans le cas d'une fonction unimodale, c'est-à-dire dans lequel l'extremum global recherché est le seul extremum local. S'il existe plusieurs extrema locaux, l'algorithme donne un extremum local, sans qu'il soit garanti que ce soit l'extremum absolu. Principe de base • Considérons une fonction réelle ƒ. • On a calculé sa valeur en trois points, x1, x2 et x3, avec x1 < x2 < x3 ; ceci est représenté sur le dessin ci-contre, avec y = ƒ(x). • Supposons que l'on ait ƒ(x2) < ƒ(x1) et ƒ(x2) < ƒ(x3) ; • comme la fonction est unimodale, on sait que le minimum est dans l'intervalle ]x1 ; x3[. • On « sonde » la fonction en prenant un point x4 dans cet intervalle, afin de réduire l'intervalle de recherche • On peut prendre x4 dans ]x1 ; x2[ ou bien dans ]x2 ; x3[ ; • il est meilleur de le prendre dans l'intervalle le plus grand, ici ]x2 ; x3[. Selon la valeur de ƒ(x4), alors : - cas a : ƒ(x4a) > ƒ(x2), on sait que le minimum se trouve dans ]x1 ; x4[ ; -cas b : ƒ(x4b) < ƒ(x2), on sait que le minimum se trouve dans ]x2 ; x3[. • On procède ensuite de manière récursive. • L'algorithme n'est pas très différent d'une recherche dichotomique, mais le choix des points utilise le nombre d'or plutôt que le nombre 2. Choix de la sonde • La particularité de la méthode est de choisir la sonde x4 telle que les deux segments possibles, ]x1 ; x4[ ou ]x2 ; x3[, aient la même longueur. Sinon, on pourrait par « malchance » avoir une convergence lente. On choisit donc: x4 - x1 = x3 - x2 • soit x4 = x1 + (x3 - x2). • Si l'on désire toujours garder la même proportion entre la largeur du segment à l'étape i et celle à l'étape i + 1, alors dans le cas a, il faut (avec les notations introduites sur la figure ):
et dans le cas b :
En éliminant c dans ces équations, on obtient
ce qui donne le nombre d'or φ :
3. Fibonacci Définition • Elle doit son nom au mathématicien italien Leonardo Fibonacci qui est connu pour avoir mis en évidence une suite mathématique qui porte désormais son nom. • Dans la suite de Fibonacci, il n’est pas nécessaire de mémoriser chacun des termes ou nombres de la suite (qui est d’ailleurs infinie). Il suffit de se rappeler sa règle de construction: à l’exception des deux premiers, chaque terme de la suite est égal à la somme des deux termes qui le précèdent immédiatement • La suite: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,… Propriétés • La suite de Fibonacci possède de nombreuses propriétés très utilisées en mathématiques. • Une d’entre elles est que le rapport de deux nombres consécutifs de la suite est alternativement supérieur et inférieur au nombre d’or, un nombre remarquable qui vaut exactement 1.61803398 • plus on avance dans la suite de Fibonacci, plus l’écart s’amenuise, et plus le rapport des deux nombres successifs (le plus grand / le plus petit) tend vers la valeur du nombre d’or L’algorithme : • La suite de Fibonacci est définie récursivement par F0 = 0, F1 = 1 et Fn+2 = Fn+1 + Fn pour n ≥ 0. Supposons que l’on cherche à calculer le k- ième terme de cette suite. • On obtient le pseudo-code ci-dessous :