演算法定義
演算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對某一規範的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合某個問題,執行這個演算法就不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。
一個演算法應該具有以下七個重要的特徵:
①有窮性(Finiteness):演算法的有窮性是指演算法必須能在執行有限個步驟之後終止;
②確切性(Definiteness):演算法的每一步驟必須有確切的定義;
③輸入項目(Input):一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸 入是指演算法本身定出了初始條件;
④輸出項(Output):演算法有一個或多個輸出,以反映輸入資料加工後的結果。沒 有輸出的演算法是毫無意義的;
⑤可行性(Effectiveness):演算法中執行的任何計算步驟都是可以分解為基本的可執行 的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性);
⑥高效性(High efficiency):執行速度快,佔用資源少;
⑦健壯性(Robustness) :對數據響應正確。
時間複雜度
在電腦科學中,演算法的時間複雜度是一個函數,它定量描述了該演算法的運行時間,時間複雜度常用大O符號(大O符號(Big O notation)是用來描述函數漸進式的數學符號。更確切地說,它是用另一個(通常較簡單的)函數來描述一個函數數量級的漸近上界。在數學中,它一般用來刻畫被截斷的無窮級數尤其是漸近級數的剩餘項;在計算機科學中,它在分析算法複雜性的方面非常有用。)表述,使用這種方式時,時間複雜度可稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。
大O,簡而言之可以認為它的意義是「order of」(大約是)。
無窮大漸近
大O符號在分析演算法效率的時候非常有用。舉個例子,解決一個規模為 n 的問題所花費的時間(或所需步驟的數目)可以被求得:T(n) = 4n^2 - 2n 2。
當n 增加時,n^2; 項將開始占主導地位,而其他各項可以被忽略-舉例說明:當n = 500,4n^2; 項是2n 項的1000倍大,因此在大多數場合下,省略後者對表達式的值的影響將是可以忽略的。
以上是python中的演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!