国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      圖的相似度計(jì)算系統(tǒng)、方法以及程序的制作方法

      文檔序號(hào):6348524閱讀:164來(lái)源:國(guó)知局
      專利名稱:圖的相似度計(jì)算系統(tǒng)、方法以及程序的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計(jì)算或評(píng)價(jià)在計(jì)算機(jī)上作為圖表現(xiàn)的數(shù)據(jù)結(jié)構(gòu)的對(duì)象物的相似度。
      背景技術(shù)
      圖是包括具有用于相互識(shí)別的標(biāo)簽的頂點(diǎn)(也稱為節(jié)點(diǎn))和連接頂點(diǎn)的邊(也稱為邊緣、支、鏈接)的數(shù)學(xué)對(duì)象,當(dāng)考慮現(xiàn)實(shí)的對(duì)象物時(shí),可知例如道路地圖、化學(xué)式等通過(guò)圖表示。例如,在道路地圖中,可以視為交叉點(diǎn)是節(jié)點(diǎn),路是邊。在化學(xué)式中,可以視為元素是節(jié)點(diǎn),元素間的結(jié)合是邊。如果這樣考慮,可知在基因、蛋白質(zhì)構(gòu)造、電路、地理學(xué)、建筑學(xué)等非常廣的范圍內(nèi)發(fā)現(xiàn)圖的應(yīng)用。最近,在社會(huì)網(wǎng)絡(luò)服務(wù)(SNQ中也逐漸適用圖構(gòu)造。即,通過(guò)將SNS的各個(gè)用戶視為節(jié)點(diǎn),將這些用戶之間其他之間的友好關(guān)系等視為邊,由此可以用圖表現(xiàn)SNS的特定狀態(tài)。按照同樣的目的,www的鏈接構(gòu)造也可以通過(guò)圖表現(xiàn)。這樣,在將現(xiàn)實(shí)的對(duì)象作為圖表現(xiàn)時(shí),想要評(píng)價(jià)兩個(gè)圖是否一致或相似成為自然出現(xiàn)的要求。例如,當(dāng)可以評(píng)價(jià)某一化學(xué)品的化學(xué)式的圖和其他化學(xué)品的化學(xué)式的圖相似時(shí),能夠推定為該兩個(gè)化學(xué)品的藥效相似。但是,根據(jù)以往的研究,關(guān)于判別兩個(gè)圖是否相同的問(wèn)題不知道多項(xiàng)式時(shí)間算法, 用于判別某一圖是否包含于另一圖的算法也是NP完全問(wèn)題。關(guān)于這樣的算法,如果是只有比較少數(shù)的節(jié)點(diǎn)的圖,能夠通過(guò)適當(dāng)?shù)挠?jì)算時(shí)間求解,但處理基因排列的生物信息學(xué)中,節(jié)點(diǎn)數(shù)從數(shù)千到數(shù)萬(wàn),在SNS中有數(shù)百萬(wàn),大大超過(guò)單純的圖相似度計(jì)算技術(shù)方法以顯示的計(jì)算量能夠處理的范圍。于是,現(xiàn)有技術(shù)中提出了用于以高速計(jì)算兩個(gè)圖的同一性或相似度的技術(shù)方法。Thomas Ε. Portegys, School of Information Technology, lllinnois State University, "General Graph Identification With Hashing,,http ://www. itk. ilstu. edu/faculty/portegys/research/graph/graph-hash, paf 公開(kāi)了iEii MD5 f^^lj 1 兩個(gè)圖的同一性的技術(shù)方法。但是,在該技術(shù)方法中,僅能夠判定圖的同一性,不能適用于相似度的計(jì)算。尤其關(guān)于與該圖相關(guān)的散列制作,日本特開(kāi)平7-334366號(hào)公報(bào)中記載了 具有存儲(chǔ)圖S的所有部分圖的散列值的散列表,存儲(chǔ)過(guò)去存在的部分圖和當(dāng)前到達(dá)的其還原 (reduction)處的部分圖的組。但是,在該技術(shù)方法中,遞歸地通過(guò)處理給予散列值,雖然能夠適用于有向非循環(huán)圖,但不能適用于包含環(huán)的更一般的圖。美國(guó)專利第6473881號(hào)公開(kāi)了如下技術(shù)晶體管級(jí)的設(shè)計(jì)自動(dòng)化工具通過(guò)定時(shí)解析、電氣規(guī)則的檢查、噪聲解析等進(jìn)行電路設(shè)計(jì)的模式匹配。但是,該技術(shù)方法使用主節(jié)點(diǎn)等這些電路特有的性質(zhì),難以擴(kuò)展到一般的圖比較。專利文獻(xiàn)1 日本特開(kāi)平7-334366專利文獻(xiàn)2 美國(guó)專利第6473881號(hào)
      非專利文獻(xiàn) 1 ;Thomas Ε. Portegys, School of Information Technology, lllinnois State University,"General Graph Identification With Hashing^http // www. itk. ilstu. edu/faculty/portegys/research/graph/graph-hash, paf

      發(fā)明內(nèi)容
      因此,本發(fā)明的目的是提供能夠以適當(dāng)?shù)挠?jì)算時(shí)間求出SNS、WWW的鏈接等具有很多節(jié)點(diǎn)的圖之間的相似度的圖比較技術(shù)方法。上述問(wèn)題通過(guò)本發(fā)明極有利地解決。首先,作為前提,要比較的圖的數(shù)據(jù)使用行列表現(xiàn)、列表表現(xiàn)等用于圖表現(xiàn)的公知的數(shù)據(jù)結(jié)構(gòu)表現(xiàn),在計(jì)算機(jī)的硬盤(pán)等存儲(chǔ)裝置上保存。 圖的各節(jié)點(diǎn)分別具有標(biāo)簽,預(yù)想標(biāo)簽具有離散值。例如,如果是基因,標(biāo)簽是腺嘌呤、胸腺嘧啶、鳥(niǎo)嘌呤、胞嘧啶四種,如果是蛋白質(zhì),標(biāo)簽是甘氨酸、色氨酸、異亮氨酸等二十種氨基酸, 如果是化學(xué)式,標(biāo)簽是氫、氦、鋰、鈹、硼、碳、氮、氧以下,最多100種程度。根據(jù)本發(fā)明,首先對(duì)圖的節(jié)點(diǎn),向該節(jié)點(diǎn)的標(biāo)簽紙賦予唯一的值。優(yōu)選,該值是固定長(zhǎng)位串。此時(shí)的位串的長(zhǎng)度選為比用于表現(xiàn)標(biāo)簽的種類足夠的位數(shù)充分大的數(shù)。這是為了減少后述的散列沖突的可能性。在這樣的準(zhǔn)備下,本發(fā)明的系統(tǒng),關(guān)于一個(gè)圖,通過(guò)深度優(yōu)先搜索、寬度優(yōu)選搜索等原有的圖搜索技術(shù)方法,依次訪問(wèn)該圖的節(jié)點(diǎn)。此時(shí),本發(fā)明的系統(tǒng),在位于一個(gè)節(jié)點(diǎn)時(shí), 對(duì)與該節(jié)點(diǎn)相鄰的所有節(jié)點(diǎn)的位串標(biāo)簽值和該節(jié)點(diǎn)的位串標(biāo)簽值實(shí)施計(jì)算,計(jì)算位串值。 本發(fā)明的系統(tǒng)根據(jù)該計(jì)算出的位串值和該節(jié)點(diǎn)本來(lái)具有的位串標(biāo)簽值實(shí)施散列計(jì)算,計(jì)算另外的位串標(biāo)簽值,將其作為該節(jié)點(diǎn)的標(biāo)簽值。這樣,在對(duì)一個(gè)圖的所有節(jié)點(diǎn)訪問(wèn)結(jié)束時(shí),所有節(jié)點(diǎn)的標(biāo)簽值被改寫(xiě)。對(duì)想要比較圖的相似度的另外圖也進(jìn)行同樣的處理后,其他的圖中也改寫(xiě)所有節(jié)點(diǎn)的標(biāo)簽值。于是,例如,在一個(gè)圖中,計(jì)算相對(duì)于所有節(jié)點(diǎn)數(shù)的與其他圖一致的標(biāo)簽值的比例,由此能夠求出相似度。在后面的實(shí)施例中,說(shuō)明稍微復(fù)雜的相似度的計(jì)算方法。根據(jù)本發(fā)明,作為根據(jù)相鄰節(jié)點(diǎn)的標(biāo)簽值計(jì)算自節(jié)點(diǎn)的標(biāo)簽值的方法,可以使用多個(gè)方法中的一個(gè)。關(guān)于一個(gè)方法,對(duì)將所有相鄰節(jié)點(diǎn)的標(biāo)簽值異或后的值與將自節(jié)點(diǎn)的標(biāo)簽值位旋轉(zhuǎn)后的值計(jì)算異或,將其設(shè)為自節(jié)點(diǎn)的標(biāo)簽值。關(guān)于另外的方法,將所有相鄰節(jié)點(diǎn)的標(biāo)簽值排序,其結(jié)果是連續(xù)出現(xiàn)同一標(biāo)簽值時(shí),用一個(gè)標(biāo)簽值代表它們,對(duì)連續(xù)出現(xiàn)的次數(shù)(稱為計(jì)數(shù)值)進(jìn)行加法。將這樣得到的標(biāo)簽值位旋轉(zhuǎn)計(jì)數(shù)值的量,將所有結(jié)果異或后的值、與將自節(jié)點(diǎn)的標(biāo)簽值位旋轉(zhuǎn)后的值計(jì)算異或,將其設(shè)為自節(jié)點(diǎn)的標(biāo)簽值。本發(fā)明除了上述之外,還可以使用根據(jù)所有相鄰節(jié)點(diǎn)的標(biāo)簽值和自節(jié)點(diǎn)的標(biāo)簽值計(jì)算自節(jié)點(diǎn)的標(biāo)簽值的各種方法。根據(jù)本發(fā)明,基于通過(guò)一個(gè)節(jié)點(diǎn)及其相鄰節(jié)點(diǎn)的標(biāo)簽值的散列計(jì)算該一個(gè)節(jié)點(diǎn)的新標(biāo)簽值的計(jì)算結(jié)果得到的標(biāo)簽值,計(jì)算圖的相似度,由此獲得如下效果在圖的節(jié)點(diǎn)數(shù)設(shè)為N時(shí)以0(N2)以下的階(order)的計(jì)算量能夠計(jì)算圖的相似度。在已知的其他圖相似度比較技術(shù)方法中,要么是指數(shù)階或者至少是0(N3)程度,所以在N特別大的情況下,本發(fā)明高速化的效果大。
      此外,由于是明確反映相鄰節(jié)點(diǎn)的標(biāo)簽值的計(jì)算,所以結(jié)果的相似度的可靠性高。


      圖1是用于實(shí)施本發(fā)明的硬件結(jié)構(gòu)的框圖。圖2是本發(fā)明涉及的邏輯功能框圖。圖3是表示本發(fā)明涉及的計(jì)算圖的節(jié)點(diǎn)的標(biāo)簽值的處理的流程的圖。圖4是表示計(jì)算步驟涉及的圖的節(jié)點(diǎn)的標(biāo)簽值變化的圖。圖5是表示根據(jù)自節(jié)點(diǎn)的標(biāo)簽和相鄰的節(jié)點(diǎn)標(biāo)簽集合計(jì)算自節(jié)點(diǎn)的新標(biāo)簽值的處理的概念流程的圖。圖6是表示根據(jù)自節(jié)點(diǎn)的標(biāo)簽和相鄰的節(jié)點(diǎn)標(biāo)簽集合計(jì)算自節(jié)點(diǎn)的新標(biāo)簽值的一個(gè)實(shí)施例的處理的流程的圖。圖7是表示根據(jù)自節(jié)點(diǎn)的標(biāo)簽和相鄰的節(jié)點(diǎn)標(biāo)簽集合計(jì)算自節(jié)點(diǎn)的新標(biāo)簽值的另外實(shí)施例的處理的流程的圖。圖8是表示圖6的具體處理的圖。圖9是表示圖7的具體處理的圖。圖10是表示總括地比較多個(gè)圖的處理的流程的圖。圖11是表示圖10的處理中所稱的相似度比較例程的處理的流程的圖。
      具體實(shí)施例方式以下,基于

      本發(fā)明的實(shí)施例。只要沒(méi)有特別說(shuō)明,在所有附圖中相同的參照編號(hào)指代相同的對(duì)象。以下說(shuō)明的是本發(fā)明的一個(gè)實(shí)施方式,可以理解為沒(méi)有意圖將本發(fā)明限于該實(shí)施例說(shuō)明的內(nèi)容。參照?qǐng)D1,示出用于實(shí)現(xiàn)本發(fā)明的一個(gè)實(shí)施例涉及的結(jié)構(gòu)和處理的計(jì)算機(jī)硬件的框圖。圖1中,CPU 104、主存儲(chǔ)(RAM) 106、硬盤(pán)驅(qū)動(dòng)(HDD) 108、鍵盤(pán)110、鼠標(biāo)112、顯示器 114連接于系統(tǒng)總線102。優(yōu)選,CPU 104基于32位或64位的設(shè)計(jì),例如,可以使用英特爾公司的Pentium (商標(biāo))4、Core (商標(biāo))2Duo、Xeon (商標(biāo))、AMD公司的Athlon (商標(biāo))等。 主存儲(chǔ)106優(yōu)選具有2GB以上的容量。硬盤(pán)驅(qū)動(dòng)108優(yōu)選例如具有320GB以上的容量,使得能夠存儲(chǔ)大量的圖數(shù)據(jù)。雖然沒(méi)有分別圖示,在硬盤(pán)驅(qū)動(dòng)108預(yù)先存儲(chǔ)了操作系統(tǒng)。操作系統(tǒng)可以是 Linux (商標(biāo))、微軟公司的Windows XP (商標(biāo))、Windows (商標(biāo))2000、蘋(píng)果計(jì)算機(jī)的Mac OS (商標(biāo))等適合CPU 104的任意系統(tǒng)。在硬盤(pán)驅(qū)動(dòng)108還存儲(chǔ)由C、C++、C#、Java (商標(biāo))等程序語(yǔ)言處理系統(tǒng)。該程序語(yǔ)言處理系統(tǒng)用于制作、維持后面說(shuō)明的圖/數(shù)據(jù)處理用的模塊或工具。在硬盤(pán)驅(qū)動(dòng)108中還可以進(jìn)一步包含用于在程序語(yǔ)言處理系統(tǒng)編寫(xiě)為了進(jìn)行匯編的源代碼的文本編輯器以及Eclipse (商標(biāo))等的開(kāi)發(fā)環(huán)境。鍵盤(pán)110和鼠標(biāo)112用于啟動(dòng)操作系統(tǒng)或者從硬盤(pán)驅(qū)動(dòng)108下載到主存儲(chǔ)106、顯示在顯示器114的程序(未圖示),或者輸入文字。顯示器114優(yōu)選為液晶顯示器,例如可以使用XGA (10 X 768分辨率)或 UXGA(1600X 1200分辨率)等任意分辨率。顯示器114雖然未圖示,但用于顯示應(yīng)該處理的圖/數(shù)據(jù)、圖的相似度。圖2是本發(fā)明涉及的處理模塊的功能框圖。這些模塊用C、C++、C#、Java(商標(biāo)) 等原有的程序語(yǔ)言編寫(xiě),以能夠執(zhí)行的二進(jìn)制形式存儲(chǔ)于硬盤(pán)驅(qū)動(dòng)108,對(duì)鼠標(biāo)112或鍵盤(pán) 110的操作進(jìn)行應(yīng)答,通過(guò)操作系統(tǒng)(未圖示)的工作調(diào)用到主存儲(chǔ)106并執(zhí)行。圖/數(shù)據(jù)制作模塊202將給定的圖變換成計(jì)算機(jī)可讀的數(shù)據(jù)結(jié)構(gòu)。此時(shí),例如作為節(jié)點(diǎn)數(shù)η、平均相鄰節(jié)點(diǎn)數(shù)d的圖g,使用下面的數(shù)據(jù)結(jié)構(gòu)。g. nodelist 表示節(jié)點(diǎn)列表的長(zhǎng)度η的列表g. Iabellist 表示節(jié)點(diǎn)標(biāo)簽列表的長(zhǎng)度η的列表g. Iabellistx 以與g. Iabellist相同的數(shù)據(jù)結(jié)構(gòu),作為標(biāo)簽寫(xiě)入用緩沖區(qū)使用的長(zhǎng)度η的列表g. adjacencymatrix 圖的相鄰行列。如果節(jié)點(diǎn)i和節(jié)點(diǎn)j存在鏈接,則行列要素 (i,j)是1,否則為0。大小為ηΧη,但如果使用省略0要素的稀疏行列這樣的數(shù)據(jù)結(jié)構(gòu),則可以是nXd即可。 此時(shí),如果將節(jié)點(diǎn)不同的標(biāo)簽的種類設(shè)為p,則選擇ρ < < 2m的m,將標(biāo)簽設(shè)為m位的數(shù)據(jù)。這樣,使2m比ρ充分大的理由是為了減小標(biāo)簽中的散列沖突的可能性。這樣,例如,準(zhǔn)備21^1 < Pl < 2m的質(zhì)數(shù)Pl和比Pl充分大的質(zhì)數(shù)P2,將第i個(gè)標(biāo)簽值設(shè)為L(zhǎng)Hi時(shí),例如通過(guò)下式可以向標(biāo)簽Li (i = 1,... , ρ)各自賦予不同的m位的標(biāo)簽值。for(i = 1 ;i < = ρ ;i++) {LHi = (P2 * i) % Pl ;}在此,%是計(jì)算除法的余數(shù)的運(yùn)算符?;蛘?,也可以使用除此之外的任意的隨機(jī)數(shù)生成例程。圖/數(shù)據(jù)制作模塊202將這樣確定的標(biāo)簽值LHi向圖的各節(jié)點(diǎn)與該標(biāo)簽Li相應(yīng)地賦予,構(gòu)成圖/數(shù)據(jù)。即,圖/數(shù)據(jù)制作模塊202將圖4的(a)那樣的圖例如按深度優(yōu)先搜索圖,同時(shí)依次制作g. nodelist,并將該標(biāo)簽值LHi記錄在g. Iabellist,將相鄰關(guān)系記錄到g. adjacencymatrix。其結(jié)果是,如圖4的(b)那樣,向各標(biāo)簽作為標(biāo)簽值賦予位串。在圖4的(b)的例子中,A = #1000, B = #0101, C = #1100。當(dāng)然,對(duì)標(biāo)簽賦予的值在兩個(gè)圖中是共同的。在此#0101這樣的表述表示二進(jìn)制數(shù)。標(biāo)簽值優(yōu)選設(shè)為固定位數(shù)。將在后面說(shuō)明,因?yàn)檫@樣便于計(jì)算位旋轉(zhuǎn)、異或、基數(shù)排序等計(jì)算。構(gòu)成的圖/數(shù)據(jù)下載到主存儲(chǔ)106或者保存在硬盤(pán)108。圖/數(shù)據(jù)非常大的情況下,還可以首先將圖/數(shù)據(jù)置于硬盤(pán)108上,僅將計(jì)算所需的位置的數(shù)據(jù)下載到主存儲(chǔ)。圖搜索模塊206依次搜索圖,訪問(wèn)一個(gè)圖的所有節(jié)點(diǎn),參照該節(jié)點(diǎn)的相鄰節(jié)點(diǎn),調(diào)用與相鄰節(jié)點(diǎn)的散列計(jì)算模塊208,進(jìn)行更新該節(jié)點(diǎn)的標(biāo)簽值的處理。圖3是表示圖搜索模塊206的處理流程的圖。在圖3中,在步驟302中,圖搜索模塊206進(jìn)行是否訪問(wèn)了圖的所有節(jié)點(diǎn)的判斷。該判斷實(shí)際上通過(guò)是否到達(dá)了 g.nodelist 的末端來(lái)進(jìn)行。如果在步驟302中判斷為還沒(méi)有訪問(wèn)圖的所有節(jié)點(diǎn),則在步驟304中根據(jù) g. nodelist,圖搜索模塊206訪問(wèn)下一節(jié)點(diǎn)。圖搜索的最初階段中,在步驟304中訪問(wèn)前頭的節(jié)點(diǎn)。在步驟306中,圖搜索模塊206通過(guò)調(diào)用模塊208使用當(dāng)前正訪問(wèn)的該節(jié)點(diǎn)的相鄰節(jié)點(diǎn)的信息通過(guò)散列進(jìn)行標(biāo)簽值的計(jì)算。在此相鄰節(jié)點(diǎn)是經(jīng)由邊直接與該節(jié)點(diǎn)相連的節(jié)點(diǎn)。這樣的相鄰關(guān)系通過(guò)參照記錄在g. adjacencymatrix的值,能夠調(diào)查。該計(jì)算使用該節(jié)點(diǎn)的標(biāo)簽值和相鄰節(jié)點(diǎn)的標(biāo)簽值。這些標(biāo)簽值通過(guò)參照g. Iabellist取得。標(biāo)簽值的計(jì)算參照?qǐng)D5、圖6、圖7的流程圖在后面詳細(xì)說(shuō)明。在步驟308中,圖搜索模塊206用這樣計(jì)算出的標(biāo)簽值更新該節(jié)點(diǎn)的標(biāo)簽值。此時(shí)可以直接在g. Iabellist覆蓋,但優(yōu)選不在g. Iabellist而在g. Iabellistx寫(xiě)入更新標(biāo)簽。這是因?yàn)槿绻苯釉趃. Iabellist覆蓋,則依賴于節(jié)點(diǎn)的搜索順序,結(jié)果會(huì)變化。下面返回步驟302的判斷,在結(jié)束訪問(wèn)所有節(jié)點(diǎn)之前,執(zhí)行步驟304、306以及308。當(dāng)結(jié)束訪問(wèn)所有節(jié)點(diǎn)時(shí),改寫(xiě)所有g(shù). Iabellistx的節(jié)點(diǎn)。于是,g. Iabellist用 g. Iabellistx置換。通過(guò)這樣的圖的訪問(wèn)改寫(xiě)標(biāo)簽值對(duì)應(yīng)該比較的兩個(gè)圖各自進(jìn)行。其方式示意地示出在圖4的(C)。通過(guò)這樣的圖的訪問(wèn)改寫(xiě)標(biāo)簽值的改寫(xiě)處理優(yōu)選如圖的(d)所示那樣,多次進(jìn)行。由此,圖比較的精度一般而言提高,但并不是次數(shù)越增加精度越高,自然存在最適合的次數(shù)。返回圖2,圖相似度計(jì)算模塊210基于改寫(xiě)的標(biāo)簽值計(jì)算兩個(gè)圖的相似度。最簡(jiǎn)單的相似度計(jì)算方法是計(jì)算兩個(gè)圖之間的改寫(xiě)的標(biāo)簽值的一致比率。然后,也對(duì)稍微復(fù)雜的圖的相似度計(jì)算進(jìn)行說(shuō)明。圖5是更詳細(xì)說(shuō)明與相鄰節(jié)點(diǎn)的散列計(jì)算模塊208的處理的概要流程圖。圖3的流程圖中,當(dāng)訪問(wèn)節(jié)點(diǎn)時(shí),將當(dāng)前正在的節(jié)點(diǎn)稱為自節(jié)點(diǎn),則自節(jié)點(diǎn)的標(biāo)簽502是與當(dāng)前正在的節(jié)點(diǎn)對(duì)應(yīng)的標(biāo)簽值,從g. Iabellist取得。為了方便,將其寫(xiě)為 ThisNodeLable0另一方面,與當(dāng)前正在的節(jié)點(diǎn)相鄰的標(biāo)簽的集合504通過(guò)參照記錄在 g. adjacencymatrix的值,從g. Iabellist取得。其一般可能存在多個(gè),所以寫(xiě)為 NeighboringNodeLabels[]0而且,將散列函數(shù)設(shè)為HashO,新標(biāo)簽508設(shè)為Newlabel,則計(jì)算為Newlabel = Hash (ThisNodeLable,NeighboringNodeLabels [])。這樣計(jì)算出的Newlabel的值作為當(dāng)前正在的節(jié)點(diǎn)的標(biāo)簽值在g. Iabellistx覆蓋。圖6是表示圖5的處理的一個(gè)實(shí)施例的圖。S卩,在圖6的處理中,為了根據(jù)自節(jié)點(diǎn)的標(biāo)簽602和相鄰節(jié)點(diǎn)的標(biāo)簽集合604生成新標(biāo)簽608,散列計(jì)算塊606具有將自節(jié)點(diǎn)的標(biāo)簽602進(jìn)行一位旋轉(zhuǎn)的塊610、將相鄰節(jié)點(diǎn)的標(biāo)簽集合604異或的塊612、以及將塊610 的輸出和塊612的輸出作為新標(biāo)簽608異或的塊614。圖8示出圖6的處理的具體計(jì)算例。在圖8中,自節(jié)點(diǎn)標(biāo)簽是#1000,相鄰節(jié)點(diǎn)的標(biāo)簽是#1110和#1100。這樣,塊612的輸出是#1110和#1100的異或,為#0010,另一方面, 塊610的輸出是#1000的一位旋轉(zhuǎn)即#0001,將它們?nèi)‘惢虻膲K614的輸出為#0011,其成
      為自節(jié)點(diǎn)的新標(biāo)簽。圖7是表示圖5的處理另一實(shí)施例的圖。即,在圖7的處理中,為了根據(jù)自節(jié)點(diǎn)的標(biāo)簽702和相鄰節(jié)點(diǎn)的標(biāo)簽集合704生成新標(biāo)簽708,散列計(jì)算塊706具有將自節(jié)點(diǎn)的標(biāo)簽702進(jìn)行一位旋轉(zhuǎn)的塊710、對(duì)相鄰節(jié)點(diǎn)的標(biāo)簽集合704排序的塊712、對(duì)排序的輸出的重復(fù)進(jìn)行計(jì)數(shù)的塊714、對(duì)計(jì)數(shù)值進(jìn)行加法計(jì)算的塊716、位旋轉(zhuǎn)計(jì)數(shù)值量的塊718、將位旋轉(zhuǎn)后的輸出異或的塊720、將塊710的輸出和塊720的輸出進(jìn)行異或作為新的標(biāo)簽708的塊 722。在優(yōu)選的實(shí)施例中,標(biāo)簽是固定寬度的位串,所以塊712中的排序希望使用基數(shù) (radix)排序。圖9中示出圖7的處理的具體計(jì)算例。在圖9中,自節(jié)點(diǎn)的標(biāo)簽為#1000,相鄰節(jié)點(diǎn)的標(biāo)簽是#0101、#1100、#0101。這樣,塊712的排序輸出是#0101、#0101、#1100。這樣, #0101連續(xù)表示兩個(gè),所以塊714的計(jì)數(shù)輸出關(guān)于#0101是2,關(guān)于#1100是1。然后,塊716在原來(lái)的標(biāo)簽值上加上計(jì)數(shù)輸出。向#0101加上2所以成為#0111, 在#1100上加上1所以成為#1101。這樣,塊718位旋轉(zhuǎn)計(jì)數(shù)輸出的量。#0111通過(guò)兩位旋轉(zhuǎn)成為#1101,#1101通過(guò)一位旋轉(zhuǎn)成為#1011。然后,塊720計(jì)算位旋轉(zhuǎn)后的值即#1101和#1011的異或,輸出#0110。另一方面,塊710輸出自節(jié)點(diǎn)的標(biāo)簽#1000的一位旋轉(zhuǎn)即#0001。這樣,塊722計(jì)算從塊720輸出的#0110和從塊710輸出#0001的異或,將其結(jié)果即#0111作為自節(jié)點(diǎn)的
      新標(biāo)簽。用于通過(guò)散列計(jì)算自節(jié)點(diǎn)的標(biāo)簽值的算法不限于圖6或圖7所示的算法,只要是適當(dāng)?shù)挠?jì)算量且難以發(fā)生散列沖突,則可以使用任意的散列算法。S卩,將與節(jié)點(diǎn)相鄰的節(jié)點(diǎn)集合設(shè)為NeighboringNodeLabelsD,自節(jié)點(diǎn)的標(biāo)簽設(shè)為 ThisNodeLable 時(shí),成為取 Newlabel = Hash (ThisNodeLable, NeighboringNodeLabels []) 這樣的參數(shù)的函數(shù)。這樣,可以使用將NeighboringNodeLabels []排序后排列,將其視作一個(gè)數(shù),將除以適當(dāng)?shù)馁|(zhì)數(shù)Pl得到的余數(shù)設(shè)為NewLabel的方法。在圖9的例子中, NeighboringNodeLabels []包括#0101、#1100、#0101,所以通過(guò)將它們排序并排列,從而通過(guò) #010101011100 計(jì)算為 NewLabel = #010101011100mod PI。下面,參照?qǐng)D10和圖11的流程圖說(shuō)明對(duì)兩個(gè)以上的多個(gè)圖彼此的相似度進(jìn)行一次比較的處理。用于進(jìn)行該處理的模塊包含于圖2的圖相似度計(jì)算模塊210。在圖10中,在步驟1002中,準(zhǔn)備「 IG10, Gd、應(yīng)該比較像素度的h個(gè)圖, 在主存儲(chǔ)106或硬盤(pán)108存儲(chǔ)這些圖的數(shù)據(jù)。此時(shí),通過(guò)已經(jīng)說(shuō)明的方法,向圖的節(jié)點(diǎn)賦予與標(biāo)簽相應(yīng)的預(yù)定位數(shù)的二進(jìn)制數(shù)的標(biāo)簽值。h= I「I,即圖的個(gè)數(shù)。rmax是用于散列計(jì)算的反復(fù)次數(shù)。根據(jù)情況不同,rmax選為3到5程度。在步驟1004中,設(shè)為r = 1,開(kāi)始與r相關(guān)的到rmax的循環(huán)。在步驟1006中,判讀是否r < = rmax,如果是則在步驟1008中設(shè)為If = I。在此, I是hXh的單位行列。步驟1010中,設(shè)為i = 1,從此進(jìn)入與i有關(guān)的循環(huán)。在步驟1012中,判斷是否i <=h,如果是則在步驟1014中執(zhí)行下式。
      Gir = NH (Gi"1)在此,Gi1不是Gi的r乘方,表示具有散列計(jì)算的第r次的結(jié)果的標(biāo)簽值的圖。此外,NHO是進(jìn)行圖3的流程圖的處理的函數(shù)或例程。進(jìn)行與此情況下的相鄰節(jié)點(diǎn)的散列計(jì)算的算法不限于此,但例如設(shè)為圖7所示的算法。下一步驟1016中V^是GJ的節(jié)點(diǎn)列表。在步驟1016中,通過(guò)ν/°κτ = RADIX_ SORT (Vi1), Vi1的成分通過(guò)基于標(biāo)簽值進(jìn)行基數(shù)排序的排列存儲(chǔ)在ν/°κτ。在步驟1018中,i 增加1,返回到步驟1012。即,i到達(dá)h之前,反復(fù)步驟1014、1016、1018。在步驟1012中,當(dāng)判斷為i超過(guò)了 h時(shí),去到步驟1020,于是除去Grt。在此,Grt 是G1I G1T1的總稱記號(hào),總之,進(jìn)行開(kāi)放保持了 G^1,G1T1的主存儲(chǔ)的區(qū)域的處理。然后在步驟1022中,i設(shè)為1。這意味著開(kāi)始與i有關(guān)的循環(huán)。在步驟IOM中, 判斷是否i <= h,如果是則在步驟10 中j設(shè)為1。這意味著開(kāi)始與h有關(guān)的循環(huán)。在步驟10 中,判斷是否j < = h。如果是則在步驟1030中判斷是否j < i。由于下一步驟1032是i和j對(duì)稱,所以為了避免重復(fù)處理進(jìn)行該判斷。在步驟1030中,當(dāng)判斷為j < i時(shí),進(jìn)入步驟1032,于是,計(jì)算Ki/ = K/ = COMPARE_LABELS(Gir,GJr)。COMPARE_LABELS ()是比較通過(guò)其參數(shù)指定的兩個(gè)圖的標(biāo)簽用實(shí)數(shù)返回該比較結(jié)果的函數(shù),其詳細(xì)處理內(nèi)容參照?qǐng)D11的流程圖在后面說(shuō)明。此外,通過(guò)該具體的計(jì)算,使用在步驟1016中計(jì)算的W、V/°KT。在步驟1034中,j增加1,返回步驟1028,即在j到達(dá)h之前,返回步驟1030、1032 以及1034o這樣,在步驟10 中,當(dāng)判斷為j超過(guò)了 h時(shí),在步驟1036中將i增加1,去向步驟 10M。在步驟IOM中,當(dāng)判斷為i超過(guò)了 h時(shí),在步驟1038中將r增加1,返回步驟1006。在步驟1006中,當(dāng)判斷為r超過(guò)了 rmax時(shí),通過(guò)下式計(jì)算相似度行列K,結(jié)束處理。 關(guān)于相似度行列K,其ij成分標(biāo)示圖G^和圖G/1的相似度。式1下面,參照?qǐng)D11的流程圖,說(shuō)明在步驟1032中使用的函數(shù)COMPARE_LABELS()的處理的內(nèi)容。在步驟1102中,將Va胃、Vb胃設(shè)為兩個(gè)圖排序后的節(jié)點(diǎn)列表,將Vas°KT的次數(shù)設(shè)為 na,將Vbs°KT的次數(shù)設(shè)為nb。在步驟1104中,將以下使用的變量設(shè)為c = i,i = 1,j = 1。在步驟1106中,判斷是否i < = ~且j <= nb,如果是則在步驟1108中設(shè)為Vi HLVj.H]。在步驟1110中,判斷是否Ia(Vi) = Ib(Vj)。Ia(Vi)例如表示Via■的第i個(gè)成分的節(jié)點(diǎn)的標(biāo)簽值。如果判斷為Ia(Vi) = Ib(Vj),則在步驟1112中分別增加為c = c+i,i = i+1,j = j+1,返回步驟1106。在步驟1110中,如果判斷為不是I a(Vi) = Ib(Vj),則進(jìn)入步驟1114,于是判斷是
      10否Ia(Vi) <Ib(V」)。如果Ia(Vi) < Ib (Vj),則在步驟1116中i增加1,否則在步驟1118中 j增加1,不管如何,處理返回到步驟1106。在步驟1106中,判斷為i彡na或者j彡nb時(shí),去向步驟1120,于是通過(guò)下式計(jì)算相似度k。式權(quán)利要求
      1.一種方法,通過(guò)計(jì)算機(jī)的處理計(jì)算在各節(jié)點(diǎn)賦予離散標(biāo)簽的兩個(gè)圖之間的相似度, 包括在各自的所述兩個(gè)圖,向給定的節(jié)點(diǎn)及其相鄰的節(jié)點(diǎn)賦予標(biāo)簽值使得不同的值對(duì)應(yīng)于不同的離散標(biāo)簽的步驟;在所述兩個(gè)圖依次搜索節(jié)點(diǎn)的步驟;在搜索所述節(jié)點(diǎn)的期間,通過(guò)正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值和與該正訪問(wèn)的節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的標(biāo)簽值的散列計(jì)算來(lái)計(jì)算新的標(biāo)簽值,通過(guò)該新的標(biāo)簽值更新該正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值的步驟;以及基于向所述兩個(gè)圖的節(jié)點(diǎn)賦予的、一致的標(biāo)簽列的個(gè)數(shù),計(jì)算所述兩個(gè)圖之間的相似度的步驟。
      2.如權(quán)利要求1所述的方法,其中所述標(biāo)簽值是固定寬度的位串。
      3.如權(quán)利要求2所述的方法,其中對(duì)所述正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值位移后的值以及所述相鄰的節(jié)點(diǎn)的標(biāo)簽值異或后的值進(jìn)行異或來(lái)進(jìn)行所述散列計(jì)算。
      4.如權(quán)利要求3所述的方法,其中對(duì)所述正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值位旋轉(zhuǎn)后的值,以及將所述相鄰的節(jié)點(diǎn)的標(biāo)簽值排序計(jì)數(shù)、對(duì)重復(fù)度計(jì)數(shù)、對(duì)計(jì)數(shù)值加法計(jì)算、位旋轉(zhuǎn)計(jì)數(shù)值的量和異或后的值進(jìn)行異或,進(jìn)行所述散列計(jì)算。
      5.如權(quán)利要求4所述的方法,其中所述排序是基數(shù)排序。
      6.如權(quán)利要求1所述的方法,其中所述兩個(gè)圖中的一個(gè)圖是包含給定的圖的第一節(jié)點(diǎn)的第一部分圖,所述兩個(gè)圖中的一個(gè)圖是包含該給定的圖的第二節(jié)點(diǎn)的第二部分圖,計(jì)算出的所述兩個(gè)圖間的相似度視為該第一節(jié)點(diǎn)和第二節(jié)點(diǎn)之間的相似度。
      7.一種系統(tǒng),通過(guò)計(jì)算機(jī)的處理計(jì)算在各節(jié)點(diǎn)賦予離散標(biāo)簽的兩個(gè)圖之間的相似度, 包括在各自的所述兩個(gè)圖,向給定的節(jié)點(diǎn)及其相鄰的節(jié)點(diǎn)賦予標(biāo)簽值使得不同的值對(duì)應(yīng)于不同的離散標(biāo)簽的單元;在所述兩個(gè)圖依次搜索節(jié)點(diǎn)的單元;在搜索所述節(jié)點(diǎn)的期間,通過(guò)正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值和與該正訪問(wèn)的節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的標(biāo)簽值的散列計(jì)算來(lái)計(jì)算新的標(biāo)簽值,通過(guò)該新的標(biāo)簽值更新該正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值的單元;以及基于向所述兩個(gè)圖的節(jié)點(diǎn)賦予的、一致的標(biāo)簽列的個(gè)數(shù),計(jì)算所述兩個(gè)圖之間的相似度的單元。
      8.如權(quán)利要求7所述的系統(tǒng),其中所述標(biāo)簽值是固定寬度的位串。
      9.如權(quán)利要求8所述的系統(tǒng),其中對(duì)所述正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值位移后的值以及所述相鄰的節(jié)點(diǎn)的標(biāo)簽值異或后的值進(jìn)行異或來(lái)進(jìn)行所述散列計(jì)算。
      10.如權(quán)利要求8所述的系統(tǒng),其中對(duì)所述正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值位旋轉(zhuǎn)后的值,以及將所述相鄰的節(jié)點(diǎn)的標(biāo)簽值排序計(jì)數(shù)、對(duì)重復(fù)度計(jì)數(shù)、對(duì)計(jì)數(shù)值加法計(jì)算、位旋轉(zhuǎn)計(jì)數(shù)值的量和異或后的值進(jìn)行異或,進(jìn)行所述散列計(jì)算。
      11.如權(quán)利要求10所述的系統(tǒng),其中所述排序是基數(shù)排序。
      12.如權(quán)利要求7所述的系統(tǒng),其中所述兩個(gè)圖中的一個(gè)圖是包含給定的圖的第一節(jié)點(diǎn)的第一部分圖,所述兩個(gè)圖中的一個(gè)圖是包含該給定的圖的第二節(jié)點(diǎn)的第二部分圖,計(jì)算出的所述兩個(gè)圖間的相似度視為該第一節(jié)點(diǎn)和第二節(jié)點(diǎn)之間的相似度。
      13.一種程序,通過(guò)計(jì)算機(jī)的處理計(jì)算在各節(jié)點(diǎn)賦予離散標(biāo)簽的兩個(gè)圖之間的相似度, 使計(jì)算機(jī)執(zhí)行如下步驟在各自的所述兩個(gè)圖,向給定的節(jié)點(diǎn)及其相鄰的節(jié)點(diǎn)賦予標(biāo)簽值使得不同的值對(duì)應(yīng)于不同的離散標(biāo)簽的步驟;在所述兩個(gè)圖依次搜索節(jié)點(diǎn)的步驟;在搜索所述節(jié)點(diǎn)的期間,通過(guò)正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值和與該正訪問(wèn)的節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的標(biāo)簽值的散列計(jì)算來(lái)計(jì)算新的標(biāo)簽值,通過(guò)該新的標(biāo)簽值更新該正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值的步驟;以及基于向所述兩個(gè)圖的節(jié)點(diǎn)賦予的、一致的標(biāo)簽列的個(gè)數(shù),計(jì)算所述兩個(gè)圖之間的相似度的步驟。
      14.如權(quán)利要求13所述的系統(tǒng),其中所述標(biāo)簽值是固定寬度的位串。
      15.如權(quán)利要求14所述的系統(tǒng),其中對(duì)所述正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值位移后的值以及所述相鄰的節(jié)點(diǎn)的標(biāo)簽值異或后的值進(jìn)行異或來(lái)進(jìn)行所述散列計(jì)算。
      16.如權(quán)利要求14所述的系統(tǒng),其中對(duì)所述正訪問(wèn)的節(jié)點(diǎn)的標(biāo)簽值位旋轉(zhuǎn)后的值,以及將所述相鄰的節(jié)點(diǎn)的標(biāo)簽值排序計(jì)數(shù)、對(duì)重復(fù)度計(jì)數(shù)、對(duì)計(jì)數(shù)值加法計(jì)算、位旋轉(zhuǎn)計(jì)數(shù)值的量和異或后的值進(jìn)行異或,進(jìn)行所述散列計(jì)算。
      17.如權(quán)利要求16所述的系統(tǒng),其中所述排序是基數(shù)排序。
      18.如權(quán)利要求13所述的系統(tǒng),其中所述兩個(gè)圖中的一個(gè)圖是包含給定的圖的第一節(jié)點(diǎn)的第一部分圖,所述兩個(gè)圖中的一個(gè)圖是包含該給定的圖的第二節(jié)點(diǎn)的第二部分圖,計(jì)算出的所述兩個(gè)圖間的相似度視為該第一節(jié)點(diǎn)和第二節(jié)點(diǎn)之間的相似度。
      全文摘要
      以適當(dāng)?shù)挠?jì)算時(shí)間求出SNS、WWW的鏈接等具有很多節(jié)點(diǎn)的圖之間的相似度。對(duì)圖的節(jié)點(diǎn),向該節(jié)點(diǎn)的標(biāo)簽值賦予唯一的值。優(yōu)選,該值是固定長(zhǎng)位串。此時(shí)的位串的長(zhǎng)度選為比用于表現(xiàn)標(biāo)簽的種類足夠的位數(shù)充分大的數(shù)。關(guān)于一個(gè)圖,通過(guò)深度優(yōu)先搜索、寬度優(yōu)選搜索等原有的圖搜索技術(shù)方法,依次訪問(wèn)該圖的節(jié)點(diǎn)。此時(shí),本發(fā)明的系統(tǒng),在位于一個(gè)節(jié)點(diǎn)時(shí),對(duì)與該節(jié)點(diǎn)相鄰的所有節(jié)點(diǎn)的位串標(biāo)簽值和該節(jié)點(diǎn)的位串標(biāo)簽值實(shí)施計(jì)算,計(jì)算位串值。本發(fā)明的系統(tǒng)根據(jù)該計(jì)算出的位串值和該節(jié)點(diǎn)本來(lái)具有的位串標(biāo)簽值實(shí)施散列計(jì)算,計(jì)算另外的位串標(biāo)簽值,將其作為該節(jié)點(diǎn)的標(biāo)簽值。這樣,結(jié)束訪問(wèn)一個(gè)圖的所有節(jié)點(diǎn)時(shí),所有節(jié)點(diǎn)的標(biāo)簽值被改寫(xiě)。對(duì)想要比較圖的相似度的另外圖也進(jìn)行同樣的處理后,其他的圖中也改寫(xiě)所有節(jié)點(diǎn)的標(biāo)簽值。這樣,在一個(gè)圖中通過(guò)計(jì)算相對(duì)于所有節(jié)點(diǎn)數(shù)的與其他圖一致的標(biāo)簽值的比例,能夠求出相似度。
      文檔編號(hào)G06F17/30GK102341802SQ201080010259
      公開(kāi)日2012年2月1日 申請(qǐng)日期2010年6月9日 優(yōu)先權(quán)日2009年6月30日
      發(fā)明者比戶將平, 鹿島久嗣 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1