演算法,無處不在
演算法是什麼?
百度百科給出的解釋是這樣的「演算法是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。」
簡單地來說演算法就是解決某一問題的一種策略。我們不妨打這麼一個比方,數學是一顆寶石,那麼演算法就是這顆寶石閃閃發出的光芒,是演算法讓這顆寶石更加聊聊生輝。
演算法是門藝術,只有當你走進演算法的世界之後,才會體會到它的魅力。
演算法到底有多重要?
在這裡要向大家介紹一下瑞士的Nicklaus Wirth,他就是憑藉一句話獲得圖靈獎的Pascal之父。
讓他獲得圖靈獎的這句話就是他提出的著名公式:
演算法+數據結構=程序
所以說數據結構是程序的骨架,那麼演算法就是程序的靈魂。
演算法離我們的生活有多遠?
演算法,聽起來很「高大尚」的一個詞,貌似我們的生活聞所未聞、見所未見。實則不然,它和我們的生活息息相關,更可以說是我們每天都在使用它。前文說過,它其實就是解決問題的一種策略,你每天都在解決著既有相同,又有不同
的各式各樣的問題,小到吃飯睡覺,大到學習工作,時時刻刻都有著不同的策略,你每天都在使用著大大小小,相似而又不同的演算法。所以,不要說你不懂演算法,其實你每天都在用。
演算法的特性
有窮性:演算法是由若干條指令組成的有窮序列,總是在執行若干次後結束,切不可永不停止。
確定性:演算法的每一步驟必須有確切的定義,無歧義。
可行性:演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。
輸入輸出:有0個或多個輸入,有1個或多個輸出。
(有的時候,也把輸入和輸出分成兩條特性來算。)
怎樣才算一個「好「演算法?
一個「好」演算法的評定的標準應該有以下幾點。
正確性:演算法的正確性是評價一個演算法優劣的最重要的標準。
可讀性:演算法的可讀性是指一個演算法可供人們閱讀的容易程度。
健壯性(容錯性):健壯性是指一個演算法對不合理數據輸入的反應能力和處理能力。
時間複雜度(高效性):演算法的時間複雜度是指執行演算法所需要的計算工作量。
空間複雜度(低儲存性):演算法的空間複雜度是指演算法需要消耗的內存空間。
演算法的內容大概就寫這麼多吧,或許以後還會有新的感悟,那就到時候再補上。你們覺著還有什麼需要補充的,也可以在評論寫下或者聯繫我。


TAG:全球大搜羅 |