圖論 (Graph)
本章節介紹圖論核心演算法與常見應用。圖論是競賽程式設計中非常重要的一個領域,從最基礎的圖形儲存與遍歷,到進階的二分圖與拓撲排序,都是解決許多複雜關聯問題的基石。
1. 圖論名詞解釋#
介紹圖 (Graph) 的基本構成元素(節點、邊)以及常見術語,如連通性、度數、環與子圖等概念。
2. 建立一張圖#
學習如何在程式中儲存圖形結構。介紹鄰接串列 (Adjacency List) 與鄰接矩陣 (Adjacency Matrix) 的實作方式與適用場景。
3. BFS 廣度優先搜尋#
透過佇列 (Queue) 實作層序遍歷。適用於尋找無權圖的最短路徑以及二維網格上的擴散問題。
4. DFS 深度優先搜尋#
透過遞迴實作深度遍歷。適用於連通塊計算、窮舉路徑以及許多進階圖論演算法的基礎框架。
5. 二分圖#
介紹二分圖的定義與性質,並學習如何使用 DFS 染色法來判斷一張圖是否為二分圖。
6. 拓墣排序#
針對有向無環圖 (DAG) 的排序演算法。介紹 Kahn’s Algorithm 與 DFS 兩種實作方式,常用於處理具有依賴關係的任務排序。