Algorithm A*搜索的完整性

Algorithm A*搜索的完整性,algorithm,Algorithm,我一直在读A*的完整性,我知道如果它有一个有限的分支因子,它必须是完整的,但为什么当每个边权重大于0时它也必须是完整的?如果图有有限的分支因子,并且每个边权重大于0,那么A*终止是不正确的 例如,考虑顶点为代码 0 /代码>, 1 , 2 , 3 < /代码>,…和单个顶点*。让i和i+1之间的边的权重为1/2^i,让0和*之间的边的权重为2。假设启发式为0,那么A*退化为Dijkstra算法 然后A*将不会(在有限时间内)找到从0到*的路径——它将沿着自然数探索路径,因为从0到n的距离总是小于

我一直在读A*的完整性,我知道如果它有一个有限的分支因子,它必须是完整的,但为什么当每个边权重大于0时它也必须是完整的?

如果图有有限的分支因子,并且每个边权重大于0,那么A*终止是不正确的

例如,考虑顶点为代码<代码> 0 /代码>,<代码> 1 ,<代码> 2 ,<代码> 3 < /代码>,…和单个顶点

*
。让
i
i+1
之间的边的权重为1/2^i,让
0
*
之间的边的权重为2。假设启发式为0,那么A*退化为Dijkstra算法

然后A*将不会(在有限时间内)找到从
0
*
的路径——它将沿着自然数探索路径,因为从
0
n
的距离总是小于2。因此,尽管这个图有有限的分支因子和正的边权重,A*并没有找到解


定理的正确表述是:“如果一个图有一个有限的分支因子,并且所有的权重都大于某个ε>0,那么a*就完成了。”证明很简单:如果从起点到终点的路径的权重为d,那么在最坏的情况下,所有顶点的距离为,因为如果权重为负,你永远不能确保你有一条最佳路径。通过这些负权重分支,可能会有路径的延伸。或者更糟糕的是,可能会有一个负权重的循环,你的算法将永远循环。我认为你在这个定理的表述中犯了两个错误。如果A*有有限的分支因子,且所有权重都大于某个ε>0,则A*是完整的。您已将“和”替换为“或”,并将“大于某个ε>0”替换为“正”。看我的答案,为什么你的定理陈述是错误的。