允许的启发式功能

时间:2016-02-06 21:32:09

标签: artificial-intelligence heuristics

我知道可接受的启发式函数低估了目标的实际成本,但我想得出结论,启发式函数h3是两个可容许的启发式函数(h1和h2)的总和,都可以被接受,如果没有进一步的话给出了关于h1和h2的信息。 你认为这是正确的主张吗?

由于

2 个答案:

答案 0 :(得分:4)

可接受的启发式算法永远不会过高估计从节点到目标节点的最低成本路径的成本。因此,启发式特定于特定的状态空间,也特定于该状态空间中的特定目标状态。必须允许该搜索空间中的所有州。 为了帮助记住它是“永远不要高估”或“从不低估”,只要记住一个可接受的启发式过于乐观。它会导致A *搜索到最优路径成本更高的搜索路径。它不会阻止A *通过产生过高的启发式h值来扩展最佳路径上的节点。 对启发式的更强烈要求是它是一致的,有时称为单调。如果启发式h的值沿路径不递减,则启发式h是一致的。在数学上,如果对于父节点p的每个节点n,启发式h是一致的,

答案 1 :(得分:4)

我认为原来的问题尚未得到回答 - 也不在上一个答案的评论中。

如果h1和h2是可接受的,那么h3 = h1 + h2通常是不允许的,尽管这可能发生在特殊情况下(即,空启发式是可以接受的,并且可以多次添加到另一个启发式任意而不违反可接受性)。这很容易看到。想象一下这样一个问题,即所有状态都是目标状态,或者它们只能通过成本1的单个动作转变为目标状态。因此,任何对目标状态返回0而对非目标状态返回1的启发式是可以接受的。让 s 成为非目标状态。那么, h1(s)= h2(s)= 1 都是可以接受的,但 h3(s)= 2 不是。

当然,再次允许采用最大允许启发式(这也很容易看到),因此h3 = max(h1,h2)将主导h1和h2(即,它至少与任一个一样好其中)仍然可以接受。

有一些更精细的方法,而不仅仅是采用一组可接受的启发式方法的最大值来将它们组合成更准确的方法。我所知道的最突出的技术称为成本分区:当确保没有任何操作可以为 h1 h2贡献成本时,它添加值是安全的。利用这个的基本思想是(我认为,自己检查一下!)通过创建原始问题的 n 问题实例(当针对 n 启发式方法时)并确保每当某个操作在问题编号 i 中有原始成本 m (用于启发式编号 i ),那么这个操作已经花费了<所有其他 n-1 问题中的em> 0 。这样,所有问题/启发式仍然具有所有可用的动作,同时总结它们的值被保证是非高估的,即可以理解(假设所有 n 启发式也是可接受的)。我认为文章&#34;最佳可接受的抽象启发式组合&#34; (http://www.sciencedirect.com/science/article/pii/S0004370210000652)详细解释了这个想法。