itc:tps:tp5:chemin_plus_court
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| itc:tps:tp5:chemin_plus_court [2022/01/18 12:23] – goupillwiki | itc:tps:tp5:chemin_plus_court [2022/01/18 22:13] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 4: | Ligne 4: | ||
| <code python> | <code python> | ||
| - | nuage = [(43, 63), (26, 71), (94, 31), (16, 0), (54, 79), (80, 37), (8, 21), (99, 18), (23, 77), (15, 52), (65, 86), (4, 40), (58, 18), (3, 8), (80, 26), (83, 35), (34, 88), (71, 84), (59, 66), (41, 36), (0, 99), (34, 6), (9, 15), (48, 42), (46, 91), (68, 36), (30, 21), (15, 29), (82, 15), (2, 94), (66, 17), (13, 1), (85, 14), (6, 23), (60, 73), (1, 27), (55, 98), (18, 14), (41, 76), (97, 56), (54, 73), (61, 75), (22, 43), (87, 73), (97, 40), (92, 76), (73, 98), (41, 31), (51, 9), (35, 89)] | + | nuage = [(43, 63), (26, 71), (94, 31), (16, 0), (54, 79), (80, 37), |
| + | (8, 21), (99, 18), (23, 77), (15, 52), (65, 86), (4, 40), | ||
| + | (58, 18), (3, 8), (80, 26), (83, 35), (34, 88), (71, 84), | ||
| + | (59, 66), (41, 36), (0, 99), (34, 6), (9, 15), (48, 42), | ||
| + | (46, 91), (68, 36), (30, 21), (15, 29), (82, 15), (2, 94), | ||
| + | (66, 17), (13, 1), (85, 14), (6, 23), (60, 73), (1, 27), | ||
| + | (55, 98), (18, 14), (41, 76), (97, 56), (54, 73), (61, 75), | ||
| + | (22, 43), (87, 73), (97, 40), (92, 76), (73, 98), (41, 31), | ||
| + | (51, 9), (35, 89)] | ||
| </ | </ | ||
| Ligne 11: | Ligne 19: | ||
| Recherchez une méthode par algorithme glouton. La réponse devra être une liste comme celle ci-dessus mais ordonnée selon l' | Recherchez une méthode par algorithme glouton. La réponse devra être une liste comme celle ci-dessus mais ordonnée selon l' | ||
| - | ===== Représenter la solution | + | ===== Représenter la nuage ===== |
| On peut utiliser '' | On peut utiliser '' | ||
| Ligne 18: | Ligne 26: | ||
| import matplotlib.pyplot as plt | import matplotlib.pyplot as plt | ||
| - | X, Y = zip(*solution) | + | X, Y = zip(*nuage) |
| plt.scatter(X, | plt.scatter(X, | ||
| - | X.insert(0, | ||
| - | Y.insert(0, | ||
| - | plt.plot(X, | ||
| plt.axis(' | plt.axis(' | ||
| plt.show() | plt.show() | ||
| </ | </ | ||
| + | ===== Quelques pistes ===== | ||
| + | Il sera utile de calculer la distance entre deux points : | ||
| + | |||
| + | <code python> | ||
| + | def distance(A, B): | ||
| + | ''' | ||
| + | A: paire x,y | ||
| + | B: paire x,y | ||
| + | renvoie la distance AB | ||
| + | ''' | ||
| + | </ | ||
| + | |||
| + | considérant un point de référence '' | ||
| + | |||
| + | <code python> | ||
| + | def extraire_plus_proche(points, | ||
| + | ''' | ||
| + | points: liste de paires x,y. Représentent des points du plan. | ||
| + | ou_je_suis: paire x,y. Le point où on se trouve maintenant. | ||
| + | recherche dans la liste points, le point le plus proche de ou_je_suis | ||
| + | extrait ce point de la liste et le renvoie. | ||
| + | ''' | ||
| + | </ | ||
| + | |||
| + | et enfin la fonction principale : | ||
| + | <code python> | ||
| + | def plus_court_chemin(nuage, | ||
| + | ''' | ||
| + | nuage: liste des x,y des points du nuage | ||
| + | depart: x, y du point de départ | ||
| + | cherche, en utilisant l' | ||
| + | et passant une fois par chaque point du nuage | ||
| + | renvoie ce chemin sous forme d'une liste de points. | ||
| + | ''' | ||
| + | </ | ||
| + | |||
| + | ===== Affichage du nuage et de la solution ====== | ||
| + | |||
| + | On reprend l' | ||
| + | |||
| + | <code python> | ||
| + | import matplotlib.pyplot as plt | ||
| + | |||
| + | X, Y = zip(*nuage) | ||
| + | plt.scatter(X, | ||
| + | |||
| + | chemin = plus_court_chemin(nuage, | ||
| + | X, Y = zip(*chemin) | ||
| + | plt.plot(X, Y, ' | ||
| + | |||
| + | plt.axis(' | ||
| + | plt.show() | ||
| + | </ | ||
itc/tps/tp5/chemin_plus_court.1642504987.txt.gz · Dernière modification : de goupillwiki
