对于A *搜索算法,提供了一个启发式h,supose h是可以接受的。
那是:
每个节点n的h(n)≤h*(n),其中h *是从n到目标的实际成本。
这是否确保启发式单调?
那是:
f(n)≤g(n')+ h(n')对于每个sucesor n' n,其中f(n)= h(n)+ g(n),g(n)是累计成本。
答案 0 :(得分:2)
没有
假设您有三个后继状态s1
,s2
,s3
和目标状态g
,以便s1 -> s2 -> s3 -> g
。
s1
是起始节点。
还要考虑h(s)
和h*(s)
的以下值(即真实成本):
h(s1) = 3 , h*(s1) = 6
h(s2) = 4 , h*(s2) = 5
h(s3) = 3 , h*(s3) = 3
h(g) = 0 , h*(g) = 0
遵循目标的唯一途径,我们可以拥有:
g(s1) = 0, g(s2) = 1, g(s3) = 3, g(g) = 6
,与上面的真实成本相吻合。
虽然启发式函数是可接受的(h(s) <= h*(s)
),但f(n)
不会是单调的。例如f(s1) = h(s1) + g(s1) = 3
f(s2) = h(s2) + g(s2) = 5
f(s1) < f(s2)
f(s2)
。 f(s3)
和iter()
之间也是如此。
当然这意味着你有一个非常缺乏信息的启发式。