您还可以考虑A *算法。
这找到了与Dijkstra算法相同的解决方案,但通常以较低的计算成本(在您的情况下可能很重要,因为在空间离散化之后,您可能最终得到一个大网格)。
这是因为A *使用启发式来偏向搜索,因此它首先考虑更有希望的方向( 例如 向目标移动原则上是一个好主意,所以首先尝试这样做。
您可以看到A *运行的一些可视化 这里 和(与Dijkstra的算法并排 - 感谢@Thrawn的链接), 这里 。
像其他人已经说过的那样:这不是典型的“人工智能”问题。这是一种路径规划问题。
有不同的算法可用。如果你的路径没有满足任何约束,如.g。平滑度,你可以使用A * - 算法,距离为启发式。
您必须将XYZ空间表示为图形,其中每个节点都有一个坐标。此外,您需要考虑到,您希望避免的点附近没有节点。
如果您的路径需要满足约束,则会变为更复杂的路径规划问题,您可以在其中应用优化或RRT。
这不是机器学习问题,而是优化问题。
所以你需要一个贪心算法来获得最短路径
事实上它可以通过这种方式解决,但挑战是将您的网格表示为图形... 例如,在n×n矩阵中分解网格。在最短路径算法中,节点是矩阵的一个元素(因此排除包含散点的矩阵元素),弧的权重就是距离。
但是n必须很小,因为最短路径算法是np-hard问题...
对于这个特定问题,可能存在其他算法,但我不知道。