Mam listę punktów 2D na przykład:Przegrupuj listę punktów, aby osiągnąć najkrótszą odległość między nimi
1,1 2,2 1,3 4,5 2,1
Odległość między tymi punktami jest znany (. Za pomocą math.hypot na przykład) chcę aby posortować listę tak, aby istniała minimalna odległość między nimi. Jestem w porządku z każdą możliwą kolejnością rozwiązań, o ile punkty są w najkrótszej kolejności.
Jaki jest najbardziej pythonic sposób na osiągnięcie tego?
Zastanawiałem się nad wyznaczeniem odległości między dowolnymi przedmiotami i dowolnymi innymi przedmiotami, wybierając za każdym razem najmniejszy, ale byłby to powolny algorytm na listach, nad którymi pracuję (1000 pozycji nie byłoby niezwykłe).
może być podobna do [najkrótszą odległość między algorytmu punktów] (http://stackoverflow.com/questions/1602164/shortest-distance-between-points-algorithm), tj liście Sortuj według współrzędnej X pierwszej (szybko) następnie sortuj bąbelki według odległości. –
"sortuj listę tak, aby istniała minimalna odległość między nimi» "między _them_", co oznacza "pomiędzy kolejnymi punktami"? –
Jeśli próbujesz zminimalizować odległość między kolejnymi punktami, pytasz o problem komiwojażera, który nie ma wydajnego rozwiązania; po prostu musisz wypróbować wszystkie zamówienia i zobaczyć, który z nich jest najkrótszy. –