粗略估算是《程式設計珠璣》中第七章提到的內容。
這篇文章將「粗略估算」看做是一項工程技術,是程式設計師必備的一項技能之一。
本人非常同意這個觀點。粗略估算是一種把複雜的事情簡單化的能力。我們對某個演算法的時間複雜度和空間複雜度的估算就是基於這種估算的能力。如果你能較為準確的估算出乙個程式的輸出結果,如果你能準確估算出這個程式的執行時間,如果你能準確估算出這個專案的開發時間……如果你能擁有這樣的能力,該有多麼美好啊。所以難怪乎像微軟、google這樣的大公司老喜歡出「請計算飛機場一天有多少飛機起飛和降落?」「請計算美國一年產轎車多少輛?」這樣的估算問題!
估算是隨著大家的經驗增長而越來越準確的。下面介紹幾個估算的基本技巧和定理:
1.72法則
假設以年利率r%投資一筆錢y年,如果r*y=72,那麼你的投資差不多會翻倍。
具體例子:
以年利率6%投資1000美元12年,可得到約2000美元(實際數字是2012美元)
以年利率8%投資1000美元9年,可得到約2000美元(實際數字式1999美元)
假設乙個指數程式解決規模為n=40的問題需要10秒的時間,並且n每增加1執行時間就增加12%,問當我們把n=100的時候,大約需要多少執行時間?
根據72法則,n每增加6執行時間翻倍,那麼當n增加60,執行時間增加為原來的2^10≈1000倍。因此,n=100時,大約需要10 000秒(2~3個小時)。
聯合國估算2023年的世界人口為59億,年增長率為1.33%。如果按照這個速率下去,到2023年人口會是多少?
2050-1998=52; 52*1.33≈70
因此根據72法則,2023年人口約為59*2=118億。
2.little定律
佇列中物體的平均數量為進入速率與平均停留時間的乘積。
具體例子:
假設你正在排隊等待進入乙個火爆的***,根據觀察,你可以估算:「這個***能容納60人,每個人在裡面逗留時間約是3小時,因此進入***的速率為20人/小時。現在隊伍中前面還有20人,因此這意味著我們需要等待大約乙個小時的時間。」
請估計一下你所在的城市的死亡率,假設人口的平均壽命為70歲。
little定律告訴我們,城市的死亡率為1/70。
當我們設計乙個程式的時候,有演算法若干,功能需求若干。這時候就需要組織者有足夠的估算能力,估算並平衡每個較優演算法所付出的時間代價和效能需求。從而做出正確的決定。
7 程式設計珠璣筆記七粗略估算
7 程式設計珠璣筆記七粗略估算 本篇名言 播下行為的種子,可以收成習慣之果 播下習慣的種子,可以收成性格之果 播下性格的種子,可以收成命運之果。說實話,在看到這篇文章之前,不知道程式裡面也有粗略估算。因為 讀書時候一直學的機械 當年高考完後也是想學計算機的,結果被家裡人制止,而學了機械,陰差陽錯的上...
程式設計珠璣第七章 粗略估算
過簡單的粗略估算我們能夠得到接近需要複雜計算的真實值,實在是讓人驚嘆估算的魅力。在日常生活中,我們常常會遇到需要快速算出粗略值的時候,以便對問題有乙個大體的把握,這個時候粗略估算的技巧就顯得十分重要了。本章介紹了 量綱檢驗 模9法 72法則 little定律 等,而更多的技巧需要我們在日常生活中根據...
程式設計珠璣 第七章 粗略估算
一,概述 1 72法則 單位時間增長率 時間 72 則該時間完成初始值翻番 題目 假設最初投資金額為100元,復息年利率9 實現資金翻番需要多久?利用 72法則 將72除以9 增長率 得8,即需約8年時間,投資金額滾存至200元 翻番 而準確需時為8.0432年。題目 盤子中的菌每小時增長3 那麼其...