1. 程式人生 > >演算法筆記 --第十章 提高篇(4) --圖演算法專題

演算法筆記 --第十章 提高篇(4) --圖演算法專題

讀書筆記

圖的定義

圖由頂點Vertex邊Edge組成,每條邊的兩端都必須是圖的兩個頂點。而記號G(V,E)表示圖G的頂點集合為V,邊集為E。
一般來說:圖可以分為有向圖無向圖。有向圖是所有邊都有方向,無向圖是所有邊都是雙向的。
頂點的是指和該頂點相連的邊的條數。對於有向圖來說:頂點的出邊條數稱為該頂點的出度,頂點的入邊條數稱為該頂點的入度
頂點和邊都可以有權重。頂點的權值稱為點權,邊的權值稱為邊權。


圖的儲存

鄰接矩陣

const int maxn = 1001;
int G[maxn][maxn];  

演算法筆記給出的建議是鄰接矩陣只適合頂點數目不太大(一般不超過1000)的題目。

鄰接表

怎麼儲存

const int maxn = 10001;
vector<int> Adj[maxn];

Adj[0],Adj[1]…都是邊(vector<int>)。maxn代表頂點。

權值表示

struct Node{
	int v;   //邊的終點編號
	int w;   // 邊權
}
vector<Node> Adj[maxn];



圖的遍歷

DFS

BFS