圖論學習筆記1
1.基本概念
圖(graph)
頂點(vertex)
邊(edge)
同構(Isomorphism )不改變頂點代表的事物本身,不改變頂點之間的邏輯關係
有向圖(Directed Graph)邊有方向,可單、雙向
無向圖( Undirected Graph)
權重(weight)邊的權重,可表示距離等
路徑(path)不會重複經過同一個點和同一條邊的路線
最短路徑(shortest path)
環(loop)
連通圖(connected graph)任意2個頂點之間都存在路徑
連通分量(connected component)最大的連通子圖
2.樹
定義:連通、無環
概念:
節點(node)
枝(branch)圖的邊
根(root)任意節點都可以作為根
葉(leaf)無法再分枝的節點
度(degree)某節點擁有子樹的數量
層(level)/深度(depth)/高度(height)每個節點離跟的距離
父節點(parent)
子節點(child)
兄弟(sibling)
祖先(ancestor)
後代(descentdant)
森林(forest)
特點:樹中任意兩點間有唯一路徑
三、圖的遍歷
1.廣度優先搜尋(BFS,breadth first search)
從某點出發,訪問與此點鄰近的所有點,再訪問與這些相鄰點鄰近的所有點 ,以此類推
步驟:
1)把起始點放入queue中(佇列,先進先出)
2)重複以下步驟,直到queue為空
從queue中取出頭點
找出與此點相鄰的未被遍歷的點放入佇列中
2.深度優先搜尋(DFS,depth first search)
從某點出發,訪問一個鄰近點,再訪問下一個鄰近點,直到再無下一個,則往回找(描述的不太貼切)
步驟:
1)起點放入stack中(棧,後進先出)
2)重複以下步驟,直到stack為空
訪問stack的頂點,注意不要取出
找到此點相鄰的一個未遍歷的點,標記為遍歷,並放入stack中
如果此點無未遍歷的相鄰點,則從stack中彈出