算法與程序有何區(qū)別和聯(lián)系?
算法與程序有何區(qū)別和聯(lián)系?
聯(lián)系:程序是計算機指令的有序**,是算法用某種程序設(shè)計語言的表述,是算法在計算機上的具體實現(xiàn)。
區(qū)別:
一、形式不同
1、算法:算法在描述上一般使用半形式化的語言。
2、程序:程序是用形式化的計算機語言描述的。
二、性質(zhì)不同
1、算法:算法是解決問題的步驟。
2、程序:程序是算法的代碼實現(xiàn)。
三、特點不同
1、算法:算法要依靠程序來完成功能。
2、程序:程序需要算法作為靈魂。
算法與程序的區(qū)別與聯(lián)系
算法和程序的區(qū)別是:
(1) 兩者定義不同。算法是對特定問題求解步驟的描述,它是有限序列指令。
而程序是實現(xiàn)預(yù)期目的而進行操作的一系列語句和指令。
說通俗一些算法是解決一個問題的思路,程序,是解決這些問題所具體好寫的代碼。算法沒有語言界限。他只是一個思路。為實現(xiàn)相同的一個算法,用不同語言編寫的程序會不一樣。
(2)兩者的書寫規(guī)定不同。程序必須用規(guī)定的程序設(shè)計語言來寫,而算法很隨意。算法是一系列解決問題的清晰指令,也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時間內(nèi)獲得所要求的輸出。
算法常常含有重復(fù)的步驟和一些邏輯判斷。
簡單算法舉例 例:求 1*2*3*4*5
步驟 1 :先求 1*2 ,得到結(jié)果 2 。
步驟 2 :將步驟 1 得到的乘積 2 再乘以 3 ,得到結(jié)果 6 。
步驟 3 :將步驟 2 得到的乘積 6 再乘以 4 ,得到結(jié)果 24 。
步驟 4 :將步驟 3 得到的乘積 24 再乘以 5 ,得到**結(jié)果 120 。
算法與程序的聯(lián)系 :
算法和程序都是指令的有限序列 ,但是程序是算法,而算法不一定是 程序。
程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法。算法的主要目的在于為人們提供閱讀了解所執(zhí)行的工作流程與步驟。數(shù)據(jù)結(jié)構(gòu)與算法要通過程序的實現(xiàn),才能由計算機系統(tǒng)來執(zhí)行。可以這樣理解,數(shù)據(jù)結(jié)構(gòu)和算法形成了可執(zhí)行的程序。
程序
擴展資料:
(1)算法中的指令描述的是一個計算,當(dāng)其運行時能從一個初始狀態(tài)和(可能為空的)初始輸入開始,經(jīng)過一系列有限而清晰定義的狀態(tài),最終產(chǎn)生輸出并停止于一個終態(tài)。一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)移不一定是確定的。隨機化算法在內(nèi)的一些算法,包含了一些隨機輸入。
形式化算法的概念部分源自嘗試解決希爾伯特提出的判定問題,并在其后嘗試定義有效計算性或者有效方法中成形。
這些嘗試包括庫爾特·哥德爾、Jacques Herbrand和斯蒂芬·科爾·克萊尼分別于1930年、1934年和1935年提出的遞歸函數(shù),阿隆佐·邱奇于1936年提出的λ演算,
1936年Emil Leon Post的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當(dāng)前,依然常有直覺想法難以定義為形式化算法的情況。
(2)計算機程序是一組計算機能識別和執(zhí)行的指令,運行于電子計算機上,滿足人們某種需求的信息化工具。
它以某些程序設(shè)計語言編寫,運行于某種目標(biāo)結(jié)構(gòu)體系上。
打個比方,程序就如同以英語(程序設(shè)計語言)寫作的文章,要讓一個懂得英語的人(編譯器)同時也會閱讀這篇文章的人(結(jié)構(gòu)體系)來閱讀、理解、標(biāo)記這篇文章。
一般的,以英語文本為基礎(chǔ)的計算機程序要經(jīng)過編譯、鏈接而成為人難以解讀,但可輕易被計算機所解讀的數(shù)字格式,然后放入運行。
算法與程序有什么區(qū)別?
算法是為一個問題或一類問題給出的解決方法與具體步驟,是對問題求解過程的一種準(zhǔn)確而完整的邏輯描述。程序則是為了用計算機解題或控制某一過程而編排的一系列指令的**。
程序不等于算法。
但是,通過程序設(shè)計可以在計算機上實現(xiàn)算法。 你可能解答過一個有趣的問題——“人、狼、羊過河”問題。有個人帶著三只狼、三只羊,要過河去。有一條小船。
船上除了運載一個人外,至多再載狼或羊中的任意兩只。但難點是:當(dāng)人不在場時,如果狼的數(shù)量大于等于羊的數(shù)量,那么羊會被狼吃掉。為了安全過河,你有什么辦法呢? 解決它的算法有多個,其中一個解決方案是這樣的: 開始,運一只狼過河,空船回來; 接著,運一只狼和一只羊再過河,到對岸后,再運兩只狼回來; 然后,運兩只羊過河,空船回來; **,分兩次將狼全部運過河; 由此,過河問題就得以解決了。
可見,算法是為一個問題或一類問題給出的解決方法與具體步驟,是對問題求解過程的一種準(zhǔn)確而完整的邏輯描述。它由有限步驟的操作序列組成,代表著用系統(tǒng)的方法描述解決問題的策略機制。 算法是一組嚴(yán)謹(jǐn)定義運算順序的規(guī)則,每一個規(guī)則都是有效的、明確的,此順序必須百科在有限的次數(shù)下終止。
在上面的過河問題中,如果**步中改為:“運一只狼過河,再運這只狼回來”,那么,說明人沒找到好辦法,在反復(fù)進行無用操作。此類算法,是失敗的,永遠(yuǎn)也實現(xiàn)不了既定目標(biāo)。 算法描述,一般可以使用漢、英等自然語言,比較通俗易懂。
也可以使用流程圖、偽代碼表格等其他工具。 在古代,算法通常用于數(shù)值計算。**古代的籌算口訣、珠算口訣及其執(zhí)行規(guī)則就是算法的雛形。它所解決的是數(shù)值計算問題。
現(xiàn)代算法,已超出數(shù)值計算范圍。 程序則是為了用計算機解題或控制某一過程而編排的一系列指令的**。這些指令,可以是計算機的機器指令,也可以是匯編語言和高級程序設(shè)計語言。 程序不等于算法。
但是,通過程序設(shè)計可以在計算機上實現(xiàn)算法。在實際應(yīng)用中,也許只需一條(組)程序設(shè)計語句,就可以完成算法的基本要素處理,包括數(shù)據(jù)對象的運算和操作,以及順序、選擇、循環(huán)結(jié)構(gòu)的控制。通過程序模塊設(shè)計,可以實現(xiàn)算法中的遞推、遞歸、迭代等一系列基本算法,也包括形式演繹、數(shù)據(jù)結(jié)構(gòu)、數(shù)論圖論、加密解密、科學(xué)決策等復(fù)雜算法。 因此,運用計算機解決問題的過程,通??梢苑殖扇齻€階段:分析問題、設(shè)計算法和編制程序?qū)崿F(xiàn)算法。
由于計算機運算速度快,存儲數(shù)據(jù)量大,大大提高了算法實現(xiàn)效率。
算法和程序的區(qū)別
1 ?
算法與源程序的區(qū)別
算法與源程序的區(qū)別如下:
一、形式不同
1、算法:算法在描述上一般使用半形式化的語言。
2、程序:程序是用形式化的計算機語言描述的。
二、性質(zhì)不同
1、算法:算法是解決問題的步驟。
2、程序:程序是算法的代碼實現(xiàn)。
三、特點不同
1、算法:算法要依靠程序來完成功能。
2、程序:程序需要算法作為靈魂。
算法(解題方****而完整的描述):
算法(Algorithm)是指解題方****而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機制。
也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時間內(nèi)獲得所要求的輸出。
如果一個算法有缺陷,或不適合于某個問題,執(zhí)行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務(wù)。
一個算法的優(yōu)劣可以用空間復(fù)雜度與時間復(fù)雜度來衡量。
算法中的指令描述的是一個計算,當(dāng)其運行時能從一個初始狀態(tài)和(可能為空的)初始輸入開始,經(jīng)過一系列有限而清晰定義的狀態(tài),最終產(chǎn)生輸出并停止于一個終態(tài)。一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)移不一定是確定的。
隨機化算法在內(nèi)的一些算法,包含了一些隨機輸入。
形式化算法的概念部分源自嘗試解決希爾伯特提出的判定問題,并在其后嘗試定義有效計算性或者有效方法中成形。