當前位置:首頁 » 操作系統 » 一個演算法的效率可分為

一個演算法的效率可分為

發布時間: 2025-01-31 11:05:12

演算法的效率一般用什麼來度量A時間復雜度B空間復雜度C執行的時間D佔用的時間

C 演算法效率是指演算法執行的時間,演算法執行時間需通過依據該演算法編制的程序在計算機上運行時所消耗的時間來度量。而度量一個程序的執行時間通常有兩種方法*(一)事後統計的方法(二)事前分析估算的方法。

Ⅱ 演算法分析:如何分析一個演算法的效率好壞

當我們說演算法分析的時候我們在說什麼?(狹義的技術層面的定義):
演算法分析指的是: 對演算法在運行時間和存儲空間這兩種資源的利用效率進行研究
即時間效率和空間效率。

時間效率指演算法運行有多快;
空間效率指演算法運行時需要多少額外的存儲空間。
(時間效率也叫時間復雜度;空間效率也叫空間復雜度。)

在計算機時代早期,時間和空間這兩種資源都是及其昂貴的。但經過半個多世紀的發展,計算機的速度和存儲容量都已經提升了好幾個數量級。
現在空間效率已經不是我們關注的重點了,但時間效率的重要性並沒有減弱到這種可以忽略的程度。

所以,當我們分析一個演算法的的時候,我們只關注它的時間效率

當我們遇到一個演算法時,我們可以用這樣一個通用的思路去分析它:

首先第一卜伍知步考慮這個演算法的輸入規模是什麼?即輸入參數,再換句話說也就是待解決的問題有多大?
從這里入手是因為一個顯而易見的規律就是,不管使用什麼演算法, 輸入規模越大,運行效率肯定會更長
輸入規模的確定要根據具體要解決的實際問題的細節來決定,相同的問題不同的細節,輸入規模是不一樣的。比如:一個拼寫檢查的演算法,
如果演算法關注的是單獨的字元檢查,那麼字元的數量就是輸入規模的大小;
如果演算法關注的是片語搭配的檢查,那麼這個輸入規模就要比單獨的字元檢查的輸入規模要小,這里輸入規模就是詞的數量了。

接下來第二步考慮這個演算法的運行時間,即這個演算法運行地快慢。
我們可以簡單地用計時的方法,即某個演算法運行了多少毫秒。
但這個方式有一個缺陷就是在不同計算機上,相同演算法的運行時間是不一樣,因為有的電腦快有的電腦慢。
所以有沒有一種度量方法可以排除這些無關因素?
答案是肯定的,我們可以關注演算法執行了多少步,即 操作的運行次數 。而且為了簡化問題我們只需關注最重要的操作步驟,即所謂的 基本操作 ,因為基本操作已經足夠可以決定這個演算法的品質。
比如一個演算法通常是最內層的循環中是最費時的操作,那我們就只需要把它循環了多少次作為基本操作進行研究。

這里需要延伸的一點是在大規模的輸入情況下考慮執行次數的增長次數。因為針對小規模的輸入,在運行時間的差別上不太明顯。比如只對100個數字進行排序,不管你用什麼排序演算法,時間效率都差不多。只有在輸入規模變大的時候,演算法的差異才變得既明顯又重要了起來。
簡單來說,
如果一個演算法在輸入規模變大時,但運行時間平緩增長,那麼我們就可以說它就是一個效率高的演算法;
而如果一個演算法在輸入規模變大時,它的運行時間成指數級增長,那就可以說這個演算法的效率很差。
總而言之就是,對基本操作的大規模輸入情況下的變化的研究才更具有深遠意義。

當我們了解了輸入規模對演算法時間效率的會產生影響,但演算法的執行效率卻不僅僅只受輸入規模的影響,某些情況下,演算法的執行效率更取決於輸入參數的細節。
比如:一個簡單的順序查找的演算法,在數組里查找數字 9:
在數組 l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9 ] 里查找數字 9 和在相同的輸入規模的另一個數組 l2 = [ 9 , 1, 2, 3, 4, 5, 6, 7, 8]里查找數字 9,在數組 l2 的執行效率肯定更高。
上面小例子中的兩個數組就體現了兩個極端: 輸入最優情況 輸入最壞情況
相對應的,
在輸入最優情況下的演算法就叫 最優效率
在輸入最壞情況下的演算法就叫 最差效率
在這里有兩個經驗性的規則:

在現實情況下,輸入是「隨機」的,既不會是最優輸入也不會是最壞輸入。所以這里又型消要引出一個概念,即: 平均效率
首先指出,我們絕不能用「最優效率」和「最差效率」的平均數求得 平均效率 ,即便有時間這個平均數和真正的 平均效率 巧合地一致。
正確的步驟是:我們要對輸入規模 n 做一些假設。
對於上面的順序查找演算法的例子,標準的假設有兩個:

基於這兩個假設求平均效率可得:

由此,平均效率橘燃 C(n) = p(n+1) / 2 + n(1-p)

由此可知,

從這個例子可以發現,平均效率的研究要比最差效率和最優效率的研究困難很多:
我們要將輸入規模 n 劃分為幾種類型,對於同類型的輸入,使得演算法的執行次數是相同的。

演算法是計算機科學的基礎,以後會繼續更新演算法相關的隨筆,對演算法感興趣的朋友歡迎關注本博客,也歡迎大家留言討論。
我們正處於大數據時代,對數據處理感興趣的朋友歡迎查看另一個系列隨筆:
利用Python進行數據分析 基礎系列隨筆匯總

Introction to The Design and Analysis of Algorithms, Third Edition by Anany Leitin

Ⅲ 設計一個好的演算法通常要考慮哪些要求

數據結構中評價一個好的演算法,應該從四個方面來考慮,分別是:

一、演算法的正確性。

二、演算法的易讀性。

三、是演算法的健壯性。

四、是演算法的時空效率(運行)。

演算法的設計取決於數據(邏輯)結構,演算法的實現取決於所採用的存儲結構。數據的存儲結構本質上是其邏輯結構在計算機存儲器中的實現。為了全面反映一個數據的邏輯結構,它在內存中的影像包括兩個方面,即數據元素之間的信息和數據元素之間的關系。

不同的數據結構有相應的操作。數據的操作是在數據的邏輯結構上定義的操作演算法,如檢索、插入、刪除、更新和排序。

(3)一個演算法的效率可分為擴展閱讀

該演算法的一般性質包括:

1.通用性對於任何符合輸入類型的輸入數據,都可以根據演算法解決問題,並且包保證了計算結構的正確性。

2.演算法的每一條指令都必須能夠被人或機器執行。

3.確定性演算法應該在每一步之後都有明確的下一步指示。也就是說,確保每個步驟都有下一步行動的指示,不缺少或只包含含糊的下一步行動指示。

4.有限演算法的執行必須在有限步結束。

Ⅳ 一個演算法的效率可分為哪兩個效率

分為時間效率和空間效率,這兩個是決定一個演算法優劣的主要評判標准。
但是由於現在硬碟價格比較便宜,所以更多的是考慮 時間性能。

熱點內容
batsql語句 發布:2025-01-31 14:00:13 瀏覽:733
沈陽加密狗 發布:2025-01-31 13:54:58 瀏覽:705
聯想伺服器怎麼裝windows7 發布:2025-01-31 13:54:52 瀏覽:874
java二級考試歷年真題 發布:2025-01-31 13:50:31 瀏覽:171
編程一刻 發布:2025-01-31 13:36:44 瀏覽:585
編程小草出土 發布:2025-01-31 13:33:27 瀏覽:579
如何設置伺服器屏蔽你的ip 發布:2025-01-31 13:25:58 瀏覽:243
扣扣的獨立密碼是什麼密碼 發布:2025-01-31 13:23:42 瀏覽:132
pythonlist的用法 發布:2025-01-31 12:56:15 瀏覽:130
搭建美國節點伺服器 發布:2025-01-31 12:55:27 瀏覽:858