KlarIA
💻 NSI (spécialité)1ereCours

Recherche dichotomique, k plus proches voisins, algorithmes gloutons

📖

Cours

Recherche dichotomique, k plus proches voisins, algorithmes gloutons

Trois algorithmes classiques, trois méthodes de pensée.

La recherche dichotomique exploite un tableau trié pour trouver une valeur en coupant l'intervalle en deux à chaque étape.

L'algorithme des k plus proches voisins prédit la classe d'un élément à partir d'exemples déjà classés : c'est un premier algorithme d'apprentissage.

Les algorithmes gloutons construisent une solution par choix locaux successifs : ils sont rapides, mais pas toujours optimaux.

1. La recherche dichotomique

1.1 L'idée

Pour chercher un mot dans un dictionnaire papier, on ouvre au milieu, on compare, on ne garde que la moitié utile, et on recommence.

Le programme affiche l'intervalle à chaque tour. Cherche d'autres valeurs, présentes ou absentes.

La valeur 2323 est trouvée en 33 comparaisons, contre 66 avec une recherche séquentielle.

1.2 Terminaison : le variant

La boucle while n'est pas bornée : il faut prouver qu'elle s'arrête.

On considère la longueur de l'intervalle, fin - debut + 1.

À chaque tour où l'on ne renvoie rien, soit debut devient m + 1, soit fin devient m - 1.

Dans les deux cas, la longueur diminue strictement, et elle est minorée par 00, puisque la boucle s'arrête dès que l'intervalle est vide.

1.3 Correction : l'invariant

Initialisation. Au départ, l'intervalle est le tableau entier : la propriété est vraie.

Conservation. Le tableau est trié. Si t[m] < v, tous les éléments d'index inférieur ou égal à m sont plus petits que v : v ne peut être qu'après. Le raisonnement est symétrique si t[m] > v.

Conclusion. Si l'on sort de la boucle sans avoir trouvé, l'intervalle est vide : v est absent.

1.4 Coût logarithmique

À chaque tour, la taille de l'intervalle est au moins divisée par 22 : de nn, on passe à n/2n/2, puis n/4n/4, jusqu'à 11.

Le nombre de tours est le nombre de fois où l'on peut diviser nn par 22, soit environ log2n\log_2 n : le plus petit kk tel que 2kn2^k \geq n.

nnRecherche séquentielle (pire cas)Dichotomie (pire cas)
1010101044
10001\,00010001\,0001010
10610^610610^62020
10910^910910^93030

Vérifions-le : on cherche une valeur absente, et on compte les tours.

2. L'algorithme des k plus proches voisins

2.1 Le problème

On dispose d'exemples déjà classés : des fleurs mesurées (longueur et largeur de pétale) avec leur espèce, des courriels étiquetés « spam » ou « normal ».

Pour un nouvel élément dont on ne connaît pas la classe, on veut la prédire.

2.2 L'algorithme

La distance la plus courante est la distance euclidienne : (x1x2)2+(y1y2)2\sqrt{(x_1 - x_2)^2 + (y_1 - y_2)^2}.

Change k en 11, puis en 55 : la prédiction change-t-elle ? Déplace aussi le nouveau point.

2.3 Le choix de k et ses limites

ChoixConséquence
k=1k = 1on copie la classe du voisin le plus proche : sensible à un exemple mal classé
kk grandplus stable, mais on finit par prédire toujours la classe la plus fréquente
kk impairévite les égalités quand il y a deux classes

En pratique, on teste plusieurs valeurs de kk sur des exemples dont on connaît la réponse, et on garde la meilleure.

3. Les algorithmes gloutons

3.1 La méthode

C'est simple et rapide. Le résultat est parfois optimal, parfois seulement approché.

3.2 Le rendu de monnaie

On veut rendre une somme en utilisant le moins de pièces possible.

La stratégie gloutonne : prendre la plus grande pièce qui ne dépasse pas ce qui reste à rendre, et recommencer.

Avec les pièces européennes, le résultat est optimal : cinq pièces pour 4848 centimes.

Avec les pièces {4,3,1}\{4, 3, 1\}, le glouton rend 66 avec trois pièces, 4+1+14 + 1 + 1, alors que 3+33 + 3 n'en demande que deux.

Essaie aussi rendu(8, [6, 4, 1]) : le glouton est-il optimal ?

3.3 Le sac à dos

On dispose d'objets ayant chacun un poids et une valeur, et d'un sac de capacité limitée.

Quels objets emporter pour maximiser la valeur sans dépasser la capacité ?

ObjetPoidsValeurValeur / poids
A5560601212
B4440401010
C66545499
D33242488

Avec une capacité de 1010, le glouton prend A puis B (99 kg) : ni C ni D ne tiennent ensuite. La valeur obtenue, 100100, est ici la meilleure possible.

3.4 Quand utiliser un glouton

Un glouton donne une solution rapide (un tri, puis un parcours) et souvent bonne.

Il est optimal quand la structure du problème s'y prête : monnaie européenne, certains problèmes de planification.

Sinon, il fournit une approximation utile. Trouver l'optimum exige alors d'autres méthodes, vues en terminale : exploration exhaustive, programmation dynamique.

4. Exemple résolu pas à pas

Cherche sur papier, puis vérifie tes réponses avec les blocs exécutables du cours.

Correction · Question a

Tour 11 : debut = 0, fin = 8, m = 4, et t[4] = 27 < 40, donc debut = 5.
Tour 22 : m = 6, et t[6] = 40 : trouvé à l'index 66, en 22 tours.
Pour n=1000n = 1\,000 : 210=102410002^{10} = 1\,024 \geq 1\,000, donc au plus 1010 tours.

Correction · Question b

Distances à (2,2)(2, 2) : (1,1)(1,1) donne 21,41\sqrt{2} \approx 1{,}41 ; (2,1)(2,1) donne 11 ; (5,4)(5,4) donne 133,61\sqrt{13} \approx 3{,}61 ; (6,5)(6,5) donne 55 ; (3,3)(3,3) donne 21,41\sqrt{2} \approx 1{,}41.
Les 33 plus proches sont (2,1)(2,1) A, (1,1)(1,1) A et (3,3)(3,3) B.
Deux A contre un B : on prédit la classe A.

Correction · Question c

482048 \to 20 (reste 2828) 20\to 20 (reste 88) 5\to 5 (reste 33) 2\to 2 (reste 11) 1\to 1.
Cinq pièces : 20+20+5+2+120 + 20 + 5 + 2 + 1. C'est optimal, car le système européen est canonique.

Correction · Question d

Glouton : 44, puis 11, puis 11, soit trois pièces.
Optimum : 3+33 + 3, soit deux pièces.
Le glouton n'est pas optimal pour ce système.

À retenir

Révise ce chapitre avec KlarIA

Tuteur qui t'explique pas à pas, quiz pour t'entraîner, flashcards pour mémoriser. Gratuit.

Créer mon compte gratuitement