什麼是啟發式算法?
什麼是啟發式算法
大自然是神奇的,它造就了很多巧妙的手段和運行機制。受大自然的啟發,人們從大自然的運行規律中找到了許多解決實際問題的方法。對於那些受大自然的運行規律或者面向具體問題的經驗、規則啟發出來的方法,人們常常稱之為啟發式算法(HeuristicAlgorithm)。現在的啟發式算法也不是全部來自然的規律,也有來自人類積累的工作經驗。駕駛汽車到達某人的家,寫成算法是這樣的:沿167 號高速公路往南行至陽谷;從陽谷高速出口出來後往山上開4.5 英里;在一個雜物店旁邊的紅綠燈路口右轉,接著在第一個路口左轉;從左邊褐色大房子的車道進去,就是某人的家。啟發式方法來描述則可能是這樣:找出上一次我們寄給你的信,照著信上面的寄出地址開車到這個鎮;到了之後你問一下我們的房子在哪裡。這裡每個人都認識我們—頂肯定有人會很願意幫助你的;如果你找不到人,那就找個公共電話亭給我們打電話,我們會出來接你。
什麼是啟發式算法
建議你去了解下a*算法吧
簡而言之就是會有一個評估函數進行評價以輔助選出最優接
經典的啟發式算法包括哪些? 5分
蟻群,模擬退火,禁忌搜索,人工神經網絡等。。。
推薦教材《現代優化計算方法》第二版 邢文訓,謝金星 清華大學出版社
另一本補充,《最優化理論與方法》 黃平 清華大學出版社
第一本教材網上有電子版,你自己搜下
對 啟發式算法的理解
什麼是啟發式算法轉自:p://blog.csdn.net/aris_zzy/archive/2006/05/27/757156.aspx引言:
解決實際的問題,要建模型,在求解。求解要選擇算法,只有我們對各種算法的優缺點都很熟悉後才能根據實際問題選出有效的算法。但是對各種算法都瞭如指掌是不現實的,但多知道一些,會使你的選擇集更大,找出最好算法的概率越大。現在研一,要開題了些點文獻綜述,願與大家分享。大自然是神奇的,它造就了很多巧妙的手段和運行機制。受大自然的啟發,人們從大自然的運行規律中找到了許多解決實際問題的方法。對於那些受大自然的運行規律或者面向具體問題的經驗、規則啟發出來的方法,人們常常稱之為啟發式算法(Heuristic Algorithm)。現在的啟發式算法也不是全部來自然的規律,也有來自人類積功的工作經驗。啟發式算法的發展:
啟發式算法的計算量都比較大,所以啟發式算法伴隨著計算機技術的發展,取得了巨大的成就。
40年代:由於實際需要,提出了啟發式算法(快速有效)。
50年代:逐步繁榮,其中 貪婪算法和局部搜索 等到人們的關注。
60年代: 反思,發現以前提出的啟發式算法速度很快,但是解得質量不能保證,而且對大規
模的問題仍然無能為力(收斂速度慢)。啟發式算法的不足和如何解決方法:
(水平有限 僅僅提出6點)
啟發式算法目前缺乏統一、完整的理論體系。
很難解決! 啟發式算法的提出就是根據經驗提出,沒有什麼堅實的理論基礎。
由於NP理論,啟發式算法就解得全局最優性無法保證。
等NP?=P有結果了再說吧,不知道這個世紀能不能行。
各種啟發式算法都有個自優點如何,完美結合。
如果你沒有實際經驗,你就別去幹這個,相結合就要做大量嘗試,或許會有意外的收穫。
啟發式算法中的參數對算法的效果起著至關重要的作用,如何有效設置參數。
還是那句話,這是經驗活但還要悟性,只有try again………..
啟發算法缺乏有效的迭代停止條件。
還是經驗,迭代次數100不行,就200,還不行就1000…………
還不行估計就是算法有問題,或者你把它用錯地方了………..
啟發式算法收斂速度的研究等。
你會發現,沒有完美的東西,要快你就要付出代價,就是越快你得到的解也就遠差。其中(4)集中反映了超啟發式算法的克服局部最優的能力。 雖然人們研究對啟發式算法的研究將近50年,但它還有很多不足:1.啟發式算法目前缺乏統一、完整的理論體系。2.由於NP理論,各種啟發式算法都不可避免的遭遇到局部最優的問題,如何判斷3.各種啟發式算法都有個自優點如何,完美結合。4.啟發式算法中的參數對算法的效果起著至關重要的作用,如何有效設置參數。5.啟發算法缺乏有效的迭代停止條件。6.啟發式算法收斂速度的研究等。
70年代:計算複雜性理論的提出,NP問題。許多實際問題不可能在合理的時間範圍內找到全局最優解。發現貪婪算法和局部搜索算法速度快,但解不好的原因主要是他們只是在局部的區域內找解,等到的解沒有全局最優性。
由此必須引入新的搜索機制和策略………..
Holland的遺傳算法出現了(Genetic Algorithm)再次引發了人們研究啟發式算法的
興趣。
80年代以後:
模擬退火算法(Simulated Annealing Algorithm),人工神經網絡(Artificial Neural Network),禁忌搜索(Tab......
什麼是啟發式算法(轉)
啟發式方法(試探法)是一種幫你尋求答案的技術,但它給出的答案是具有偶然性的(subjecttochance),因為啟發式方法僅僅告訴你該如何去找,而沒有告訴你要找什麼。它並不告訴你該如何直接從A點到達B點,它甚至可能連A點和B點在哪裡都不知道。實際上,啟發式方法是穿著小丑兒外套的算法:它的結果不太好預測,也更有趣,但不會給你什麼30
天無效退款的保證。
駕駛汽車到達某人的家,寫成算法是這樣的:沿167
號高速公路往南行至Puyallup;從SouthHillMall出口出來後往山上開4.5
英里;在一個雜物店旁邊的紅綠燈路口右轉,接著在第一個路口左轉;從左邊褐色大房子的車道進去,就是NorthCedar路714號。
用啟發式方法來描述則可能是這樣:找出上一次我們寄給你的信,照著信上面的寄出地址開車到這個鎮;到了之後你問一下我們的房子在哪裡。這裡每個人都認識我們——肯定有人會很願意幫助你的;如果你找不到人,那就找個公共電話亭給我們打電話,我們會出來接你。
從上面的啟發式算法的解釋可以看出,啟發式算法的難點是建立符合實際問題的一系列啟發式規則。啟發式算法的優點在於它比盲目型的搜索法要高效,一個經過仔細設計的啟發函數,往往在很快的時間內就可得到一個搜索問題的最優解,對於NP問題,亦可在多項式時間內得到一個較優解。
啟發式算法的最短路徑
所謂的最短路徑問題有很多種意思, 在這裡啟發式指的是一個在一個搜尋樹的節點上定義的函數h(n),用於評估從此節點到目標節點最便宜的路徑。啟發式通常用於資訊充分的搜尋算法,例如最好優先貪婪算法與A*。最好優先貪婪算法會為啟發式函數選擇最低代價的節點;A*則會為g(n) + h(n)選擇最低代價的節點,此g(n)是從起始節點到目前節點的路徑的確實代價。如果h(n)是可接受的(admissible)意即h(n)未曾付出超過達到目標的代價,則A*一定會找出最佳解。最能感受到啟發式算法好處的經典問題是n-puzzle。此問題在計算錯誤的拼圖圖形,與計算任兩塊拼圖的曼哈頓距離的總和以及它距離目的有多遠時,使用了本算法。注意,上述兩條件都必須在可接受的範圍內。
什麼啟發式算法可以短時間求到最優解
馬踏棋盤的問題很早就有人提出,且早在1823年,J.C.Warnsdorff就提出了一個有名的算法。在每個結點對其子結點進行選取時,優先選擇‘出口’最小的進行搜索,‘出口’的意思是在這些子結點中它們的可行子結點的個數
啟發式算法的新算法
如何找到一個分叉率較少又通用的合理啟發式算法,已被人工智能社群深入探究過。 他們使用幾種常見技術:部分問題的解答的代價通常可以評估解決整個問題的代價,通常很合理。例如一個10-puzzle拼盤,解題的代價應該與將1到5的方塊移回正確位置的代價差不多。通常解題者會先建立一個儲存部份問題所需代價的模式數據庫(pattern database)以評估問題。 解決較易的近似問題通常可以拿來合理評估原先問題。例如曼哈頓距離是一個簡單版本的n-puzzle問題,因為我們假設可以獨立移動一個方塊到我們想要的位置,而暫不考慮會移到其他方塊的問題。 給我們一群合理的啟發式函式h1(n),h2(n),...,hi(n),而函式h(n) = max{h1(n),h2(n),...,hi(n)}則是個可預測這些函式的啟發式函式。 一個在1993年由A.E. Prieditis寫出的程式ABSOLVER就運用了這些技術,這程式可以自動為問題產生啟發式算法。ABSOLVER為8-puzzle產生的啟發式算法優於任何先前存在的!而且它也發現了第一個有用的解魔術方塊的啟發式程式。
啟發式算法的概括內容
計算機科學的兩大基礎目標,就是發現可證明其執行效率良好且可得最佳解或次佳解的算法。而啟發式算法則試圖一次提供一或全部目標。 例如它常能發現很不錯的解,但也沒辦法證明它不會得到較壞的解;它通常可在合理時間解出答案,但也沒辦法知道它是否每次都可以這樣的速度求解。有時候人們會發現在某些特殊情況下,啟發式算法會得到很壞的答案或效率極差,然而造成那些特殊情況的數據組合,也許永遠不會在現實世界出現。因此現實世界中啟發式算法常用來解決問題。啟發式算法處理許多實際問題時通常可以在合理時間內得到不錯的答案。有一類的通用啟發式策略稱為元啟發式算法(metaheuristic),通常使用亂數搜尋技巧。他們可以應用在非常廣泛的問題上,但不能保證效率。近年來隨著智能計算領域的發展,出現了一類被稱為超啟發式算法(Hyper-Heuristic Algorithm)的新算法類型。最近幾年,智能計算領域的著名國際會議(GECCO 2009, CEC 2010,PPSN 2010)[1]分別舉辦了專門針對超啟發式算法的workshop或session。從GECCO 2011開始,超啟發式算法的相關研究正式成為該會議的一個領域(self* search-new frontier track)。國際智能計算領域的兩大著名期刊Journal of Heuristics和Evolutionary Computation也在2010年和2012年分別安排了專刊,著重介紹與超啟發式算法有關的研究進展。
什麼是啟發式
這兩天在看關於民航調度的文章,很多文章中都提到“啟發式”算法,感覺和智能算法類似,那到底算法呢?我找到如下的一些我認為比較好的解釋:------------------------------------------------------------------------------------------------------------------------A heuristic (hyu-'ris-tik) is the art and science of discovery and invention. The word comes from the same Greek root as "eureka" meaning "to find". A heuristic for a given problem is a way of directing your attention fruitfully to a solution. It is different from an algorithm in that a heuristic merely serves as a rule-of-thumb or guideline, as opposed to an invariant procedure. Heuristics may not always achieve the desired outcome, but can be extremely valuable to problem-solving processes. Good heuristics can dramatically reduce the time required to solve a problem by eliminating the need to consider unlikely possibilities or irrelevant states. As such, it is particularly useful to those in the process of discovery and the are constantly rethinking their strategies in the face of a stubborn unknown.--------------------------------------------------------------------------------------------------------------------------啟發式方法(試探法)是一種幫你尋求答案的技術,但它給出的答案是具有偶然性的(subject to chance),因為啟發式方法僅僅告訴你該如何去找,而沒有告訴你要找什麼。它並不告訴你該如何直接從A 點到達B 點,它甚至可能連A點和B點在哪裡都不知道。實際上,啟發式方法是穿著小丑兒外套的算法:它的結果不太好預測,也更有趣,但不會給你什麼30 天無效退款的保證。 駕駛汽車到達某人的家,寫成算法是這樣的:沿167 號高速公路往南行至Puyallup;從South Hill Mall 出口出來後往山上開4.5 英里;在一個雜物店旁邊的紅綠燈路口右轉,接著在第一個路口左轉;從左邊褐色大房子的車道進去,就是North Cedar 路714 號。用啟發式方法來描述則可能是這樣:找出上一次我們......