圖狀矩陣數據結構之簡介

圖(graph)是用於表示對象之間聯結關係的抽象數據結構,通常使用頂點(vertex)集和邊(edge)集進行描述:頂點表示對象,邊表示對象之間的關係。根據邊是否有方向和權值,圖又可細分為有向圖/無向圖以及有權圖/無權圖等。當邊有方向時,我們將一條邊連接的兩個頂點按方向分為原點(source vertex)和終點(destination vertex)。

對於可抽象成用圖表示的數據,我們通常稱之為圖狀結構數據(graph-structured data)。隨著互聯網的飛速發展,這類數據正在受到越來越多的關注:社交網絡中用戶間的關注和互動、互聯網上網頁之間的連接、電子商務平臺上用戶對物品的評分記錄等都是典型的圖狀結構數據。在天體物理學、計算化學、生物信息學等自然科學領域,圖狀結構數據也是無處不在。對這些數據的分析都離不開基於圖的算法設計,以及面向圖的高性能計算系統。

圖狀矩陣數據結構之簡介

儘管圖在數學上可以對應成矩陣,然而圖狀結構數據的一些特點讓我們很難將實現傳統科學計算應用所得到的經驗直接移植過來:現實世界的圖通常平均度數(即邊數與頂點數的比值)只有幾到幾百,與上千萬甚至上億個頂點的規模相比顯得極為稀疏,且度數呈冪律分佈;而科學計算中我們經常面對的是稠密矩陣,或是較為規則的稀疏矩陣,數據的劃分和並行較為容易。

另一方面,基於圖的算法通常採用迭代式計算,同時,並非每一輪迭代都需要所有頂點參與計算,且活躍的頂點集不斷變化的特點也使得圖狀結構數據的處理更加複雜,導致通用的大數據處理系統難以有效應對圖計算問題。例如,MapReduce在每輪迭代計算中都需要反覆讀寫磁盤,產生大量不必要的開銷;而Spark的數據模型RDD由於其不變性(Immutable),產生的大量中間結果會導致不必要的內存佔用從而影響能夠處理的數據集大小和數據處理的效率。


分享到:


相關文章: