Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 是否可以使用*搜索非网格图_Algorithm_Graph Theory_Path Finding_A Star - Fatal编程技术网

Algorithm 是否可以使用*搜索非网格图

Algorithm 是否可以使用*搜索非网格图,algorithm,graph-theory,path-finding,a-star,Algorithm,Graph Theory,Path Finding,A Star,我知道A*是寻找最短路径的最佳算法,但我看不出任何启发式算法如何在非格图上工作?这让我想知道A*是否能够用于无向图或有向图。如果A*能够做到这一点,我们可以使用什么样的启发式方法?如果A*不是,那么当前计算有向或无向非格图上最短路径的最快算法是什么?如果需要更多信息,请发表评论。可能是的,但A*是在类似网格的图形中查找最短路径的常用算法。对于一般的图,有许多其他的最短路径计算算法,它们将更好地匹配您的情况。这取决于你的设置,使用哪一个 如果您计划执行单源最短路径(SSSP),如果您尝试查找从一个

我知道A*是寻找最短路径的最佳算法,但我看不出任何启发式算法如何在非格图上工作?这让我想知道A*是否能够用于无向图或有向图。如果A*能够做到这一点,我们可以使用什么样的启发式方法?如果A*不是,那么当前计算有向或无向非格图上最短路径的最快算法是什么?如果需要更多信息,请发表评论。

可能是的,但A*是在类似网格的图形中查找最短路径的常用算法。对于一般的图,有许多其他的最短路径计算算法,它们将更好地匹配您的情况。这取决于你的设置,使用哪一个

如果您计划执行单源最短路径(SSSP),如果您尝试查找从一个节点到另一个节点的最短路径,并且图形未加权,则可以使用呼吸优先搜索。该算法的双向版本在实践中表现良好。如果您使用SSSP,并且您的图形是加权的,Dijkstra算法是一种常见的选择,也可以使用双向版本。对于所有成对的最短路径,其他算法如Floyd Warshall或Johnson算法都很有用

如果您想使用启发式算法并在搜索完成之前估计距离,您可以进行预计算,这主要适用于上述每种算法。一些例子:

  • 快捷方式计算(圆弧标志、SHARC、KFLAG)
  • 集线器识别(也包括传输节点):预先计算所有集线器节点之间的距离(在非动态图中只能进行一次),找到源和汇的下一个集线器,例如使用dijkstra。累加集线器和源到下一集线器和汇到下一集线器之间的距离
  • 结构化查找表,例如集线器之间的距离以及集线器与特定距离内节点之间的距离。在预计算之后,您不再需要再次遍历图形,而是通过多次查找来计算最短路径。这导致内存消耗高,但性能强。可以通过使用距离计算的上限近似值来调整内存

我强烈建议您确定您的确切情况,并对适合此情况的图形算法进行一些研究。对于几十个应用领域的最短路径进行了大量研究。

给出了几个例子。一个例子是布线的直线距离,它不是在晶格结构中搜索,而是定向的。尽管维基百科确实给出了一些例子,但对于这样一个图,什么样的启发式会被使用呢?算法如何估计给定节点和端点之间的距离?谢谢你的回复。在有向图上可以使用什么样的启发式方法?大多数启发式算法假设给定节点和端点之间的距离是已知的。在有向图中,这个信息是未知的。你知道有什么启发法可以做到这一点吗?你能更清楚一点吗?所有这些都是预先计算的。轮毂识别方法可以作为一种启发式方法。您只计算一个节点a到下一个集线器节点HA的最短路径(您也可以预先计算),节点B也是如此,我们称之为节点HB。现在,您只需计算HA和HB之间的SSSP,最后将A->HA->HB->B之间的距离相加。这不一定是最优的,但对于过渡网络来说非常快。你的情况是什么?这回答了你的问题还是有什么不清楚的地方?随便问一下,如果这能帮助你考虑投票和/或接受这个答案。