演算法與程式有什麼區別?

來源:酷知科普網 3.03W

演算法是為一個問題或一類問題給出的解決方法與具體步驟,是對問題求解過程的一種準確而完整的邏輯描述。程式則是為了用計算機解題或控制某一過程而編排的一系列指令的集合。程式不等於演算法。但是,通過程式設計可以在計算機上實現演算法。

演算法與程式有什麼區別?

你可能解答過一個有趣的問題——“人、狼、羊過河”問題。有個人帶著三隻狼、三隻羊,要過河去。有一條小船。船上除了運載一個人外,至多再載狼或羊中的任意兩隻。但難點是:當人不在場時,如果狼的數量大於等於羊的數量,那麼羊會被狼吃掉。為了安全過河,你有什麼辦法呢?

解決它的演算法有多個,其中一個解決方案是這樣的:

開始,運一隻狼過河,空船回來;

接著,運一隻狼和一隻羊再過河,到對岸後,再運兩隻狼回來;

然後,運兩隻羊過河,空船回來;

最後,分兩次將狼全部運過河;

由此,過河問題就得以解決了。

演算法與程式有什麼區別? 第2張

可見,演算法是為一個問題或一類問題給出的解決方法與具體步驟,是對問題求解過程的一種準確而完整的邏輯描述。它由有限步驟的操作序列組成,代表著用系統的方法描述解決問題的策略機制。

演算法是一組嚴謹定義運算順序的規則,每一個規則都是有效的、明確的,此順序必須在有限的次數下終止。在上面的過河問題中,如果第一步中改為:“運一隻狼過河,再運這隻狼回來”,那麼,說明人沒找到好辦法,在反覆進行無用操作。此類演算法,是失敗的,永遠也實現不了既定目標

演算法描述,一般可以使用漢、英等自然語言,比較通俗易懂。也可以使用流程圖、偽程式碼表格等其他工具。

在古代,演算法通常用於數值計算。中國古代的籌算口訣、珠算口訣及其執行規則就是演算法的雛形。它所解決的是數值計算問題。現代演算法,已超出數值計算範圍。

演算法與程式有什麼區別? 第3張

程式則是為了用計算機解題或控制某一過程而編排的一系列指令的集合。這些指令,可以是計算機的機器指令,也可以是組合語言和高階程式設計語言。

程式不等於演算法。但是,通過程式設計可以在計算機上實現演算法。在實際應用中,也許只需一條(組)程式設計語句,就可以完成演算法的基本要素處理,包括資料物件的運算和操作,以及順序、選擇、迴圈結構的控制。通過程式模組設計,可以實現演算法中的遞推、遞迴、迭代等一系列基本演算法,也包括形式演繹、資料結構、數論圖論、加密解密、科學決策等複雜演算法。

因此,運用計算機解決問題的過程,通常可以分成三個階段:分析問題、設計演算法和編制程式實現演算法。由於計算機運算速度快,儲存資料量大,大大提高了演算法實現效率

熱門標籤