演算法入門

演算法簡介

演算法在電腦科學和軟體工程中無處不在。選擇合適的演算法和資料結構可提高我們的計劃成本和時間效率。

什麼是演算法?非正式地,演算法是完成特定任務的過程。 [Skiena:2008:ADM:1410219]具體來說,演算法是一個明確定義的計算過程,它將一些值(或一組值)作為輸入,併產生一些值或一組值作為輸出。因此,演算法是將輸入轉換為輸出的一系列計算步驟。Cormen et。人。沒有明確指出演算法不一定需要輸入。 [Cormen:2001:IA:580470]

形式上,演算法必須滿足五個特徵:[Knuth:1997:ACP:260999]

  1. 有限性。演算法必須始終在有限數量的步驟之後終止。
  2. 確定性。必須精確定義演算法的每個步驟; 必須嚴格規定要採取的行動。正是這種質量[Cormen:2001:IA:580470]用術語明確定義來指代。
  3. 輸入。演算法具有零個或多個輸入。這些是在演算法開始之前或在執行時動態地給予演算法的量。
  4. 輸出。演算法具有一個或多個輸出。這些是與輸入具有指定關係的數量。我們期望當一次又一次地給出相同的輸入時,演算法產生相同的輸出。
  5. 有效性。通常預期演算法也是有效的。它的操作必須足夠基本,以便它們可以在原則上完成,並且在有限的時間內由使用鉛筆和紙的人完成。

缺乏有限性但滿足演算法的所有其他特徵的過程可以稱為計算方法。 [Knuth 的:1997:ACP:260999]