在不同的a* 演算法中,比如說ara* 演算法,執行的時候往往依賴於某些引數的設定,例如膨脹係數e,而我們在設定膨脹係數的時候,往往是依靠經驗值,這樣的結果就是引數並不是任何情況下都滿足實際需求的,也就是說,我們在最優性和時效性兩個效能之間進行折中的時候,e是根據我們的需求設定的,當需求改變的時候,我們需要重新設定乙個膨脹係數e.針對這種情況,有學者提出了一種不需要設定引數的a* 演算法.
在a* 演算法中
f(s)=g(s)+h(s)
我們利用e(s)對下一級的節點進行選優,為了改進演算法,我們改用:
e(s)= (g-g(s))/h(s)
這樣,演算法的流程為:
其中擴充套件s節點的過程為:
for each successor s of s do
if g(s) + c(s, s ) < g(s ) then
g(s ) ← g(s) + c(s, s )
pred(s ) ← s
if g(s ) + h(s ) < g then
insert or update s in open with key e(s )
動態規劃基本原理
圖4 1 帶權有向多段圖 近年來,涉及動態規劃的各種競賽題越來越多,每一年的noi 幾乎都至少有一道題目需要用動態規劃的方法來解決 而競賽對選手運用動態規劃知識的要求也越來越高,已經不再停留於簡單的遞推和建模上了。要了解動態規劃的概念,首先要知道什麼是多階段決策問題。一 多階段決策問題 如果一類活動...
跳蚤演算法 基本原理。
跳蚤演算法 基本原理。一 演算法的誕生及設計初衷。傳統教材中取得x個0 to n之間不重複隨機數的方法一般是這樣 x個不重複隨機數輸出到a 陣列 for i 1 to x dor int rnd n 1 c 確定r不包含在a 內 loop until c 將r新增到a next 由於r可能與a 內的...
RSA演算法基本原理
圖為 rsa公開金鑰演算法的發明人,從左到右ron rivest,adi shamir,leonard adleman.攝於1978年 素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15 3 5,所以15不是素數 又如,12 6 2 4 3,所以12也...