可計算性理論,亦稱算法理論或能行性理論,計算機科學的理論基礎(chǔ)之一。是研究計算的一般性質(zhì)的數(shù)學理論。可計算性理論通過建立計算的數(shù)學模型,精確區(qū)分哪些是可計算的,哪些是不可計算的。計算的過程是執(zhí)行算法的過程。可計算性理論的重要課題之一,是將算法這一直觀概念精確化。算法概念精確化的途徑很多,其中之一是通過定義抽象計算機,把算法看作抽象計算機的程序。通常把那些存在算法計算其值的函數(shù)叫做可計算函數(shù)。因此,可計算函數(shù)的精確定義為:能夠在抽象計算機上編出程序計算其值的函數(shù)。這樣就可以討論哪些函數(shù)是可計算的,哪些函數(shù)是不可計算的。
計算:核算數(shù)目,根據(jù)已知量算出未知量;運算。
㈠進位計數(shù)制表示方法 任意一個數(shù)N可以用下式表示: N=(dn-1 dn-2 …… d1 d0 d-1 …… d-m)r = dn-1 rn-1 + dn-2rn-2 + …… +d1r1 + d0r0 + d-1 r-1 + …… d-m r-m 其中:r為基數(shù) n、m為正整數(shù),分別代表整數(shù)和小數(shù)的位數(shù) di 為第i位的數(shù)碼,可以是0~(r-1)中的一個 ri 為第i位的權(quán) ㈡不同進位計數(shù)制的相互轉(zhuǎn)換 1.二進制數(shù)轉(zhuǎn)換成十進制數(shù) 1)按“權(quán)”展開法 例(11011.1)2=1*24+1*23+0*22+1*21+1*20+1*2-1 =27.5 2)按基值重復相乘(除)法 (略) 2.十進制數(shù)轉(zhuǎn)換成二進制數(shù) 1)重復相除(乘)法 規(guī)則:① 整數(shù)部分除2取余數(shù),直到商為0; ② 小數(shù)部分乘2取整數(shù),直到小數(shù)部分為0。
例 將十進制數(shù)123.6875轉(zhuǎn)換成二進制數(shù) 解: ① 整數(shù)部分 重復除以2 得商 余數(shù) 123÷2 61 1 最低位 61÷2 30 1 30÷2 15 0 15÷2 7 1 7÷2 3 1 3÷2 1 1 1÷2 0 1 最高位 整數(shù)部分 (123)10 = 1111011 ② 小數(shù)部分 重復乘以2 得乘積 取整數(shù)部分 0.6875*2 1.3750 1 最高位 0.3750*2 0.7500 0 0.7500*2 1.5000 1 0.5000*2 1.0000 1 最低位 小數(shù)部分 (0.6875)10 = 1011 故(123.6875)10 = 1111011.1011 2)減權(quán)定位法 (略) 3.二進制數(shù)與八進制數(shù)、十六進制數(shù)之間的轉(zhuǎn)換 ① 3位二進制數(shù)對應于1位八進制數(shù) ② 4位二進制數(shù)對應于1位十六進制數(shù) 例 將二進制數(shù)(1111000010.01101)轉(zhuǎn)換成八進制和十六進制數(shù)。 解:① 轉(zhuǎn)換成八進制數(shù) 以小數(shù)點為基準點,按3位為一組劃分二進制數(shù),然后將每一組二進制碼分別轉(zhuǎn)換成對應的八進制碼。
001,111,000,010.011,010 1 7 0 2 . 3 2 即1111000010.01101 = (1702.32)8 ② 轉(zhuǎn)換成十六進制數(shù) 以小數(shù)點為基準點,按4位為一組劃分二進制數(shù),然后將每一組二進制碼分別轉(zhuǎn)換成對應的八進制碼。 0011,1100,0010.0110,1000 3 C 2 . 6 8 即1111000010.01101 = (3C2.68)16 反過來,1位八進制數(shù)對應于3位二進制數(shù),1位十六進制數(shù)對應于4位二進制數(shù),如: (7652.342)8 = 111,110,101,010.011,100,010 (8CE4.D62)16 = 1000,1100,1110,0100.1101,0110,0010 2.2計算機中數(shù)值型數(shù)據(jù)的表示方法 2.2.1 無符號數(shù)和有符號數(shù) ㈠ 無符號數(shù) 無符號數(shù)是指沒有符號的數(shù),即正整數(shù),在機器字長中的全部數(shù)位均用來表示數(shù)值的大小,相當于數(shù)的絕對值。
例如10010110表示96H(十進制數(shù)150)。 對于字長為n位的無符號數(shù)的表示范圍是0~(2n-1)。
如機器字長16位,無符號數(shù)的表示范圍為0~65535。 ㈡ 有符號數(shù) 1、機器真值 對有符號數(shù),在機器內(nèi)部用“1”表示“+”號,用“0”表示“-”,即用數(shù)字來表示“+”、“-”號,并規(guī)定放在有效數(shù)字的前面。
例如有符號數(shù)(小數(shù)): +0.1011 在機器中表示為 01011 ↑小數(shù)點位置 -0.1011 在機器中表示為 11011 ↑小數(shù)點位置 又如有符號數(shù)(整數(shù)): +1100 在機器中表示為 01100 ↑小數(shù)點位置 -1100 在機器中表示為 11100 ↑小數(shù)點位置 有符號數(shù)是指將符號數(shù)字化后放在有效數(shù)字的前面而組成的數(shù)。把符號“數(shù)字化”的數(shù)叫做機器數(shù),而把帶正、負號的數(shù)叫做真值。
2、原碼表示法 原碼表示法是一種最簡單的機器數(shù)表示法,用最高位表示符號位,符號位為“O”表示該數(shù)為正,符號位為“I”表示該數(shù)為負,數(shù)值部分就是原來的數(shù)值,即真值的絕對值,所以原碼表示又稱作帶符號的絕對值表示。 為了書寫方便,約定在整數(shù)的符號位和有效數(shù)值之間加“,”表示區(qū)分,對小數(shù),直接用小數(shù)點“.”來區(qū)分,如0.1011、1.1011、0,1100、1,1100。
整數(shù)原碼的定義為: 0,x 0≤x。
根據(jù)我個人的理解:算法就是解決問題的具體的方法和步驟,所以具有以下性質(zhì):1、有窮性: 一個算法必須保證執(zhí)行有限步之后結(jié)束(如果步驟無限,問題就無法解決)2、確切性:步驟必須明確,說清楚做什么。
3、輸入:即解決問題前我們所掌握的條件。4、輸出:輸出即我們需要得到的答案。
5、可行性:邏輯不能錯誤,步驟必須有限,必須得到結(jié)果。算法通俗的講:就是解決問題的方法和步驟。
在計算機發(fā)明之前便已經(jīng)存在。只不過在計算機發(fā)明后,其應用變得更為廣泛。
通過簡單的算法,利用電腦的計算速度,可以讓問題變得簡單。譬如:計算 1*2*3*4。
*999999999*1000000000 如果人為計算,可想而知,即使你用N卡車的紙張都很難計算出來,即使算出來了,也很難保證其準確性。
如果用VB算法:dim a as integer a=1 For i =1 to 1000000000 a=a*i next i input a 就這樣,簡單的算法,通過計算機強大的計算能力,問題就解決了。關(guān)于這段算法的解釋:i每乘一次,其數(shù)值都會增大1,一直乘到1000000000,這樣,就將從1到1000000000的每個數(shù)都乘了。
而且每乘一次,就將結(jié)束賦給a,這樣,a就代表了前面的相乘的所有結(jié)果,一直乘到1000000000。最后得到的a,就是我們想要的。
〓以下是百度百科復制過來的,如果你有足夠耐心,可以參考一下。 算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時間內(nèi)獲得所要求的輸出。
如果一個算法有缺陷,或不適合于某個問題,執(zhí)行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。
一個算法的優(yōu)劣可以用空間復雜度與時間復雜度來衡量。 算法可以理解為有基本運算及規(guī)定的運算順序所構(gòu)成的完整的解題步驟。
或者看成按照要求設(shè)計好的有限的確切的計算序列,并且這樣的步驟和序列可以解決一類問題。 一個算法應該具有以下五個重要的特征: 1、有窮性: 一個算法必須保證執(zhí)行有限步之后結(jié)束; 2、確切性: 算法的每一步驟必須有確切的定義; 3、輸入:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定除了初始條件; 4、輸出:一個算法有一個或多個輸出,以反映對輸入數(shù)據(jù)加工后的結(jié)果。
沒有輸出的算法是毫無意義的; 5、可行性: 算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。 計算機科學家尼克勞斯-沃思曾著過一本著名的書《數(shù)據(jù)結(jié)構(gòu)十算法= 程序》,可見算法在計算機科學界與計算機應用界的地位。
[編輯本段]算法的復雜度 同一問題可用不同算法解決,而一個算法的質(zhì)量優(yōu)劣將影響到算法乃至程序的效率。算法分析的目的在于選擇合適算法和改進算法。
一個算法的評價主要從時間復雜度和空間復雜度來考慮。 時間復雜度 算法的時間復雜度是指算法需要消耗的時間資源。
一般來說,計算機算法是問題規(guī)模n 的函數(shù)f(n),算法的時間復雜度也因此記做 T(n)=Ο(f(n)) 因此,問題的規(guī)模n 越大,算法執(zhí)行的時間的增長率與f(n) 的增長率正相關(guān),稱作漸進時間復雜度(Asymptotic Time Complexity)。 空間復雜度 算法的空間復雜度是指算法需要消耗的空間資源。
其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。
詳見百度百科詞條"算法復雜度" [編輯本段]算法設(shè)計與分析的基本方法 1.遞推法 遞推法是利用問題本身所具有的一種遞推關(guān)系求問題解的一種方法。它把問題分成若干步,找出相鄰幾步的關(guān)系,從而達到目的,此方法稱為遞推法。
2.遞歸 遞歸指的是一個過程:函數(shù)不斷引用自身,直到引用的對象已知 3.窮舉搜索法 窮舉搜索法是對可能是解的眾多候選解按某種順序進行逐一枚舉和檢驗,并從眾找出那些符合要求的候選解作為問題的解。 4.貪婪法 貪婪法是一種不追求最優(yōu)解,只希望得到較為滿意解的方法。
貪婪法一般可以快速得到滿意的解,因為它省去了為找最優(yōu)解要窮盡所有可能而必須耗費的大量時間。貪婪法常以當前情況為基礎(chǔ)作最優(yōu)選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。
5.分治法 把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最后子問題可以簡單的直接求解,原問題的解即子問題的解的合并。 6.動態(tài)規(guī)劃法 動態(tài)規(guī)劃是一種在數(shù)學和計算機科學中使用的,用于求解包含重疊子問題的最優(yōu)化問題的方法。
其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態(tài)規(guī)劃的思想是多種算法的基礎(chǔ),被廣泛應用于計算機科學和工程領(lǐng)域。
7.迭代法 迭代是數(shù)值分析中通過從一個初始估計出發(fā)尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實現(xiàn)這一過程所使用的方法統(tǒng)稱為迭代法。[編輯本段]算法分類 算法可大致分為基本算法、數(shù)據(jù)結(jié)構(gòu)的算法、數(shù)論與代數(shù)算法、計算幾何的算法、圖論的算法、動態(tài)規(guī)劃以及數(shù)值分析、加密算法、排序算法、檢索算法、隨機化算法、并行算法。
[編輯本段]舉例 經(jīng)典的算法有很多,如:"歐幾里德算法"。
算法是一系列解決問題的清晰指令,也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時間內(nèi)獲得所要求的輸出。
算法常常含有重復的步驟和一些比較或邏輯判斷。如果一個算法有缺陷,或不適合于某個問題,執(zhí)行這個算法將不會解決這個問題。
不同的算法可能用不同的時間、空間或效率來完成同樣的任務。一個算法的優(yōu)劣可以用空間復雜度與時間復雜度來衡量。
算法的時間復雜度是指算法需要消耗的時間資源。一般來說,計算機算法是問題規(guī)模n 的函數(shù)f(n),算法執(zhí)行的時間的增長率與f(n) 的增長率正相關(guān),稱作漸進時間復雜度(Asymptotic Time Complexity)。
時間復雜度用“O(數(shù)量級)”來表示,稱為“階”。常見的時間復雜度有: O(1)常數(shù)階;O(log2n)對數(shù)階;O(n)線性階;O(n2)平方階。
算法的空間復雜度是指算法需要消耗的空間資源。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。
同時間復雜度相比,空間復雜度的分析要簡單得多。 [font class="Apple-style-span" style="font-weight: bold;" id="bks_etfhxykd"]算法 Algorithm [/font] 算法是在有限步驟內(nèi)求解某一問題所使用的一組定義明確的規(guī)則。
通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程序,都是在實施某種算法。
前者是推理實現(xiàn)的算法,后者是操作實現(xiàn)的算法。 一個算法應該具有以下五個重要的特征: 1、有窮性: 一個算法必須保證執(zhí)行有限步之后結(jié)束; 2、確切性: 算法的每一步驟必須有確切的定義; 3、輸入:一個算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指算法本身定除了初始條件; 4、輸出:一個算法有一個或多個輸出,以反映對輸入數(shù)據(jù)加工后的結(jié)果。
沒有輸出的算法是毫無意義的; 5、可行性: 算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。 算法的設(shè)計要求。
算法和程序嘛。。。對過程化程序來說,有個沃思公式:算法+數(shù)據(jù)結(jié)構(gòu)=程序。也就是說一個程序主要包含以下兩方面的信息:1、對數(shù)據(jù)的描述。在程序中要指定用到哪些數(shù)據(jù)以及這些數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。這就是數(shù)據(jù)結(jié)構(gòu)(data structure)。2、對操作的描述。即要求計算機進行操作的步驟,也就是算法(algorithm)。
算法當然要在有窮步后終止啊,不然計算機受得了嗎。。。算法的特性就包含有窮這一條,而且有窮性是指在合理的范圍之內(nèi),你讓一個算法持續(xù)幾千年,也不合常理。
希望對你有用。
算法,指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機制。算法中的指令描述的是一個計算,當其運行時能從一個初始狀態(tài)和(可能為空的)初始輸入開始,經(jīng)過一系列有限而清晰定義的狀態(tài),最終產(chǎn)生輸出并停止于一個終態(tài)。
特征:有窮性,算法必須能在執(zhí)行有限個步驟之后終止;確切性,算法的每一步驟必須有確切的定義;輸入項,一個算法有0個或多個輸入,以刻畫運算對象初始情況;輸出項,一個算法有一個或多個輸出以反映對輸入數(shù)據(jù)加工后的結(jié)果;可行性,算法中執(zhí)行的任何計算步驟都可被分解為基本的可執(zhí)行的操作步驟。
擴展資料:
算法可以宏泛分為三類:
1、有限的、確定性算法:這類算法在有限的一段時間內(nèi)終止。他們可能要花很長時間來執(zhí)行指定的任務,但仍將在一定的時間內(nèi)終止。這類算法得出的結(jié)果常取決于輸入值。
2、有限的、非確定算法:這類算法在有限的時間內(nèi)終止。然而,對于一個(或一些)給定的數(shù)值,算法的結(jié)果并不是唯一的或確定的。
3、無限的算法:是那些由于沒有定義終止定義條件,或定義的條件無法由輸入的數(shù)據(jù)滿足而不終止運行的算法。通常,無限算法的產(chǎn)生是由于未能確定的定義終止條件。
參考資料來源:百度百科-算法
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:1.769秒