圖的定義與基本術語
圖Graph的定義
圖是一種網狀數據結構,形式化定義如下:
集合DataObject中的所有元素具有相同的特性,V中數據元素常稱爲頂點(vertex),VR是兩個頂點之間關係的集合,P(x,y)表示x和y之間有特定的關聯屬性P。
若<x,y>∈R <x,y>,則 <x,y>表示從頂點x到頂點y的一條弧arc,並稱x爲弧尾(tail)或起始點,稱y爲弧頭(head)或終端點,此時圖中的邊是有方向的,稱這樣的圖爲有向圖。
若<x,y>∈VR ,且有<y,x>∈VR ,即VR是對稱關係,這時以無序對(x,y)來代替兩個有序對,表示x和y之間的一條邊(edge),稱這樣的圖爲無向圖。
ADT
一個頂點的多個鄰接點之間誰先誰後實際上是沒有規定的。但是,如果這個圖使用鄰接矩陣存儲,存儲上就有先後之分了,這裏的First和Next指的就是存儲上的關係。
邊數等於1/2度數
完全圖一定是連通圖
圖的存儲結構
一個一維數組,一個二維數組
對於有向圖:
(1,2) (1,3) (1,4) … 是頂點1的出度。行和即出度。
(2,1) (3,1) (4,1) … 是頂點1的入度。列和即入度。
注意:
1)
節點位置序號:0 1 2 3 4 …
節點內容:1 2 3 4 5 …
2)
表頭節點表順序存儲,後邊的頂點單鏈錶鏈式存儲
3)
頂點單鏈表的先後次序由讀入邊的次序決定,也由頂點單鏈表頭插還是尾插決定
4)
有向圖每條邊被存放一次,無向圖一條邊被存放兩次
如果是網怎麼表示?
需要再加上一個權值域
黃色箭頭描述鄰接表,灰色箭頭描述逆鄰接表
鄰接多重錶針對無向圖