算法的五個重要特征:1、輸入:一個算法有零個或多個輸入,以刻畫運(yùn)算對象的初始情況。例如,在歐幾里得算法中,有兩個輸入,即m和n。2、確定性:算法的每一個步驟必須要確切地定義。即算
算法的五個重要特征:
1、輸入:一個算法有零個或多個輸入,以刻畫運(yùn)算對象的初始情況。例如,在歐幾里得算法中,有兩個輸入,即m和n。
2、確定性:算法的每一個步驟必須要確切地定義。即算法中所有有待執(zhí)行的動作必須嚴(yán)格而不含混地進(jìn)行規(guī)定,不能有歧義性。例如,歐幾里得算法中,步驟1中明確規(guī)定“以m除以n,而不能有類似以m除n以或n除以m這類有兩種可能做法的規(guī)定。
3、有窮性:一個算法在執(zhí)行有窮步滯后必須結(jié)束。也就是說,一個算法,它所包含的計(jì)算步驟是有限的。例如,在歐幾里得算法中,m和n均為正整數(shù),在步驟1之后,r必小于n,若r不等于0,下一次進(jìn)行步驟1時,n的值已經(jīng)減小,而正整數(shù)的遞降序列最后必然要終止。因此,無論給定m和n的原始值有多大,步驟1的執(zhí)行都是有窮次。
4、輸出:算法有一個或多個的輸出,即與輸入有某個特定關(guān)系的量,簡單地說就是算法的最終結(jié)果。例如,在歐幾里得算法中只有一個輸出,即步驟2中的n。
5、能行性:算法中有待執(zhí)行的運(yùn)算和操作必須是相當(dāng)基本的,換言之,他們都是能夠精確地進(jìn)行的,算法執(zhí)行者甚至不需要掌握算法的含義即可根據(jù)該算法的每一步驟要求進(jìn)行操作,并最終得出正確的結(jié)果。
算法的復(fù)雜度
1.時間復(fù)雜度:算法的時間復(fù)雜度是指算法需要消耗的時間資源。
2.空間復(fù)雜度:算法的空間復(fù)雜度是指算法需要消耗的空間資源。其計(jì)算和表示方法與時間復(fù)雜度類似,一般都用復(fù)雜度的漸近性來表示。
1、用自然語言描述算法
前面關(guān)于歐幾里得算法以及算法實(shí)例的描述,使用的都是自然語言。自然語言是人們?nèi)粘K玫恼Z言,如漢語、英語、德語等。使用這些語言不用專門訓(xùn)練,所描述的算法也通俗易懂。
2、用流程圖描述算法
在數(shù)學(xué)課程里,我們學(xué)習(xí)了用程序框圖來描述算法。在程序框圖中流程圖是描述算法的常用工具由一些圖形符號來表示算法。
3、用偽代碼描述算法
偽代碼是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號來描述算法的工具。它不用圖形符號,因此,書寫方便、格式緊湊,易于理解,便于向計(jì)算機(jī)程序設(shè)計(jì)語言過度。
基本方法
1.遞推法
遞推法是利用問題本身所具有的一種遞推關(guān)系求問題解的一種方法。它把問題分成若干步,找出相鄰幾步的關(guān)系,從而達(dá)到目的,此方法稱為遞推法。
2.遞歸法
遞歸指的是一個過程:函數(shù)不斷引用自身,直到引用的對象已知
3.窮舉搜索法
窮舉搜索法是對可能是解的眾多候選解按某種順序進(jìn)行逐一枚舉和檢驗(yàn),并從眾找出那些符合要求的候選解作為問題的解。
4.貪婪法
貪婪法是一種不追求最優(yōu)解,只希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因?yàn)樗∪チ藶檎易顑?yōu)解要窮盡所有可能而必須耗費(fèi)的大量時間。貪婪法常以當(dāng)前情況為基礎(chǔ)作最優(yōu)選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。
5.分治法
分治法是把一個復(fù)雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。
6.動態(tài)規(guī)劃法
動態(tài)規(guī)劃是一種在數(shù)學(xué)和計(jì)算機(jī)科學(xué)中使用的,用于求解包含重疊子問題的最優(yōu)化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態(tài)規(guī)劃的思想是多種算法的基礎(chǔ),被廣泛應(yīng)用于計(jì)算機(jī)科學(xué)和工程領(lǐng)域。
7.迭代法
迭代法是數(shù)值分析中通過從一個初始估計(jì)出發(fā)尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實(shí)現(xiàn)這一過程所使用的方法統(tǒng)稱為迭代法。
8.分支界限法
與貪婪算法一樣,這種方法也是用來為組合優(yōu)化問題設(shè)計(jì)求解算法的,所不同的是它在問題的整個可能解空間搜索,所設(shè)計(jì)出來的算法雖其時間復(fù)雜度比貪婪算法高,但它的優(yōu)點(diǎn)是與窮舉法類似,都能保證求出問題的最佳解,而且這種方法不是盲目的窮舉搜索,而是在搜索過程中通過限界,可以中途停止對某些不可能得到最優(yōu)解的子空間進(jìn)一步搜索(類似于人工智能中的剪枝),故它比窮舉法效率更高。