iT邦幫忙

鐵人檔案

2019 iT 邦幫忙鐵人賽
回列表
Software Development

30天學演算法和資料結構 系列

覺得學程式就是在學邏輯,所以決定要回歸最基本的演算法和資料結構,每天學一種。
大致分成幾個部分:排序、堆疊、搜尋,和幾個問題來討論。程式碼主要用Python來示範。

鐵人鍊成 | 共 31 篇文章 | 160 人訂閱 訂閱系列文 RSS系列文
DAY 21

[資料結構] 圖 (Graph)

圖 (Graph),在資料結構上指的是點和點之間的關聯的東西,並不是數學定義上的兩點成一線,三點成一面的那種圖。一張圖由數條邊(Edge)和數個點(Vertex...

2018-11-05 ‧ 由 ramonliao 分享
DAY 22

[資料結構] 圖的深度優先走訪 (Depth-first Search )

昨天介紹了各式各樣的圖,今天就來討論圖的搜尋。 之前有提過深度優先搜尋,是用程式碼遞迴的概念,一層一層的我裡面找出所有可能。但之前的資料是線性的,那如果是圖的話...

2018-11-06 ‧ 由 ramonliao 分享
DAY 23

[資料結構] 圖的廣度優先走訪 (Breadth-first Search)

昨天有深度,今天有廣度,人生難過沒法度~ (好難笑...呵呵) 今天就用這張圖來開啟主題。 這是一個無向圖,比較接近現實中的地圖。今天我們要從 1 號城市搭飛...

2018-11-07 ‧ 由 ramonliao 分享
DAY 24

[資料結構] 雜湊 (Hash)

很多人以為雜湊就是加密,但雜湊不是加密! 雜湊不是加密! 雜湊不是加密! 雜湊是因為他的特性很適合來做加密的運算,但真的不等同於加密! 雜湊 (Hash) 雜...

2018-11-08 ‧ 由 ramonliao 分享
DAY 25

[演算法] K-means 分群 (K-means Clustering)

先說說什麼是分群?分群就是對所有數據進行分組,將相似的數據歸類為一起,每一筆數據的能有一個分組,每一組稱作為群集 (Cluster)。那分類根據什麼來定義,常用...

2018-11-09 ‧ 由 ramonliao 分享
DAY 26

[演算法] 最短路徑 (Floyd-Warshall 演算法)

網路上有各式各樣的地圖出現,背後的運算就有很多的演算法、資料庫和參數來支持。還記得之前討論過有關圖的深度及廣度搜尋,就有提到過怎麼找最短的路徑,而這只是其中最基...

2018-11-10 ‧ 由 ramonliao 分享
DAY 27

[演算法] 並查集 (Union-find Algorithm)

並查集又稱不相交集資料結構,其實是之前討論過的資料樹的延伸。剛開始的樹每一個都是獨立的,一棵樹只有一個節點。在透過尋找相同的根節點 (root),來將這些樹逐漸...

2018-11-11 ‧ 由 ramonliao 分享
DAY 28

[演算法] 最短路徑 (Dijkstra 演算法)

今天來討論最短路徑的另一個演算法,Dijkstra Algorithm。主要內容是指定一個點 (源點) 到其餘各個頂點的最短路徑,也稱作「單源最短路徑」。 我...

2018-11-12 ‧ 由 ramonliao 分享
DAY 29

[演算法] 最短路徑 (Bellman-Ford 演算法)

不論是之前提到過的 Floyd-Warshall 或 Dijkstra 演算法,雖然都很好用也好理解,但卻有一個缺點是無法解決帶有「負權迴路」 (或稱「負權環」...

2018-11-13 ‧ 由 ramonliao 分享
DAY 30

[演算法] 最短路徑 (Bellman-Ford 演算法 - 佇列優化)

昨天有稍微提過因為 Bellman-Ford 演算法不像 Dijkstra 演算法是用貪心策略找出每個頂點的最短路徑去做擴展,今天就來討論如果 Bellman-...

2018-11-14 ‧ 由 ramonliao 分享