1. 程式人生 > >圖論學習筆記1

圖論學習筆記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中彈出