導航:首頁 > 源碼編譯 > 啟發式探索演算法包括

啟發式探索演算法包括

發布時間:2023-03-11 12:37:59

① 啟發式演算法

什麼是演算法?從枚舉到貪心再到啟發式(上)
目標 :要優化的東西
決策 :根據目標做出的決策
約束 :進行決策時必須遵循的條件
算例 :問題參數的具體化

枚舉法 :將問題所有的解一一枚舉出來,挨個去評價,選出最好的那個
1.枚舉法能夠找到問題的最優解
2.枚舉法求解時間隨問題規模增長而呈爆炸式增長

貪心法 :利用「構造」的方式生成解,速度相對而言會非常快,同時不會隨著問題規模的增長而大幅度增加,是平緩的線性增長
什麼是演算法?從枚舉到貪心再到啟發式(下)
啟發式演算法 :在一個合理的求解資源范圍內(合理的時間,合理的內存開銷等)求得一個較為滿意的解。目前主要包括鄰域搜索和群體仿生兩大類。
解空間 :所有該問題的解的集合,包括可行解和不可行解
局部搜索 :不完全遍歷解空間,只選擇一部分進行遍歷,進而大大降低搜索需要的資源。為了提高局部搜索的質量,大部分局部搜索演算法都會在搜索的時候不斷地抓取多個區域進行搜索,直到滿足演算法終止條件。
鄰域 :在鄰域結構定義下的解的集合,它是一個相對的概念,即鄰域肯定是基於某個解產生的
鄰居解 :鄰域內某個解的稱呼
鄰域結構 :定義了一個解的鄰域
鄰域結構的設計在啟發式演算法中非常重要,它直接決定了搜索的范圍,對最終的搜索結構有著重要的影響,直接決定了最終結果質量的好壞
搜索過程

不斷重復步驟2-步驟5,直到滿足終止條件,最後輸出全局最優解

所有的啟發式找到的都是滿意解,不能說是最優解(即便真的是),因為它遍歷的是解空間的局部。
一般情況下,啟發式演算法的時間是隨著問題規模增長而呈線性增長的
干貨 | 想學習優化演算法,不知從何學起?
鄰域搜索類
迭代局部搜索演算法
模擬退火演算法
變鄰域搜索演算法
禁忌搜索
自適應大鄰域搜索
群體仿生類
遺傳演算法
蟻群演算法
粒子群演算法
人工魚群演算法
演算法應用
禁忌搜索演算法求解帶時間窗的車輛路徑問題
基於樹表示法的變鄰域搜索演算法求解考慮後進先出的取派貨旅行商問題
變鄰域搜索演算法求解Max-Mean dispersion problem
遺傳演算法求解混合流水車間調度問題

② 元啟發式演算法和啟發式演算法有什麼區別

啟發式演算法與元啟發式演算法對區別在於是否存在「隨機因素」。 對一個同樣的問題,啟發式演算法(heuristics)只要給定了一個輸入,那麼演算法執行的步驟就固定下來了,輸出也因此固定,多次運算結果保持一致。

而元啟發式演算法(meta-heuristics)裡麵包括了隨機因素,如GA中的交叉因子,模擬退火中的metropolis准則,這些隨機因素也使得演算法有一定概率跳出局部最優解而去嘗試全局最優解,因此元啟發式演算法在固定的輸入下,而輸出是不固定的。

啟發式演算法(Heuristic Algorigthm)是一種基於直觀或經驗構造的演算法,在可接受的花費(指計算時間、計算空間等)給出待解決優化問題的每一實例的一個可行解,該可行解與與最優解的偏離程度一般不可以事先預計。

啟發式演算法是一種技術,這種演算法可以在可接受的計算費用內找到最好的解,但不一定能保證所得到解的可行性及最優性,甚至大多數情況下無法闡述所得解與最優解之間的近似程度。

元啟發式演算法(MetaHeuristic Algorigthm)是啟發式演算法的改進,它是隨機演算法與局部搜索演算法相結合的產物,常見的啟發式演算法包括遺傳演算法、模擬退火演算法、禁忌搜索演算法及神經網路演算法等。

新興的元啟發式演算法有、粒子群優化演算法、差分進化演算法,蟻群優化演算法、螢火蟲演算法、布穀鳥演算法、和聲搜索演算法、差分進化演算法、隨機蛙跳演算法、細菌覓食演算法、蝙蝠演算法的演算法等。

③ 有關啟發式演算法(Heuristic Algorithm)的一些總結

節選自維基網路:

啟發法 ( heuristics ,源自古希臘語的εὑρίσκω,又譯作:策略法、助發現法、啟發力、捷思法)是指 依據有限的知識 (或「不完整的信息」)在短時間內找到問題解決方案的一種技術。

它是一種依據 關於系統的有限認知 和 假說 從而得到關於此系統的結論的分析行為。由此得到的解決方案有可能會偏離最佳方案。通過與最佳方案的對比,可以確保啟發法的質量。

計算機科學的兩大基礎目標,就是 發現可證明其運行效率良好 且可 得最佳解或次佳解 的演算法。

而啟發式演算法則 試圖一次提供一個或全部目標 。例如它常能發現很不錯的解, 但也沒辦法證明它不會得到較壞的解 ; 它通常可在合理時間解出答案,但也沒辦法知道它是否每次都可以這樣的速度求解。

有時候人們會發現在某些特殊情況下,啟發式演算法會得到很壞的答案或效率極差, 然而造成那些特殊情況的數據結構,也許永遠不會在現實世界出現

因此現實世界中啟發式演算法很常用來解決問題。啟發式演算法處理許多實際問題時通常可以在合理時間內得到不錯的答案。

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

節選自網路:

啟發式演算法可以這樣定義:一個 基於直觀或經驗構造 的演算法, 在 可接受的花費(指計算時間和空間)下給出待解決組合優化問題每一個實例的一個可行解 , 該可行解與最優解的偏離程度一般不能被預計。 現階段,啟發式演算法以仿自然體演算法為主,主要有蟻群演算法、模擬退火法、神經網路等。

目前比較通用的啟發式演算法一般有模擬退火演算法(SA)、遺傳演算法(GA)、蟻群演算法(ACO)。

模擬退火演算法(Simulated Annealing, SA)的思想借鑒於固體的退火原理,當固體的溫度很高的時候,內能比較大,固體的內部粒子處於快速無序運動,當溫度慢慢降低的過程中,固體的內能減小,粒子的慢慢趨於有序,最終,當固體處於常溫時,內能達到最小,此時,粒子最為穩定。模擬退火演算法便是基於這樣的原理設計而成。

求解給定函數的最小值:其中,0<=x<=100,給定任意y的值,求解x為多少的時候,F(x)最小?

遺傳演算法(Genetic Algorithm, GA)起源於對生物系統所進行的計算機模擬研究。它是模仿自然界生物進化機制發展起來的隨機全局搜索和優化方法,借鑒了達爾文的進化論和孟德爾的遺傳學說。其本質是一種 高效、並行、全局搜索 的方法,能在搜索過程中自動獲取和積累有關搜索空間的知識,並 自適應 地控制搜索過程以求得最佳解。

給定一組五個基因,每一個基因可以保存一個二進制值 0 或 1。這里的適應度是基因組中 1 的數量。如果基因組內共有五個 1,則該個體適應度達到最大值。如果基因組內沒有 1,那麼個體的適應度達到最小值。該遺傳演算法希望 最大化適應度 ,並提供適應度達到最大的個體所組成的群體。

想像有一隻螞蟻找到了食物,那麼它就需要將這個食物待會螞蟻穴。對於這只螞蟻來說,它並不知道應該怎麼回到螞蟻穴。

這只螞蟻有可能會隨機選擇一條路線,這條路可能路程比較遠,但是這只螞蟻在這條路上留下了記號(一種化學物質,信息素)。如果這只螞蟻繼續不停地搬運食物的時候,有其它許多螞蟻一起搬運的話,它們總會有運氣好的時候走到更快返回螞蟻穴的路線。當螞蟻選擇的路線越優,相同時間內螞蟻往返的次數就會越多,這樣就在這條路上留下了更多的信息素。

這時候,螞蟻們就會選擇一些路徑上信息素越濃的,這些路徑就是較優的路徑。當螞蟻們不斷重復這個過程,螞蟻們就會更多地向更濃的信息素的路徑上偏移,這樣最終會確定一條路徑,這條路徑就是最優路徑。

④ 啟發式演算法的概括內容

計算機科學的兩大基礎目標,就是發現可證明其執行效率良好且可得最佳解或次佳解的演算法。而啟發式演算法則試圖一次提供一或全部目標。 例如它常能發現很不錯的解,但也沒辦法證明它不會得到較壞的解;它通常可在合理時間解出答案,但也沒辦法知道它是否每次都可以這樣的速度求解。
有時候人們會發現在某些特殊情況下,啟發式演算法會得到很壞的答案或效率極差,然而造成那些特殊情況的數據組合,也許永遠不會在現實世界出現。因此現實世界中啟發式演算法常用來解決問題。啟發式演算法處理許多實際問題時通常可以在合理時間內得到不錯的答案。
有一類的通用啟發式策略稱為元啟發式演算法(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*演算法等。

一、回溯法和分枝限界法

問題的表示

狀態空間表示法是表示問題及其搜索過程的一種形式表示方法。可以用解空間樹來表示問題的結構。 對於一棵樹,樹中的每一個結點確定所求問題的一個問題狀態,由根結點到其它結點的所有路徑確定了這個問題的狀態空間。解狀態是一些問題狀態S,對於這些問題狀態,由根到S的那條路徑確定了這解空間的一個元組。答案狀態則是由解狀態到根的路徑。

對於一種狀態空間樹,可以先系統地生成問題的狀態,接著確定問題狀態的解狀態,最後確定那些解狀態是答案狀態從而將這些問題解出。

從根結點開始解問題,如果已經生成一個結點而它的所有兒子結點還沒有全部生成,則這個結點叫做活結點。當前正在生成其兒子的活結點叫E結點,不再進一步擴展或者其兒子結點已經全部生成的生成結點就是死結點。

回溯演算法使用深度優先方法搜索樹結構,而分枝定界一般用寬度優先方法來搜索這些樹。

回溯方法的步驟如下:

1) 定義一個解空間,它包含問題的解。

2) 用適於搜索的方式組織該空間。

3) 用深度優先法搜索該空間,利用限界函數避免移動到不可能產生解的子空間。

回溯演算法的特性是在搜索執行的同時產生解空間。在搜索期間的任何時刻,僅保留從開始節點到當前E -節點的路徑。因此,回溯演算法的空間需求為O(從開始節點起最長路徑的長度)。

分枝限界法的步驟和回溯的唯一區別是採用了寬度優先的方法來搜索樹,因此分枝法消耗的空間比回溯法要多。

這二種搜索策略從本質上來講都是屬於窮盡法的搜索,由於在搜索路徑上的不同也造成這二種方法各自都有其優缺點、適用的求解問題也就不同。

寬度優先佔有優勢的問題:

九宮重排問題

九宮重排問題是一個可以回溯法和分枝法都能解決的問題。但是,對於這個問題運用分枝法是有利的。

九宮重排問題,在3*3的方格棋盤上放置標由數字1、2、3、4、5、6、7、8共8個棋子,初始狀態為S 0 ,目標狀態為Sg ,當找到一個解時結束搜索。

從根結點到葉子結點的路徑即為解,演算法為空格左移,空格上移,空格右移,空格下移。

S0

Sg

2
8
3

1
2
3

1

4

8

4

7
6
5

7
6
5

用寬度優先搜索,如下圖:

f'(x) = g(x) + h(x)

2 8 3

14

7 6 5

2 8 3

1 4

7 6 5

23

1 8 4

7 6 5

3 8 2

1 6 4

75

3 8 2

1 4

7 6 5

8 3

2 1 4

7 6 5

3 8 2

14

7 6 5

82

2 1 4

7 6 5

2 3 4

1 8

7 6 5

1 2 3

8 4

7 6 5

2 3

1 8 4

7 6 5

2 3

1 8 4

7 6 5

2 8 3

1 6 4

7 5

2 8 3

1 6 4

7 5

3 8 2

14

7 6 5

2 8 3

1 6

7 5 4

2 8 3

6 4

1 7 5

2 8 3

1 4 5

76

28

1 4 3

7 6 5

2 8 3

1 4 5

7 6

28

1 4 3

7 6 5

2 8 3

7 1 4

6 5

2 8 3

74

6 1 5

8 1 3

24

7 6 5

8 3 2

2 1 4

7 6 5

1 2 3

84

7 6 5

16

26

9

8

7

6

2

1

S0

4

3

5

Sg

圖示解的路徑是 S0-3-8-16-26(Sg)

寬度優先搜索的盲目性較大,當目標結點距離初始結點較遠時將會產生許多無用結點,空間浪費較大,搜索效率低,但是只要問題有解,用寬度優先搜索總可以得到解,而且得到的路徑最短的解。

用深度優先策略搜索,如下圖:

2 8 3

14

7 6 5

2 8 3

1 4

7 6 5

23

1 8 4

7 6 5

3 8 2

1 6 4

7 5

3 8 2

1 4

7 6 5

2 8 3

1 6 4

7 5

2 8 3

1 6 4

7 5

2 8 3

1 6

7 5 4

1

S0

2

2 8

1 6 3

7 5 4

2 8 1 6 3

7 5 4

2 8

1 6 3

7 5 4

3

4

5

6

在深度優先搜索中,搜索一旦進入某個分枝,就將沿著該分枝一直向下搜索,如果該節點恰好在此分支上,則可較快地得到解。但是,如果目標節電不在此分支上,而該分支又是一個無窮分支,則就不可能得到解。

顯然該問題用寬度優先搜索的策略是較好的。

經典的N皇後問題

N皇後問題要求求出N個皇後在棋盤上的所有擺法,(該問題很多書籍上都有詳細介紹,這兒圖表省略),該問題是適合用回溯法來描述和解決的問題,通過深度優先搜索至多需要檢索N!個元組,而如果用分枝法,因為要生成所有問題的解,則必須儲存檢索過程中的E結點,造成儲存空間的極度膨脹,這類問題明顯是用回溯法佔優勢的。

回溯法和分枝法是基本的搜索策略,大多數情況下如果找不到更好的解決方案,總是可以用這二種方法嘗試。

但是它們有一個很大的缺陷就是都是在一個給定的狀態空間中窮舉。這在狀態空間不大的情況下是很合適的演算法,可是當狀態空間十分大,且不預測的情況下就不可取了。它的效率實在太低,甚至不可完成。



二、啟發式搜索演算法
通常在搜索中能直接運用回溯、分枝法的問題並不多,回溯和分枝的過程中,施加一定的條件,對搜索過程中出現的結點進行判斷,可以提高效率。

啟發式搜索就是在狀態空間中的搜索對每一個搜索的位置進行評估,得到最好的位置,再從這個位置進行搜索直到目標。這樣可以省略大量無畏的搜索路徑,提到了效率。在啟發式搜索中,對位置的估價是關鍵。採用了不同的估價可以有不同的效果。

啟發式搜索有很多的演算法,如:局部擇優搜索法、最好優先搜索法等等。A*也是。這些演算法都使用了啟發函數,但在具體的選取最佳搜索節點時的策略不同。

局部擇優搜索法,就是在搜索的過程中選取「最佳節點」後舍棄其他的兄弟節點,父親節點,而一直得搜索下去。這種搜索的結果很明顯,由於舍棄了其他的節點,可能也把最好的節點都舍棄了,因為求解的最佳節點只是在該階段的最佳並不一定是全局的最佳。

局部擇優搜索法它是對深度優先搜索方法的一種改進。

全局擇優搜索是 局部擇優搜索的一種改進,試圖克服局部擇優搜索的的局限性。再搜索時,每次總是從全體的活結點中選取一個估價值最小的節點,

在搜索過程中,啟發式搜索的關鍵是要確定下一個要考察的節點,用於估價節點重要性的函數稱為估價函數

f'(x) = g(x) + h(x)

其中g(x)為從初始節點So到節點X已經實際付出的代價;h(x)是從節點X到節點Sg的最優路徑的估計代價。h(x)稱為啟發函數。

九宮重排

當用全局擇優搜索求解該問題時,可以設估價函數為 f'(x) = d(x) + h(x)

d(x)表示節點x的深度,h(x)表示節點x的棋局與目標節點棋局位置不相同的棋子數。

2 8 3

14

7 6 5

2 8 3

1 4

7 6 5

23

1 8 4

7 6 5

3 8 2

1 6 4

75

3 8 2

1 4

7 6 5

8 3

2 1 4

7 6 5

3 8 2

14

7 6 5

1 2 3

8 4

7 6 5

2 3

1 8 4

7 6 5

2 3

1 8 4

7 6 5

1 2 3

84

7 6 5

4

6

4

6

6

4

1

S0

4

4

5

Sg

1 2 3

7 8 4

6 5

5

5

S3

S2

S1

圖中節點旁標明的數字是該節點的估價函數值。

該問題的解路徑為: So-S1-S2-S3-Sg

以上論述一些樹型問題基本的搜索的策略,當問題的狀態空間是有向圖時,節點的重復將導致大量冗餘的搜索,甚至時搜索過程陷入無效的循環而無法找到解,這時就需要對估價函數進行限制,A*演算法就是針對圖的有序搜索的演算法。



問題的求解可以有很多方法,而如何建立數學模型,選擇問題的求解方式是十分重要的,方法的好壞是面向一個具體的問題的,需要具體問題具體分析

⑥ 啟發式搜索演算法的演算法舉例

啟發演算法有: 蟻群演算法,遺傳演算法、模擬退火演算法等 蟻群演算法是一種來自大自然的隨機搜索尋優方法,是生物界的群體啟發式行為,現己陸續應用到組合優化、人工智慧、通訊等多個領域。蟻群演算法的正反饋性和協同性使其可用於分布式系統,隱含的並行性更使之具有極強的發展潛力。從數值模擬結果來看,它比目前風行一時的遺傳演算法、模擬退火演算法等有更好的適應性。

⑦ 什麼是啟發式演算法

什麼是啟發式演算法
大自然是神奇的,它造就了很多巧妙的手段和運行機制。受大自然的啟發,人們從大自然的運行規律中找到了許多解決實際問題的方法。對於那些受大自然的運行規律或者面向具體問題的經驗、規則啟發出來的方法,人們常常稱之為啟發式演算法(HeuristicAlgorithm)。現在的啟發式演算法也不是全部來自然的規律,也有來自人類積累的工作經驗。駕駛汽車到達某人的家,寫成演算法是這樣的:沿167 號高速公路往南行至陽谷;從陽谷高速出口出來後往山上開4.5 英里;在一個雜物店旁邊的紅綠燈路口右轉,接著在第一個路口左轉;從左邊褐色大房子的車道進去,就是某人的家。啟發式方法來描述則可能是這樣:找出上一次我們寄給你的信,照著信上面的寄出地址開車到這個鎮;到了之後你問一下我們的房子在哪裡。這里每個人都認識我們—頂肯定有人會很願意幫助你的;如果你找不到人,那就找個公共電話亭給我們打電話,我們會出來接你。
什麼是啟發式演算法
建議你去了解下a*演算法吧

簡而言之就是會有一個評估函數進行評價以輔助選出最優接
經典的啟發式演算法包括哪些? 5分
蟻群,模擬退火,禁忌搜索,人工神經網路等。。。

推薦教材《現代優化計算方法》第二版 邢文訓,謝金星 清華大學出版社

另一本補充,《最優化理論與方法》 黃平 清華大學出版社

第一本教材網上有電子版,你自己搜下
對 啟發式演算法的理解
什麼是啟發式演算法轉自:p:blog.csdn/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 putation也在2010年和2012年分別安排了專刊,著重介紹與超啟發式演算法有關的研究進展。
什麼是啟發式
這兩天在看關於民航調度的文章,很多文章中都提到「啟發式」演算法,感覺和智能演算法類似,那到底演算法呢?我找到如下的一些我認為比較好的解釋:------------------------------------------------------------------------------------------------------------------------A heuristic (hyu-'ris-tik) is the art and science of discovery and invention. The word es 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 procere. Heuristics may not always achieve the desired oute, but can be extremely valuable to problem-solving processes. Good heuristics can dramatically rece 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 號。用啟發式方法來描述則可能是這樣:找出上一次我們......

⑧ 什麼是啟發式或探索法

什麼是啟發式或探索法(heuristic)

名詞解釋
Heuristics,我喜歡的翻譯是「探索法」 ,而不是「啟發式」,因為前者更親民一些,容易被理解。另外,導致理解困難的一個原因是該詞經常出現在一些本來就讓人迷糊的專業領域語境中,例如,經常看到某某殺毒軟體用啟發式方法查毒,普通民眾本來就對殺毒軟體很敬畏,看到「啟發式」就更摸不著北了。
實際上,這個詞的解釋十分簡單,例如,查詞典,可以看到:
The use of experience and practical efforts to find answers to questions or to improve performance
heuristic,將其定義為基於經驗的技巧(technique),用於解決問題、學習和探索。並對該詞進行了更詳盡的解釋並羅列了多個相關領域:
A heuristic method is used to rapidly come to a solution that is hoped to be close to the best possible answer, or 'optimal solution'. A heuristic is a "rule of thumb", an ecated guess, an intuitive judgment or simply common sense.
A heuristic is a general way of solving a problem. Heuristics as a noun is another name for heuristic methods.
Heuristic可以等同於:實際經驗估計(rule of thumb)、有依據的猜測(ecated guess, a guess beased on a certain amount of information, and therefore likely to be right)和常識(由經驗得來的判斷力)。

一個容易理解的解釋
人在解決問題時所採取的一種根據經驗規則進行發現的方法。其特點是在解決問題時,利用過去的經驗,選擇已經行之有效的方法,而不是系統地、以確定的步驟去尋求答案。啟發式解決問題的方法是與演算法相對立的。演算法是把各種可能性都一一進行嘗試,最終能找到問題的答案,但它是在很大的問題空間內,花費大量的時間和精力才能求得答案。啟發式方法則是在有限的搜索空間內,大大減少嘗試的數量,能迅速地達到問題的解決。但由於這種方法具有嘗試錯誤的特點,所以也有失敗的可能性。科學家的許多重大發現,常常是利用極為簡單的啟發式規則。

計算機科學和認知科學領域
上節內容很抽象,不知道這個heuristics能幹什麼,在網路上搜索關於heuristics的相關知識起源於某位朋友說我的一個系統設計是一種啟發式的。我真不知道他到底有何所指,暫時也沒有機會做深入溝通。在網路上搜索,看到一篇好文章,有關物理符號系統和啟發式搜索,可以看出該文作者是有自己的理解的,不是像我這樣在網路上surfing。
因為暫時沒有時間仔細閱讀和理解,看看這篇文章《什麼是啟發式(heuristic)?》也許能夠增加一點直觀印象,尤其它舉的例子(用以比較啟發式方法和演算法)
駕駛汽車到達某人的家,寫成演算法是這樣的:沿167 號高速公路往南行至Puyallup;從South Hill Mall 出口出來後往山上開 4.5 英里; 在一個雜物店旁邊的紅綠燈路口右轉,接著在第一個路口左轉;從左邊褐色大房子的車道進去,就是North Cedar 路714 號。

用啟發式方法來描述則可能是這樣:找出上一次我們寄給你的信,照著信上面的寄出地址開車到這個鎮;到了之後你問一下我們的房子在哪裡。 這里每個人都認識我們——肯定有人會很願意幫助你的;如果你找不到人,那就找個公共電話亭給我們打電話,我們會出來接你。

⑨ 啟發式搜索是什麼

啟發式搜索就是在狀態空間中的搜索對每一個搜索的位置進行評估,得到最好的位置,再從這個位置進行搜索直到目標。這樣可以省略大量無畏的搜索路徑,提到了效率。在啟發式搜索中,對位置的估價是十分重要的。採用了不同的估價可以有不同的效果。我們先看看估價是如何表示的。
啟發中的估價是用估價函數表示的,如:
f(n) = g(n) + h(n)
其中f(n) 是節點n的估價函數,g(n)實在狀態空間中從初始節點到n節點的實際代價,h(n)是從n到目標節點最佳路徑的估計代價。在這里主要是h(n)體現了搜索的啟發信息,因為g(n)是已知的。如果說詳細點,g(n)代表了搜索的廣度的優先趨勢。但是當h(n) >> g(n)時,可以省略g(n),而提高效率。
啟發演算法有: 蟻群演算法,遺傳演算法、模擬退火演算法等
蟻群演算法是一種來自大自然的隨機搜索尋優方法,是生物界的群體啟發式行為,現己陸續應用到組合優化、人工智慧、通訊等多個領域。蟻群演算法的正反饋性和協同性使其可用於分布式系統,隱含的並行性更使之具有極強的發展潛力。從數值模擬結果來看,它比目前風行一時的遺傳演算法、模擬退火演算法等有更好的適應性。

閱讀全文

與啟發式探索演算法包括相關的資料

熱點內容
如何打開資料庫伺服器 瀏覽:302
kppm是什麼app 瀏覽:536
python多個數組命名 瀏覽:189
a演算法csdn 瀏覽:21
r720伺服器什麼年代 瀏覽:973
本地電腦怎麼設置傳奇伺服器 瀏覽:1000
安卓10框架怎麼製作 瀏覽:957
程序員退休工資待遇 瀏覽:607
湛江中文編程數控系統代理 瀏覽:417
openglandroid書 瀏覽:170
奇妙組件安卓版叫什麼 瀏覽:729
微信授權什麼app權重最高 瀏覽:11
php循環數組foreach 瀏覽:78
zip和app有什麼區別 瀏覽:633
乖法快速演算法 瀏覽:871
日本程序員一年工資 瀏覽:199
出國做程序員怎麼樣 瀏覽:736
rar鎖定壓縮文件 瀏覽:871
安卓id號碼怎麼更換 瀏覽:524
db2如何連接伺服器資料庫 瀏覽:630