两种算法的平等

时间:2013-06-27 16:10:41

标签: optimization graph-algorithm shortest-path a-star proof

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

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

  • a之前执行的操作次数越多,提出a时总增益的增加越低
  • 每条路径获得的增益不能大于H的数量,即:某些路径可能会获得低于H的增益,但每当执行某个动作时,总增益等于H,从该点开始执行的所有其他操作都将获得0
  • 行动序列#b,h,j, ..., a#获得的是g(a)0 <= g(a) <= H
  • 一旦在从根到叶子的路径上执行了某个操作,就无法在同一路径上再次执行

Algorithm1的应用。我应用以下算法(A * -like):

  1. 从根开始。
  2. 展开树的第一级,其中包含ActionSet中的所有操作。每个展开的操作a都会获得f(a) = g(a) + h(a),其中g(a)的定义如前所述,h(a)是对执行其他B-1操作所获得收益的估算
  3. 选择最大化a*
  4. 的操作f(a)
  5. 展开a*
  6. 的孩子
  7. 迭代2-3,直到访问从根到保证最高B的叶子的f(n)个动作的整个路径。请注意,也可以从先前级别放弃的节点中选择新选择的操作。例如,如果在扩展a*之后,最大化f(a)的节点是根的子节点,则将其选为新的最佳节点
  8. 算法2的应用。现在,假设我有一个贪婪的算法,它只查看知识加启发函数g(n)的{​​{1}}分量,即这个算法根据已经获得的收益选择行动:

    1. 在第一步,我选择了最大化收益f(n)
    2. 的操作a
    3. 在第二步,我选择最大化收益g(a)
    4. 的操作b

      声明。实验证明向我展示了两种算法带来了相同的结果,这些结果可能是混合的(例如,第一个表示序列g(b)而第二个表示{ {1}})。 但是,我没有成功理解为什么。

      我的问题是:有没有一种正式的方法证明这两种算法会返回相同的结果,虽然在某些情况下会混合使用?

      谢谢。

1 个答案:

答案 0 :(得分:0)

A *搜索将返回最佳路径。根据我对这个问题的理解,你的贪婪搜索只是执行贝叶斯计算,并且会继续这样做,直到找到一组最佳节点为止。由于节点的顺序无关紧要,因此两者应返回相同的节点集,即不同顺序的albiet。

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