2014-02-25 47 views
1

我對啓發式的性質有一點困惑。爲什麼提出啓發式方法?

我們知道啓發式不需要爲所有輸入實例提供正確的輸出。
但是,爲什麼啓發式提出了?

+1

你不能總是計算一個「正確的」結果。例如,想想深度遊戲的人工智能。 –

+4

這個問題似乎是離題。它屬於http://programmers.stackexchange.com/ –

+1

把你的女朋友帶到一家高檔餐廳將是完美的,但如果你負擔不起,你可以買一瓶葡萄酒,做一些晚餐,這將是足夠好的。 ;-) – Leo

回答

3

啓發式是用來平衡性能(通常是執行速度,但也是內存消耗)與潛在的準確性或一般性。例如,您的防病毒軟件使用啓發式來描述病毒的外觀,並可利用該信息確定哪些文件應該花費更多時間進行分析。一個好的啓發式方法具有可以以最小的成本節省大量時間的特性。

在圖遍歷理論中,A *搜索算法的啓發式算法不一定是完美的。它只需要有一個小於或等於目標狀態真實成本的預測成本函數h(x),以保證最優解。 h(x)越接近真實成本,就可以找到最快的解決方案。

+0

非常感謝。你的回答幫助我清除了疑問。 –

0

讓我給你一個例子,它可以幫助你理解啓發式的重要性。 在人工智能中,搜索問題主要分爲盲搜索和定向搜索。盲目搜索是您使用BFS和DFS等算法的地方,他們被稱爲盲目搜索的原因,他們對您應該走的方向沒有任何瞭解,您只需探索和探索,直到您到達目標節點,設想這些算法的時間和空間複雜性。

現在,如果您查看定向搜索算法(如A *),其中有某種啓發式函數或簡單的術語,則應假定您應該採取下一步的哪個方向。

儘管啓發式方法並不能保證最好的結果,反而會嘗試給你一個更好的解決方案,有時甚至是最好的。有很多種類的問題(比如你玩的遊戲),有更好的解決方案來完成任務,而不是浪費太多時間和空間尋找最佳解決方案。
我希望它有幫助。

+0

非常感謝。 –

相關問題