一種基于廣度優先遍歷的圖處理優化方法
【技術領域】
[0001] 本發明屬于計算機數據處理技術領域,更具體地,涉及一種基于廣度優先遍歷的 圖處理優化方法。
【背景技術】
[0002] 圖是計算機科學中最常用的一類抽象數據結構,現實世界中的許多應用場景都需 要用圖結構表示,與圖相關的處理和應用幾乎無處不在。傳統應用如最優運輸路線問題、地 圖、科技文獻引用關系、疾病爆發路徑預測等;新興應用如社交網絡分析、語義Web分析、數 據挖掘、蛋白質分解等。
[0003] 伴隨著圖應用及圖處理技術的快速發展,圖算法理論也層出不窮。廣度優先搜索 是最簡便的圖搜索算法之一,也是很多重要圖算法的基礎。
[0004] 隨著信息化時代的到來,各種信息以爆炸模式增長,導致圖的規模日益增大,我們 通常要分析處理圖的上億個頂點和邊,面對如此大規模的圖結構,如何有效的執行圖處理 就成為一個新的挑戰。
[0005] 現有大規模圖數據處理的主要研宄方向之一是基于外存儲器存儲和處理圖數據。 但該方式的問題是如何在分層存儲體系上高效地進行圖處理。然而由于圖數據的高關聯 性、低局部性,以及圖算法訪問的隨機性,操作系統中傳統的基于時空局部性優化的存儲訪 問機制很難發揮作用,而圖的遍歷查詢是大部分圖算法的構建基礎,在外存模式下如何優 化圖查詢的1/0,加快圖遍歷的性能由此就成為高效處理圖數據的關鍵。
【發明內容】
[0006] 針對現有技術的以上缺陷或改進需求,本發明提供了一種基于廣度優先遍歷的圖 處理優化方法,其目的在于在不改變圖處理模型和用戶操作復雜度的前提下,以充分利用 外存儲設備順序I/O性能和提高系統文件緩存命中率。通過使用BFS算法重新布局外存儲 設備上的數據,使其符合一般圖數據的I/O特性,優化圖處理的性能。
[0007] 為實現上述目的,本申請提供了一種基于廣度優先遍歷的圖處理優化方法。
[0008] 該方法的步驟如下:
[0009] (1)輸入圖數據文件;
[0010] (2)判斷圖數據文件是否已經根據圖頂點進行編號排序形成有序文件,若是,則跳 轉(4)步繼續執行;若否,跳轉到(3)步執行;
[0011] (3)將圖數據文件按頂點編號排序,形成順序文件;
[0012] (4)根據順序文件生成其對應的索引文件信息;
[0013] (5)將圖的頂點及邊的索引信息加載入內存;
[0014] (6)隨機選取一個頂點進行廣度優先遍歷,生成廣度優先遍歷樹,并記錄圖頂點的 訪問順序,生成遍歷后的序列文件;
[0015] (7)根據遍歷序列文件與原始頂點編號,生成頂點映射表;
[0016] (8)依次讀取順序文件內容,并根據頂點映射表來更新頂點編號并重新排序,直至 完成對所述圖數據文件中所有頂點的操作,此即為布局處理后的圖數據文件,從而完成整 體的圖像遍歷處理過程。
[0017] 另外,圖結構存儲文件格式現在主要有邊列表(Edgelist)、鄰接列表 (Adjacencylist)、CSR (Compressed Sparse Row)、CSC (Compressed Sparse Column)等等, 其中CSR和CSC格式是完全按頂點編號排序的順序文件。
[0018] 總體而言,通過本發明所構思的以上技術方案與現有技術相比,由于圖數據文件 具有頂點、邊數量巨大的特點以及BFS路徑最短的特點,由此,采用了 BFS樹數據布局方 案,實現圖數據的重新布局,所需時間短至秒數量級,相對于圖數據處理時間可以忽略不 計,但對隨后圖數據的處理效率有很大的提高,特別是針對現有單機外存模式類型的圖處 理引擎如 GraphChi (Aapo Kyrola 等人 2012 年發表的文章 GraphChi: Large-Scale Graph Computation on Just a PC),處理效率可以提高幾倍。
【附圖說明】
[0019] 圖1為本發明的流程示意圖;
[0020] 圖2為8個頂點的圖結構及圖鄰接表;
[0021] 圖3為重新編號后圖結構及圖鄰接表。
【具體實施方式】
[0022] 為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對 本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并 不用于限定本發明。此外,下面所描述的本發明各個實施方式中所涉及到的技術特征只要 彼此之間未構成沖突就可以相互組合。
[0023] 本實例中選取8個頂點、11條邊的圖來作詳細說明,同時為了進一步闡述清楚本 發明,假設一個BFS訪問序列為Li= a a2, a3......an,定義BFS訪問序列中相鄰兩頂點的 編號為連續編號,則該序列的順序性加1,即ai+1_ai= 1時Δ」=1,其他情況下Δ」=0,則 定義一個BFS訪問序列的連續性為
[0024] (1)輸入一個如圖2的圖數據文件,且文件格式為CSR,該圖的鄰接表信息也在圖 2中相應給出。
[0025] (2)判斷圖數據文件是否已根據圖頂點編號排序后的文件,根據用戶輸入的文件 格式為CSR,可以判斷該圖數據文件是已排序的文件,不需要對文件重新根據圖頂點編號排 序。
[0026] (3)根據上述CSR順序文件生成其對應的索引文件信息,。
[0027] (4)將圖的頂點及邊的索引信息加載入內存。
[0028] (5)在本例中選取1號頂點作為BFS訪問的根頂點進行廣度優先遍歷,生成廣度優 先遍歷樹,并記錄圖頂點的訪問順序為L1= {1,2, 5, 7, 3, 4, 6, 8},生成遍歷后的序列文件。
[0029] (6)根據遍歷序列文件與原始頂點編號,生成圖頂點的映射表為{1_>1,2_>2, 3_> 5, 4->7, 5->3, 6->4, 7->6, 8->8}。
[0030] (7)依次讀取原順序文件內容,并根據頂點映射表更新頂點編號并排序,得到圖3 所示的圖結構及圖鄰接表,此即為布局處理后的順序圖數據文件。
[0031] 根據圖2、圖3的結構信息,均選取1號頂點作為BFS的訪問根頂點,則相應的BFS 訪問序列為L1= {1,2, 5, 7, 3, 4, 6, 8},L2= {1,2, 3, 4, 5, 6, 7, 8},進而對應的訪問順序性為 si = 2和s2 = 7,其中Sl< S2,使用BFS重新布局后的文件順序訪問次數增多,整體的圖 遍歷順序性提高,且隨著圖規模的增大,圖處理系統的效率也會相應提高。
[0032] 本領域的技術人員容易理解,以上所述僅為本發明的較佳實施例而已,并不用以 限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含 在本發明的保護范圍之內。
【主權項】
1. 一種基于廣度優先遍歷的圖處理優化方法,其特征在于:該方法包括以下步驟: (1) 輸入圖數據文件; (2) 判斷圖數據文件是否已經根據圖頂點進行編號排序形成有序文件,若是,則跳轉 (4)步繼續執行;若否,跳轉到(3)步執行; (3) 將圖數據文件按頂點編號排序,形成順序文件; (4) 根據順序文件生成其對應的索引文件信息; (5) 將圖的頂點及邊的索引信息加載入內存; (6) 隨機選取一個頂點進行廣度優先遍歷,生成廣度優先遍歷樹,并記錄圖頂點的訪問 順序,生成遍歷后的序列文件; (7) 根據遍歷序列文件與原始頂點編號,生成頂點映射表; (8) 依次讀取順序文件內容,并根據頂點映射表來更新頂點編號并重新排序,直至完成 對所述圖數據文件中所有頂點的操作,此即為布局處理后的圖數據文件,從而完成整體的 圖像遍歷處理過程。
【專利摘要】本發明公開了一種基于廣度優先遍歷(BFS,Breadth First Search)的圖處理優化方法,屬于計算機存儲及數據處理技術領域,解決現有基于外部存儲器的大規模圖處理系統在訪問圖數據時產生大量外存I/O,嚴重影響文件緩存命中率,削弱I/O性能的問題,從而提高圖處理系統的效率。本發明在不改變圖處理模型和用戶操作復雜度的前提下,以充分利用外存儲設備順序I/O性能和提高系統文件緩存命中率為目標,提出了針對圖遍歷類型應用進行I/O優化的BFS樹數據布局方案。通過對不同來源、類型、尺寸的圖數據集進行數據布局優化,圖處理系統的效率有明顯提升。
【IPC分類】G06F17/30
【公開號】CN104915427
【申請號】CN201510326328
【發明人】施展, 馮丹, 歐陽夢云, 黃力, 郭鵬飛, 韓江, 余靜, 鮑匡迪
【申請人】華中科技大學
【公開日】2015年9月16日
【申請日】2015年6月15日