为什么要提出启发式方法?

时间:2014-02-25 11:31:22

标签: algorithm

我对启发式的本质有一点混淆。

我们知道启发式方法无需为所有输入实例提供正确的输出 但是,为什么要提出启发式方法?

2 个答案:

答案 0 :(得分:3)

启发式算法用于权衡性能(通常是执行速度,但也包括内存消耗),具有潜在的准确性或通用性。例如,您的防病毒软件使用启发式方法来表征病毒的外观,并可以利用该信息来确定应该花费更多时间分析哪些文件。一个好的启发式产品具有以最低成本节省大量时间的特性。

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

答案 1 :(得分:0)

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

现在,如果您查看定向搜索算法(例如A *),您可以在其中使用某种启发式函数,或者简单地说明您应该采取下一步的方向。

虽然启发式方法不能保证最好的结果,但会尝试为您提供更好的解决方案,有时甚至是最好的解决方案。有很多类问题(例如你玩的游戏),更好的解决方案可以完成任务,而不是浪费这么多时间和空间来寻找最佳解决方案。
我希望它有所帮助。