我已经关注了图表:
如果我使用A *算法,我会得到这个解法:
S (0+1=1)
/ \
/ \
a(3+3=6) b(2+3=5)
/ | \ / \
/ | \ / \
c(4+0=4) b(6+3=9) d(6+0=6) d(5+0=5) c(7+0=7)
问题:我们会找到哪种解决方案,使用算法A *和启发式估算(见图表)
Sollution:
选择b(= 5):
S (0+1=1)
/ \
/ \
a(3+3=6) b(2+3=5)
选择d(= 5):
S (0+1=1)
/ \
/ \
a(3+3=6) b(2+3=5)
/ \
/ \
d(5+0=5) c(7+0=7)
停止搜索 - 因为“费用5”小于a(3 + 3 = 6) - >我们不寻找其他解决方案? 解决方案是: s-b-d,费用= 5
是不是?
答案 0 :(得分:4)
从理论上看你写的是正确的。 但是,运行A *的图形有一个非常重要的属性,它应该是有效的,以便您知道算法产生最佳解决方案:您使用的启发式函数应该是乐观的,即永远不要高估到目标的实际距离。如果我得到正确的你有几个目标节点C和D,问题是A的启发式值不乐观,实际上它高估了(从A到目标节点C的路径只有1,小于h (A)= 3)。这就是为什么你实际上没有得到最佳解决方案。