2023年12月28日
我深深地發現,對於我國這樣從小被父母和老師安排各種事情長大的人,當有一天,父母和老師都跟不上的時候,我們幾乎完全不知道怎麼去做選擇。而我最近也離開了亞馬遜,換了乙個工作。又正值年底,就像去年的那篇《三個故事和三個問題》一樣,讓我想到寫一篇這樣的文章。
目錄幾個例子
當我們在面對各種對選擇的影響因子的時候,如:城市,公司規模,公司性質,薪水,專案,戶口,技術,方向,眼界…… 你總會發現,你會在幾個公司中糾結一些東西,舉幾個例子:
我個人覺得,如果是非計算機科班出生的人不會做選擇,不知道怎麼走也罷了,但是我們計算機科班出生的人是學過演算法的,懂演算法的人應該是知道怎麼做選擇的。
排序演算法
你不可能要所有的東西,所以你只能要你最重要的東西,你要知道什麼東西最重要,你就需要對你心內的那些慾望和抱負有清楚的認識,不然,你就會在糾結中度過。
所以,在選擇中糾結的人有必要參考一下排序演算法。
這是排序演算法中最經典的兩個演算法了,面試必考。相信你已爛熟於心中了。所以,我覺得你把這個演算法應用於你的人生選擇也應該不是什麼問題。關於在於,你是否知道自己想要的是什麼?
排序演算法的核心思想就是,讓你幫助你認清自己最需要的是什麼,認清自己最想要的是什麼,然後根據這個去做選擇。
貪婪演算法
所謂貪婪演算法,是一種在每一步選擇中都採取在當前狀態下最好或最優(即最有利)的選擇(注意:是當前狀態下),從而希望導致結果是最好或最優的演算法。貪婪演算法最經典的乙個例子就是哈夫曼編碼。
對於人類來說,一般人在行為處事的時候都會使用到貪婪演算法,
這樣的例子有很多。對於選擇中,大多數人都會選用貪婪演算法,因為這是乙個比較簡單的演算法,未來太複雜了,只能走一步看一步,在當前的狀況下做出最利於自己的判斷和選擇即可。
有的人會貪婪薪水,有的人會貪婪做的專案,有的人會貪婪業務,有的人會貪婪職位,有的人會貪婪自己的興趣……這些都沒什麼問題。貪婪演算法並沒有錯,雖然不是全域性最優解,但其可以讓你找到區域性最優解或是次優解。其實,有次優解也不錯了。貪婪演算法基本上是一種急功近利的演算法,但是並不代表這種演算法不好,如果貪婪的是一種長遠和持續,又未嘗不可呢?。
動態規劃
但是我們知道,對於大部分的問題,貪婪法通常都不能找出最優解,因為他們一般沒有測試所有可能的解。因為貪婪演算法是一種短視的行為,只會跟據當前的形式做判斷,也就是過早做決定,因而沒法達到最佳解。
動態規劃和貪婪演算法的最大不同是,貪婪演算法做出選擇,不能在過程優化。動態規劃則會儲存以前的運算結果,並根據以前的結果對當前進行選擇,會動態優化功能。
動態規劃演算法至少告訴我們兩個事:
1)承前啟後非常重要,當你準備去做遍歷的時候,你的上次的經歷不但能開啟你以後的經歷,而且還能為後面的經歷所用。你的每一步都沒有浪費。
2)是否可以回退也很重要。這意思是——如果你面前有兩個選擇,乙個是a公司乙個是b公司,如果今天你選了a公司,並不是你完全放棄了b公司。而是,你知道從a公司退出來去b公司,會比從b公司退出來去a公司要容易一些。
比如說:你有兩個offer,乙個是yahoo,乙個是baidu,上述的第一點會讓我們思考,我以前的特長和能力更符合yahoo還是baidu?而yahoo和baidu誰能給我開啟更大的平台?上述的第二點告訴我們,是進入yahoo後如果沒有選好,是否還能再選擇baidu公司?還是進入baidu公司後能容易回退到yahoo公司?
dijkstra最短路徑
最短路徑是乙個greedy + dp的演算法。相當經典。這個演算法的大意如下:
1)在初始化的時候,所有的結點都和我是無窮大,預設是達不到的。
2)從離自己最近的結點開始貪婪。
3)走過去,看看又能到達什麼樣的結點,計算並更新到所有目標點的距離。
4)再貪婪與原點最短的結點,如此反覆。
這個演算法給我們帶來了一些這樣的啟示:
演算法就是trade-off
你根本沒有辦法能得到所有你想得到的東西,任何的選擇都意味著放棄——當你要去獲得乙個東西的時候,你總是需要放棄一些東西。人生本來就是乙個蹺蹺板,一頭上,另一頭必然下。這和我們做軟體設計或演算法設計一樣,用時間換空間,用空間換時間,還有cap理論,總是有很多的trade-off,正如這個短語的原意一樣——你總是要用某種東西去交易某種東西。
我們都在用某種東西在交易我們的未來,有的人用自己的努力,有的人用自己的思考,有的人用自己的年輕,有的人用自己的自由,有的人用自己的價值觀,有的人用自己的道德…… …… 有的人在交換金錢,有的人在交換眼界,有的人在交換經歷,有的人在交換地位,有的人在交換能力,有的人在交換自由,有的人在交換興趣,有的人在交換虛榮心,在交換安逸享樂…… ……
每個人有每個人的演算法,每個演算法都有每個演算法的purpose,就算大家在用同樣的演算法,但是每個人演算法中的那些變數、開關和條件都不一樣,得到的結果也不一樣。我們就是生活在matrix裡的一段程式,我們每個人的演算法決定著我們每個人的選擇,我們的選擇決定了我們的人生。
2023年就要過去了,祝大家新年快樂!
插圖來自電影 life of pi
(全文完)
程式演算法與人生選擇
我深深地發現,對於我國這樣從小被父母和老師安排各種事情長大的人,當有一天,父母和老師都跟不上的時候,我們幾乎完全不知道怎麼去做選擇。而我最近也離開了亞馬遜,換了乙個工作。又正值年底,就像去年的那篇 三個故事和三個問題 一樣,讓我想到寫一篇這樣的文章。幾個例子 當我們在面對各種對選擇的影響因子的時候,...
程式演算法與人生選擇
我深深地發現,對於我國這樣從小被父母和老師安排各種事情長大的人,當有一天,父母和老師都跟不上的時候,我們幾乎完全不知道怎麼去做選擇。而我最近也離開了亞馬遜,換了乙個工作。又正值年底,就像去年的那篇 三個故事和三個問題 一樣,讓我想到寫一篇這樣的文章。幾個例子 當我們在面對各種對選擇的影響因子的時候,...
程式演算法與人生選擇 zt
文 陳皓 我深深地發現,對於我國這樣從小被父母和老師安排各種事情長大的人,當有一天,父母和老師都跟不上的時候,我們幾乎完全不知道怎麼去做選擇。而我最近也離開了亞馬遜,換了乙個工作。又正值年底,就像去年的那篇 三個故事和三個問題 一樣,讓我想到寫一篇這樣的文章。幾個例子 當我們在面對各種對選擇的影響因...