演算法入門:什麼是演算法?


在現代的社會中,科技與網路已經是人類生活中不可或缺的一部分了。隨著科技的進步,Facebook、Amazon、Appple這些科技公司與科技產品也成為新興產業的龍頭。 當我們在滑FB或在Youtube上看影片時,總是很常看到演算法這個名詞,到底甚麼是演算法呢?

何謂演算法?

以學術性的說法來說,在數學以及電腦科學領域,演算法就是一個被定義好,計算機(電腦)可執行之指示的有限步驟或次序。 做為一個有效的方法,它包含了一系列的步驟與指令,並可以在有效的時間與空間內清楚的表現出來。 白話文來說,當你今天遇到一個數學問題,你會去思考這個問題該怎麼解決,並且運用數學公式把他解出來,在這個過程中,我們所用的公式就可以稱他為演算法。

再用個更簡單的例子舉例好了,今天我想吃一顆荷包蛋,那「如何把蛋做成荷包蛋」就變成我要解決的問題,我需要的步驟為

  1. 把蛋從冰箱拿出來
  2. 把平底鍋放在火爐上
  3. 開火
  4. 倒油進入平底鍋
  5. 把蛋打進去
  6. 灑一點鹽
  7. 翻面
  8. 看到蛋熟了把他從鍋子裡倒出來

這些步驟就可以視為「如何把蛋做成荷包蛋」這個問題的演算法了。

圖/應對燈泡不亮的簡單演算法流程圖(圖片來源:維基百科)

演算法的概念是不是比想像中簡單呢?

核心內容

演算法的核心是建立問題之抽象的模型和明確解決的目標,可以根據具體的問題選擇不同的模式和方法完成演算法的設計。是一種解決問題的邏輯思考。而我們可以用文字、數字、圖片或符號來表示這些過程。

演算法的特徵

根據維基百科的定義,我們可以在高德納(Donald Ervin Knuth)先生的著作《電腦程式設計藝術》裡簡單概括出幾個演算法的特徵

  1. 輸入:一個演算法必須有零個或以上輸入量。
  2. 輸出:一個演算法應有一個或以上輸出量,輸出量是演算法計算的結果。
  3. 明確性:演算法的描述必須無歧義,以保證演算法的實際執行結果是精確地符合要求或期望,通常要求實際執行結果是確定的。
  4. 有限性:依據圖靈的定義,一個演算法是能夠被任何圖靈完備系統類比的一串運算,而圖靈機只有有限個狀態、有限個輸入符號和有限個轉移函式(指令)。而一些定義更規定演算法必須在有限個步驟內完成任務。
  5. 有效性:又稱可行性。能夠實現,演算法中描述的操作都是可以通過已經實現的基本運算執行有限次來實現。

圖片
圖片
圖片
圖片
圖片
圖片
(使用 Facebook 留言外掛程式 留言無法滿足本網站參加活動之資格,僅供非會員討論使用)
互動地圖
interactive taiwan map