更新時間:2020-12-29 17:48:27 來源:動力節點 瀏覽1216次
算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。算法概念的誕生到如今算法體系的成熟,經歷了許多的波折,也孕育出了許多的優質算法。算法本身還是人為設計出來的,因此,算法設計要求也是客觀存在的。
算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出并停止于一個終態。一個狀態到另一個狀態的轉移不一定是確定的。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個算法有缺陷,或不適合于某個問題,執行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。下面我們從這些對算法的描述出發來看算法的設計要求。
1.正確性
算法至少應該具有輸入,輸出和加工處理無歧義性,能正確反映問題的需求,能夠得到問題的正確答案 算法程序沒有語法錯誤 算法程序對于合法輸入能夠產生滿足要求的輸出。
2.可讀性(算法設計另一目的是為了便于閱讀,理解和交流)
算法主要是為了人的閱讀與交流,其次才是機器執行。可讀性好有助于人對算法牟理解;晦澀難懂的程序易于隱藏較多錯誤,難以調試和修改。
3.健壯性
當輸入數據非法時,算法也能適當地做出反應或進行處理,而不會產生黃曉明其妙的輸出結果。例如,一個求凸多邊形面積的算法,是采用求各三角形面積之和的策略來解決問題的。當輸入的坐標集合表示的是一個凹多邊形時,不應繼續計算,而應報告輸入出錯。并且處理出錯的方法應是返回一個表示錯誤或錯誤性質的值,而不是打印錯誤信息或異常,并中止程序的執行,以便在更高的抽象層次上進行處理。
4.時間效率高和存儲量低
通俗地說,效率指的是算法執行的時間。對于同一個問題如果有多個算法可以解決,執行時間短的算法效率高。存儲量需求算法執行過程中所需要的最大存儲空間。效率與低存儲量需求這兩者都與問題的規模有關。求 100 個人的平均分與求 1000 個人的平均分所花的執行時間或運行空間顯然有一空差別。
顯然,同一個算法用不同的語言實現,或者用不同的編譯器進行編譯,或者在不同的計算機運行時,效率均不相同。這表明使用絕對的時間單位衡量算法的效率是不合適的。撇開這些與計算機硬件、軟件有關的因素,可以認為一個特定算法“運行工作量”的大小,只依賴于問題的規模(通常用整數量 n 表示),或者說,它是問題規模的函數。
以上就是算法設計要求的全部內容,只有滿足這些要求,設計出來的算法才能算是合理的。從某種程度上來說,算法設計要求和算法的一些特征是不謀而合的。想要設計出一個優秀的算法,還是有很大難度的,我們只能量力而行,在本站的數據結構和算法教程中先學習一些廣為人知的優秀算法,得出自己的心得,以便我們設計出合格的算法。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習