有人有一個簡單和/或直觀的解釋,爲什麼你必須在A *中使用可接受的啓發式,以及爲什麼「應該」使用一致的啓發式?在A中使用可接受的和一致的啓發式A *
3
A
回答
5
容許:
確保我們有多少認爲成本會去的目標不超過它實際上成本。
如果實際成本高於實際成本,我們實際上最終可能會走上更加昂貴的道路,因爲實際成本可能比我們認爲這條路徑花費多少便宜。
一致:
如果我們朝目標移動,我們不應該突然想它會需要更長的時間比我們剛剛做的目標。 [1]
如果我們接近目標,我們突然想到從這裏到達目標需要更長的時間,我們最終可能會在最終到達目標之前探索一大堆其他路徑目標,因爲我們可以認爲這些可能會更便宜。
[1]:我只是在談論我們認爲會花多長時間,而不是花了多長時間 - 因此,我們可能認爲這需要10分鐘,但在旅行5分鐘後,我們現在認爲我們還有7分鐘的時間 - 這很好,但如果我們認爲我們有超過10分鐘的時間,那並不好。
0
這只是爲了讓你說,找到的結果是「最優」的,你可以使用任何你想要的啓發式方法,只是難以證明找到的結果是最優的。
例如,當您高估到目標節點的距離時,實際距離可能小於估計的距離。因此,找到的結果可能被標記爲「最優」,而仍然存在更好的解決方案。
相關問題
- 1. A *算法的啓發式
- 2. 爲什麼A *算法的啓發式算法是不可接受的?
- 3. Boost Graph Library A *提供一致啓發式
- 4. 用於具有鄰接矩陣的A *的啓發式
- 5. A *算法和使用F和G啓發式
- 6. A-star:多目標的啓發式
- 7. A *圖搜索良好的啓發式
- 8. 更好的啓發式然後A *
- 9. a ++和++ a或a--和--a在java中有什麼區別?
- 10. A *啓發式創建Bresenham行
- 11. A *啓發式,高估/低估?
- 12. 可以在另一個`<a>`內使用'<a>`嗎?
- 13. 如何在A *(運行時啓發式)中模塊化啓發式
- 14. AI:在曼哈頓啓發式圖搜索和A *實現
- 15. a + = b和a = + b之間的區別是什麼,a ++和++ a?
- 16. Python - 「a」和「a」的區別?
- 17. 列表中的鏈接 - 獲得一致的a:懸停效果
- 18. A a有什麼區別?和A a();?
- 19. 內部聯接A和B上的選擇(A,B)vs mysql中選擇(A,B)中的(A,B)
- 20. GhostScript PDF/A一致性
- 21. '(int)a','a as int'和C#中的Convert.ToInt32(a)之間的區別
- 22. 我正在做一個二次型計算器,接受a,b和c,其中a不等於0
- 23. Scipy稀疏矩陣求冪:a ** 16比a * a * a * a * a * a * a * a * a * a * a * a * a * a * a * a * a *
- 24. 加權圖中A *算法的啓發式算法
- 25. 要接受$,0-9,a-z,+, - ,/,*的正則表達式嗎?
- 26. A * pA = new A之間的區別;和A * pA = new A();
- 27. 爲什麼表達式a()和(****&a)()調用相同的函數?
- 28. 正則表達式中的「a {1}」和「a」有什麼區別?
- 29. a +和fopen模式()
- 30. Oracle Apex:從表A中調用表A中的觸發器