Нашли ошибку?

Маршрут курьера: ближайший сосед

СложнаяРеализацияГлава 8

#NP-полные задачи#задача о коммивояжёре#приближённые алгоритмы#жадные алгоритмыid: ga-courier-route

Курьер выезжает со склада (точка с индексом 0), объезжает все адреса и возвращается на склад. Точный кратчайший маршрут — NP-полная задача о коммивояжёре, поэтому используем жадную эвристику «ближайший сосед»: каждый раз едем в ближайшую ещё не посещённую точку. Напишите plan_route(points): функция возвращает порядок обхода — список индексов, начинающийся с 0 (возврат на склад подразумевается).

Пример

points = [(0, 0), (10, 0), (1, 1), (9, 1)]
plan_route(points)   # [0, 2, 3, 1]

Правила

Решение

def plan_route(points: list[tuple[float, float]]) -> list[int]:
    """Порядок обхода точек эвристикой «ближайший сосед», начиная с 0."""
    # ваш код
    raise NotImplementedError

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 courier_route.py — тесты те же, результат покажет ✓ / ✗ и итог.