fbpx
维基百科

启发式算法

计算机科学中所謂的heuristic,除了有經驗法則的意思外(見啟發式),它還有另外兩個技術上的意義。

啟發式演算法

電腦科學的兩大基礎目標,就是發現可證明執行效率良好且可得最佳解或次佳解的演算法。而啟發式演算法則試圖一次提供一个或全部目標。例如它常能發現很不錯的解,但也沒辦法證明它不會得到較壞的解;它通常可在合理時間解出答案,但也沒辦法知道它是否每次都可以這樣的速度求解。

有時候人們會發現在某些特殊情況下,啟發式演算法會得到很壞的答案或效率極差,然而造成那些特殊情況的資料結構,也許永遠不會在現實世界出現。因此現實世界中啟發式演算法很常用來解決問題。啟發式演算法處理許多實際問題時通常可以在合理時間內得到不錯的答案。

有一類的通用啟發式策略稱為元启发算法metaheuristic),通常使用亂數搜尋技巧。他們可以應用在非常廣泛的問題上,但不能保證效率。

啟發式演算法與最短路徑問題

所謂的最短路径問題有很多種意思,在這裡啟發式指的是在一個搜尋樹的節點上定義的函数 ,用於評估從此節點到目標節點成本最小的路徑。啟發式通常用於資訊充份的搜尋演算法,例如最好优先貪婪演算法A*。最好优先貪婪演算法會為啟發式函數選擇最低代價的節點;A*則會為 選擇最低代價的節點,此 是從起始節點到目前節點的路徑的確實代價。如果 可接受的(admissible)意即 未曾付出超過達到目標的代價,則A*一定會找出最佳解

最能感受到啟發式演算法好處的經典問題是n-puzzle。此問題在計算錯誤的拼圖圖形,與計算任兩塊拼圖的曼哈頓距離的總和以及它距離目的有多遠時,使用了本演算法。注意,上述兩條件都必須在可接受的範圍內。

啟發式演算法對運算效能的影響

任何的搜尋問題中,每個節點都有 個選擇以及到達目標的深度 ,一個毫無技巧的演算法通常都要搜尋 個節點才能找到答案。啟發式演算法藉由使用某種切割機制降低了分支因子branching factor)以改進搜尋效率,由 降到較低的 。分叉率可以用來定義啟發式演算法的偏序关系,例如:若在一個 節點的搜尋樹上, 的分叉率較 低,則 。啟發式為每個要解決特定問題的搜尋樹的每個節點提供了較低的分叉率,因此它們擁有較佳效率的計算能力。

找尋新的啟發式演算法

如何找到一個分叉率較少又通用的合理啟發式演算法,已被人工智慧社群深入探究過。他們使用幾種常見技術:

  • 部分問題的解答的代價通常可以評估解決整個問題的代價,通常很合理。例如一個10-puzzle拼盤,解題的代價應該與將1到5的方塊移回正確位置的代價差不多。通常解題者會先建立一個儲存部份問題所需代價的模式資料庫(pattern database)以評估問題。
  • 解決較易的近似問題通常可以拿來合理評估原先問題。例如曼哈頓距離是一個簡單版本的n-puzzle問題,因為我們假設可以獨立移動一個方塊到我們想要的位置,而暫不考慮會移到其他方塊的問題。
  • 給我們一群合理的啟發式函式 ,而函式 則是個可預測這些函式的啟發式函式。

一個在1993年由A.E. Prieditis寫出的程式ABSOLVER就運用了這些技術,這程式可以自動為問題產生啟發式演算法。ABSOLVER為8-puzzle產生的啟發式演算法優於任何先前存在的!而且它也發現了第一個有用的解魔術方塊的啟發式程式。

參閱

启发式算法, 此條目的语调或风格可能不適合百科全書的寫作方式, 2019年8月24日, 請根據指南協助改善这篇条目, 請在讨论页討論問題所在及加以改善, 此條目没有列出任何参考或来源, 2013年9月30日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而移除, 计算机科学中所謂的heuristic, 除了有經驗法則的意思外, 見啟發式, 它還有另外兩個技術上的意義, 目录, 啟發式演算法, 啟發式演算法與最短路徑問題, 啟發式演算法對運算效能的影響, 找. 此條目的语调或风格可能不適合百科全書的寫作方式 2019年8月24日 請根據指南協助改善这篇条目 請在讨论页討論問題所在及加以改善 此條目没有列出任何参考或来源 2013年9月30日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而移除 计算机科学中所謂的heuristic 除了有經驗法則的意思外 見啟發式 它還有另外兩個技術上的意義 目录 1 啟發式演算法 2 啟發式演算法與最短路徑問題 2 1 啟發式演算法對運算效能的影響 2 2 找尋新的啟發式演算法 3 參閱啟發式演算法 编辑電腦科學的兩大基礎目標 就是發現可證明其執行效率良好且可得最佳解或次佳解的演算法 而啟發式演算法則試圖一次提供一个或全部目標 例如它常能發現很不錯的解 但也沒辦法證明它不會得到較壞的解 它通常可在合理時間解出答案 但也沒辦法知道它是否每次都可以這樣的速度求解 有時候人們會發現在某些特殊情況下 啟發式演算法會得到很壞的答案或效率極差 然而造成那些特殊情況的資料結構 也許永遠不會在現實世界出現 因此現實世界中啟發式演算法很常用來解決問題 啟發式演算法處理許多實際問題時通常可以在合理時間內得到不錯的答案 有一類的通用啟發式策略稱為元启发算法 metaheuristic 通常使用亂數搜尋技巧 他們可以應用在非常廣泛的問題上 但不能保證效率 啟發式演算法與最短路徑問題 编辑所謂的最短路径問題有很多種意思 在這裡啟發式指的是在一個搜尋樹的節點上定義的函数h n displaystyle h n 用於評估從此節點到目標節點成本最小的路徑 啟發式通常用於資訊充份的搜尋演算法 例如最好优先貪婪演算法與A 最好优先貪婪演算法會為啟發式函數選擇最低代價的節點 A 則會為g n h n displaystyle g n h n 選擇最低代價的節點 此g n displaystyle g n 是從起始節點到目前節點的路徑的確實代價 如果h n displaystyle h n 是可接受的 admissible 意即h n displaystyle h n 未曾付出超過達到目標的代價 則A 一定會找出最佳解 最能感受到啟發式演算法好處的經典問題是n puzzle 此問題在計算錯誤的拼圖圖形 與計算任兩塊拼圖的曼哈頓距離的總和以及它距離目的有多遠時 使用了本演算法 注意 上述兩條件都必須在可接受的範圍內 啟發式演算法對運算效能的影響 编辑 任何的搜尋問題中 每個節點都有b displaystyle b 個選擇以及到達目標的深度d displaystyle d 一個毫無技巧的演算法通常都要搜尋b d displaystyle b d 個節點才能找到答案 啟發式演算法藉由使用某種切割機制降低了分支因子 branching factor 以改進搜尋效率 由b d displaystyle b d 降到較低的b displaystyle b 分叉率可以用來定義啟發式演算法的偏序关系 例如 若在一個n displaystyle n 節點的搜尋樹上 h 1 n displaystyle h 1 n 的分叉率較h 2 n displaystyle h 2 n 低 則h 1 n lt h 2 n displaystyle h 1 n lt h 2 n 啟發式為每個要解決特定問題的搜尋樹的每個節點提供了較低的分叉率 因此它們擁有較佳效率的計算能力 找尋新的啟發式演算法 编辑 如何找到一個分叉率較少又通用的合理啟發式演算法 已被人工智慧社群深入探究過 他們使用幾種常見技術 部分問題的解答的代價通常可以評估解決整個問題的代價 通常很合理 例如一個10 puzzle拼盤 解題的代價應該與將1到5的方塊移回正確位置的代價差不多 通常解題者會先建立一個儲存部份問題所需代價的模式資料庫 pattern database 以評估問題 解決較易的近似問題通常可以拿來合理評估原先問題 例如曼哈頓距離是一個簡單版本的n puzzle問題 因為我們假設可以獨立移動一個方塊到我們想要的位置 而暫不考慮會移到其他方塊的問題 給我們一群合理的啟發式函式h 1 n h 2 n h i n displaystyle h 1 n h 2 n h i n 而函式h n max h 1 n h 2 n h i n displaystyle h n max h 1 n h 2 n h i n 則是個可預測這些函式的啟發式函式 一個在1993年由A E Prieditis寫出的程式ABSOLVER就運用了這些技術 這程式可以自動為問題產生啟發式演算法 ABSOLVER為8 puzzle產生的啟發式演算法優於任何先前存在的 而且它也發現了第一個有用的解魔術方塊的啟發式程式 參閱 编辑人工智慧 專家系統 元啟發算法 Heuristic evaluation 英语 Heuristic evaluation 推理機 Inquiry 英语 Inquiry 解决问题 爬山算法 模拟退火算法 遗传算法 Tabu算法 最好优先 通用图 A 搜寻算法 取自 https zh wikipedia org w index php title 启发式算法 amp oldid 74992140, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。