为什么要使用有效分支因子来衡量启发式函数的性能?

人工智能 搜索 启发式 表现 分支因子
2021-10-25 07:30:50

对于具有启发式函数的搜索算法,启发式函数的性能通过有效分支因子来衡量b这涉及扩展的总节点N和解决方案的深度d. 我无法找出不同的值d影响性能保持不变N. 换句话说,为什么不只使用N作为绩效衡量标准,而不是b?

2个回答

前几次我也走进了那个陷阱。区别如下:

  • N展开节点的数量
  • b是有效分支因子
    • b取决于深度d目标和生成节点的数量,让我们称之为M
    • b是解决方案M+1=1+b+(b)2+(b)3+...+(b)d

所以,你可以争辩说,而不是比较b1b2两种算法,也可以直接比较M1M2, 因为b1>b2M1>M2.

但是你可以想象一个算法A2扩展的节点少于A1(所以ñ1>ñ2),但也有不同的节点,以便它生成更多的节点(所以1<2)。由于成本由生成节点的数量定义,因此比较ñ可能会给出错误的结果。

有效分支因子比生成节点的数量更通用,因为你可以平均b*对于许多搜索问题的一种算法,但对节点数量(可能有很大差异)进行平均是不可能的,或者说是荒谬的。

如你所见ñ是展开的节点数。每个节点的扩展成本等于该节点的子节点数。因此,我们使用b*对于每个节点。也就是说,扩容过程中涉及的节点总数为ñ×b*.