基礎電腦科學:排序(sorting)演算法入門上

前言排序(sorting)和搜尋(search)是演算法(algorithm)中最常見的入門知識。雖然我們在一般程式開發的場合中較少會需要自己實作排序和搜尋演算法,但排序(sort)和搜尋(search)的觀念也常出現在其他的演算法當中,應用層面很廣。本系列文章將使用 Python 來實作幾個經典演算法。首先我們先來介紹:選擇排序、插入排序和氣泡排序法。 選擇排序法選擇排序法是一種十分直觀的排序演算法(就是選擇最小的值和第一個初始值互

Read More...

基礎電腦科學:演算法概要

前言隨著資訊科技發展,演算法已經無所不在存在我們的生活當中。舉凡上網 google 搜尋資料、下載檔案的壓縮方法、檔案的加密傳輸等,都可以看到演算法運作的蹤跡。一般來說資料結構和演算法是程式設計最基本的內涵,所以有人說:程式設計 = 資料結構 + 演算法。那究竟什麼是演算法/算法呢? 咱們維基百科給了個非常需要慧根才能理解的解釋: 演算法(algorithm),在數學(算學)和電腦科學之中,為任何良定義的具體計算步驟的一個

Read More...

Object Recognition Kitchen 透明物體辨識(演算法概念)

前言這次的文章想要討論一個有趣的題目 – 透明物體辨識,這次的介紹先把題目限定在找出透明物體的位置,並把透明物體的輪廓找出來。 演算法功能簡介我們的演算法目的是要找出影像中的透明物體,並把輪廓圈出來,就像下面這張圖一樣。 其實如果要更精確,應該把想要辨識哪些透明物體、在那些場景、辨識成功率希望有多高、如何定義辨識成功等都說清楚,不過這邊想先帶給大家一個初步的概念,就不討論得太過瑣碎。 演算法概念為了達成這個功能,我們勢必要先收到彩色影

Read More...

淺談二分搜尋法

前言在寫程式的時候,其實會滿常用到「搜尋」的功能。最簡單的搜尋就是在一串數字裡面找出你想要的數字,而這也是我們今天的主題。 這一篇大致上會分成三個部分,第一部分會先介紹線性搜尋法,第二部分介紹二分搜尋法,最後一部分談談二分搜尋法在不同條件底下的實作方式會有什麼不同。 線性搜尋法為了由淺入深,我們從最基礎的線性搜尋法(Linear search)開始談起。就如同它的名字一樣,線性搜尋法就是「從頭到尾一個一個找」,時間複雜度為 O(n)

Read More...