邊與基表訪問(wèn)拓?fù)鋱D的頂點(diǎn)之間的對(duì)應(yīng)關(guān)系為:(Α,Β) - 1,(B,C) - 2,(C,D) - 3,(D,A) - 4,則可得到目標(biāo)訪問(wèn)順序?yàn)椋篟(C,D) -R(B,C) -R(A,B) -R(D, A) °
[0066] S206,根據(jù)一目標(biāo)訪問(wèn)順序訪問(wèn)數(shù)據(jù)庫(kù)中的基表,得到帶環(huán)圖的Top-k匹配子圖。
[0067] 作為一種可選的實(shí)施方式,由S205生成的目標(biāo)訪問(wèn)順序可訪問(wèn)數(shù)據(jù)庫(kù)中的基表, 得到帶環(huán)圖的Top-k匹配子圖。具體實(shí)現(xiàn)中,可由目標(biāo)訪問(wèn)順序訪問(wèn)數(shù)據(jù)庫(kù)中的基表,從 而可根據(jù)目標(biāo)訪問(wèn)順序自底向上對(duì)數(shù)據(jù)圖進(jìn)行生成樹(shù)匹配,尋找與帶環(huán)圖匹配的子圖,計(jì) 算帶環(huán)圖的匹配子圖的評(píng)分函數(shù)的值,將得到的匹配子圖的評(píng)分函數(shù)的值由小到大進(jìn)行排 序,輸出前K個(gè)評(píng)分函數(shù)的值對(duì)應(yīng)的匹配子圖,其中,K為大于0的正整數(shù),K為預(yù)設(shè)值,從而 由目標(biāo)訪問(wèn)順序訪問(wèn)數(shù)據(jù)庫(kù)中的基表,得到帶環(huán)圖的前固定值個(gè)匹配子圖。
[0068] 作為一種可選的實(shí)施方式,本發(fā)明實(shí)施例中,可定義頂點(diǎn)-標(biāo)簽數(shù)據(jù)圖:GD = (V,Ε,Σ,Λ),其中V為頂點(diǎn)集合;E為無(wú)向邊的集合;Σ為頂點(diǎn)標(biāo)簽的集合,通常遠(yuǎn)不及Gd 中的所有頂點(diǎn)數(shù);Λ是頂點(diǎn)集合到標(biāo)簽集合的映射函數(shù),若VleV,一個(gè)標(biāo)簽XeΣ,則 Λ(Vl)表示頂點(diǎn)Vl的標(biāo)簽。給定一個(gè)標(biāo)簽XeΣ,則X的外延為ext(X),該集合中包含Gd 中所有標(biāo)簽為X的頂點(diǎn)。定義路徑的權(quán)重為包含的邊的權(quán)重之和,若邊(u,v)eE,每條邊 權(quán)重為1,用δ(u,v)表示頂點(diǎn)u和v之間的最短路徑的權(quán)重。
[0069]集合V(G)和E(G)分別表示任意圖G的頂點(diǎn)集合和邊集合,可定義查詢圖Q= 以(0),£(〇),1()),〇為加權(quán)無(wú)向連通圖,其中¥(〇)為標(biāo)簽集合1的一個(gè)子集3(〇)為¥(〇) 中頂點(diǎn)之間邊的集合。本發(fā)明實(shí)施例中,假定V(Q)中無(wú)重復(fù)的標(biāo)簽。對(duì)于重復(fù)的標(biāo)簽,可 由本發(fā)明實(shí)施例的方法進(jìn)行擴(kuò)展得到。對(duì)于每一條邊(X,Y)eE(Q),權(quán)重函數(shù)%(Χ,Υ)為 (Χ,Υ)指定一個(gè)系數(shù)cttY)。若一個(gè)查詢圖Q中沒(méi)有環(huán),則稱為樹(shù)查詢(treequery),若有 環(huán),則稱為環(huán)查詢(cyclicquery)或圖查詢(graphquery)。本發(fā)明實(shí)施例中為對(duì)帶環(huán)的 查詢圖(即帶環(huán)圖)進(jìn)行查詢,即為環(huán)查詢。
[0070] 給定一個(gè)查詢圖Q,子圖匹配問(wèn)題(graphpatternmatchingproblem,GPM)要求 找出Q在數(shù)據(jù)圖Gd中的匹配Mq,Mq是一個(gè)η維頂點(diǎn)元組<Vl,v2,. . .,vn >,其中Vlev(Gd) 且n=IV(Q)I。若Q在Gd中存在匹配Mq,則Q和Mq之間存在一一映射,該映射滿足兩個(gè)條 件,標(biāo)簽條件和結(jié)構(gòu)條件。
[0071]標(biāo)簽條件:任意頂點(diǎn)XΕV(Q),存在頂點(diǎn)XEMQ,X的標(biāo)簽是X。
[0072] 結(jié)構(gòu)條件:對(duì)于任意邊(X,Y)eE(Q),存在兩個(gè)對(duì)應(yīng)的頂點(diǎn)X,yeMq,X的標(biāo)簽是 X,y的標(biāo)簽是Y,X和y在GD中有路徑相連。
[0073] 本發(fā)明實(shí)施例中,定義評(píng)分函數(shù),若MQ為Q在GD中的匹配,頂點(diǎn)評(píng)分反映MQ中頂點(diǎn) 的重要性,邊評(píng)分反映%中邊的連接是否緊密。本發(fā)明實(shí)施例中,評(píng)分函數(shù)僅考慮邊評(píng)分, 評(píng)分函數(shù)式子如下式子(1):
[0075] 其中,ιι,νΕΜ^,(A,D) =(ΛYu),Λ?)為Q中的邊,(^D)為與查詢邊(A,D) 關(guān)聯(lián)的系數(shù)。對(duì)于Q的每條查詢邊,中有相應(yīng)的元組權(quán)重值。式子(1)表示%中所有屬 于|E(Q) |的權(quán)重之和。GD中,兩頂點(diǎn)的最短路徑權(quán)重越小,則這兩個(gè)頂點(diǎn)連接越緊密,因此 score(MQ)值越小,則匹配MQ越好。
[0076] 本發(fā)明實(shí)施例中的top-k子圖匹配問(wèn)題可以描述為:給定一個(gè)查詢圖Q和數(shù)據(jù)圖 GD,Q的top-k匹配就是在GD中的k個(gè)匹配,即列表(MQ(1),MQ(2),…,MQ(k)),且k個(gè)匹配滿足 兩個(gè)條件:⑴在這k個(gè)匹配中,若i<j,則·b,i,je1,2,…,k; (2)對(duì)Q的任何不在該列表中的匹配MQ,有score(MQ(1)) <score(MQ),ie1,2,…,k。
[0077]Top-k算法中的查詢代價(jià)可用下述式子(2)估計(jì)
[0079]其中c為一個(gè)常量系數(shù),用于調(diào)節(jié)這兩種代價(jià)的權(quán)重。其中第一部分表示的是對(duì) 生成樹(shù)T掃描所有的表~D),(A,D)eE⑴的磁盤(pán)I/O代價(jià),后一部Ντ(α)分表示找出其 他匹配的時(shí)間代價(jià)。于是對(duì)于多棵生成樹(shù)〈0\,αι),(T2,a2),···,(Th,ah)>的總代價(jià)即是 每個(gè)單獨(dú)的子樹(shù)匹配的代價(jià)之和,
[0081]上述等式表明:⑴每個(gè)查詢方案都有一個(gè)必須的代價(jià),記做,…,Th),用 來(lái)表示對(duì)生成樹(shù)T掃描所有匹配列表!^d),(A,D)eE(T)的磁盤(pán)I/O代價(jià)。在多棵生成 樹(shù)?\,T2,…,Th確定時(shí)被確定
現(xiàn)有技術(shù)僅通過(guò)優(yōu)化g(aα2,… ,ah)。確定所有的aJl彡i彡h)的值來(lái)使得g(aα2,···,ah)的值最小,從而計(jì)算出的T\,T2,…,Th使g(ai,a2,…,ah)最小?,F(xiàn)有技術(shù)中忽略了 ,…,Th)產(chǎn)生的I/O冗 余,如圖1 (d)中2個(gè)Q的生成樹(shù)包含(M,D)共2次,那么被重復(fù)全掃描訪問(wèn)2次,相 應(yīng)產(chǎn)生的I/O不可忽略。
[0082] 本發(fā)明實(shí)施例中由目標(biāo)訪問(wèn)順序可訪問(wèn)
次重復(fù)訪問(wèn)。而現(xiàn)有技術(shù)中,每棵生成樹(shù)對(duì)應(yīng)一個(gè)匹配列表,需訪問(wèn)每一個(gè)匹配列表,而公 共邊則被多次訪問(wèn),產(chǎn)生冗余1/0,尤其對(duì)于查詢的匹配結(jié)果數(shù)據(jù)集非常巨大時(shí),磁盤(pán)I/O 代價(jià)大。本發(fā)明實(shí)施例解決現(xiàn)有技術(shù)的子圖匹配的Top-k算法中產(chǎn)生冗余I/O、子圖匹配的 效率低的技術(shù)問(wèn)題。
[0083] 本發(fā)明實(shí)施例提供一種子圖匹配方法,可生成帶環(huán)圖的多棵生成樹(shù),將多棵生成 樹(shù)進(jìn)行組合,得到生成樹(shù)組合,多個(gè)生成樹(shù)組合形成集合,可從集合中確定目標(biāo)生成樹(shù)組 合,將目標(biāo)生成樹(shù)組合映射為基表訪問(wèn)拓?fù)鋱D,根據(jù)基表訪問(wèn)拓?fù)鋱D生成目標(biāo)訪問(wèn)順序???通過(guò)目標(biāo)訪問(wèn)順序只需訪問(wèn)訪問(wèn)數(shù)據(jù)庫(kù)中的基表一次,無(wú)需重復(fù)訪問(wèn),則可得到帶環(huán)圖的 Top-k匹配子圖,無(wú)產(chǎn)生冗余1/0,大大減少了查詢代價(jià),且降低了時(shí)間復(fù)雜度,提高了子圖 匹配的效率。本發(fā)明實(shí)施例中,還可通過(guò)全局啟發(fā)式搜索算法確定目標(biāo)生成樹(shù)組合,可進(jìn)一 步優(yōu)化生成樹(shù)的查詢方案,可減少查詢時(shí)間。
[0084] 下面將結(jié)合附圖4、圖5,分別對(duì)本發(fā)明實(shí)施例提供的子圖匹配裝置進(jìn)行詳細(xì)介 紹。
[0085] 需要說(shuō)明的是,附圖4所示的子圖匹配裝置,用于執(zhí)行本發(fā)明圖1所示實(shí)施例的方 法,為基于圖1所述的子圖匹配法的執(zhí)行主體。為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相 關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請(qǐng)參照本發(fā)明圖1所示的實(shí)施例。本發(fā)明實(shí)施中的一種 子圖匹配裝置可以包括:如電腦、服務(wù)器等終端設(shè)備。
[0086] 如圖4所示,為本發(fā)明實(shí)施例提供的一種子圖匹配裝置的結(jié)構(gòu)示意圖,本發(fā)明實(shí) 施例提供的子圖匹配裝置可以包括:生成樹(shù)處理模塊401、生成樹(shù)組合模塊402、確定模塊 403、映射模塊404、訪問(wèn)順序生成模塊405和子圖匹配模塊406。
[0087] 生成樹(shù)處理模塊401,用于輸入帶環(huán)圖,生成帶環(huán)圖的多棵生成樹(shù)。
[0088] 作為一種可選的實(shí)施方式,本發(fā)明實(shí)施例中的帶環(huán)圖為帶環(huán)的查詢圖,具體實(shí)現(xiàn) 中,生成樹(shù)處理模塊401可由最小生成樹(shù)算法生成帶環(huán)圖的生成樹(shù),具體不受本發(fā)明實(shí)施 例的限制。對(duì)于帶環(huán)圖,可對(duì)應(yīng)多棵生成樹(shù),具體實(shí)現(xiàn)中,對(duì)于帶環(huán)圖中的任一頂點(diǎn),都可能 成為生成樹(shù)的根節(jié)點(diǎn),對(duì)于同一頂點(diǎn),可生成不同的生成樹(shù)。
[0089] 生成樹(shù)組合模塊402,用于對(duì)多棵生成樹(shù)進(jìn)行組合,得到生成樹(shù)組合,多個(gè)生成樹(shù) 組合形成集合。
[0090] 作為一種可選的實(shí)施方式,生成樹(shù)組合模塊402,可將多棵生成樹(shù)進(jìn)行組合,得到 生成樹(shù)組合,例如,帶環(huán)圖Q的生成樹(shù)包括Ud、……、Tn,則可將任兩棵生成樹(shù)進(jìn)行組 合,或任三棵生成樹(shù)進(jìn)行組合……或任η-1棵生成樹(shù)進(jìn)行組合,進(jìn)而得到多個(gè)生成樹(shù)組合, 多個(gè)生成樹(shù)組合形成集合,該集合為帶環(huán)圖的多個(gè)生成樹(shù)組合。進(jìn)一步可選的,該集合可以 包括帶環(huán)圖的全部生成樹(shù)組合,該集合也可以僅包括帶環(huán)圖的部分生成樹(shù)組合,具體不受 本發(fā)明實(shí)施例的限制。
[0091] 確定模塊403,用于從集合中確定目標(biāo)生成樹(shù)組合。
[0092] 作為一種可選的實(shí)施方式,確定模塊403可從集合中確定目標(biāo)生成樹(shù)組合,具體 實(shí)現(xiàn)中,帶環(huán)圖的多個(gè)生成樹(shù)組合形成集合,則可從帶環(huán)圖的多個(gè)生成樹(shù)組合中確定其中 一個(gè)生成樹(shù)組合為目標(biāo)生成樹(shù)組合。
[0093] 進(jìn)一步可選的,確定模塊403具體可用于:通過(guò)全局啟發(fā)式搜索算法從集合中確 定目標(biāo)生成樹(shù)組合。具體實(shí)現(xiàn)中,確定模塊403具體可通過(guò)全局啟發(fā)式搜索算法從集合中 確定目標(biāo)生成樹(shù)組合,其中,啟發(fā)式搜索指在狀態(tài)空間中的搜索,對(duì)每一個(gè)搜索的位置進(jìn)行 評(píng)估,得到最好的位置,從這個(gè)位置進(jìn)行搜索直到目標(biāo)。本發(fā)明實(shí)施例中,可通過(guò)全局啟發(fā) 式搜索算法確定查詢方案,可確定目