昨日傍晚時分京城突降大雨,恰逢與同事去公司附近學校食堂吃晚飯,於是我一路狂奔,不過同事倒是淡定,慢慢悠悠,我就問他你不怕挨淋啊,他回答道,走得快走的慢,距離一樣,淋的雨一樣多啦。
這回答讓我一愣,心裡有些犯嘀咕。等到食堂開吃時,我的程式設計師病就犯了(打個傘就不淋了,非要鑽牛角尖。。),於是我再次提出這個問題:
2個人下雨天由公司去食堂吃飯,乙個走的快,乙個走的慢,哪個淋雨少。
飯間我想到了解決方法。我覺得還是很有意思的,有必要記錄下。
首先說呢,這是問題有複雜的環境因素,所以我能想到的是先將這個問題抽象成乙個數學問題,也就是數學建模。
將一些複雜的影響因素,先假定為理想的因素。
這其中不確定的問題有:如何定義下雨,如何定義人的速度,如何定義人的受雨面積。
於是以上問題我先抽象成如下的數學問題。
假設公司距食堂200m,天正下雨(雨量穩定,雨與人行進方向垂直,雨是靜止參考物),雨量是1平方公尺內1秒有100滴,a以2m/s速度前進,b以1m/s速度前進,人的受雨面積一致,是1平方公尺,請問到達食堂時誰淋雨少。
抽象成了數學問題,就會與實際問題有所偏差,但數學問題的結果對實際問題還是很有參考意義的。
人的受雨面積是1平方公尺,可以解釋為乙個人在雨中待1秒,會收到100滴雨。
根據這個數學問題,a速度是2m/s,則其走1m是0.5s。b速度1m/s,走1m是1s。
分析到這裡,靈光一閃,想到了核心排程的核心思想,巨集觀並行,微觀序列啊。
把要走的200m分為200個1m來看,我們來看下每個人在1m內淋雨量,乘以200,就是總的淋雨量啦。
a走1m用0.5s,可以想象為a在1m內停留0.5s,而人的受雨面積是1平方公尺,
則a走1m淋雨50滴。
同樣道理,b走1m淋雨100滴。
想到這裡,我突然想到,這個問題完全可以簡化為如下:
a站在雨中100秒,b站在雨中200秒,誰淋雨少?
答案夠明顯了吧,哈哈!
不管我這套方法對錯,由實際問題進行抽象,一步步簡化問題,這個思路對我來說還是很寶貴的。
在平時的工作中,除了嵌入式系統的開發移植,debug也是乙個很重要的工作。在解決一些linux kernel系統級的bug時,可能不像某個driver的bug那麼明確好定位,有時會不知道從**下手。
我的感覺,解bug的思路跟淋雨問題的解決思路是一樣的,抽象簡化,可能這個問題有很複雜的異常現象,從這個複雜的異常現象不好debug。
可以先找乙個簡單的異常現象入手,抽絲剝繭,肯定會找到bug所在。
之前遇到的乙個奇葩bug就是這樣來解決的,鏈結如下:
淋雨問題的這套思路我不敢保證是最好的,畢竟是即興想出來的。
但是我覺得解決這個問題,我想到的數學建模,由繁入簡的思路一定是沒錯的,這對於平時工作中debug還是很有借鑑意義的。
還是那句話,想做系統級程式設計師,廣闊的思路永遠比知識更重要!
但求好事,莫問前程!
那一場大雨之後
那一場大雨之後,林無敵還是嫁給了她的費總,雖然這樣對小雷很不公平,但這是命中註定的,只能怪小雷有緣無份。從林無敵踏入概念的第一天起,他們之間注定結下了不解之緣,而小雷的出現,終究只是美麗故事的插曲而已。林無敵的確是很優秀的,能力是不用懷疑的,但能同時獲得兩位優秀男人心,讓他們兄弟倆大打出手,絕不僅僅...
一場大雨讓我看到了什麼
2012年7 月21日.一場大暴雨襲擊了北京及其周邊地區 一場暴雨打亂了很多人的生活節奏.公尺老師就是其中的一位 他原本在家裡 但是下這麼大的雨很擔心自己的學生 擔心在學校的一百多號的學生 於是便開車來學校.很多人都很容易在雨天生病 各種原因 當天晚上公尺老師發現兩個女學生生病 二話不說 立刻帶她們...
PHP佇列 選舉引發的一場血案
花果山選舉引發的一場血案 自花果山美猴王齊天大聖孫悟空被如來壓在五指山下,花果山無人管理,受盡周邊惡霸的欺負,長老們意識到花果山不能一日無主,於是決定選舉一位臨時大王,由於猴子猴孫水平都不相上下,推選誰都難以平眾憤,長老們無計可施 乙隻聰明的猴子急中生智,提議 猴孫們圍成一圈,按順時針順序1 n編號...