我是计算科学专业的学生,目前我有一个关于人工智能的课程。该主题涵盖各种最佳优先搜索路径寻找算法,例如A *搜索。
我的学习资料声称,按照下一条规则选择启发式是很常见的:
0≤h(n)≤h(n)*
我理解这一点,但之后材料声称你的启发式应该是乐观的或接近f(n)。根据材料,这应该导致更少的节点被扩展。
为什么(并且你应该)选择尽可能接近f(n)的启发式算法,为什么这会导致(很多)扩展的节点数量减少?
在此先感谢您的回复,您将为我的下一次考试提供帮助!
答案 0 :(得分:1)
示例:
找到在具有obsticles的象棋场上的特定领域的最短路径。 让我们说你只有向上或向下左转的可能性。 启发式算法可以猜测每次迭代时您可以进行的四个可能字段中每个目标需要多少步骤。
现在你的启发式可以是:
总是最优的:如果是这样的话,你将总是去正确的下一个字段并最初找到你最好的路径。
总体上降低或最佳:此处可能会出现错误的字段,但如果您达到了目标(或稍后的视图字段),您的算法会看到您找到的路径(或实际的启发式)大于你之前应该去过的领域的启发式。
换句话说:你的启发式总是给你一个比你必须做的实际步数更低或相等的数字。因此,如果您发现路径短于或等于您未访问的所有文件的启发式,则可以确定您的路径是最佳的。
"有时候更高" 如果您的启发式有时会为您提供比实际需要更多的步骤,您永远无法确定您找到的路径是最佳路径!
所以最糟糕的事情是你的启发式方法的过高估计,因为你可能找不到最佳路径。因此你有条件0 ≤ h(n) ≤ h(n)*
而且你越接近你的最佳启发式,越少"错误的领域"你在搜索中访问。你访问的字段越少,你就越快。