人生與算法


    (說明:這是原來發表在科學博客上的博文,不知道能否適應這裏的環境。問過了編輯,博文是個人日誌,在一個地方發了,換一個地方還可以再發,不存在一高兩投的問題)


      讀了今天發表的遲菲博文 人生如棋和馬臻博文 也說人生如棋爲兩篇好文喝彩。筆者曾在自然計算講座PPT中,用這些生活現象解釋那裏的貪心算法和模擬退火算法;現在反過來,花幾十分鐘,把PPT中一些材料搬過來,爲兩位老師的論點補充彈藥,活躍討論氣氛。

貪心使目光短淺。 四維時空中的人是多元化的,平常不貪心的人,在部分場合部分時間也可能有貪心的心理或行爲。當貪心得以表現時,只顧眼前最大利益。計算機科學中的貪心算法(Greedy algorithm )模擬了這一基本思想,即每一步都追求評價函數最高值。
貪心算法容易實現。人貪心固然不好, 但計算機科學中貪心算法是好用的,開發起來比較簡易,例如,常用於快速開發簡單優化程序的或遊戲程序。
  不貪心的人, 在生活中用會貪心算法嗎?
會的,且看下面的兩個例子。
例1 過公路十字路口 ,擬從A到C,在圖1的 條件下,70%的人會用貪心算法,選走A-->B-->C的路線。通常,哪一條路徑代價低(時間及其他資源),則先過該方向,先把看得見的實際利益(這裏是時間)搶到手,這也是一條啓發性知識。

圖1過馬路十字路口 ,擬從A到C

     但是,貪心算法不總是快,如馬臻博文所說,人算不如天算,設若剛剛走到B, 大量救火車南北方向通行,且持續10分鐘,欲速不達,後悔者會說,早知如此,何不當初選擇路徑A-->D-->C? 在晉升中級職稱時,有人在選擇走“教學系列”,還是“研究系列”方面躊躇徘徊,與此例相近。

例2 求職,找工資高的單位。

圖2 求職,找工資高的單位

當事人做了一個(目光較短的)探測,發現工資西高東低,決定往西走,找一個極大值點。事實上,如果目光遠一些,往東走,容忍一時的下降,兩落兩起後,可達到全局部的最優。此例有時候也稱爲爲盲人爬山,手裏面有一個一米多的手杖,探測梯度,往梯度大的方向走,因爲探測棒太短,所以沒有遠見。

模擬退火算法是對貪心算法的批判  圖2表明,如能堅持對東方的信念,允許偶爾(按一定概率)的失敗,往東穿過低谷,達到一個更高山峯的腳下,最後登上全局優化點,這就是模擬退火算法的思想。在常出現局部收斂(或早熟)的應用場合,程序員會舍“貪心”而取“退火”。現實生活中,許多偉人堅持信念,幾起幾落,最後終於登上頂峯。

小姐與丫環。戲曲中,穆桂英出場之前,先有一位武藝超羣,容貌漂亮的丫環亮相,給劇中的楊宗保和劇外的觀衆一個懸念:丫環竟如此,小姐當如仙。這種用丫環襯托小姐的方法,也用在了計算機科學的論文中,設計了一個好的算法,常常用傳統的算法作丫環來比較襯托;沒有丫環,也要造一個,貪心算法最好造,常常扮演丫環角色;電器製造和銷售中,也用丫環機型,根本沒打算賣多少,讓用戶有個比較,襯托廠家利潤大的“小姐機型”。

 堅持信念,也是算法。人生中,有時候受條件限制,無法預見長遠,有時受環境所迫,沒有多少可選擇機會。此時,堅持信念,儘可能做好能作的每一步,就是勝利。嚴格地說起來,“儘可能做好能作的每一步”,用的就是貪心算法;這是 無貪婪之心,用貪心之法;雖然慢一點,但不乏成功者;在茫茫人海中,登上一個局部優化的山峯,也是成功。。
  有人說,40歲以前可跳幾次槽,40歲以後不再跳槽,這就是工程上常用的兩階段爬山法,40歲以前模擬退火算法,旨在跳出局部優化點,尋找較高山峯下的坡面,40歲以後用貪心算法,“儘可能做好能作的每一步”,腳踏實地登山,不失爲一個可參考的啓發性知識。

相關博文(研究生全面成長系列)

小小突發事件和研究生責任感歷練
作科研要學會承受失敗-
人生中的等待和等待的魅力
在統計意義上喜歡這樣的學生
人生與算法

善對論文評審意見的寬嚴與長短
計算機改變了我們的學習方式和記憶觀
路與人,以及科研選題----節日感懷(圖&文)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章