Вы описываете условия на пути, а не условия на цели. A *, как и все алгоритмы поиска, - это поиск пути к цели [может быть в наборе целей, без проблем с этим].
Ваша проблема [для общего случая], по крайней мере, так же сложна, как и проблема Командующий , и, таким образом, эта проблема NP-Hard .
Сокращение простое: учитывая экземпляр TSP - найдите кратчайший путь от некоторого v
до v
, такой, что путь проходит через все вершины [ограничение]. Вы можете сделать это, просто пометив каждую вершину разным знаком.
Обратите внимание, однако, что алгоритм A*
не имеет проблем с поиском кратчайшего пути к вершине в наборе целевых вершин . Помните, что A * основан на алгоритме Дейкстры , который находит кратчайший путь к всем вершинам из одного источника.