什麼是 Algorithm (演算法) ?

1
什麼是 Algorithm (演算法) ?:演算法(Algorithm)是在有限時間內,為了解決特定問題而設計的一組明確步驟或規則,用來從輸入推導出對應的輸出。它是電腦程式的核心邏輯,本質上就是「怎樣一步一步把事情做完」。

什麼是 Algorithm (演算法) ?

演算法(Algorithm)是在有限時間內,為了解決特定問題而設計的一組明確步驟或規則,用來從輸入推導出對應的輸出。它是電腦程式的核心邏輯,本質上就是「怎樣一步一步把事情做完」。


一、演算法的正式定義與特性

在數學與電腦科學中,演算法通常被定義為:由有限且定義清楚的一系列指令所組成,執行時從初始輸入開始,經過有限步驟後產生輸出並停止。

常見的幾個關鍵特性如下:

  • 明確性:每一步指令必須有清楚、不含糊的描述,相同輸入在相同條件下結果應一致。

  • 有限性:必須在有限步驟、有限時間內結束,而不能無限循環。

  • 可行性:每一步在實際運算上都能有效執行,且所需資源(時間、記憶體)在可接受範圍內。

  • 輸入與輸出:可以有零個或多個輸入,至少有一個明確的輸出結果。


二、演算法與程式的關係

一個程式可以視為「資料結構 + 演算法 + 程式語言與開發環境」的組合,其中演算法負責描述如何操作與處理資料,是程式的「靈魂」。​

  • 資料結構:資料如何被儲存與組織,例如陣列、鏈結串列、樹、圖。

  • 演算法:針對這些資料要執行的具體步驟,例如搜尋、排序、遍歷、更新。

  • 程式語言與工具:將演算法以程式碼形式實作並在電腦上執行。

在實務上,「先設計演算法,再用程式語言實作」是一個標準流程,良好的演算法設計往往比單純的語法技巧更為關鍵。​


三、演算法的用途與例子

演算法可用於計算、資料處理與自動推理等多種任務,是電腦處理資訊的核心機制。

常見應用示例:

  • 排序:如氣泡排序、快速排序,用來將資料依大小或字典序排列。

  • 搜尋:如線性搜尋、二元搜尋,從資料集中找出目標項目。

  • 最佳化與路徑:如最短路徑演算法,用於導航、物流規劃。

  • 資料處理:如統計計算、成績單列印、薪資計算等商業邏輯。

  • 平台與推薦:社群媒體、影音平台的推薦、廣告投放排序等,也都是一種「決策演算法」。​

一個日常化比喻是把演算法想成「食譜」:食材是資料,食譜上的每一個步驟是指令,照著步驟做完,就得到預期的菜餚結果。


四、演算法設計與分析

設計演算法時,會先建立問題的抽象模型並明確求解目標,然後選擇合適的方法與步驟來完成。

常見考量包括:

  • 正確性:對所有合法輸入都能產生正確輸出。

  • 時間複雜度:執行所需時間大致如何隨輸入規模成長(例如以 nn 表示輸入大小時的成長階)。

  • 空間複雜度:需要多少額外記憶體。

  • 可維護性與可讀性:是否易於理解、除錯與改進。

在教學與實務中,演算法分析常用來比較不同方案的效率,例如對同一批資料,快速排序通常比氣泡排序在大多數情況下更有效率。


五、電腦演算法的類型與分類

電腦可執行的演算法大致可分為數值運算與非數值運算兩大類。​

  • 數值運算演算法:處理數值計算,例如代數運算、方程解法、數值近似。

  • 非數值運算演算法:處理事務、文字或結構化資料,例如檔案管理、帳務系統、資料庫查詢。

此外,演算法也可依策略與結構進一步分類(例如分治法、貪心法、動態規劃、回溯法等),這些屬於演算法設計的典型模式,幫助在不同問題上重複運用成熟思路。