|
您的位置: 首頁 > 網站資訊 > 一個數據挖掘大牛,用程序算法做人生選擇 |
一個數據挖掘大牛,用程序算法做人生選擇發布日期:2017/7/5
每年一到要找工作的時候,我就能收到許多人給我發來的郵件,總是問我怎么選擇他們的offer,去騰訊照舊去豆瓣,去外企照舊去國內的企業,去創業照舊去考研,來上海照舊回老家,該不該去創新工場?該不該去thoughtworks? 等等,等等。今年從7月份到現在,我收到并回復了60多封這樣的郵件。我更多幫他們整頓思路,幫他們曉暢自己要的是什么。(注:我以后不再回復類似的郵件了)。 我深深地發現,對于我國這樣從小被怙恃和先生安排各種事情長大的人,當有,怙恃和先生都跟不上的時候,我們幾乎完全不知道怎么去做選擇。而我也脫離了亞馬遜,換了一個工作,讓我想到寫一篇這樣的文章。 幾個例子 當我們在面對各種對選擇的影響因子的時候,如:城市,公司規模,公司性質,薪水,項目,戶口,技術,方向,眼界…… 你總會發現,你會在幾個公司中糾結一些東西,舉幾個例子: 某網友和我說,他們去上海騰訊,因為騰訊的規模很大,但卻發現薪水待遇沒有豆瓣高(低的還不是一點),假如以后要換工作的話,起薪點直接關系到了以后的高工資。我說那就去豆瓣吧,他說豆瓣在上海,污染那么嚴重,又沒有戶口,生存環境不好。我說去騰訊吧,他說騰訊組織調整,不穩定。我說那就去豆瓣吧,慢公司,發展很穩當。他說,豆瓣的盈利不清楚,而且用Python,自己不喜好。我說,那就去騰訊吧……
我個人覺得,假如是非計算機科班出生的人不會做選擇,不知道怎么走也罷了,但是我們計算機科班出生的人是學過算法的,懂算法的人應該是知道怎么做選擇的。 排序算法 你不可能要所有的東西,所以你只能要你主要的東西,你要知道什么東西主要,你就需要對你心內的那些欲望和抱負有清楚的熟悉,不然,你就會在糾結中度過。 所以,在選擇中糾結的人有需要參考一下排序算法。 首先,你需要參考的就是“冒泡排序”——這種算法的思路就是每次冒泡出一個數。所以,你有需要問問你自己,面對那些影響你選擇的因子,假如你只能要一個的話,你會要哪個?而剩下的都可以摒棄。于是,當你把數,一個一個冒泡出來的時候,并用這個決策因子來過濾選項的時候,你就能比較容易地知道知道你應該選什么了。這個算法告訴我們,人的邪念越少,就越容易做出選擇。 好吧,可能你已茫然到了怎么比較兩個決策因子的大小,比如:你分不清楚,工資>營業前景嗎?營業前景>能力提拔嗎?所以你完全沒有辦法進行冒泡法。那你,你不妨參考一個“快速排序”的思路——這個算法告訴我們,我們一開始并不需要找到數,我們只需要把你價值觀中的某個標準拿出來,然后,把可以知足這個價值的放到右邊,不能的放到左邊去。比如,你的標準是:工資大于5000元&&營業前景長于3年的公司,你可以用這個標準來過濾你的選項。然后,你可以再調整這個標準再繼續遞歸下去。這個算法告訴我們,我們的選擇標準越清晰,我們就越容易做出選擇。 這是排序算法中經典的兩個算法了,面試必考。相信你已爛熟于心中了。所以,我覺得你把這個算法應用于你的人生選擇也應該不是什么問題。關于在于,你是否知道自己想要的是什么? 排序算法的核心思想就是,讓你幫助你認清自己需要的是什么,認清自己要的是什么,然后根據這個去做選擇。 貪婪算法 所謂貪婪算法,是一種在每一步選擇中都采取在當前狀況下或(即有利)的選擇(注重:是當前狀況下),從而希望導致效果是或的算法。貪婪算法經典的一個例子就是哈夫曼編碼。 對于人類來說,一般人在行為處事的時候都會使用到貪婪算法, 比如在找零錢的時候,假如要找補36元,我們一般會按這樣的順序找錢:20元,10元,5元,1元。 或者我們在過十字路口的時候,要從到對角線的那個街區時,我們也會使用貪婪算法——哪邊的綠燈先亮了我們就先過到那邊去,然后再轉身90度等紅燈再過街。 這樣的例子有許多。對于選擇中,大多數人都會選用貪婪算法,因為這是一個比較簡單的算法,未來太復雜了,只能走一步看一步,在當前的狀況下做出利于自己的判斷和選擇即可。 有的人會貪婪薪水,有的人會貪婪做的項目,有的人會貪婪營業,有的人會貪婪職位,有的人會貪婪自己的愛好……這些都沒什么問題。貪婪算法并沒有錯,雖然不是全局解,但其可以讓你找到局部解或是次優解。其實,有次優解也不錯了。貪婪算法基本上是一種急功近利的算法,但是并不代表這種算法不好,假如貪婪的是一種長遠和持續,又未嘗不可呢?。 動態規劃 但是我們知道,對于大部分的問題,貪婪法通常都不能找出解,因為他們一般沒有測試所有可能的解。因為貪婪算法是一種短視的行為,只會跟據當前的形式做判斷,也就是過早做決定,因而沒法達到好解。 動態規劃和貪婪算法的不同是,貪婪算法做出選擇,不能回退。動態規劃則會保存以前的運算效果,并根據以前的效果對當前進行選擇,有回退功能。 動態規劃算法至少告訴我們兩個事:
比如說:你有兩個offer,一個是Yahoo,一個是Baidu,上述的點會讓我們思考,Yahoo和Baidu誰能給我們開啟更大的平臺?上述的第二點告訴我們,是進入Yahoo后假如沒有選好,是否還能回退到Baidu公司?照舊進入Baidu公司后能容易回退到Yahoo公司? Dijkstra短路徑 短路徑是一個Greedy + DP的算法。相當經典。這個算法的大意如下:
這個算法給我們帶來了一些這樣的啟示: 有同伙和我說過他想成為一個架構師,或是某技術領域的專家,并會踏扎實實的向這個目標前進,永不摒棄。我照舊鼓勵了他,但我也告訴他了這個的算法,我說,這個算法告訴你,架構師或某領域的專家對你來說目前的距離是無限大,他們放在心中,先看看你能夠得著的東西。所謂扎實,并不是踏扎實實追求你的目標,而是踏扎實實把你夠得著看得見的就在身邊的東西干好。我還記得我剛參加工作,從老家出來的時候,從來沒有想過要成為一個技術牛人,也從來沒有想過我的博客會那么的有影響力,在做自己力所能及,看得見摸得著的事情,我就看見什么技術就學什么,學著學著就知道怎么學更輕松,怎么學更扎實,這也許就是我的短路徑。 有許多同伙問我要不要學C++,或是問我學Python照舊學Ruby,是不是不用學前端,等等。這些同伙告訴我,他們不可能學習多個語言,學了不用也就忘了,而且術業有專攻。這并沒有什么舛錯的,只是我個人覺得,學習一個東西沒有需要只有兩種狀況,一種是不學,另一種是精通。了解一個技術其實花不了多少時間,我學C++的目的其實是為了更懂Java,學TCP/IP協議其實是為了更懂Socket編程,許多東西都是連通和相輔相成的,學好了C/C++/Unix/TCP等這些基礎技術后,我發現到達別的技術路徑一下縮短了(這就是為什么我用兩天時間就可以了解Go語言的原因)。這就彷佛這個算法一樣,算法效率不高,也許達到你的目標,你在一開始花了很長時間,遍歷了許多地方,但是,這也許這就是你的短路徑。 算法就是Trade-Off 你根本沒有辦法能得到所有你想得到的東西,任何的選擇都意味著摒棄——當你要去獲得一個東西的時候,你總是需要摒棄一些東西。人生原本就是一個蹺蹺板,一頭上,另一頭必然下。這和我們做軟件設計或算法設計一樣,用時間換空間,用空間換時間,還有CAP理論,總是有許多的Trade-Off,正如這個短語的原意一樣——你總是要用某種東西去交易某種東西。 我們都在用某種東西在交易我們的未來,有的人用自己的努力,有的人用自己的思考,有的人用自己的年輕,有的人用自己的自由,有的人用自己的價值觀,有的人用自己的道德…… …… 有的人在交換金錢,有的人在交換眼界,有的人在交換經歷,有的人在交換地位,有的人在交換能力,有的人在交換自由,有的人在交換愛好,有的人在交換虛榮心,在交換安逸享樂…… …… 每個人有每個人的算法,每個算法都有每個算法的purpose,就算大家在用同樣的算法,但是每個人算法中的那些變量、開關和條件都不一樣,得到的效果也不一樣。我們就是生活在Matrix里的一段程序,我們每個人的算法決定著我們每個人的選擇,我們的選擇決定了我們的人生。 |
其他相關文章 |
|
|
|
|||||||||
Copyright 2012-2025 上海蒙狼網絡科技有限公司 aqdzp.cn All Rights Reserved |