演算法是解決某特定問題的一組有窮規則的集合。
演算法設計的先驅者唐納德.e.克努特(donald e.knuth)對演算法的特徵作了如下的描述: (1)有限性。演算法在執行有限步之後必須終止。 (2)確定性。演算法的每一步驟都有精確的定義,要執行的每個動作都是清晰的、無歧義的。 (3)輸入。乙個演算法有0個或多個輸入,它是由外部提供的,作為演算法開始執行前的初始值或初始狀態。演算法的輸入是從特定的物件集合(可以是類、陣列、鍊錶等)中抽取的 (4)輸出。乙個演算法有乙個或多個輸出,這些輸出與輸入有著特定的關係,實際上是輸入的某種函式。不同取值的輸入,產生不同結果的輸出。(5)能行性。演算法的可行性指的是演算法中有待實現的演算法都是基本的演算法,原則上可以由人們用紙和筆,在有限時間內精確地完成。
必須注意到,在實際應用中,有限性的限制是不夠的。乙個實用的演算法,不僅要求步驟有限,同時也要求執行這些步驟所花費的時間是人可以接受的。如果乙個演算法需要執行數以百億億計的運算步驟,從理論上說,它是有限的,最終可以結束。但是,以當代計算機每秒數億次的運算速度,也必須執行數百年以上的時間。這是人們無法接受的,因而是不實用的演算法。同時也應該注意到上述的確定性,指的是演算法要執行的每個動作都是確定的,並非指演算法的執行結果是確定的。大多數演算法不管在什麼時候執行同乙個例項,所得結果都一樣,這種演算法稱為確定性演算法;有些演算法在不同的時間執行同乙個例項,可能會得出不同的結果,這種演算法稱為不確定的演算法或隨機演算法。
演算法設計的整個過程,可以包含:
演算法的定義
演算法 algorithm 是一系列解決問題的清晰指令,也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果乙個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間 空間或效率來完成同樣的任務。乙個演算法的優劣可以用空間複雜度與時間複雜度來衡...
演算法的定義和特性
演算法定義 演算法 algorithm 這個單詞最早出現在波斯數學家阿勒.花刺子密所寫的 印度數字算術 中。如今普遍認可的對演算法的定義是 演算法是解決特定問題的求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法定義中,提到了指令,指令能被人或機器等計算裝置執行。...
演算法的定義及演算法的複雜度
演算法 algorithm 是一系列解決問題的清晰指令,也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果乙個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間 空間或效率來完成同樣的任務。乙個演算法的優劣可以用空間複雜度與時間複雜度來衡...