我应该为此使用什么寻路算法?
What pathfinding algorithm should I use for this?
我有一张图表(城市地图),其中包含我需要访问的一组节点。我需要创建一条最佳路线,所以我使用了 dijkstra 算法。问题是这个算法是为了找到从一个节点到任何其他节点的最佳路由,这对我来说还不够,因为我一路上都有差异。例如:
红色的路线是我从Dijkstra算法得到的路径(从a节点到c节点),但是我不知道如果我也想访问节点b应该怎么做。那么,有什么算法适合我的情况吗?
Dijkstra 找到两个给定节点之间的最短(或最便宜)路径。如果您想访问更大的节点集,您正在查看 Travelling Salesman Problem.
在经典的TSP中,必须访问图中的所有个节点。我不知道你的子集问题是否有名字,但你可以使用 Dijkstra 找到每对要访问的城市之间的最短路径,将你的访问九个城市中的三个城市减少到更简单的访问 - TSP涉及的三个城市
TSP 的强力解决方案是 O(n!),这对于要访问的少量节点来说还算不错。存在更快的算法,但它们更先进,而且它们并不完全快 (O(n22n))。找到多项式时间算法会让你的名字载入史册。
我有一张图表(城市地图),其中包含我需要访问的一组节点。我需要创建一条最佳路线,所以我使用了 dijkstra 算法。问题是这个算法是为了找到从一个节点到任何其他节点的最佳路由,这对我来说还不够,因为我一路上都有差异。例如:
红色的路线是我从Dijkstra算法得到的路径(从a节点到c节点),但是我不知道如果我也想访问节点b应该怎么做。那么,有什么算法适合我的情况吗?
Dijkstra 找到两个给定节点之间的最短(或最便宜)路径。如果您想访问更大的节点集,您正在查看 Travelling Salesman Problem.
在经典的TSP中,必须访问图中的所有个节点。我不知道你的子集问题是否有名字,但你可以使用 Dijkstra 找到每对要访问的城市之间的最短路径,将你的访问九个城市中的三个城市减少到更简单的访问 - TSP涉及的三个城市
TSP 的强力解决方案是 O(n!),这对于要访问的少量节点来说还算不错。存在更快的算法,但它们更先进,而且它们并不完全快 (O(n22n))。找到多项式时间算法会让你的名字载入史册。