⑴ 演算法分析的兩個主要方面是什麼
空間復雜性和時間復雜性。
時間復雜度和空間復雜度是衡量演算法好差的重要指標,正確性和簡潔性、可讀性和可運行性是從軟體工程角度要求系統實現的目標。
一個演算法應包含有限的操作步驟,而不能是無限的,事實上有窮性往往是在合理的范圍之內,如果讓計算機執行一個歷時1000年才結束的演算法,這雖然是有窮的,但超過了合理的限度,不能將其視為有效演算法。
演算法分析注意事項:
循環結構是演算法教學的重點和難點,要注意分散此難點,做到循序漸進,逐層深入,例如在教演算法含義時先滲透一點循環結構的知識,在教演算法3 種基本結構時可先給出循環結構的一些簡單的例子,到了教條件語句和循環語句時再逐步加深。
輸入數據的長度(通常考慮任意大的輸入,沒有上界),值域通常是執行步驟數量(時間復雜度)或者存儲器位置數量(空間復雜度)。演算法分析是計算復雜度理論的重要組成部分。
⑵ 都說程序執行的效率跟演算法有關,究竟什麼是計算機的演算法呢怎麼理解的怎麼使用
演算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。 演算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。 一個演算法應該具有以下五個重要的特徵: 1、有窮性: 一個演算法必須保證執行有限步之後結束; 2、確切性: 演算法的每一步驟必須有確切的定義; 3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件; 4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的; 5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。 計算機科學家尼克勞斯-沃思曾著過一本著名的書《數據結構十演算法= 程序》,可見演算法在計算機科學界與計算機應用界的地位。 [編輯本段]演算法的復雜度 同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間復雜度和空間復雜度來考慮。 時間復雜度 演算法的時間復雜度是指演算法需要消耗的時間資源。一般來說,計算機演算法是問題規模n 的函數f(n),演算法的時間復雜度也因此記做 T(n)=Ο(f(n)) 因此,問題的規模n 越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間復雜度(Asymptotic Time Complexity)。 空間復雜度 演算法的空間復雜度是指演算法需要消耗的空間資源。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。 詳見網路詞條"演算法復雜度" [編輯本段]演算法設計與分析的基本方法 1.遞推法 遞推法是利用問題本身所具有的一種遞推關系求問題解的一種方法。它把問題分成若干步,找出相鄰幾步的關系,從而達到目的,此方法稱為遞推法。 2.遞歸 遞歸指的是一個過程:函數不斷引用自身,直到引用的對象已知 3.窮舉搜索法 窮舉搜索法是對可能是解的眾多候選解按某種順序進行逐一枚舉和檢驗,並從眾找出那些符合要求的候選解作為問題的解。 4.貪婪法 貪婪法是一種不追求最優解,只希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因為它省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪婪法常以當前情況為基礎作最優選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。 5.分治法 把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合並。 6.動態規劃法 動態規劃是一種在數學和計算機科學中使用的,用於求解包含重疊子問題的最優化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態規劃的思想是多種演算法的基礎,被廣泛應用於計算機科學和工程領域。 7.迭代法 迭代是數值分析中通過從一個初始估計出發尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實現這一過程所使用的方法統稱為迭代法。 [編輯本段]演算法分類 演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法。 演算法可以宏泛的分為三類: 有限的,確定性演算法 這類演算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類演算法得出的結果常取決於輸入值。 有限的,非確定演算法 這類演算法在有限的時間內終止。然而,對於一個(或一些)給定的數值,演算法的結果並不是唯一的或確定的。 無限的演算法 是那些由於沒有定義終止定義條件,或定義的條件無法由輸入的數據滿足而不終止運行的演算法。通常,無限演算法的產生是由於未能確定的定義終止條件。
⑶ 計算機演算法的一般含義
所謂演算法就是面對某些實際問題,把人想像的自然想法用計算機術語來表示出來
⑷ 計算機演算法是什麼
計算機演算法是以一步接一步的方式來詳細描述計算機如何將輸入轉化為所要求的輸出的過程,或者說,演算法是對計算機上執行的計算過程的具體描述。
⑸ 計算機的演算法有哪些特性
計算機的演算法具有的特性:
1.有窮性。一個演算法應包含有限的操作步驟,而不能是無限的。事實上"有窮性"往往指"在合理的范圍之內"。如果讓計算機執行一個歷時1000年才結束的演算法,這雖然是有窮的,但超過了合理的限度,人們不把他視為有效演算法。
2. 確定性。演算法中的每一個步驟都應當是確定的,而不應當是含糊的、模稜兩可的。演算法中的每一個步驟應當不致被解釋成不同的含義,而應是十分明確的。也就是說,演算法的含義應當是唯一的,而不應當產生"歧義性"。
3. 有零個或多個輸入、所謂輸入是指在執行演算法是需要從外界取得必要的信息。
4. 有一個或多個輸出。演算法的目的是為了求解,沒有輸出的演算法是沒有意義的。
5.有效性。 演算法中的每一個 步驟都應當能有效的執行。並得到確定的結果。
計算機演算法簡介:
演算法必須具備以下性質:
(1)演算法首先必須是正確的,即對於任意的一組輸入,包括合理的輸入與不合理的輸入,總能得到預期的輸出。如果一個演算法只是對合理的輸入才能得到預期的輸出,而在異常情況下卻無法預料輸出的結果,那麼它就不是正確的。
(2)演算法必須是由一系列具體步驟組成的,並且每一步都能夠被計算機所理解和執行,而不是抽象和模糊的概念。
(3)每個步驟都有確定的執行順序,即上一步在哪裡;下一步是什麼,都必須明確,無二義性。
(4)無論演算法有多麼復雜,都必須在有限步之後結束並終止運行;即演算法的步驟必須是有限的。在任何情況下,演算法都不能陷入無限循環中。
一個問題的解決方案可以有多種表達方式;但只有滿足以上4個條件的解才能稱之為演算法。
⑹ 計算機演算法指的是什麼
演算法,從字面意義上解釋,就是用於計算的方法,通過該這種方法可以達到預期的計算結果。目前,被廣泛認可的演算法專業定義是:演算法是模型分析的一組可行的,確定的,有窮的規則。
通俗的說,演算法也可以理解為一個解題步驟,有一些基本運算和規定的順序構成。但是從計算機程序設計的角度看,演算法由一系列求解問題的指令構成,能根據規范的輸入,在有限的時間內獲得有效的輸出結果。演算法代表了用系統的方法來描述解決問題的一種策略機制。
完成同一件事的不同的演算法完成的時間和佔用的資源可能並不相同,這就牽扯到效率的問題。演算法的基本任務是針對一個具體的問題,找到一個高效的處理方法,從而完成任務。而這就是我們的責任了。
演算法的五個特徵:
一個典型的演算法一般都可以抽象出5個特徵:
有窮性:演算法的指令或者步驟的執行次數和時間都是有限的。
確切性:演算法的指令或步驟都有明確的定義。
輸入:有相應的輸入條件來刻畫運算對象的初始情況。
輸出:一個算應有明確的結果輸出。
可行性:演算法的執行步驟必須是可行的。
⑺ 什麼叫演算法什麼叫計算機演算法
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
演算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化演算法在內的一些演算法,包含了一些隨機輸入。
特徵
一個演算法應該具有以下五個重要的特徵:
有窮性(Finiteness)演算法的有窮性是指演算法必須能在執行有限個步驟之後終止;
確切性(Definiteness)演算法的每一步驟必須有確切的定義;
輸入項(Input)一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
輸出項(Output)一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
可行性(Effectiveness)
演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。
例1:輸入矩形的邊長,計算並輸出矩形面積
輸入矩形的邊長a和b
面積s=a*b
輸出s的值,演算法結束
例2:交換兩個變數a和b的值
輸入兩個數a和b
t=a;
a=b;
b=t;
輸出變數a和b的值,演算法結束
例3:輸入3個任意的整數,按從小到大的順序輸出這三個整數
輸入三個數a、b和c
如果a>b,就交換a、b的值
如果a>c,就交換a、c的值
如果b>c,就交換b、c的值
輸出a、b、c的值,演算法結束
例4:輸入一個正整數n,輸出1+2+3+...+n的和
1)輸入n的值
2)s=0;
3)i=1;
4)s=s+i;
5)如果i<n,則i=i+1,轉步驟4)
6)輸出s的值,演算法結束
例5:輸入兩個正整數a和b,輸出它們的最大公約數
1)輸入兩個數a和b
2)r=a%b;
3)如果r=0,轉步驟7)
4)a=b;
5)b=r;
6)轉步驟2)
7)輸出b的值,演算法結束