#p96149,SERGEY написал(а):Я полагал что решение это алгоритм поиска наикратчайшего маршрута на произвольно взятом множестве точек. Дали множество точек - хуяк применили алгоритм и получили кратчайший маршрут. Дали другое множество точек - и вновь применяя тот же алгоритм получили кратчайший маршрут.
Вот опять тут недопонимание в терминах, что ли...
Алгоритм может быть гибким, адаптивным, ветвящимся...
Вот даже для самого простого варианта четырех городов алгоритм решеиия задачи коммивояжера распадается на два случая:
1. четырехугольник выпуклый: ни одна точка не находится внутри треугольника из трех других.
Ответ сразу: кратчайший путь проходит по периметру.
2. Одна точка лежит внутри треугольника, составленного из трех других.
Тут другой ответ, но тоже единственный и находится несложно без перебора всех возможных гамильтоновых циклов.
Ну и пограничный случай, когда четвертая точка лежит не внутри комбинации их трех точек, и не снаружи, а на одной из сторон треугольника.
Однако, эти два с половиной случая можно и нужно учесть в рамках одного алгоритма.
Получается, как в решении квадратного уравнения дискриминант:
один случай - дискриминант положительный, другой случай - дискриминант отрицательный, и между ними - пограничный, когда дискриминант равен нулю...
Полная аналогия.
Отредактировано Лукомор (2019-01-06 09:36:31)