考虑深度为B
的树(即:所有路径的长度为B
),其节点表示系统状态,边表示动作。
每个动作a in ActionSet
都有一个收益,使系统从一个状态转移到另一个状态。
执行一系列操作A-B-C
或C-B-A
(或这些操作的任何其他排列)都会带来相同的收益。此外:
a
之前执行的操作次数越多,提出a
时总增益的增加越低H
的数量,即:某些路径可能会获得低于H
的增益,但每当执行某个动作时,总增益等于H
,从该点开始执行的所有其他操作都将获得0
#b,h,j, ..., a#
获得的是g(a)
(0 <= g(a) <= H
)Algorithm1的应用。我应用以下算法(A * -like):
ActionSet
中的所有操作。每个展开的操作a
都会获得f(a) = g(a) + h(a)
,其中g(a)
的定义如前所述,h(a)
是对执行其他B-1
操作所获得收益的估算a*
f(a)
a*
B
的叶子的f(n)
个动作的整个路径。请注意,也可以从先前级别放弃的节点中选择新选择的操作。例如,如果在扩展a*
之后,最大化f(a)
的节点是根的子节点,则将其选为新的最佳节点 算法2的应用。现在,假设我有一个贪婪的算法,它只查看知识加启发函数g(n)
的{{1}}分量,即这个算法根据已经获得的收益选择行动:
f(n)
a
g(a)
b
醇>
声明。实验证明向我展示了两种算法带来了相同的结果,这些结果可能是混合的(例如,第一个表示序列g(b)
而第二个表示{ {1}})。
但是,我没有成功理解为什么。
我的问题是:有没有一种正式的方法证明这两种算法会返回相同的结果,虽然在某些情况下会混合使用?
谢谢。
答案 0 :(得分:0)
A *搜索将返回最佳路径。根据我对这个问题的理解,你的贪婪搜索只是执行贝叶斯计算,并且会继续这样做,直到找到一组最佳节点为止。由于节点的顺序无关紧要,因此两者应返回相同的节点集,即不同顺序的albiet。
我认为这是正确的,假设您可以从每个节点执行相同的操作集。