在树中搜索时,我对统一成本搜索的理解是,对于给定节点A,具有子节点B,C,D且相关成本为(10,5,7),我的算法将选择C,如它的成本更低。扩展C后,我看到节点E,F,G的成本为(40,50,60)。它将选择40,因为它具有3的最小值。
现在,是不是和贪婪搜索一样,你总是选择最好的动作?
此外,在定义从某些节点到其他节点的成本时,我们应该考虑从树的开头到当前节点的整个成本,还是从节点n到节点n'的成本本身?
由于
答案 0 :(得分:36)
不。你的理解不太对。
在统一成本搜索的情况下要访问的下一个节点是D,因为它具有来自根的最低总成本(7,而不是40 + 5 = 45)。
贪婪的搜索不会回到树上 - 它选择最低值并承诺。统一成本将从整棵树中选择最低的总成本。
答案 1 :(得分:7)
在统一成本搜索中,您始终会考虑到目前为止看到的所有未访问的节点,而不仅仅是那些连接到您所查看的节点的节点。因此,在您的示例中,在选择C之后,您会发现访问G的总成本为40 + 5 = 45,这高于从根再次启动和访问D的成本,这需要花费7.因此您将访问D接下来。
答案 2 :(得分:7)
它们之间的区别在于,当UCS选择具有最低动作成本的节点时,贪婪选择具有最低启发值的节点。请考虑以下图表:
如果你运行这两种算法,你会得到:
精选:S(成本0),B(成本1),A(成本2),D(成本3),C(成本5),G(成本7)
答案:S-> A-> D-> G
*假设它选择A而不是B; A和B具有相同的启发值
精选:S,A(h = 3),C(h = 1),G(h = 0)
答案:S-> A-> C-> G
因此,根据对问题定义的理解,区分从启发式值获取节点的动作成本非常重要,启发式值是添加到节点的一条信息。