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