Optimization 两种算法的等价性

Optimization 两种算法的等价性,optimization,graph-algorithm,shortest-path,a-star,proof,Optimization,Graph Algorithm,Shortest Path,A Star,Proof,考虑深度为B(即:所有路径都有长度B)的树,其节点表示系统状态,边表示动作 ActionSet中的每个动作都有一个增益,使系统从一个状态移动到另一个状态。 执行动作序列A-B-C或C-B-A(或这些动作的任何其他排列)会带来相同的收益。此外: 在a之前执行的操作数越高,当询问a时,总增益的增加值越低 每个路径获得的增益不能大于数量H,即:某些路径可能获得的增益低于H,但每当执行操作使总增益等于H,从该点开始执行的所有其他操作都将获得0 通过动作序列#b,h,j,…,a得到的是g(a)(0A*搜

考虑深度为
B
(即:所有路径都有长度
B
)的树,其节点表示系统状态,边表示动作

ActionSet中的每个动作
都有一个增益,使系统从一个状态移动到另一个状态。
执行动作序列
A-B-C
C-B-A
(或这些动作的任何其他排列)会带来相同的收益。此外:

  • a
    之前执行的操作数越高,当询问
    a
    时,总增益的增加值越低
  • 每个路径获得的增益不能大于数量
    H
    ,即:某些路径可能获得的增益低于
    H
    ,但每当执行操作使总增益等于
    H
    ,从该点开始执行的所有其他操作都将获得
    0

  • 通过动作序列
    #b,h,j,…,a
    得到的是
    g(a)
    0A*搜索将返回最佳路径。根据我对问题的理解,贪婪搜索只是执行贝叶斯计算,并将继续执行,直到找到一组最佳节点。由于节点的顺序无关紧要,因此这两个搜索应返回相同的节点集,以不同的顺序返回


    我认为这是正确的,假设您可以从每个节点执行相同的操作集。

    您如何决定下一步扩展哪个节点?在A*的情况下,我构建了知识加启发式经典函数(f(n)=g(n)+h(n))在贪婪算法中,正如我在文中提到的,如果N个动作可用,并且我已经选择了M个动作,那么我选择最小化成本C的动作a作为下一个动作(a | a|u 1,…,a|M)。您所描述的基本上是,尽管您对它的描述非常尴尬(例如,对于特定的
    B
    ,您不会“选择操作
    B
    最小化成本
    C(B | A)
    ”,您会发现优先级队列中的所有操作中最低的一个)Dijkstra的算法考虑了开始探索路径的可能性,如果路径不是最低的,就离开它。我有一个有限的探索,如果我选择一个节点,它就会进入解决方案。例如:我在深度1探索节点,然后在深度1选择一个节点,在深度2探索其子节点……因此,如果我是探索在深度N中,我将不再讨论深度N-1(如果我记得清楚的话,这在普通的Dijkstra算法中是可能的)。它仍然是Dijkstra算法吗?有正式的方法证明它吗?