用計算機分析實際網絡的性質面臨的第一個問題就是如何在計算機中表示一個網絡。
在傳統的圖算法中,兩種最常見的表示圖的基本結構是鄰接矩陣( Adjacency matrix)和鄰接表( Adjacency list)。
鄰接矩陣( Adjacency matrix)
圖G的鄰接矩陣 A =\(( a_{ij})_{N*N}\)是一個N階方陣,第 i 行第 j 列上的元素\(a_{ij}\)定義如下:
加權有向圖
圖中的邊是有向的( Directed)和有權的(Weighted)。邊是有向的是指存在一條從頂點i指向頂點j的邊(i,j)並不一定意味着存在一條從頂點j指向頂點i的邊(j,i)。對於有向邊(i,j),頂點i稱為始點,頂點j稱為終點。邊是有權的是指網絡中的每條邊都賦有相應的權值,以表示相應的兩個節點之間的聯系的強度。
我們以一個包含5個人的朋友關系網絡為例來做說明。假設朋友關系可分為三類:一般、較好和很好,這三類關系分別用權值1、2和3表示。
其鄰接矩陣表示:
例如,上圖對應的領接矩陣可以表示為:
加權無向圖
圖中的邊是無向的( Undirected)和有權的。所謂無向的是指任意點對(i,j)與(j,i)對應同一條邊。頂點i和j也稱為無向邊(i,j)的兩個端點(End-points)。
例如,在5個人之間的加權有向的朋友關系網絡中,如果把朋友關系定義為雙方都認為對方是朋友,把兩人之間的親密程度定義為兩人觀點中的較低值,那么就得到下圖所示的一個加權無向網絡。
另一方面,也有一些實際網絡本身確實就是加權無向圖。一個典型的例子就是科研人員之間的合作網絡,其中,每個科研人員為一個節點,兩個科研人員如果合作發表過文章,那么就在相應的兩個節點之間有一條邊,邊的權值對應於兩個人合作發表論文的數量。
其鄰接矩陣表示:
例如,上圖對應的領接矩陣可以表示為:
無權有向圖
圖中的邊是有向的和無權的( Unweighted)。所謂無權圖實際上也可意味着圖中邊的權值都相等(通常可假設每條邊的權值均為1)。
如果我們不需要考慮朋友關系的親密程度(相當於把閾值取為О),就得到下圖所示的無權有向網絡。
其鄰接矩陣表示:
例如,上圖對應的領接矩陣可以表示為:
無權無向圖
圖中的邊是無權的和無向的。無權無向圖可以通過對有向圖的無向化處理和加權圖的閾值化處理而得到。
如果把朋友關系定義為雙方都認為對方是朋友並且不考慮關系的親密程度的差異,那么朋友關系網絡就是一個無權無向網絡。
其鄰接矩陣表示:
例如,上圖對應的領接矩陣可以表示為:
鄰接表( Adjacency list)與三元組
實際的大規模復雜網絡往往是很稀疏的,這意味着其對應的鄰接矩陣中大部分的元素均為零,這樣的矩陣稱為稀疏矩陣。在計算方法中,針對稀疏矩陣有專門的節省空間的存儲技術,鄰接表和三元組表示就是找到這些邊的有效的存儲圖的方法。
鄰接表
在圖算法中,表示稀疏的無權圖的最常用方法是鄰接表。它對每個頂點i建立一個單鏈表(即鄰接表),這個單鏈表由鄰接於頂點i的所有頂點構成。
例如,無權有向圖鄰接表表示如下(圖中的節點標號A ~ E分別替換為數字1 ~ 5 ):
以第一行的1245為例,它表示有從頂點1分別指向頂點2、頂點4和頂點5的三條邊。在無向圖的鄰接表中,每條邊會出現兩次。
三元組
www上有許多公開的實際網絡數據,這些數據常見的一種表示方式是三元組形式。
三元組可以很容易地表示一般的加權有向圖。
以下圖中的含5個頂點的加權有向網絡為例(圖中的節點標號A ~ E分別替換為1 ~ 5),其三元組表示形式如下:
以第一行的三元組1 23為例,它表示有一條從頂點1指向頂點2的邊,且該邊的權值為3。在無向圖的三元組表示中,每條邊也會出現兩次。
參考:
[1] 汪小帆,李翔,陳關榮.網絡科學導論[M].北京:高等教育出版社,2012