一種基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法和查詢方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于數(shù)據(jù)庫技術(shù)領(lǐng)域,具體提出了一種基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方 法。
【背景技術(shù)】
[0002] 如今,圖數(shù)據(jù)已經(jīng)被廣泛應(yīng)用于各類網(wǎng)絡(luò)應(yīng)用中,例如網(wǎng)頁鏈接信息,社交網(wǎng)絡(luò)及 語義網(wǎng)絡(luò)等。然而,隨著數(shù)據(jù)規(guī)模的不斷發(fā)展,一個圖數(shù)據(jù)中可能包括百萬個甚至千萬個結(jié) 點,而這些結(jié)點之間也可能存在著千萬條邊以表示這些結(jié)點之間的關(guān)聯(lián)關(guān)系。要存儲并處 理如此大規(guī)模的圖數(shù)據(jù)是一個巨大的挑戰(zhàn),而在一個大規(guī)模圖數(shù)據(jù)中進行針對結(jié)點或結(jié)點 間關(guān)系的查詢,其查詢效率也是備受關(guān)注的。
[0003] 為了能夠更高效的處理不斷加大的規(guī)模的圖數(shù)據(jù),對圖數(shù)據(jù)進行壓縮是一種行而 有效的手段,可以大幅度減少圖數(shù)據(jù)的存儲所需空間,并減少讀取、處理以及查詢圖數(shù)據(jù)的 時間代價。
[0004] 針對大規(guī)模的圖數(shù)據(jù)的壓縮,包括以下幾方面的需求:
[0005] 第一,壓縮后的圖數(shù)據(jù)需具有緊湊性的特性,從而達到減少圖數(shù)據(jù)所占用存儲空 間的目的。
[0006] 第二,針對圖數(shù)據(jù)的壓縮和解壓縮操作都應(yīng)具有高效性,針對圖數(shù)據(jù)進行處理與 查詢時不會消耗過多的時間代價在解壓縮步驟中。
[0007] 第三,更理想的情況是,壓縮后的圖數(shù)據(jù)在針對某一類或幾類處理或查詢時,不必 對其進行解壓縮操作即可完成所做處理或獲得所需查詢結(jié)果,從而提高處理及查詢效率。
[0008] 第四,針對圖數(shù)據(jù)的壓縮方法可以實現(xiàn)針對壓縮比和壓縮時間代價的可調(diào)整化, 根據(jù)實際應(yīng)用需求選擇更合適的壓縮比以及時間代價。
[0009] 圖數(shù)據(jù)壓縮的目標是減少圖數(shù)據(jù)所占用的存儲空間,且依然能夠保持原圖數(shù)據(jù)所 具有的各種主要性質(zhì)?,F(xiàn)有的圖數(shù)據(jù)壓縮方法可以依據(jù)不同的基本理念分為以下幾大類:
[0010] 第一類,基于圖數(shù)據(jù)中結(jié)點度的值,保留其中具有高結(jié)點度的結(jié)點以及其之間的 關(guān)系,從而達到圖數(shù)據(jù)壓縮的目的。在一個圖數(shù)據(jù)中,一些結(jié)點的度的值可能并不高,卻是 連接兩個密集子圖的關(guān)鍵結(jié)點。在基于圖數(shù)據(jù)中結(jié)點度的值的壓縮方法中,可能會在壓縮 過程中從圖數(shù)據(jù)中移除如上所述的結(jié)點,因此壓縮后的圖數(shù)據(jù)將損失原有圖數(shù)據(jù)的部分結(jié) 構(gòu)。
[0011] 第二類,基于圖數(shù)據(jù)中結(jié)點的相似性,將圖數(shù)據(jù)中具有相似鄰居結(jié)點集或相似結(jié) 構(gòu)性質(zhì)的結(jié)點組合為一個新的結(jié)點,并將與之相連接的邊進行整合。在此類方法中,會占用 額外的代價來描述相似結(jié)點集合中各結(jié)點的差異性或結(jié)點間連接的邊的不同。此類壓縮方 法中允許的相似容忍度越大,那么差異描述的占用空間越多,壓縮比越差;而壓縮方法允許 的相似容忍度越小,則可以找到的相似結(jié)點越少,壓縮比也會不佳;而找到一個較平衡的設(shè) 定是十分困難的。
[0012] 第三類,基于圖數(shù)據(jù)中結(jié)點出現(xiàn)的頻率,給予圖數(shù)據(jù)中出現(xiàn)頻率較高的結(jié)點較小 的標號或占用存儲空間較少的標記。此類方法在壓縮時需要使用大量的系統(tǒng)資源進行排序 操作,而目前最好的排序算法的平均時間復(fù)雜度是〇(nlog2n),空間復(fù)雜度是0(1),在針對 大規(guī)模圖數(shù)據(jù)進行壓縮時,在壓縮時間方面也是不理想的。
[0013] 第四類,基于圖數(shù)據(jù)中結(jié)點與結(jié)點間的連接信息的數(shù)據(jù)存儲形式,如鄰接表 (Adjacency List),依靠不同的存儲形式的變種,直接減少表達同樣信息所需的存儲空間。 較簡單的鄰接表壓縮方法無法得到較好的壓縮率,而較復(fù)雜的鄰接表壓縮方法在對其解壓 縮時將消耗更多的解壓縮代價。
[0014] 為了克服現(xiàn)有技術(shù)中圖數(shù)據(jù)的無損性、壓縮時間、壓縮比無法兼顧的缺陷,提出了 一種基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法和查詢方法。本方法在保證圖數(shù)據(jù)結(jié)構(gòu)無損性的同 時,在壓縮時間和壓縮比方面相較別的壓縮方法亦更佳。同時,針對基于本方法壓縮后的圖 數(shù)據(jù)的查詢,其查詢效率亦表現(xiàn)較佳。
【發(fā)明內(nèi)容】
[0015] 本發(fā)明提出了一種基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法,包括下述步驟:
[0016] 步驟一:獲得一組圖數(shù)據(jù),篩選其中所有由三個存在相互關(guān)聯(lián)的結(jié)點構(gòu)成的三角 形元素,構(gòu)成三角形元素的集合;
[0017] 步驟二:在所述集合中,若兩個以上三角形元素之前相互共同具有兩個相同的結(jié) 點,則將所述三角形元素壓縮成一個結(jié)點,得到壓縮結(jié)果。
[0018] 本發(fā)明提出的所述基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法中,在所述步驟一中,設(shè)定 結(jié)點的度的上界和下界用于篩選所述圖數(shù)據(jù)的結(jié)點,從處于所述上界和下界之間的結(jié)點中 篩選出所有由三個存在相互關(guān)聯(lián)的結(jié)點構(gòu)成的三角形元素,構(gòu)成三角形元素的集合。
[0019] 本發(fā)明提出的所述基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法中,所述上界為100以上, 所述下界的取值范圍為2-10。
[0020] 本發(fā)明提出的所述基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法中,在所述步驟一中,對所 有結(jié)點進行倒序統(tǒng)計,所述倒序統(tǒng)計包括如下步驟:
[0021] 步驟a:將圖數(shù)據(jù)中所有結(jié)點按結(jié)點的度進行降序排序,用以優(yōu)化壓縮操作執(zhí)行 效率;
[0022] 步驟b :為每個結(jié)點創(chuàng)建一個空的集合;
[0023] 步驟c :對于圖數(shù)據(jù)中的一個結(jié)點以及結(jié)點度小于此結(jié)點的鄰居結(jié)點,若集合 A|u| ΠΑ|ν|不為空,則三角形元素以如下公式表示:
[0024] Τ = {(u, ν, w) | w e {A I u I Π A | v |}};
[0025] 其中,u表示當前計算結(jié)點,v表示u的鄰居結(jié)點,A表示一個結(jié)點的所有的結(jié)點度 大于當前計算結(jié)點的鄰居結(jié)點集合,A|u|表示所有結(jié)點度大于u的u的鄰居結(jié)點集合,A|v| 表示所有結(jié)點度大于u的ν的鄰居結(jié)點集合,w表示結(jié)點度大于u,且同時是結(jié)點u及結(jié)點 ν的鄰居結(jié)點;
[0026] 步驟d:重復(fù)所述步驟c,直至遍歷圖數(shù)據(jù)中的每一個結(jié)點為止,獲得圖中所有三 角形元素的集合。
[0027] 本發(fā)明提出的所述基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法中,所述圖數(shù)據(jù)為包括社交 網(wǎng)絡(luò)圖數(shù)據(jù)、網(wǎng)頁鏈接圖數(shù)據(jù)和論文引用圖數(shù)據(jù)。
[0028] 本發(fā)明還提出了一種經(jīng)過基于三角形統(tǒng)計圖數(shù)據(jù)壓縮處理的圖數(shù)據(jù)的查詢方法, 包括如下步驟:
[0029] 步驟1 :針對一個結(jié)點的查詢請求,掃描三角形元素集合中是否存在與所述結(jié)點 完全匹配的三角形元素或者包含所述結(jié)點的三角形元素;若存在,則返回所述結(jié)點及其共 同鄰居結(jié)點,若不存在,則進行步驟2 ;
[0030] 步驟2 :若所述結(jié)點存在于兩個以上三角形元素中,則統(tǒng)計所述三角形元素的鄰 居結(jié)點的信息,并最終返回所述鄰居結(jié)點的信息的交集作為查詢結(jié)果返回;
[0031] 步驟3 :若圖數(shù)據(jù)中不存在與查詢請求匹配的結(jié)點,則返回空集。本發(fā)明中針對經(jīng) 過基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法壓縮后所得圖數(shù)據(jù)的查詢方法,可以在不解壓縮圖數(shù) 據(jù)或部分解壓縮圖數(shù)據(jù)的基礎(chǔ)上對其進行查詢操作。相較其他必須在解壓縮圖數(shù)據(jù)后才可 執(zhí)行數(shù)據(jù)查詢的壓縮方法,本發(fā)明所提出的圖數(shù)據(jù)壓縮方法支持在未解壓縮或部分解壓縮 的圖數(shù)據(jù)中執(zhí)行一部分的查詢操作。解壓縮圖數(shù)據(jù)將會占用大量查詢時間,因此,本發(fā)明可 以通過避免解壓縮操作大幅提高在壓縮后圖數(shù)據(jù)中的查詢效率。
[0032] 由于本發(fā)明提出的查詢方法支持在未解壓縮或部分解壓縮的圖數(shù)據(jù)中執(zhí)行共同 鄰居結(jié)點的查詢操作,因此執(zhí)行對圖數(shù)據(jù)中任意兩個結(jié)點的共同鄰居結(jié)點的查詢時,其查 詢效率將是基于解壓縮后圖數(shù)據(jù)的查詢方法的2倍或更高。以下說明與本發(fā)明有關(guān)的一些 概念和定義。
[0033] 圖數(shù)據(jù)壓縮的壓縮比:未壓縮圖數(shù)據(jù)所占的存儲空間與壓縮后圖數(shù)據(jù)所占的存儲 空間的比值。
[0034] 圖數(shù)據(jù)壓縮的壓縮時間:對圖數(shù)據(jù)進行壓縮操作所使用的總時間。
[0035] 圖數(shù)據(jù)中結(jié)點的度:圖數(shù)據(jù)中所有連接到某結(jié)點的邊的數(shù)量即為此結(jié)點的度。
[0036] 本發(fā)明的有益效果包括:本發(fā)明將原有的利用結(jié)點對來表達兩個結(jié)點間關(guān)聯(lián)關(guān)系 的存儲形式,轉(zhuǎn)變?yōu)槔萌切卧毓灿媒Y(jié)點的特性,用新的存儲形式存儲共享兩個結(jié)點 的多個三角形元素,相較已有壓縮算法,提高壓縮效率約為5-30%。本發(fā)明在對圖數(shù)據(jù)進行 壓縮的同時,還能對針對圖數(shù)據(jù)的部分查詢操作的執(zhí)行效率有所提升,最優(yōu)情況下提高效 率超過50 %,平均提高效率約為10-20 %。
【附圖說明】
[0037] 圖1是本發(fā)明基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法的流程圖。
[0038] 圖2是本發(fā)明基于三角形統(tǒng)計的圖數(shù)據(jù)查詢方法的流程圖。
[0039] 圖3是一實施例中壓縮前的原數(shù)據(jù)結(jié)構(gòu)的示意圖。
[0040] 圖4是一實施例中經(jīng)壓縮后的數(shù)據(jù)結(jié)構(gòu)的示意圖。
【具體實施方式】
[0041] 結(jié)合以下具體實施例和附圖,對本發(fā)明作進一步的詳細說明。實施本發(fā)明的過程、 條件、實驗方法等,除以下專門提及的內(nèi)容之外,均為本領(lǐng)域的普遍知識和公知常識,本發(fā) 明沒有特別限制內(nèi)容。
[0042] 如圖1,本發(fā)明基于三角形統(tǒng)計的圖數(shù)據(jù)壓縮方法,包括下述步驟:
[0043] 步驟一:獲得一組圖數(shù)據(jù),篩選其中所有由三個存在相互關(guān)聯(lián)的結(jié)點