Algorithm 为什么提出启发式?

Algorithm 为什么提出启发式?,algorithm,Algorithm,我对启发式的本质有点困惑 我们知道,启发式算法不需要为所有输入实例提供正确的输出。 但是,为什么要提出启发式呢 启发式算法用于权衡性能(通常是执行速度,但也包括内存消耗)与潜在的准确性或通用性。例如,您的反病毒软件使用试探法来描述病毒可能是什么样子,并可以利用这段信息来确定应该花更多时间分析哪些文件。一个好的启发式算法的特点是,它可以节省大量的时间和最小的成本 在图遍历理论中,a*搜索算法的启发式不一定是完美的。它只需要有一个预测成本函数h(x),该函数小于或等于目标状态的真实成本,以保证最优解

我对启发式的本质有点困惑

我们知道,启发式算法不需要为所有输入实例提供正确的输出。

但是,为什么要提出启发式呢

启发式算法用于权衡性能(通常是执行速度,但也包括内存消耗)与潜在的准确性或通用性。例如,您的反病毒软件使用试探法来描述病毒可能是什么样子,并可以利用这段信息来确定应该花更多时间分析哪些文件。一个好的启发式算法的特点是,它可以节省大量的时间和最小的成本


在图遍历理论中,a*搜索算法的启发式不一定是完美的。它只需要有一个预测成本函数h(x),该函数小于或等于目标状态的真实成本,以保证最优解。h(x)越接近真实成本,找到最优解的速度就越快。

让我举一个例子来帮助您理解启发式的重要性。 在人工智能中,搜索问题主要分为盲搜索和定向搜索。盲搜索是指使用BFS和DFS等算法,它们被称为盲搜索是有原因的,它们不知道你应该走的方向,你只需要不断探索,直到到达目标节点,想象一下这些算法的时间和空间复杂性

现在,如果你看一看定向搜索算法,比如A*,你有一些启发式函数,或者简单地说,假设你下一步应该朝哪个方向走

虽然启发法不能保证获得最佳结果,但它会试图为您提供更好的解决方案,有时甚至是最好的解决方案。有太多的问题(比如你玩的游戏)需要更好的解决方案,而不是浪费太多的时间和空间去寻找最好的解决方案。

我希望这能有所帮助。

你不能总是计算出一个“正确”的结果。以深度游戏的人工智能为例,这个问题似乎离题了。它属于带你的女朋友去一家高级餐厅,这将是完美的,但如果你负担不起,你可以买一瓶酒,做一些晚餐,这样就足够了@Icardor:不适合这样,但也不太不适合你不回答这个问题!非常感谢你。你的回答帮助我消除了疑虑。