- Python數據結構與算法(視頻教學版)
- 孫玉勝 陳銳 張志鋒
- 763字
- 2023-07-17 20:02:20
1.6.1 算法設計的4個目標
一個好的算法應該具備以下目標。
1.算法的正確性(correctness)
算法的正確性是指算法至少應該包括對于輸入、輸出和處理無歧義性的描述,能正確反映問題的需求,且能夠得到問題的正確答案。
通常算法的正確性應包括以下4個層次:
(1)算法對應的程序沒有語法錯誤。
(2)對于幾組輸入數據能得到滿足規格要求的結果。
(3)對于精心選擇的典型的、苛刻的帶有刁難性的幾組輸入數據,能得到滿足規格要求的結果。
(4)對于一切合法的輸入都能得到滿足要求的結果。
對于這4層算法正確性的含義,達到第4層意義上的正確是極為困難的,所有不同輸入數據的數量大得驚人,逐一驗證的方法是不現實的。一般情況下,我們把層次3作為衡量一個程序是否正確的標準。
2.可讀性(readability)
算法主要是為了人們方便閱讀和交流,其次才是計算機執行。可讀性好有助于人們對算法的理解,晦澀難懂的程序往往隱含著不易被發現的錯誤,難以調試和修改。
3.健壯性(robustness)
當輸入數據不合法時,算法也應該能做出反應或進行處理,而不會產生異常或莫名其妙的輸出結果。例如,求一元二次方程根ax2+bx+c=0的算法,需要考慮多種情況,先判斷b2-4ac的正負,如果為正數,則該方程有兩個不同的實根;如果為負,表明該方程無實根;如果為零,表明該方程只有一個實根;如果a=0,則該方程又變成了一元一次方程,此時若b=0,還要處理除數為零的情況。如果輸入的a、b、c不是數值型,還要提示用戶輸入錯誤。
4.高效率和低存儲量(High efficiency and low storage)
效率指的是算法的執行時間。對于同一個問題,如果有多個算法能夠解決,執行時間短的算法效率高,執行時間長的效率低。存儲量需求指算法在執行過程中需要的最大存儲空間。效率與低存儲量需求都與問題的規模有關,求100個人的平均分與求1000個人的平均分所花的執行時間和運行空間顯然有一定差別。設計算法時應盡量選擇高效率和低存儲量需求的算法。
推薦閱讀
- The Supervised Learning Workshop
- Flask Blueprints
- AngularJS Testing Cookbook
- 軟件項目管理(第2版)
- Learn Swift by Building Applications
- C++ 從入門到項目實踐(超值版)
- 碼上行動:用ChatGPT學會Python編程
- UML 基礎與 Rose 建模案例(第3版)
- Terraform:多云、混合云環境下實現基礎設施即代碼(第2版)
- 圖數據庫實戰
- Practical Game Design with Unity and Playmaker
- 搞定J2EE:Struts+Spring+Hibernate整合詳解與典型案例
- Raspberry Pi Robotic Projects(Third Edition)
- Java程序設計教程
- Learning Image Processing with OpenCV