我的挑战是找到笛卡儿计划中两点 A 和 B 之间的最短路径,追踪其他点的路径,尊重以下内容: />
1)没有边缘(断开的图形);
2)两个“邻居”点之间的距离不能大于指定值(例如P16->B
)。
在这种情况下:
A
P1 P2 P3 P4 P5
P7
P8 P9 P16 B
P10 P15
P11 P12 P13 P14
路径应该是:
A->P1->P2->P3->P4->P5->B
我的第一次尝试是迭代所有节点,创建边缘,然后应用dijkstra算法。但对于大图来说似乎很慢。
for(Point ori : points)
for(Point dest : points)
if(!ori.equals(dest) && distance(ori, dest) <= maxDistance))
ori.neighbors.add(dest);
List<Point> path = dijkstra(points, pointA, pointB);
还有另一种最佳解决方案吗?