Python資料結構與演算法筆記(6)

2021-08-22 06:04:47 字數 828 閱讀 4155

problem-solving-with-algorithms-and-data-structure-using-python 中文版

7 圖和圖的演算法

頂點 邊 權重 路徑 迴圈 

沒有迴圈的圖形稱為非迴圈圖

沒有迴圈的有向圖稱為有向無環圖或dag。

圖抽象資料型別如下:

實現圖的兩種方式:鄰接矩陣和鄰接表

鄰接矩陣:

鄰接矩陣優點是簡單,對於小圖,很容易看到哪些節點連線到其他節點。但是大多數單元格是空的,即稀疏。

鄰接表:是實現稀疏連線圖更空間高效的方法。在鄰接表實現中,我們儲存graph物件中所有頂點的主列表,然後圖中每個頂點物件維護連線到它的其它頂點的列表。

鄰接表實現的優點是允許我們緊湊地表示稀疏圖。鄰接表還允許我們容易找到直接連線到特定頂點的所有鏈結。

廣度優先搜尋bfs

深度優先搜尋dfs

拓撲排序是深度優先搜尋的簡單但有用的改造。

拓撲排序採用有向無環圖,並且產生所有其頂點的線性排序,使得如果圖 g 包含邊(v,w),則頂點 v 在排序中位於頂點 w 之前。定向非迴圈圖在許多應用中使用以指示事件的優先順序。

可以幫助找到圖中高度互連的頂點的集群的一種圖演算法被稱為強連通分量演算法(scc)。我們正式定義圖 g 的強連通分量 c 作為頂點 c⊂v 的最大子集,使得對於每對頂點 v,w∈c,我們具有從 v 到 w 的路徑和從 w 到 v 的路徑。

一旦確定了強連通分量,我們就可以通過將乙個強連通分量中的所有頂點組合成乙個較大的頂點來顯示該圖的簡化檢視。

最短路徑的演算法:「dijkstra演算法」

prim生成樹演算法

Python資料結構與演算法筆記(2)

problem solving with algorithms and data structure using python 中文版 3 基本資料結構 棧 佇列 deques 列表是一類資料的容器,它們資料項之間的順序由新增或刪除的順序決定。一旦乙個資料項被新增,它相對於前後元素一直保持該位置不變...

Python資料結構與演算法筆記(3)

problem solving with algorithms and data structure using python 中文版 4 遞迴 遞迴是一種解決問題的方法,將問題分解為更小的子問題,直到得到乙個足夠小的問題可以被很簡單地解決,通常遞迴設計函式呼叫自身。遞迴允許我們編寫優雅的解決方案,...

資料結構與演算法(python) 學習筆記

1 集合和字典一樣,它們的元素沒有乙個明確定義的順序 2 慎用 beta 4,5 有坑 3 常用的序列運算子 s t序列的連線,k s序列連線,val in s檢查元素val在序列s中,val not in s 檢查元素val不在序列s中 4 慎用break和continue語句,有坑 5 在函式中...