所有文章
(Day 26) 最小生成樹 (Minimum Spanning Tree)
在前幾天,我們學習了最短路徑問題 (Shortest Path),例如 Dijkstra、Bellman-Ford、Floyd-Warshall、A*,今天要介紹的則是圖論中的另一個核心問題 —— 最小生成樹 (Minimum Spanning Tree, MST)
(Day 25) A* 搜尋演算法 (A-star Search)
在前幾天,我們介紹了 Dijkstra、Bellman-Ford、Floyd-Warshall,這些都是經典的最短路徑演算法。今天要談的是 A* 搜尋演算法 (A-star Search) —— 一個結合最短路徑與啟發式 (Heuristic) 的演算法,在人工智慧 (AI)、遊戲與導航中應用極為廣泛
(Day 24) Floyd-Warshall 演算法
在前兩天我們分別介紹了 Dijkstra 與 Bellman-Ford ,它們都解決的是 單源最短路徑 (Single Source Shortest Path, SSSP) 問題。今天要介紹的是 Floyd-Warshall 演算法 —— 一個能計算 所有點對 (All-Pairs Shortest Path, APSP) 的演算法
(Day 23) Bellman-Ford 演算法
在前一天我們介紹了 Dijkstra 演算法,它能有效解決 單源最短路徑 (Single Source Shortest Path, SSSP) 問題,但有一個限制: 不能處理負權重邊 (Negative Weights)。然而,現實世界的很多問題 (例如金融套利、債務網路、價格波動) 都可能出現負權重,這時候我們就需要 Bellman-Ford 演算法。
(Day 22) Dijkstra 最短路徑演算法 (Dijkstra’s Algorithm)
Dijkstra 最短路徑演算法是一種用於計算從單一源點到圖中所有其他節點的最短路徑的經典演算法。這個演算法適用於加權圖,其中邊的權重必須是非負的,核心思想是每次選擇「距離起點最近」的尚未處理節點,並用它來更新鄰居的最短距離,這種策略屬於貪心演算法 (Greedy Algorithm)
(Day 21) 圖演算法 (Graph Algorithm)
自從我們 Day 10 簡單地說一下圖結構後,就再也沒提到這個詞,我們今天開始就要介紹這個應用非常廣泛的圖 (Graph) 的演算法總覽,後續會接著介紹常見的圖演算法,因為圖是非線性資料結構中最重要的一員,在學術研究與實務應用上都有極高地位,從網路連線、地圖導航、社交網路到金融交易,幾乎都離不開圖的建模與演算法
(Day 20) 貪婪演算法 (Greedy Algorithm)
貪婪演算法 (Greedy Algorithm) 是一種在每一步選擇中都採取在當前狀態下最好或最優 (即最有利) 的選擇,從而希望導致結果是全局最好或最優的演算法。這種方法每次做出選擇時,只考慮當前最優解,而不考慮未來的後果
(Day 19) 動態規劃 (Dynamic Programming)
動態規劃 (Dynamic Programming; DP) 是一種將複雜問題分解為較小子問題,並儲存子問題解以避免重複計算的演算法設計方法。它常用於具有「重疊子問題」和「最優子結構」性質的問題
(Day 18) 分治法 (Divide and Conquer)
前面介紹了幾個簡單又常見的排序與搜尋的演算法,接下來我們來談談演算法設計策略,仿間有很多演算法的書並不會特地把 Divide and Conquer 或 Dynamic Programming 編成一個章節,這也導致新手學完了一些演算法後,不知道自己學的是 Divide and Conquer 或 Dynamic Programming,這也包括我,所以我們在來花幾天的時間來談談這些演算法設計策略。