Graph Theory
Graph Theory
n-m+f=2
• n:# of vertices
• m:# of edges
• f: # of faces
• Trees: m=n-1, f=1
• Cubes: n=8, m=12, f=6
MST
• Kruskal’s algorithm:
• Prim’s algorithm:
• Algorithm Kruskal(G)
• Input : G=(V, E) 為無向加權圖 (undirected weighted graph) ,其中
V={v0,…,vn-1}
• Output : G 的最小含括樹 (minimum spanning tree, MST)
• T← //T 為 MST ,一開始設為空集合
• while T 包含少於 n-1 個邊 do
• 選出邊 (u, v) ,其中 (u, v)E ,且 (u, v) 的加權 (weight) 最小
• E←E-(u, v)
• if ( (u, v) 加入 T 中形成循環 (cycle) ) then 將 (u, v) 丟棄
• else T←T(u, v)
• return T
Kruskal’s Algorithm -Construct MST
Prim’s algorithm
• Algorithm Prim(G)
• Input : G=(V, E) 為無向加權圖 (undirected weighted graph) ,其中 V={v
0,…,vn-1}
• Output : G 的最小含括樹 (minimum spanning tree, MST)
• T← //T 為 MST ,一開始設為空集合
• X←{vx} // 隨意選擇一個頂點 vx 加入集合 X 中
• while T 包含少於 n-1 個邊 do
• 選出 (u, v)E ,其中 uX 且 vV-X ,且 (u, v) 的加權 (weight) 最小
• T←T(u, v)
• X←X{v}
• return T
8 7 8 7
b c d b c d
4 9 4 9
2 2
a 11 i 4 14 e a 11 i 14 e
6 4
6
8 7 10 7
8 10
h g f h g f
1 2 1 2
8 7 8 7
b c d b c d
4 9 9
4
2 2
a 11 i 4 14 e 11
6 a i 4 14 e
6
8 7 10 7
8 10
h g f h g f
1 2 2
1
8 7 8 7
b c d b c d
4 9 9
4
2 2
a 11 i 4 14 e 11
6 a i 4 14 e
6
8 7 10 7
8 10
h g f h g f
1 2 2
1
8 7
b c d
4 9
2
a 11 i 4 14 e
6
8 7 10
h g f
1 2
8 7
b c d
4 9
2
a 11 i 4 14 e
6
8 7 10
h g f
1 2
8 7
b c d
4 9
2
a 11 i 4 14 e
6
8 7 10
h g f
1 2
One-to-all shorted path