Le pseudo-code suivant est tiré du premier chapitre d'une version préliminaire en ligne de l'ouvrage Le manuel de conception d'algorithmes (page 7 de ce PDF ).
L'exemple est celui d'un algorithme défectueux, mais j'ai quand même envie de le comprendre :
[...] Une autre idée pourrait consister à connecter de manière répétée la paire d' points d'extrémité dont la connexion ne créera pas de problème, tel qu'une une fin prématurée du cycle. Chaque sommet commence comme sa propre chaîne à sommet unique. Après avoir fusionné le tout, nous nous retrouverons avec une seule chaîne contenant tous les points qui la composent. En reliant les deux derniers points terminaux nous donne un cycle. A n'importe quelle étape de l'exécution de cette heuristique de paire la plus proche, nous aurons un ensemble de sommets simples et de chaînes de sommets disjoints disponibles pour fusionner. En pseudo-code :
ClosestPair(P)
Let n be the number of points in set P.
For i = 1 to n 1 do
d =
For each pair of endpoints (s, t) from distinct vertex chains
if dist(s, t) d then sm = s, tm = t, and d = dist(s, t)
Connect (sm, tm) by an edge
Connect the two endpoints by an edge
Veuillez noter que sm
y tm
devrait être s
<code>m</code> y t
<code>m</code> .
Tout d'abord, je ne comprends pas ce que signifie "à partir de chaînes de sommets distinctes". Ensuite, i
est utilisé comme un compteur dans la boucle externe, mais i
n'est jamais utilisé nulle part ! Quelqu'un de plus intelligent que moi pourrait-il m'expliquer ce qui se passe réellement ici ?