A 演算法可行解與最優解的偏離處

2021-05-27 01:17:12 字數 973 閱讀 6350

a*尋路初探

f = g + h

g的計算依賴於來自每個格仔與相鄰8個方向格仔的距離d,文中不同格仔的d1-8相同。

如果s到v的最短路徑g是準確的,那麼最終獲得的最短路徑就是準確的,因為終點的g就是所求的最短路徑。

任何情況第一和第二個加入關閉列表的g都是準確的,即其v到s的最短路徑是最優解。第三個開始才有可能g為可行解。

點v加入關閉列表:起點s到點v的最短路徑(既定規則下的可行解中最短的)已確定。

點v加入開放列表:起點s到點v的距離計算過了,但最短路徑未確定。

a*採用容器堆,採用啟發式,把估值出來經過此點起點到終點(h)可能最短的彈出來,遍歷其周圍的格仔,而後加入堆。

最小消耗採用容器堆,把到起點最短(g)的格子彈出來,遍歷其周圍的格仔而後加入堆。最小消耗是a*的特化,h估為0,g最短就是f最短。

廣搜採用優先佇列,把佇列頭彈出來,遍歷其周圍的格仔而後加入佇列。廣搜是最小消耗的特化,格仔周圍8方向估值距離都相同時,用優先佇列代替堆,因為佇列頭就是到起點最短的。

加入容器就是加入了開發列表,彈出來的就是加入關閉列表的。

廣搜也不是最優解,找到路徑中,只是終點周圍8個格仔中到起點最短的v,而不是終點e到起點s最短的。因為v到e的距離可能很長。

1.因為h是估計的,不同的估計方法所得到的路徑都是不一樣的。所以導致a*演算法找到的最短路徑肯定只是可行解而不是最優解。

2.假定每個格仔給出的h是準確的,是否就是最優解呢?

還不一定是,假如不同格仔的d1-8不同,g還是有問題的。

假入目前在尋找上圖的第3個關閉點v。

a*是確定了s右下的點v,gv=14。如果左側的格仔vl到v的距離為1而不是10,則通過vl到v的距離為gv=11。比a*演算法得到的要短。

3.假如h準確,且不同格仔的d1-8相同,也就是文中設定的情況。那麼通過a*演算法每次加入關閉列表的v,是否就是準確的最短g?

這種情況我尚未找到證明其g是否最短的方法,如果不是最短應該需要通過反證法證明。

k means聚類演算法與區域性最優解

1.1 無監督學習 本章演算法區別於之前的機器學習演算法,因為k means演算法屬於無監督演算法。監督學習的意思是所給的訓練資料都帶有標籤,如類別等,我們在訓練演算法時,要考慮 的結果是否擬合了訓練資料中的標籤,即好像受其監督一樣,而無監督學習與監督學習的區別就在此,無監督學習的資料沒有標籤,沒有...

最優解問題的求解

1.一般來說題目中需要求解出最優解的問題,我們是可以使用普通遞迴,遞推,深度優先搜尋,記憶型的遞迴,貪心或者動態規劃來進行求解的 其中使用普通的遞迴或者深搜,遞推這些資料量較小的情況下求解速度還行,假如資料量相對大一點的情況下,而且節點的數量比較多,這個時候使用這些方法來解決往往會耗時比較大,有時候...

演算法與資料結構最優解例項總結

1.棧與佇列 1.1 貓狗佇列 新增佇列物件 class petenterqueue count 為時間戳 class dogcatqueue 1.2 漢諾塔 process num,lef,middle,right,from,to 4.2 最小路徑 new 乙個 d i j min d i 1 j...