① 爬山演算法
《混亂》
這本書提到了一個非常有效的演算法,
叫爬山演算法。
什麼叫爬山演算法?
(註:爬山演算法是人工智慧演算法的一種,
其原理是把你隨機地拋在地球上的一個點,拋在那個點以後,
你就近在最近的幾公里之內尋找最高點,然後找到最高點之後,
立刻站到這個最高點上去,再在最近的幾公里之內尋找最高點。)
用計算機模擬我們的人生,
我們的人生就是那個屏幕上,
現在屏幕中所有的坐標、高度都未知,
然後看看誰能用最快的方法找到這個屏幕上的最高點。
用什麼樣的方法找到最高點?
全球大量的計算機編程高手開始設計這套邏輯,
有的人沿著邊走,有的人直接到中心,有人用交叉、畫五角星法……
各種各樣的方法,到最後發現,
最優秀、最快能夠找到最高點的演算法只有一個,
這個演算法被稱作爬山演算法。
它的方法是什麼?
就是在整個屏幕上隨機一拋,
讓這個點落在任何一個地方,然後在能力范圍之內搜索,
在能力范圍之內盡量找到周圍最高的高度,找到最高的高度以後,
以這個最高的高度為圓心再找周圍最高的高度,然後依次循環(
找最高點周圍的下一個最高點),盡可能地找到最高的高點。
如果你今天特別倒霉,掉到一片沙漠中間,
這個沙漠周圍的高度都差不多,沒有特別高的高度,那該怎麼辦?
這時候需要重啟,拿起來隨機的一拋,
重啟到另外一個地方再找另外的高度。
爬山演算法裡面有兩個核心的點:
第一個點,
是你要接受隨機的一拋,
你要接受有不確定性的發生;
第二個點,
是無論命運把你拋到什麼地方,
你都要努力地展開搜索,
盡可能地做到最好,盡可能地找到最高的高點。
這就是爬山演算法的精髓。
使用爬山演算法探索一片屏幕,到最後發現這種方法是最快的。
就是要學會擁抱不確定性。
人生所有的煩惱、痛苦,
都是來自於我們對不確定性的抗拒。
我們希望我們的孩子按照一個模式成長,
我們希望我們的工作按照一個模式發展,
我們希望我們創業做的公司,
能夠按照一個節奏安全一個模式發展,
是這些抗拒給我們帶來大量的煩惱。
但是實際上你唯一需要做的事,是擁抱不確定性。
當不確定性發生、命運將你隨機一拋的時候,
你能夠隨時隨地、立刻展開最好的努力,
而不是待在原地拚命地抱怨,
拚命地對標,拚命地去維權,
反而這些東西浪費了我們太多的時間。
作者 | 樊登
來源 | 筆記俠(ID:Notesman)
② 演算法式和爬山法的區別
爬山演算法是一種簡單的貪心搜索演算法,該演算法每次從當前解的臨近解空間中選擇一個最優解作為當前解,直到達到一個局部最優解。爬山演算法實現很簡單,其主要缺點是會陷入局部最優解,而不一定能搜索到全局最優解。
演算法式:把解決問題的方法一一進行嘗試,最終找到解決問題的答案。特點:問題解決的系列搜索,採用試誤的方式解決問題,優點:一定可以找到某種解決問題的方法,缺點:耗時耗力。
爬山法與手段目的分析法的區別:
使用爬山法的每一步都在逐漸接近最終目標,不存在中途折回的情況;在使用手段目的分析法時,人們有時為了達到目的,不得不暫時擴大目標狀態與初始狀態的差異,以有利於達到最終目標。
比如,兩兵交戰,若敵我力量懸殊,我軍可採取迂迴戰術曲線救國,先假裝投降,獲取情報,再一舉反攻。
③ 逆向反推法和爬山法的區別
逆向反推法和爬山法的區別:含義不同,性質不同。
一、含義不同:爬山演算法是一種簡單的貪心搜索演算法,該演算法每次從當前解的臨近解空間中選擇一個最優解作為當前解,直到達到一個局部最優解。反推法,通俗來講,就是在計算性的試題中,根據給出的選項來反推出正確答案。
二、性質不同:反推法主要是根據選項延伸而來,一般來說,資料分析的4個選項,有兩個是很容易排除掉的,而剩餘的兩個比較接近,此時就可以採用此種方法。爬山演算法實現很簡單,其主要缺點是會陷入局部最優解,而不一定能搜索到全局最優解。
與中途法關系
爬山法與中途點法是彼此接近的方法。中途點法在實質上也就是通過一個個的中途點而向最終目標逼近的方法。同時,在問題求解活動中,這兩種方法也是緊密相聯.可以配合使用的。比如,有一個數學問題,要求決定兩個量v,u之間的關系。
可以把求出包含v,u的關系式(其中可以含有其他未知量)和求出只包含v,u和已知量的關系式作為兩個中途點,把整個求解過程區分為三個小階段。在每個小階段中又可分別應用爬山法來進行試探。