- 計算機數學:算法基礎 線性代數與圖論
- 鄧潔 桂改花
- 854字
- 2020-08-21 17:40:57
1.1.2 算法的特性
問題不同,解決的思路和采取的方法與步驟就有針對性,所以對應的算法也各不相同。但各種算法有如下共同之處:首先計算機要有操作對象,通過輸入,給予計算機問題所涉及的對象;最后要能得到運行結果,即有輸出;在輸入與輸出之間是具體的方法和步驟,這些方法和步驟必須是確定的、正確的、有限的、有效的、通用的。因而,運行于計算機的各種算法有如下特征。
(1)輸入:算法從一個指定集合得到輸入值,可以有0個、1個或多個值,由賦值或輸入語句實現;
(2)輸出:對每個輸入值,算法都要從指定的集合中產生輸出值,輸出值就是問題的解,可以有1個或多個輸出值,由輸出語句實現;
(3)確定性:算法的步驟必須準確定義,不能產生歧義;
(4)正確性:對每一次輸入值,算法都應產生正確的輸出值;
(5)有限性:對任何輸入,算法都應在有限步驟之后產生輸出;
(6)有效性:算法每一步必須能夠準確地執行,并在有限時間內完成;
(7)通用性:算法不只是用于特定的輸入值,應該可以用于滿足條件的所有問題。
例1.1 找出計算機軟件專業錄取的新生中高考總分的最高分。
分析:這個問題等價于求有限整數序列中最大值的算法,可采取以下步驟。
(1)將序列中第一個整數設為臨時最大值(max);
(2)將序列中下一個整數與臨時最大值比較,如果這個數大于臨時最大值,臨時最大值更新為這個整數;
(3)重復第(2)步,一直比較到序列中最后一個數時停止。此時臨時最大值就是序列中的最大整數。
在此算法中,輸入是軟件專業所有新生的高考成績,輸出是高考最高分,算法過程從序列第一項開始,并把序列第一項設為臨時最大值的初始值,接著逐項檢查,如果有一項超過最大值,就把最大值更新為這一項的值,檢查到序列的最后一項結束。算法每進行一步,要么是比較最大值和這項的大小,要么是更新最大值的值,所以每一步的操作都是確定的,能保證最大值是已檢查過的最大整數,結果是正確的。如果序列包含 n 個整數,經過 n-1次比較就結束,所以算法步驟是有限的、有效的。這個算法可以用于求任何有限整數序列問題的最大元素,所以它是通用的。