對相關(guān)申請的交叉引用本申請基于并要求于2014年12月10日提交的臨時(shí)美國申請no.62/090,190的優(yōu)先權(quán)權(quán)益,該臨時(shí)美國申請的全部內(nèi)容通過引用被結(jié)合于此。本文公開的實(shí)施例一般而言涉及用于使用唯一可逆碼和基于樹的編號系統(tǒng)來編碼組合超圖形(chymaps)的方法和裝置,該基于樹的編號系統(tǒng)將項(xiàng)代數(shù)(termalgebra)嵌入到chymaps中;并且更具體而言,該裝置和方法提供復(fù)雜數(shù)據(jù)結(jié)構(gòu)表示、模式識別、子圖的快速統(tǒng)一、以及對項(xiàng)代數(shù)的操作是可逆且無損(即,雙射)的對編號的算術(shù)運(yùn)算。
背景技術(shù):
:本文提供的背景描述是出于一般地呈現(xiàn)本公開的上下文的目的。當(dāng)前提名的發(fā)明人的工作,就該工作在這個(gè)背景部分中被描述的程度而言,以及在提交時(shí)沒有以其它方式被限定為現(xiàn)有技術(shù)的本描述的各方面,既不是明確地承認(rèn)也不是暗示地承認(rèn)作為針對本公開的現(xiàn)有技術(shù)。搜索引擎、關(guān)系數(shù)據(jù)庫系統(tǒng)、圖表示和大多數(shù)結(jié)構(gòu)化數(shù)據(jù)表示和計(jì)算系統(tǒng)都具有將數(shù)據(jù)存儲為整數(shù)的屬性。這些整數(shù)的編碼、操作和解碼消耗相當(dāng)多的cpu時(shí)間。因此,已經(jīng)付出相當(dāng)大的努力來通過對數(shù)據(jù)的縮減大小或壓縮和解壓縮方案進(jìn)行操作來降低與計(jì)算相關(guān)聯(lián)的成本。技術(shù)實(shí)現(xiàn)要素:提供一種方法和裝置,用于實(shí)現(xiàn)將數(shù)據(jù)表示為組合超圖形(chymaps)、廣義組合圖形(g-maps)和/或項(xiàng)代數(shù)項(xiàng)(term-algebraterm),并將組合超圖形、廣義組合圖形和/或項(xiàng)代數(shù)項(xiàng)編碼為自然數(shù)或基于樹的數(shù)。該方法和裝置還包括在數(shù)據(jù)表示的同構(gòu)子圖形上執(zhí)行統(tǒng)一處理。該方法還包括操作,該操作包括:使用快速算法將項(xiàng)代數(shù)映射到基于樹的數(shù),并使用可逆數(shù)值編碼和解碼將映射結(jié)構(gòu)的圖表示為chymaps;以對子圖形(子圖)到圖形(圖)同構(gòu)和利用一般匹配過程的部分匹配進(jìn)行優(yōu)化的形式生成chymaps的表示;將對chymaps的操作執(zhí)行為對相應(yīng)數(shù)值表示的操作;使用三位自定界二進(jìn)制碼執(zhí)行壓縮和解壓縮;以及存儲和檢索代碼。附圖說明當(dāng)結(jié)合附圖考慮時(shí),通過參考以下詳細(xì)描述提供對本公開的更完整的理解,其中:圖1示出根據(jù)一種實(shí)現(xiàn)的將圖或項(xiàng)代數(shù)項(xiàng)編碼為可以是自然數(shù)或基于樹的數(shù)的戈德爾數(shù)并且對圖或項(xiàng)代數(shù)項(xiàng)的同構(gòu)子圖形執(zhí)行統(tǒng)一的方法的流程圖;圖2示出根據(jù)一種實(shí)現(xiàn)的將圖或項(xiàng)代數(shù)項(xiàng)編碼為可以是自然數(shù)或基于樹的數(shù)的戈德爾數(shù)的過程的流程圖;圖3a示出根據(jù)一種實(shí)現(xiàn)的圖;圖3b示出根據(jù)一種實(shí)現(xiàn)的圖的組合圖形;圖3c示出根據(jù)另一種實(shí)現(xiàn)的圖的組合圖形;圖3d示出根據(jù)一種實(shí)現(xiàn)的另一個(gè)圖;圖3e示出根據(jù)一種實(shí)現(xiàn)的另一個(gè)圖的組合圖形;圖4a示出根據(jù)一種實(shí)現(xiàn)的將無不動點(diǎn)對合(fixedpointfreeinvolution)雙射編碼為自然數(shù)的方法的流程圖;圖4b示出根據(jù)一種實(shí)現(xiàn)的將自然數(shù)雙射解碼為無不動點(diǎn)對合的方法的流程圖;圖5示出根據(jù)一種實(shí)現(xiàn)的從圖(輸入圖)到項(xiàng)樹(termtree)(輸出子圖形)的變換;圖6示出根據(jù)一種實(shí)現(xiàn)的形成基本構(gòu)圖模式的字典的子圖的示例;圖7示出根據(jù)一種實(shí)現(xiàn)的迭代地編碼和遍歷區(qū)域(locales)以對同構(gòu)子圖形(即,子圖)執(zhí)行統(tǒng)一的雙步(dualstep)算法的示例;圖8示出根據(jù)一種實(shí)現(xiàn)的評估子圖形之間的同構(gòu)的方法的流程圖;圖9示出根據(jù)一種實(shí)現(xiàn)的評估子圖形之間的同構(gòu)的方法的流程圖;圖10示出根據(jù)一種實(shí)現(xiàn)的標(biāo)記組合超圖形的箭頭(dart)的方法的流程圖;圖11示出根據(jù)一種實(shí)現(xiàn)的將項(xiàng)代數(shù)項(xiàng)雙射編碼為自然數(shù)或基于樹的數(shù)的方法的流程圖;圖12示出根據(jù)一種實(shí)現(xiàn)的將項(xiàng)代數(shù)項(xiàng)雙射編碼為自然數(shù)的示例;圖13示出根據(jù)一種實(shí)現(xiàn)的使用符號序列標(biāo)記組合超圖形的箭頭的方法的流程圖;圖14示出根據(jù)一種實(shí)現(xiàn)的對項(xiàng)代數(shù)項(xiàng)和項(xiàng)樹進(jìn)行編碼的方法的流程圖;圖15示出根據(jù)一種實(shí)現(xiàn)的從項(xiàng)代數(shù)項(xiàng)生成項(xiàng)圖的方法的流程圖;圖16示出根據(jù)一種實(shí)現(xiàn)的執(zhí)行項(xiàng)圖統(tǒng)一的方法的流程圖;以及圖17示出根據(jù)一種實(shí)現(xiàn)的計(jì)算設(shè)備的框圖。具體實(shí)施方式在許多領(lǐng)域的嘗試中,圖可以提供知識和關(guān)系的有力的表示。圖數(shù)據(jù)庫存儲圖結(jié)構(gòu),而不是數(shù)據(jù)的表。通常,圖數(shù)據(jù)庫可應(yīng)用于需要存儲和檢索復(fù)雜拓?fù)湫畔⒌念I(lǐng)域,比如神經(jīng)網(wǎng)絡(luò)、語義網(wǎng)絡(luò)、社交網(wǎng)絡(luò)、相關(guān)故事的網(wǎng)絡(luò)、場景、路線、路徑、道路或地理信息系統(tǒng)(gis)。圖數(shù)據(jù)庫中的主要問題之一是基于結(jié)構(gòu)匹配檢索成員圖。圖的結(jié)構(gòu)匹配是已知的np完備(np-complete)問題。在大型圖數(shù)據(jù)庫中,因?yàn)楸仨氠槍?shù)據(jù)庫中的大量圖執(zhí)行結(jié)構(gòu)匹配,所以結(jié)構(gòu)匹配變得非常困難。因?yàn)椴淮嬖诜纸饪臻g并且空間始終在動態(tài)變化,所以從動態(tài)拓?fù)鋱D數(shù)據(jù)庫的檢索甚至比從預(yù)索引的基于屬性的圖數(shù)據(jù)庫的檢索更難。本文描述的方法和裝置提供用于基于高速邏輯推理的匹配圖結(jié)構(gòu)的功能。使用知識表示模型,信息被表示為圖。這些圖可以被變換成廣義組合圖形(g-maps,generalizedcombinatorialmaps)。使用用于圖結(jié)構(gòu)的廣義組合映射(g-map,generalizedcombinatorialmapping)的表示,算法使用格點(diǎn)(lattice)路徑的屬性作為g-maps內(nèi)固有的區(qū)域,以基于區(qū)域確定圖結(jié)構(gòu)的子圖是否是同構(gòu)的。假定可以由近似與超球體的質(zhì)心相交的角度掃過的面積(從其量化的多面體(permutohedral)復(fù)合體的細(xì)分得到)的實(shí)數(shù)表示區(qū)域,那么可以低多項(xiàng)式時(shí)間或最多l(xiāng)og(n)時(shí)間取得用于同構(gòu)測試的候選子圖。使用chymap-number對每一個(gè)區(qū)域進(jìn)行索引,該算法可以快速識別在給定圖結(jié)構(gòu)中同構(gòu)的區(qū)域。組合圖形(超圖形)可以是圖(超圖)的拓?fù)浔硎荆⑶矣勺饔糜诩^的有限集的置換對定義,其中箭頭表示由頂點(diǎn)和入射邊組成的耦合,并且置換給出入射到給定頂點(diǎn)(邊)的邊(頂點(diǎn))的次序。超圖是其中廣義邊(稱為超邊)可以連接多于兩個(gè)節(jié)點(diǎn)的圖。在本文中,本文關(guān)于g-maps描述的方法是通用的,并且也應(yīng)用于組合超圖形。類似地,除非另有明確說明,否則本文關(guān)于組合超圖形描述的方法是通用的并且也應(yīng)用于g-maps??梢杂捎糜谖ㄒ欢x相應(yīng)的g-maps的數(shù)列表(例如,箭頭、置換和對合)表示g-maps。此外,這些數(shù)列表可以使用戈德爾編號(numbering)由單個(gè)數(shù)表示(例如,使用康托爾(cantor)編號將數(shù)對映射為單個(gè)數(shù),這可以被重復(fù)執(zhí)行以將數(shù)列表映射到單個(gè)數(shù)),其中數(shù)列表與其戈德爾數(shù)之間的變換使用雙射(即,可逆變換)來執(zhí)行。但是,對應(yīng)于長的數(shù)列表的戈德爾數(shù)可能非常大,從而為使用常規(guī)計(jì)算機(jī)硬件存儲和表示這些數(shù)帶來挑戰(zhàn)。使用基于樹的整數(shù)表示來克服這個(gè)挑戰(zhàn),該基于樹的整數(shù)表示很好地適應(yīng)于緊湊地表示非常大量的數(shù)。隨著使用圖和/或子圖的戈德爾數(shù)的基于樹的整數(shù)表示來表示圖和/或子圖,標(biāo)準(zhǔn)數(shù)學(xué)運(yùn)算可以被執(zhí)行。因此,可以使用對相應(yīng)的戈德爾數(shù)的基本算術(shù)運(yùn)算在幾個(gè)時(shí)鐘周期內(nèi)執(zhí)行計(jì)算密集型函數(shù)(諸如,比較兩個(gè)子圖),否則這些計(jì)算密集型函數(shù)將需要大量的計(jì)算來遍歷和比較節(jié)點(diǎn)。因此,本文描述的方法基于表示復(fù)雜結(jié)構(gòu)數(shù)據(jù)的基于樹的編號來使用向量化編碼,該方法實(shí)現(xiàn)比先前最快方案更快幾個(gè)數(shù)量級的性能,該先前最快方案能夠處理用于表示對應(yīng)于知識表示(例如,圖)的復(fù)雜數(shù)據(jù)對象的大數(shù)。事實(shí)上,在大多數(shù)情況下,本文描述的方法相對于現(xiàn)有技術(shù)方法實(shí)現(xiàn)指數(shù)級的加速。此外,這些方法實(shí)現(xiàn)了存儲與圖對應(yīng)的戈德爾數(shù)的表示所需的計(jì)算機(jī)存儲的顯著減少。因此,本文描述的方法可以通過以下方式顯著地提高處理器性能:減少主存儲器帶寬要求、以編碼形式執(zhí)行大多數(shù)計(jì)算,同時(shí)還使得在存儲器的資源消耗的優(yōu)化中能夠利用進(jìn)一步的壓縮/解壓縮。本文描述的方法具有例如在化學(xué)信息學(xué)領(lǐng)域,特別是在定量結(jié)構(gòu)活性關(guān)系(qsar)建模領(lǐng)域中的應(yīng)用,在正在研究的化學(xué)物質(zhì)的圖上存在許多可以被計(jì)算的拓?fù)渲笖?shù)。示例包括hosoya指數(shù)或wiener指數(shù)。這些指數(shù)本質(zhì)上是化學(xué)結(jié)構(gòu)底層的圖的連接矩陣的函數(shù),并且也是圖的原子的性質(zhì)(諸如,原子的電負(fù)性值)。如上所述,在一般情況下圖子圖同構(gòu)是np難問題。使用本文描述的方法的新編碼,該方法對圖的區(qū)域進(jìn)行編碼,并且通過將圖的子圖的相鄰鄰域折疊成雙射整數(shù)表示通過連續(xù)的編碼來連續(xù)迭代圖,以便在標(biāo)準(zhǔn)計(jì)算硬件上處理逐漸變大和更復(fù)雜的圖。該過程性能是線性的,對于直接索引查找具有l(wèi)og(n)數(shù)量級的最佳情況計(jì)算性能,其中n對應(yīng)于關(guān)于節(jié)點(diǎn)和邊的數(shù)量的圖的大小。最壞情況性能與圖問題空間的理論極限相同(即,在最壞的情況下,該問題變得np難)。本文描述的方法使用簡化步驟和近似步驟來基于標(biāo)準(zhǔn)的統(tǒng)一匹配生成…但是以高速返回候選者。本文描述的方法包括將g-maps、項(xiàng)代數(shù)和復(fù)雜計(jì)算結(jié)構(gòu)表示為整數(shù)代碼的一系列編碼并且然后直接對整數(shù)代碼執(zhí)行計(jì)算,以便執(zhí)行快速計(jì)算,該計(jì)算如果直接對由整數(shù)代碼表示的對象執(zhí)行將需要顯著更多的時(shí)間。根據(jù)本文描述的方法,在g-maps、項(xiàng)代數(shù)的表示中使用了各種整數(shù)代碼,并且為了表示復(fù)雜數(shù)據(jù)結(jié)構(gòu)和整數(shù)代碼上的對應(yīng)操作使用了各種整數(shù)代碼。整數(shù)代碼為用于模式識別的復(fù)雜數(shù)據(jù)結(jié)構(gòu)上的計(jì)算提供系統(tǒng)和方法。例如,編碼對于向任意字母分配任意權(quán)重的任何字母上的單詞或項(xiàng)代數(shù)起作用。整數(shù)代碼可以被用作散列,以對部分圖形進(jìn)行索引以及恢復(fù)部分圖形的結(jié)構(gòu)。此外,每組整數(shù)代碼可以用于以無損的方式重構(gòu)起源(originating)圖。因此,對整數(shù)代碼的計(jì)算表示對g-maps的計(jì)算。本文描述的方法的貢獻(xiàn)包括但不限于:1)在邏輯編程中實(shí)現(xiàn)g-maps;2)為g-maps的箭頭產(chǎn)生戈德爾代數(shù),使得開放和封閉(軌道)被定義;3)使用g-maps來表示任何任意的網(wǎng)絡(luò)或圖,使得圖的最小結(jié)構(gòu)單元由箭頭上的代數(shù)定義(例如,假定箭頭通過對合方式關(guān)于箭頭的相鄰箭頭描述節(jié)點(diǎn),使得循環(huán)確定閉合結(jié)構(gòu),那么有可能不考慮圖大小、類型和形式通過追溯箭頭的對合來從g-map表示重構(gòu)圖,作為部分子圖形);4)作為箭頭的對合的函數(shù),從上述單元/部分子圖形中重構(gòu)任何目標(biāo)圖,其中圖是組合圖形的模擬;以及5)通過將輸入轉(zhuǎn)變成其模擬g-map來從輸入圖生成查詢,使得統(tǒng)一機(jī)制直接充當(dāng)構(gòu)建輸入的映射函數(shù)。因此,本文描述的方法提供知識表示模型,該模型將概念圖建模為一組子圖形(即,g-maps)和最小結(jié)構(gòu)的數(shù)量,該一組子圖形本質(zhì)上是g-maps的箭頭上的一組對合或函數(shù),該最小結(jié)構(gòu)由對合(諸如,圍繞節(jié)點(diǎn)的軌道(例如,三角形))定義、由箭頭表示。這種知識表示模型通過以下事實(shí)被啟用:一旦根據(jù)節(jié)點(diǎn)的箭頭和軌道描述節(jié)點(diǎn),那么就有可能通過追溯子圖形的連通性(connectivity)來重構(gòu)單形而不管交互圖形大小、類型和形式。如本文所討論的,子圖形/圖形的這種表示也極大地促進(jìn)了以功能分段的方式探索子圖形/圖形,以通過應(yīng)用結(jié)構(gòu)約束來找到同構(gòu)模式。圖的最小結(jié)構(gòu)單元可以由箭頭上的代數(shù)定義,并且可以由項(xiàng)m來表示。如本文所述,這種根據(jù)軌道和對合的箭頭的基于m的表示使得能夠分別索引每一個(gè)m,同時(shí)使得能夠訪問每一個(gè)m的所有結(jié)構(gòu)信息,使得可以像巨型拼圖中的塊一樣使用m。因此,概念圖可以被視為節(jié)點(diǎn)描述的二分組,并且節(jié)點(diǎn)描述之間的關(guān)系可以從整個(gè)圖中本地化和解耦。因此,每一個(gè)節(jié)點(diǎn)被定義為較大圖的子結(jié)構(gòu),類似于巨大的復(fù)雜拼圖中的一塊?,F(xiàn)在參考附圖,其中貫穿若干視圖,相同的標(biāo)號表示相同或?qū)?yīng)的部分,圖1示出編碼圖或項(xiàng)代數(shù)并且將子圖形作為項(xiàng)樹進(jìn)行比較以執(zhí)行統(tǒng)一的方法100的流程圖。在方法100的過程110中,圖或項(xiàng)代數(shù)通過以下被編碼為戈德爾數(shù):使用無不動點(diǎn)對合來表示圖或項(xiàng)代數(shù)并且然后將無不動點(diǎn)對合編碼為是戈德爾數(shù)的自然數(shù)。此外,可以使用三位自定界二進(jìn)制碼將是戈德爾數(shù)的自然數(shù)進(jìn)一步編碼為基于樹的數(shù)。取決于自然數(shù)的大小,將戈德爾數(shù)表示為基于樹的數(shù)可以改善戈德爾數(shù)的存儲器存儲大小,同時(shí)仍然提供直接對戈德爾數(shù)的基于樹的數(shù)表示執(zhí)行的數(shù)學(xué)運(yùn)算而不必變換回到自然數(shù)以執(zhí)行數(shù)學(xué)運(yùn)算。從圖或項(xiàng)代數(shù)到戈德爾數(shù)的所有變換都是雙射的,這意味著它們是無損的和可逆的。此外,與常規(guī)對合對比,通過連同使用無不動點(diǎn)對合使用這種編碼方法得到許多優(yōu)點(diǎn)。方法100提供沒有信息丟失的緊湊的雙射編碼。得到的整數(shù)在計(jì)算機(jī)的存儲器中作為位串而不是常規(guī)的數(shù)據(jù)結(jié)構(gòu)被更空間高效地表示。此外,上述表示需要更少的存儲器,因?yàn)樗鼈兛梢员桓斓卮鎯Σ⑶铱梢愿纳七B續(xù)位串段的高速緩存行為,從而相對于散布在非連續(xù)存儲器區(qū)域中的基于指針的數(shù)據(jù)結(jié)構(gòu)產(chǎn)生提高的性能。在方法100的過程120中,圖/項(xiàng)代數(shù)的編碼用于執(zhí)行被表示為項(xiàng)樹的圖/項(xiàng)代數(shù)的子圖形之間的快速比較,以便執(zhí)行統(tǒng)一處理。在方法100的步驟130中,可以對整數(shù)代碼直接執(zhí)行各種數(shù)學(xué)運(yùn)算。在表示戈德爾數(shù)的自然數(shù)或基于樹的數(shù)中執(zhí)行的數(shù)學(xué)運(yùn)算等同于直接對圖/項(xiàng)代數(shù)的數(shù)學(xué)運(yùn)算。在方法100的步驟140中,通過使用基于樹的數(shù)表示整數(shù)代碼來壓縮整數(shù)代碼。在某些實(shí)現(xiàn)中,可以在計(jì)算機(jī)存儲器中使用三位自定界二進(jìn)制代碼表示基于樹的數(shù)??蛇x地,可以在過程110之后和在過程120之前執(zhí)行使用基于樹的數(shù)表示整數(shù)代碼??商娲?,可以在過程120之后和在步驟130之前執(zhí)行使用基于樹的數(shù)表示戈德爾數(shù)。在方法100的步驟150中,過程110、過程120、步驟130和步驟140的各種結(jié)果可以被存儲,并且以后被檢索用于進(jìn)一步處理和比較。方法100有利地提供將項(xiàng)代數(shù)映射到基于樹的數(shù)并且使用唯一的可逆數(shù)值編碼和解碼方法將這些結(jié)構(gòu)的圖表示為g-maps的快速方法。此外,方法100有利地以對子圖形(子圖)到圖形(圖)同構(gòu)和部分匹配優(yōu)化的形式提供g-maps的表示。此外,方法100有利地提供用于通用匹配(也稱為統(tǒng)一)的過程。下面描述方法100的過程和步驟的細(xì)節(jié)。本文討論了過程110的兩種實(shí)現(xiàn)。圖2示出是過程110的第一種實(shí)現(xiàn)的過程110'的流程圖。過程110'將圖可逆地變換為戈德爾數(shù)。在數(shù)學(xué)邏輯中,戈德爾編號是向每一個(gè)符號和一些形式語言的格式正確的公式賦予唯一自然數(shù)(稱為其戈德爾數(shù))的函數(shù)。如本文所使用的,用于圖的戈德爾數(shù)是表示表示圖的g-map的所有箭頭、對合、置換等的單個(gè)數(shù)。過程110中的第一過程(即,過程210)以圖開始并生成圖的g-map表示。例如,圖3d示出圖,并且圖3e示出與圖3d所示的圖對應(yīng)的g-map。該圖可以從任何圖數(shù)據(jù)(包括,地理圖形、社交網(wǎng)絡(luò)、分子等)獲得。根據(jù)將圖分解成圖的箭頭及箭頭相關(guān)聯(lián)的相對層次子圖形來表示g-map。最低級別的圖形由對應(yīng)于節(jié)點(diǎn)鄰接的a0對合組成。接下來是a1對合,這個(gè)下一最高級別對應(yīng)于邊鄰接,并且向上的下一級別對應(yīng)于面鄰接、然后是體積鄰接等,如在表1中總結(jié)的。下面提供關(guān)于圖和g-maps之間的關(guān)系的細(xì)節(jié)。表1:表示組合超圖形例如,圖可以表示拓?fù)?,諸如連接各個(gè)城市的道路的地圖。連接城市的道路可以由邊表示,邊被定義為兩個(gè)箭頭(也稱為半邊),其中每一個(gè)箭頭起源于對應(yīng)于城市的相應(yīng)節(jié)點(diǎn)(頂點(diǎn))。例如,箭頭可以包括指向包含城市名稱的字符串的指針。例如對應(yīng)于分子中的原子之間的化學(xué)鍵的另一個(gè)圖可以具有與連接城市的道路的地圖相同的拓?fù)?。但是,在分子的示例中,箭頭將包括指向?qū)?yīng)于原子類型而不是對應(yīng)于城市名稱的對象的指針。因此,圖和g-map表示拓?fù)?,但也可以用于表示各種對象。事實(shí)上,由箭頭指向的對象可能是另一個(gè)g-map。除了指向?qū)ο蟮闹羔樦?,箭頭可以包括區(qū)分指向明顯不可區(qū)分對象的箭頭(例如,指向有機(jī)分子中相同但分開的碳原子的兩個(gè)箭頭)的唯一標(biāo)簽。在過程110的過程220中,g-map用于生成g-map的無不動點(diǎn)對合表示。如下所述,任何g-map列出表示g-map的箭頭、置換和對合的整數(shù)。例如,二維組合圖形(或2-map)是三元組m=(d,σ,α),其中d是箭頭的有限集,是d上的置換,并且α是d上沒有不動點(diǎn)的對合。例如,圖3e所示的g-map的箭頭由集合{1,-1,2,-2,3,-3,4,-4,5,-5,6,-6}給出,置換可以由(1,-1)(2,-2)(3,-3)(4,-4)(5,-5)(6,-6)(7,-7)給出并且對合可以由(1,2)(3,4,-1)(5,-4)(7,-2)(6,-3,-7)(-5,-6)給出。在過程110的過程230中,數(shù)組合用于使用單個(gè)數(shù)來表示數(shù)對。例如,康托爾配對函數(shù)可以用于舉例說明如何使用單個(gè)數(shù)可逆地表示數(shù)對。對表示g-map的數(shù)列表中的對重復(fù)執(zhí)行數(shù)組合,g-map表示可以被整合成單個(gè)自然數(shù)。g-map的這個(gè)單個(gè)數(shù)表示是g-map的戈德爾數(shù)。將數(shù)對重復(fù)組合成長數(shù)列表上的單個(gè)數(shù)可以導(dǎo)致戈德爾數(shù)的自然數(shù)表示非常大—太大以至于無法使用計(jì)算機(jī)中常規(guī)的數(shù)表示存儲。當(dāng)發(fā)生這種情況時(shí),可以使用基于樹的數(shù)而不是自然數(shù)來表示戈德爾數(shù)。接下來,描述廣義組合圖形的命名法。組合圖形是具有細(xì)分對象的組合對象建模拓?fù)浣Y(jié)構(gòu)。組合圖形可以用于表示更高維度的可定向細(xì)分對象。在幾何建模中組合圖形被用作圖像表示和處理中的高效數(shù)據(jù)結(jié)構(gòu)。這種模型涉及單純復(fù)形(simplicialcomplex)和組合拓?fù)洹4送?,組合圖形可以是表示非可定向?qū)ο?比如,莫比烏斯帶和克萊因(klein)瓶)的廣義圖形。組合圖形是邊界表示模型;組合圖形通過其邊界表示對象。若干應(yīng)用需要數(shù)據(jù)結(jié)構(gòu)來表示對象的細(xì)分。例如,2d對象可以被分解為頂點(diǎn)(0-單元格(cell))、邊(1-單元格)和面(2-單元格)。更一般地,n-維對象由維度0到n的單元格組成。此外,也可以通過描述細(xì)分的所有單元格加上這些單元格之間的所有入射和鄰接關(guān)系來表示這些單元格之間的相鄰關(guān)系。當(dāng)所有表示的單元格都是單形時(shí),可以使用單純復(fù)形。但是,為了表示任何類型的單元格,使用單元格拓?fù)淠P?,諸如組合圖形或廣義圖形。圖3a示出平面圖的示例。圖3b和3c示出分別使用頂點(diǎn)標(biāo)注和面標(biāo)注的圖3a的圖的組合表示的示例。二維組合圖形(或2-圖形)是三元組m=(d,σ,α),其中d是箭頭的有限集,是d上的置換,并且α是d上沒有不動點(diǎn)的對合。2-圖形對應(yīng)于平面圖,其中每條邊被細(xì)分成兩個(gè)箭頭(有時(shí)也稱為半邊)。對于每一個(gè)箭頭,置換σ通過以正方向繞頂點(diǎn)旋轉(zhuǎn)來給出下一個(gè)箭頭;對于每一個(gè)箭頭,其它置換α給出相同邊的另一個(gè)箭頭。對合α允許檢索邊(阿爾法,法語中的arête),并且σ允許檢索頂點(diǎn)(西格瑪,法語中的sommet)。操作可以被定義成對于每一個(gè)箭頭提供相同面的下一個(gè)箭頭(phi,法語中face)。因此,如圖5b和5c所示,取決于置換是σ還是存在兩種方法表示組合圖形。這兩個(gè)表示彼此對偶:頂點(diǎn)和面被交換。通常,n-維組合圖形(或n-map)是(n+1)元組m=(d,β1,…βn),其中d是箭頭的有限集,β1是d上的置換,β2,...,βn是d上的對合,如果i+2≤j(i,j∈{1,,...,n}),那么是對合。n-維組合圖形表示閉合可定向n-維空間的細(xì)分。箭頭是定義一對一映射僅需的抽象元素。這個(gè)定義的最后一行確定了保證所表示對象的拓?fù)溆行缘募s束:組合圖形表示準(zhǔn)流形細(xì)分??梢酝ㄟ^固定n=2并且將σ重新命名為β1和將α重新命名為β2來獲得2-維組合圖形的初始定義。從圖數(shù)據(jù)(諸如,分子結(jié)構(gòu)、城市的地理信息系統(tǒng)(gis)圖形或社交網(wǎng)絡(luò))開始,可以構(gòu)建g-map,其中每一個(gè)節(jié)點(diǎn)使用唯一整數(shù)進(jìn)行標(biāo)記。g-map具有圍繞給定頂點(diǎn)的邊的方向的顯式編碼,并且邊可以由稱為箭頭的兩個(gè)半邊組成,每一個(gè)箭頭在其所附連到的頂點(diǎn)處具有該箭頭的原點(diǎn)。如由半邊的箭頭所定義的兩個(gè)半邊確定相同邊的事實(shí)被記錄在稱為對合的置換函數(shù)中。因此,邊中的第一箭頭的后繼是第二箭頭,并且第二箭頭的后繼是第一箭頭。有向邊具有四個(gè)箭頭:兩個(gè)指定邊,以及兩個(gè)指定邊的相對朝向或方向。完全有向網(wǎng)絡(luò)的朝向可以簡單地使用關(guān)于表示箭頭的整數(shù)的符號的方向的約定來實(shí)現(xiàn)。即使當(dāng)箭頭不共同入射在其半邊處(即,不形成圖的邊)但是可能源自節(jié)點(diǎn)時(shí),那么它們被稱為在節(jié)點(diǎn)處1-鄰接,并且被定義為圍繞節(jié)點(diǎn),這是定義圍繞節(jié)點(diǎn)的箭頭的布置的循環(huán)置換。該置換操作通常被稱為α1-對合,并且由置換定義的箭頭的布置被稱為區(qū)域。當(dāng)兩個(gè)箭頭相對于彼此處于兩個(gè)不同位置,并且是0-維對象的箭頭的半邊相鄰時(shí),兩個(gè)0-維入射產(chǎn)生1-維線。這種對合通常被稱為α0-對合。最簡單的對合是乘以負(fù)1(-1),使得應(yīng)用兩次導(dǎo)致原始數(shù)。箭頭的連續(xù)序列的每一個(gè)軌道相關(guān)聯(lián)到一個(gè)節(jié)點(diǎn),并且編碼當(dāng)圍繞這個(gè)節(jié)點(diǎn)逆時(shí)針旋轉(zhuǎn)時(shí)遇到的箭頭序列。對于本領(lǐng)域技術(shù)人員來說,對于廣義組合圖形,面鄰接和體積或超體積鄰接置換被公知地定義和理解。在liu,y.p.的enumerativetheoryofmaps,kluwer,boston(1999)(其全部內(nèi)容通過引用被結(jié)合于此)中和在kropatsch,w.g.,1995年12月,buildingirregularpyramidsbydualgraphcontraction.iee-proc.vision,imageandsignalprocessing,卷142(no.6),第366-374頁(其全部內(nèi)容通過引用被結(jié)合于此)中提供用于操縱g-map的方法的附加細(xì)節(jié)和實(shí)現(xiàn)?;谝陨隙x,通過使用無不動點(diǎn)對合表示來實(shí)現(xiàn)過程220。當(dāng)g-mapm可以由三元組(d,s,q)和邊集合e表示,使得m=(d,s,q,e)時(shí),這一過程被實(shí)現(xiàn),其中d對應(yīng)于通過將每條邊分解成兩個(gè)箭頭而獲得的箭頭(或半邊)集合,s是從箭頭到箭頭的置換,該置換的循環(huán)對應(yīng)于在圍繞每一個(gè)節(jié)點(diǎn)逆時(shí)針旋轉(zhuǎn)時(shí)遇到的箭頭序列。從箭頭到邊的映射是無不動點(diǎn)對合,該對合的循環(huán)對應(yīng)于相關(guān)聯(lián)到相同邊的兩個(gè)箭頭。無不動點(diǎn)的使用意味著所有對都連接不同的端。通過由定義一條邊的兩個(gè)箭頭表示每一個(gè)分支(對合的循環(huán))來執(zhí)行通過這種圖形對拓?fù)涞木幋a。圍繞分支點(diǎn)的分支的朝向由置換的循環(huán)顯式編碼。注意的是,置換s顯式地編碼圍繞每一個(gè)節(jié)點(diǎn)的邊的朝向。此外,q是無不動點(diǎn)對合,它的循環(huán)對應(yīng)于相關(guān)聯(lián)到相同邊的兩個(gè)箭頭。通常,e(是嵌入(embedding))是將箭頭映射到整數(shù)、字符或向量的有限集的部分函數(shù)(partialfunction)。通過由定義一個(gè)邊的兩個(gè)箭頭表示每一個(gè)分支(q的循環(huán))來執(zhí)行通過這種圖形對圖的編碼。圍繞分支點(diǎn)的分支的朝向由置換s的循環(huán)顯式編碼。為了將特征附連到編碼圖的組合圖形,可以定義一組節(jié)點(diǎn)和邊標(biāo)簽(v和e),其中每一個(gè)節(jié)點(diǎn)和邊標(biāo)簽分別相關(guān)聯(lián)到圖形的單個(gè)循環(huán)s和q。圖4a示出用于無不動點(diǎn)對合作為整數(shù)代碼的過程230的實(shí)現(xiàn)的示例。圖4b示出通過從整數(shù)代碼變換回?zé)o不動點(diǎn)對合來反轉(zhuǎn)過程230的過程230(反轉(zhuǎn))的實(shí)現(xiàn)。本文使用prolog(計(jì)算機(jī)編程語言)的邏輯來描述過程230,以清楚地指示步驟410、412、414、416和418的輸入和輸出之間的關(guān)系。如圖4a和4b所示,某些步驟被嵌套在其它步驟內(nèi)部。因此,從外面步驟開始并且進(jìn)行到內(nèi)部嵌套步驟,這些步驟被逐漸細(xì)化。關(guān)系定義被指定為prolog子句的頭部(位于符號“:-”之前),并且對關(guān)系的結(jié)合的關(guān)系細(xì)化被提供在符號“:-”之后。多個(gè)子句(也稱為“規(guī)則”)用于指定謂詞所應(yīng)用的不同情況。無不動點(diǎn)對合將從0到2n-1的數(shù)的組分組成兩個(gè)一組的對,使得第一個(gè)數(shù)嚴(yán)格小于第二個(gè)數(shù)。示例是[0-4,1-3,2-5]。還假設(shè)數(shù)對被規(guī)范地表示為按照數(shù)對的第一個(gè)元素以遞增順序排序。步驟410描述從無不動點(diǎn)對合到自然數(shù)代碼的雙射。步驟410將表示為列表is的無不動點(diǎn)對合表示為唯一整數(shù)代碼。在確定對合is的長度l之后,步驟410生成從0到2*l的連續(xù)整數(shù)ns,對該連續(xù)整數(shù)的變換描述如下:假定從0到2*l的連續(xù)數(shù)ns,其中l(wèi)是對合is的長度,我們調(diào)用involutions_codes以將對合代碼ks相關(guān)聯(lián)到is中的每一個(gè)對,然后我們反轉(zhuǎn)得到的列表并使用bij_encode為其構(gòu)建雙射編碼。在prolog謂詞“inv2code”中,表示為列表“is”的無不動點(diǎn)對合被編碼為唯一的整數(shù),該整數(shù)由變量“code”引用。在計(jì)算對合“is”的長度l之后,謂詞“inv2code”生成從0到2*l的連續(xù)整數(shù)ns,對該連續(xù)整數(shù)應(yīng)用由3-參數(shù)謂詞“inv2code”描述的變換。這些函數(shù)可以通過以下給出的prolog代碼的描述來執(zhí)行。此外,假定從0到2*l的連續(xù)數(shù)ns的列表(其中l(wèi)是對合“is”的長度),步驟410計(jì)算用于對合“is”的整數(shù)代碼。為了執(zhí)行這個(gè)計(jì)算,步驟410調(diào)用步驟412中的謂詞“involution_codes”,以將對合代碼ks相關(guān)聯(lián)到“is”中的每一個(gè)對,然后步驟410反轉(zhuǎn)得到的列表并且通過使用步驟414中的“bij_encode”來構(gòu)建雙射編碼??梢詫?shí)現(xiàn)這一點(diǎn)的prolog代碼的示例通過以下給出:步驟412在0和2n-1之間的數(shù)集合上生成對合作為n對的集合。這些數(shù)各自對應(yīng)于由2個(gè)箭頭組成的邊。步驟412還在存儲器中存儲用于選擇箭頭的代碼k和ks。步驟412可以由以下prolog謂詞來執(zhí)行:這個(gè)謂詞“involution_codes”使用prolog內(nèi)置運(yùn)算符“nth0”來提取列表xs的tt第k個(gè)元素y,并返回其余元素ys。通過使用類似于因子(factoradics)的記號來執(zhí)行步驟414。假定存在1*3*5*…(2n-1)無不動點(diǎn)對合,那么可以使用(多少有些)類似于因子數(shù)的記號來編碼無不動點(diǎn)對合。但是,不是實(shí)際上使用因子,而是用使用利用雙射基-k(base-k)編碼的類似記號。雙射記數(shù)法可以是任何數(shù)值系統(tǒng),其中每一個(gè)非負(fù)整數(shù)可以使用有限數(shù)字(digit)串以恰好一種方式表示。雙射記數(shù)法名稱來源于非負(fù)整數(shù)集合和使用有限符號集合的有限串集合之間的這種雙射(一一對應(yīng))。雙射基-k記數(shù)法是雙射位置記號。雙射基-k記數(shù)法可以使用來自集合{1,2,…,k}(其中k≧1)的數(shù)字串來編碼每一個(gè)正整數(shù);數(shù)在串中的位置將該數(shù)字的值定義為k的冪的倍數(shù)。這種標(biāo)注可以被稱為k-adic。通過以下來確保步驟414的雙射編碼:在每一個(gè)步驟中將基遞增2,以與在計(jì)數(shù)對合的乘積1*3*5..*(2n-1)中的增量2匹配,這個(gè)函數(shù)由謂詞“bij_encode_step,”執(zhí)行,謂詞“bij_encode_step,”由謂詞“bij_encode_step”調(diào)用,并且這兩個(gè)謂詞在下面討論。在每一個(gè)步驟中,雙射基增加2,并且整數(shù)代碼通過如下面提供的prolog代碼所示的步驟418的謂詞“put_bdigit”的操作來擴(kuò)展:作為由過程230和230反轉(zhuǎn)產(chǎn)生的結(jié)果的示例,下面是整數(shù)代碼以及從0到10和從83到100的整數(shù)代碼的對應(yīng)的無不動點(diǎn)對合。這些結(jié)果使用本文所述的prolog代碼獲得,并且證明prolog是正確和可操作的。注意的是,從-到(from-to)對是從<到(from<to)的,因?yàn)榧^被看作是對稱的,并且因此另一個(gè)方向是隱含的。0=0+[]1=1+[(0-1)]2=2+[(0-1),(2-3)]33+[(0-2),(1-3)]4=4+[(0-3),(1-2)]5=5+[(0-1),(2-3),(4-5)]6=6+[(0-1),(2-4),(3-5)]7=7+[(0-1),(2-5),(3-4)]8=8+[(0-2),(1-3),(4-5)]9=9+[(0-2),(1-4),3-5)]10=10+[(0-2),(1-5),(3-4)]83=83+[(0-5),(1-3),(2-4),(6-7)]84=84+[(0-5),(1-3),(2-6),(4-7)]85=85+[(0-5),(1-3),(2-7),(4-6)]86=86+[(0-5),(1-4),(2-3),(6-7)]87=87+[(0-5),(1-4),(2-6),(3-7)]88=88+[(0-5),(1-4),(2-7),(3-6)]89=89+[(0-5),(1-6),(2-3),(4-7)]90=90+[(0-5),(1-6),(2-4),(3-7)]91=91+[(0-5),(1-6),(2-7),(3-4)]92=92+[(0-5),(1-7),(2-3),(4-6)]93=93+[(0-5),(1-7),(2-4),(3-6)]94=94+[(0-5),(1-7),(2-6),(3-4)]95=95+[(0-6),(1-2),(3-4),(5-7)]96=96+[(0-6),(1-2),(3-5),(4-7)]97=97+[(0-6),(1-2),(3-7),(4-5)]98=98+[(0-6),(1-3),(2-4),(5-7)]99=99+[(0-6),(1-3),(2-5),(4-7)]100=100+[(0-6),(1-3),(2-7),(4-5)]過程230的反轉(zhuǎn)可以由過程230(反轉(zhuǎn))執(zhí)行,該過程230(反轉(zhuǎn))可以使用下面給出的prolog謂詞來執(zhí)行:除了上述確定整數(shù)代碼為表示圖或g-map的戈德爾數(shù)的方法之外,康托爾配對也可以用作將數(shù)列表(諸如,對合、置換和箭頭列表)整合到單個(gè)戈德爾數(shù)的數(shù)組合的示例。例如,將兩個(gè)數(shù)x和y雙射映射成單個(gè)數(shù)的配對函數(shù)p(x,y)可以由以下給出:p(x,y)=2x(2y+1)-1并且還可以被縮減成更簡單的雙射,這是一個(gè)單解(onesolution)diophantine方程:q(x,y)=2x(2y+1)可以通過從數(shù)列表到單個(gè)數(shù)的數(shù)對的數(shù)組合將多重集合和集合遞歸地變換成單個(gè)數(shù)。此外,由于配對函數(shù)是雙射的,因此可以執(zhí)行反轉(zhuǎn)過程以使用成對差(pairwisedifference)來獲得數(shù)列表。如果數(shù)列表長,那么從執(zhí)行配對函數(shù)產(chǎn)生的單個(gè)數(shù)會由于指數(shù)冪的塔(tower)而非常大。在一些情況下,從數(shù)列表中得到的戈德爾數(shù)將太大而不能使用常規(guī)計(jì)算硬件存儲或處理。在這些情況下,將戈德爾數(shù)表示為基于樹的數(shù)可以是有利的。樹數(shù)(treenumber)提供這些數(shù)據(jù)類型的簡潔表示。列表、集合和多重集合作為樹數(shù)的這些編碼/解碼是大小成比例的,使得它們的表示大小在恒定因子內(nèi)。因此,本文描述的方法的編碼可以是雙射的(由于配對函數(shù)的雙射性質(zhì))和大小成比例的(由于使用基于樹的數(shù)),這在常規(guī)上是難以實(shí)現(xiàn)的組合。實(shí)現(xiàn)雙射和大小成比例這兩個(gè)方面之后,本文描述的方法能很好地探索和挖掘具有非常豐富的組合信息的數(shù)據(jù)結(jié)構(gòu)。對應(yīng)于使用常規(guī)主流方法變換為戈德爾數(shù)的非常豐富的組合樹結(jié)構(gòu)的組合圖(即,存在非常大量的給定大小的樹)趨向于呈指數(shù)性激增,因?yàn)殚L符號的編碼會在樹的葉子處放置相對大的數(shù),當(dāng)向上傳播時(shí),其將非??斓卦黾印O旅嬖敿?xì)討論用于戈德爾數(shù)的大小成比例表示的基于樹的數(shù)。此外,下面將關(guān)于生成戈德爾數(shù)并對項(xiàng)代數(shù)項(xiàng)執(zhí)行子圖形匹配來討論配對函數(shù)。這里,提到了項(xiàng)代數(shù)項(xiàng)可以是嵌套函數(shù),諸如“f(x,g(a,0,x),[1,2]),”,其中函數(shù)f的參數(shù)是x,g(a,0,x)和[1,2]。此外,f的參數(shù)中的一個(gè)g(a,0,x)本身是函數(shù),其具有參數(shù)a,0和x。像以上討論的g-maps一樣,這個(gè)函數(shù)可以使用項(xiàng)樹來表示,其中主函數(shù)是根,分支是參數(shù),并且對應(yīng)于函數(shù)的分支(諸如,g(a,0,x))具有從分支的端處的節(jié)點(diǎn)指向的分支。因此,與上述方法類似的方法可以應(yīng)用于這些項(xiàng)代數(shù)項(xiàng)。例如,如在p.tarau,“compactserializationofprologterms(withcatalanskeletons,cantortuplingandgodelnumberings)”,theoryandpracticeoflogicprogramming,卷13,no.4-5,第847-861頁,(2013)(通過引用被完整地結(jié)合于此)中所討論的,函數(shù)“f(x,g(a,0,x),[1,2]),”可以被雙射編碼為自然數(shù)678547916890513735116076,使得編碼的操作和解碼操作分別生成結(jié)果:encodeterm(f(x,g(a,0,x),[1,2]),n),n=678547916890513735116076,decodeterm(678547916890513735116076,t).t=f(a,g(a,0,a),[1,2])將g-map編碼為戈德爾數(shù)之后,過程230完成,并且過程110也完成。方法100從過程110進(jìn)行到過程120。過程120執(zhí)行包括比較g-map的候選子圖形以確定同構(gòu)的統(tǒng)一過程。而可以使用基于a*算法的方法、使用貪心算法的近似方法、或內(nèi)核函數(shù)來逼近同構(gòu)問題,本文所述的方法使用以下的組合:(i)基于連續(xù)較高階(點(diǎn)到點(diǎn)、點(diǎn)到邊、邊到邊、邊到面、面到體積等)的相鄰鄰接關(guān)系分解成一組模式;(ii)基于新穎遞歸樹的編號被應(yīng)用到這種模式作為局部圖形并且它們組合成表示圖形的全局圖形;以及(iii)對應(yīng)于由區(qū)域的模式索引的區(qū)域之間的子同構(gòu)的候選選擇:是總圖形的最大區(qū)域是圖同構(gòu),而較小區(qū)域是子同構(gòu)。因此,方法100是達(dá)意的、有效的、正定的并且適用于任何圖。方法100的過程120對通常圖遍歷(walk)內(nèi)核認(rèn)為相同的子結(jié)構(gòu)進(jìn)行區(qū)分。圖上的子圖形內(nèi)核是節(jié)點(diǎn)上的子圖形內(nèi)核的總和。因此,除非當(dāng)且僅當(dāng)特征空間由與子圖同態(tài)的圖構(gòu)成,計(jì)算完整的圖內(nèi)核、子圖內(nèi)核和路徑內(nèi)核是難以處理的。因此,在過程120中使用模式集字典。使用常規(guī)方法,即使對于相對小的子圖,大多數(shù)圖內(nèi)核仍然需要顯著的計(jì)算開銷并且在標(biāo)準(zhǔn)筆記本電腦上需要幾天:方法100快多個(gè)數(shù)量級。過程120可以通過以下來執(zhí)行:定義內(nèi)核,以通過確定稱為對應(yīng)于g-map的子g-maps的子圖形的項(xiàng)樹并使用子圖形的各自的戈德爾數(shù)快速比較子圖形來將g-map分解成基本組成模式。圖5示出從子g-map(即,輸入圖)到生成項(xiàng)樹(即,輸出子圖形)的變換的示例。g-maps之間的內(nèi)核基于它們分解成由有限大小的項(xiàng)樹表示的子圖形,并且每一個(gè)樹使用子g-map進(jìn)行編碼。因此,基于將每一個(gè)g-map分解成大量子圖形(即,表示g-map的各種子g-map的項(xiàng)樹),在g-maps之間定義內(nèi)核。子圖形成基本組成模式的字典。圖6示出基本組成模式的字典的示例。使用深度優(yōu)先搜索策略從每一個(gè)節(jié)點(diǎn)提取模式,其中節(jié)點(diǎn)的價(jià)(valence)對應(yīng)于模式的價(jià)。因此,每一個(gè)g-map通過以下來表示:分解成對其指定內(nèi)核算法的由有限大小的項(xiàng)樹(即,子圖形)表示的子圖形。g-map中的每一個(gè)k-維復(fù)合體都具有區(qū)域。因此邊可以具有諸如邊鄰接面的區(qū)域?;蛘呙婵梢跃哂兄T如面鄰接超體積的區(qū)域。這里描述的方法使用迭代編碼和遍歷區(qū)域的雙步算法。當(dāng)區(qū)域結(jié)構(gòu)上統(tǒng)一時(shí),那么圖同構(gòu)于匹配區(qū)域(即,子圖)的級別。圖7示出迭代編碼和遍歷區(qū)域的雙步算法的示例。g-map中的每一個(gè)k-單元格具有區(qū)域,區(qū)域先前被定義為基于對合操作的圍繞單元格的箭頭的布置。例如,將對應(yīng)于圖中的節(jié)點(diǎn)的g-map中的0-單元格將具有邊作為區(qū)域,該邊是由相鄰節(jié)點(diǎn)形成的所有邊。基于g-map中的每一個(gè)單元格處的拓?fù)渌饕?,這些區(qū)域中的每一個(gè)被分配索引??梢允褂脤⒈A舭瑓^(qū)域的每一個(gè)單元格的唯一結(jié)構(gòu)和內(nèi)容的編碼算法(諸如,lehmer碼)來計(jì)算索引。lehmer碼用于對置換進(jìn)行編碼。通常,對于統(tǒng)一的過程,過程120開始于這樣的假設(shè):g-map在圖中可用的最高公共維度上是同構(gòu)的。如果在所比較的圖中的k-維復(fù)形的區(qū)域處的索引相等,那么區(qū)域的子圖在結(jié)構(gòu)上是等同的。如果過程120在維度k沒有找到區(qū)域的結(jié)構(gòu)匹配,那么考慮維度k-1的所有區(qū)域,以此類推,直到考慮了維度0的區(qū)域?,F(xiàn)在描述過程120的細(xì)節(jié)??梢酝ㄟ^將項(xiàng)代數(shù)映射到唯一樹數(shù)來將通常表示數(shù)據(jù)、信息或知識的一些特征或表示的項(xiàng)代數(shù)項(xiàng)嵌入到編碼構(gòu)架(skeleton)的組合圖形中。為了實(shí)現(xiàn)表示項(xiàng)代數(shù)的樹數(shù)的嵌入,我們定義一組節(jié)點(diǎn)和邊標(biāo)簽(v和e),其中每一個(gè)節(jié)點(diǎn)和邊標(biāo)簽相關(guān)聯(lián)到單個(gè)循環(huán)置換,該單個(gè)循環(huán)置換的循環(huán)對應(yīng)于當(dāng)圍繞每一個(gè)節(jié)點(diǎn)逆時(shí)針旋轉(zhuǎn)時(shí)遇到的箭頭序列,以及關(guān)聯(lián)到顯式地編碼圍繞每一個(gè)節(jié)點(diǎn)的邊朝向的置換:這產(chǎn)生也表示為樹數(shù)的數(shù)值代碼。如在前面所明確的,廣義組合圖形(g-maps)是拓?fù)浜徒M合的數(shù)據(jù)結(jié)構(gòu),其基于編碼稱為箭頭的基元(primitive)元素之間的相對鄰接關(guān)系的置換的概念。本文描述的方法使用兩種類型的箭頭:半邊箭頭(half-edgedart)和空箭頭(emptydart)。空箭頭可以用于定義部分組合圖形或部分結(jié)構(gòu),其中算法取決于對象的入射對是未縫合以將循環(huán)轉(zhuǎn)變?yōu)闃洌€是反之添加箭頭以將樹轉(zhuǎn)變?yōu)檠h(huán)。出于本發(fā)明的本實(shí)施例的算法的目的,空箭頭也可以填充“空白”以完成結(jié)構(gòu)。在箭頭之間,存在由維度定義的鄰接關(guān)系,其中空箭頭沒有定義的維度(即,不是零而是未定義,并且每當(dāng)在需要時(shí)空箭頭被特別地標(biāo)記,這種情況通常非常少)。單個(gè)半邊箭頭具有維度零??梢耘c對象分開和明確地提及k-維單元格的維數(shù),其中對象具有箭頭可能是其一部分的維度n。因此,k=dim(c)表示單元格c的維度,并且n表示對象的維度。此外,0-單元格是頂點(diǎn),1-單元格是邊,2-單元格是多邊形,3-單元格是多面體,等等。表1提供圖元素和g-map元素以及他們的對應(yīng)的對合之間的對應(yīng)關(guān)系的列表。箭頭或者被縫合在一起,或者在分離時(shí)沒有被縫合,并且在鄰接面的情況下,“共享的”邊被分離使得每一個(gè)面具有其自己的定義該面的箭頭的集合。由置換操作定義將箭頭縫合在一起,并且置換算子從箭頭構(gòu)建組合圖形。如本文所述的箭頭具有另外兩個(gè)性質(zhì)。首先,箭頭使用整數(shù)進(jìn)行唯一標(biāo)記。其次,箭頭是指向通常是某種類型內(nèi)容(例如,社交網(wǎng)絡(luò)中的人的名字、或蛋白質(zhì)結(jié)構(gòu)中的原子的名稱)的其它數(shù)據(jù)的指針。作為指針,箭頭可以嵌入各種類型的數(shù)據(jù)。單箭頭隱含地定義節(jié)點(diǎn),并且箭頭的嵌入定義了包含在節(jié)點(diǎn)中的數(shù)據(jù),該數(shù)據(jù)可以包括其它組合對象或圖形。因此,圖形的拓?fù)浣Y(jié)構(gòu)與可以用作將幾何或形狀的特征連接到底層拓?fù)浠驑?gòu)架的嵌入不同。120中的統(tǒng)一過程包括評估查詢圖和輸入圖之間的子圖形同構(gòu)。圖8示出用于執(zhí)行子圖同構(gòu)評估的過程800。使用上述方法,可以使用戈德爾數(shù)并使用基于樹的編號對g-map進(jìn)行編碼。此外,可以使用我們可以在其上指定開放和閉合(軌道)作為箭頭上的無不動點(diǎn)對合的箭頭來將項(xiàng)代數(shù)項(xiàng)嵌入頂點(diǎn)或邊的節(jié)點(diǎn)處。例如,就箭頭而言,三角形是最小的閉合結(jié)構(gòu),而邊是最小的開放結(jié)構(gòu)。假定箭頭通過對合的方式關(guān)于箭頭的相鄰箭頭描述節(jié)點(diǎn),使得循環(huán)確定閉合結(jié)構(gòu),那么有可能通過追溯箭頭的對合來從組合圖形重構(gòu)圖,而不管作為部分子圖形的圖大小、類型和形式;給定的箭頭及其相關(guān)聯(lián)的子結(jié)構(gòu)(子圖形和邊)具有嚴(yán)格的次序(即,朝向)。因此,可以從有序的箭頭組裝唯一的有向圖,并且該唯一的有向圖始終是預(yù)期的(子)圖。因此,為了找到子圖形同構(gòu),方法800的步驟810將查詢圖轉(zhuǎn)變成g-map。接下來,方法800的步驟820從對應(yīng)于查詢圖的g-map中提取對合,作為基元子圖形的結(jié)合(即,大小“k”的分解將子圖形表示為子樹或循環(huán)或子圖形)。在方法800的步驟830中,使用weisfeiler-lehman測試評估輸入圖和查詢圖的子圖形之間的同構(gòu)。如果weisfeiler-lehman測試表明子圖形是同構(gòu)的,那么返回真(true)值。否則返回假(false)值。比較輸入圖和查詢圖兩者的各種子圖形不是僅執(zhí)行一次,而且使用迭代編碼和遍歷區(qū)域的雙步算法重復(fù)多次。可以通過將輸入圖編譯成基元子圖形來定義基本組成模式的數(shù)據(jù)庫。查詢子圖形可以使用箭頭的變量,使得子圖形是查詢圖式(schema)。通過基于使用weisfeiler-lehman測試的箭頭的子子映射將子圖形圖式(schemata)與來自數(shù)據(jù)庫的查詢g-map統(tǒng)一來進(jìn)行搜索。為了幫助搜索,可以使用圖9所示的方法900來組裝搜索索引。基于將匹配子圖形編碼到圖的身份來建立搜索索引,并且索引子圖形的集合用于處理其它查詢,而無需weisfeiler-lehman測試所要求的統(tǒng)一步驟。在方法900的步驟910中,通過將邊切割成箭頭來分解輸入圖;在方法900的步驟920中,對于每一個(gè)頂點(diǎn)到邊鄰接,將這些標(biāo)記為ea節(jié)點(diǎn)并且將到這些的箭頭指定為原始圖的新的子圖形。在方法900的步驟930中,對于每一個(gè)三角形軌道,將這些指定為面到頂點(diǎn)到面鄰接、將這些標(biāo)記為fa節(jié)點(diǎn)、并且將到這些的箭頭指定為原始圖的新的子圖形。在方法900的步驟940中,從圖繪制的圖形中的每一個(gè)k-單元格具有視作與另一個(gè)子圖形相關(guān)的子圖形。例如,邊是子圖形。此外,匹配面是子圖形。此外,面可以具有子圖形(諸如,超體積)作為面的子圖形(即,面邊鄰接超體積)。在方法900的步驟950中,應(yīng)用雙步算法來迭代地編碼和遍歷子圖形,并且繼續(xù)直到匹配失敗。在方法900的步驟910中,如果子圖形結(jié)構(gòu)上統(tǒng)一,那么上至匹配子圖形(即,子圖)的級別,圖都是同構(gòu)的。方法900提供搜索索引,輸入圖的子圖形要與查詢圖對于該搜索索引進(jìn)行比較。方法800補(bǔ)充方法900,因?yàn)榉椒?00提供關(guān)于如何將輸入圖與查詢圖的子圖形進(jìn)行比較的指令,但是不包括關(guān)于要比較哪些子圖形的指令。因此,方法800和900一起工作以執(zhí)行過程120的功能。此外,本文描述的方法可以與表示網(wǎng)絡(luò)流的圖一起使用。網(wǎng)絡(luò)流(即,具有包含有向流的邊的圖)由四個(gè)箭頭的對表示,并且圖由一對箭頭表示。令x為有限集,并且k為由1、a、b和c表示的四個(gè)元素的克萊因組,其中c=ab。對于xex,集合kx={x,ax,bx,cx}被稱為四角形單元格(quadricell)。圖形的基本元素被稱為箭頭,并且每一個(gè)有向邊由具有不同側(cè)面和方向的四個(gè)箭頭組成。對于無向圖,一對表示邊的箭頭就足夠??梢允褂闷渲衳是箭頭的有限集的三元組(x,p,k)來表示表示網(wǎng)絡(luò)流的組合圖形m。因此,單個(gè)“邊”圖形由四個(gè)箭頭表示。圖的頂點(diǎn)由關(guān)于該頂點(diǎn)的箭頭的循環(huán)置換描述:因此,圖形的循環(huán)置換描述是由圖形中所有頂點(diǎn)的箭頭的有向遍歷組成的序列。通常,一般存在可以被書寫以描述給定圖形的許多都不同的循環(huán)置換。因此,圖形是由置換構(gòu)成的組合結(jié)構(gòu),并且這些置換在本發(fā)明中由方法1000進(jìn)行編碼。在方法1000的步驟1010中,使用作為標(biāo)簽的唯一整數(shù)來枚舉所有箭頭。在方法1000的步驟1020中,根據(jù)公式a2=b2=c2=1和c=ab=ba對箭頭整數(shù)值的循環(huán)置換中的每一個(gè)進(jìn)行編碼,其中h是v上的置換,使得p的每一個(gè)軌道由ip0的如(x,px,...,pix)和(ax,ap_1x,...,ap_ix)的共軛對組成,并且由{p,a,b}生成的組在v上是傳遞的。如上所述,可以使用方法100編碼項(xiàng)代數(shù)項(xiàng)。因此,代替步驟110將圖數(shù)據(jù)編碼為整數(shù)代碼,使用戈德爾數(shù)編碼是項(xiàng)代數(shù)的項(xiàng)(以下稱為項(xiàng)代數(shù)項(xiàng))的函數(shù)。此外,子圖形(即,項(xiàng)樹)之間的比較是參數(shù)與函數(shù)的參數(shù)的參數(shù)之間的比較。例如,函數(shù)f(x,g(a,0,x),[1,2])是項(xiàng)代數(shù)項(xiàng),并且如果f(x,g(a,0,x),[1,2])被表示為項(xiàng)樹,那么g(a,0,x)將對應(yīng)于將是f(x,g(a,0,x),[1,2])的子圖形的項(xiàng)樹。此外,x是f(x,g(a,0,x),[1,2])的參數(shù),并且x也是f(x,g(a,0,x),[1,2])的參數(shù)的參數(shù)。因此,從f(x,g(a,0,x),[1,2])的項(xiàng)樹導(dǎo)出的項(xiàng)圖將是循環(huán)的。圖11示出當(dāng)使用項(xiàng)代數(shù)而不是圖數(shù)據(jù)時(shí)對應(yīng)于方法100的過程110的過程110"。過程110的步驟1105正在生成項(xiàng)樹的規(guī)范表示。圖12示出函數(shù)(例如,f(a,g(b,x),h(x,10)))可以被分為兩個(gè)部分。第一部分是表示參數(shù)的結(jié)構(gòu)的括號結(jié)構(gòu)(即,構(gòu)架)。第二部分是內(nèi)容。在步驟1110中,使用雙射基-k對內(nèi)容進(jìn)行編碼。如圖12所示,串可以被表示為雙射基-k中的數(shù),其中k是字母表的大小。因此,如圖12所示,通過在ascii碼上執(zhí)行數(shù)組合(例如,使用上述康托爾配對函數(shù)),可以使用單詞和作為ascii碼的其字母表的列表之間的雙射來導(dǎo)出數(shù)n。在步驟120中,ascii碼串的雙射編碼被整合為單個(gè)數(shù)。在步驟1130中,由括號表示的catalan構(gòu)架被轉(zhuǎn)換成如圖12底部所示的項(xiàng)樹。在步驟1140中,執(zhí)行catalaon構(gòu)架的雙射編碼。例如,這種雙射編碼可以是為catalan架構(gòu)項(xiàng)計(jì)算的無不動點(diǎn)對合。執(zhí)行catalan架構(gòu)項(xiàng)樹的雙射編碼,生成表示catalan架構(gòu)項(xiàng)樹的單個(gè)數(shù)。在步驟1150中,執(zhí)行例如無不動點(diǎn)對合的數(shù)對的數(shù)值組合,以生成表示catalan架構(gòu)的拓?fù)涞膯蝹€(gè)自然數(shù)。在步驟1160中,通過使用配對函數(shù)(諸如,上述cantor配對函數(shù)),通過將表示內(nèi)容(也稱為符號序列)的自然數(shù)與表示catalon架構(gòu)的拓?fù)涞淖匀粩?shù)組合,生成單個(gè)自然數(shù)。在步驟1170中,將來自步驟1160的單個(gè)自然數(shù)表示為基于樹的數(shù)。表示內(nèi)容(內(nèi)容也可以被稱為符號序列)與表示catalon架構(gòu)的拓?fù)涞淖匀粩?shù)組合。過程110"的函數(shù)可以由執(zhí)行偽代碼的操作符encodeterm執(zhí)行:encodeterm:輸入項(xiàng)樹,輸出代碼將項(xiàng)轉(zhuǎn)換為二進(jìn)制括號語言,ps,作為拓?fù)浜头柋?,xs將ps轉(zhuǎn)換為catalan代碼,ns將xs轉(zhuǎn)換為goedel代碼,g使用配對函數(shù)將ns轉(zhuǎn)換為n5配對n和g以輸出代碼為了確定項(xiàng)代數(shù)項(xiàng)之間的同構(gòu),項(xiàng)代數(shù)項(xiàng)的拓?fù)淇梢栽陧?xiàng)樹中表示,并且項(xiàng)樹的節(jié)點(diǎn)可以包括指向?qū)?yīng)內(nèi)容的指針,類似于包括指向?qū)ο蟮闹羔樀膅-map的箭頭。此外,可以為項(xiàng)代數(shù)項(xiàng)的項(xiàng)樹生成與g-map類似的項(xiàng)圖。因此,數(shù)據(jù)可以嵌入到圖形中,并且表示項(xiàng)代數(shù)項(xiàng)。每一個(gè)函子(functor)都被頂點(diǎn)取代,并且參數(shù)被關(guān)于頂點(diǎn)的箭頭取代。嵌套項(xiàng)意味著一些箭頭共享頂點(diǎn)。對于每一個(gè)唯一的原子集,執(zhí)行唯一的整數(shù)的標(biāo)記。項(xiàng)圖是在運(yùn)行時(shí)從已經(jīng)被表示為組合圖形的標(biāo)準(zhǔn)項(xiàng)代數(shù)項(xiàng)樹動態(tài)編譯的組合數(shù)據(jù)結(jié)構(gòu)。項(xiàng)代數(shù)項(xiàng)樹被轉(zhuǎn)換為唯一整數(shù)圖形,其中每一個(gè)元素被編碼為自然數(shù),并且每一個(gè)自然數(shù)表示項(xiàng)樹的分支。項(xiàng)樹(整數(shù)結(jié)構(gòu))與項(xiàng)代數(shù)項(xiàng)不同,但是是等效的重寫并且被動態(tài)減少并預(yù)編譯成項(xiàng)圖。項(xiàng)圖被表示為數(shù)的連通圖形,這些數(shù)形成箭頭向它們所起源于的原始符號項(xiàng)的嵌入。用于標(biāo)記和表示圖形的規(guī)范協(xié)議用于克服可以用于描述圖形的循環(huán)置換的多樣性。當(dāng)箭頭被嵌入有符號s(例如,內(nèi)容)時(shí),共享相同邊的其它箭頭也可以被嵌入并通過使用s進(jìn)行描述。給定圖形的廣度優(yōu)先遍歷將把所訪問的箭頭的符號添加到根據(jù)訪問順序存儲在隊(duì)列中的符號序列中。用于確定箭頭標(biāo)簽的方法在圖13中使用偽代碼示出。這種表示使得將被存儲為與其它符號序列集合統(tǒng)一的項(xiàng)和多個(gè)項(xiàng)的符號序列變得等同于圖形統(tǒng)一。因此基于圖形的組合屬性的符號序列的數(shù)并且自然數(shù)呈指數(shù)增長,并且因此簡單的統(tǒng)一是不可行的。因此,子圖形序列集合中的符號序列可以有利地被組織為項(xiàng)圖。接下來,提供項(xiàng)樹的性質(zhì)和關(guān)系的定義。假定圖形m和表示為子圖形的組合數(shù)(combinadicnumber)d(m)的對應(yīng)序列集,表示為tt(m)的項(xiàng)樹m是組合數(shù)的有根樹,使得:1)這個(gè)樹中的每一個(gè)節(jié)點(diǎn)與表示記為sv的符號序列(結(jié)構(gòu)看起來像刷或叢狀圖)的組合數(shù)相關(guān)聯(lián);2)讓tt(m)中的每一個(gè)邊從父引導(dǎo)到孩子;3)從根到節(jié)點(diǎn)的每條路徑,例如v,與從根到節(jié)點(diǎn)的符號序列的自然數(shù)編碼相關(guān)聯(lián);4)對于這個(gè)樹中的任何節(jié)點(diǎn)v,與v的孩子相關(guān)聯(lián)的數(shù)彼此不同;5)對于d(m)中的任何組合數(shù),在這個(gè)樹中存在節(jié)點(diǎn)v,使得s=sv;6)對于這個(gè)樹中的任何節(jié)點(diǎn)v,如果sv是常規(guī)序列,那么在d(m)中存在自然數(shù)s,使得s=sv;7)如果由與兩個(gè)符號序列相關(guān)聯(lián)的自然數(shù)表示的兩個(gè)符號序列是相等的,那么兩條路徑是等效的;8)對于使得子樹tu和tv相等的tt(m)中的任何兩個(gè)節(jié)點(diǎn)u和v,從tt(m)中去除tu并且添加從u的置換到v的一條邊;9)給定圖形m和項(xiàng)樹tt(m)以及項(xiàng)圖tg(m),對于tt(m)中的任何路徑p,在tg(m)中存在路徑q,使得q等于p;10)項(xiàng)圖的根是沒有進(jìn)入邊的節(jié)點(diǎn),并且圖形的任何符號序列的第一個(gè)符號是“1”,這與和項(xiàng)圖的根相關(guān)聯(lián)的符號相同。基于以上項(xiàng)樹的定義和描述,可以使用如圖14和15所示的方法1400和1500分別寫出項(xiàng)圖表示。方法1400創(chuàng)建項(xiàng)樹,并且方法1500創(chuàng)建項(xiàng)圖。方法1400和1500兩者都使用偽代碼表示。在預(yù)處理中,執(zhí)行為每一個(gè)模型圖形構(gòu)建對應(yīng)的符號樹。給定具有n條邊的圖形,最多存在o(2n)個(gè)連通的子圖形以及存在表示子圖形序列集合中的符號序列的o(n2n)個(gè)數(shù)。因此,在最壞的情況下,符號圖的存儲復(fù)雜度為o(n2(2n))個(gè)數(shù)。在平均情況下,對于其中數(shù)據(jù)中存在模式的結(jié)構(gòu)化數(shù)據(jù),組合復(fù)雜度要低得多。使用基于樹的編號以及用于在樹大小或位大小方面選擇代碼的規(guī)則,編號將是簡潔的。圖16所示的方法1600執(zhí)行項(xiàng)圖之間的統(tǒng)一過程。項(xiàng)圖可以由圖形表示。由方法1600執(zhí)行的項(xiàng)圖子圖形統(tǒng)一操作檢查是否存在與項(xiàng)圖模式圖形g的項(xiàng)子圖統(tǒng)一(例如,同構(gòu))的模型圖形m的項(xiàng)子圖。如果g的根與m的項(xiàng)圖中的第一項(xiàng)匹配,并且然后子項(xiàng)圖同構(gòu)算法匹配根的孩子中的第二項(xiàng)并且迭代地繼續(xù)。實(shí)現(xiàn)了雙循環(huán),其中每一個(gè)迭代匹配操作迭代地沿項(xiàng)圖下移。因此,方法1600以多項(xiàng)式時(shí)間工作,并且其計(jì)算復(fù)雜度為o(kn),其中n是模式圖形中箭頭的數(shù)量,并且k是模型圖形的項(xiàng)圖中的節(jié)點(diǎn)的最大度(degree)。如果k是有界的,那么方法1600的計(jì)算復(fù)雜度是線性的,并且在最壞的情況下為o(mn),其中m是模型圖形中的箭頭的數(shù)量?,F(xiàn)在討論基于樹的編號?;跇涞臄?shù)被歸納地定義為項(xiàng)集合,使得:當(dāng)且僅當(dāng)x=e或x是以下謂詞之一時(shí),樹數(shù)x是基于樹的編號數(shù)據(jù)類型t的元素:v(t,ts)或w(t,ts),其中ts代表t的元素的有限序列(列表)。數(shù)據(jù)類型由具有以下規(guī)則的集合表示:(a)項(xiàng)e是空葉,并且對應(yīng)于零;(b)定義函數(shù)o(x)=2x+1(c)定義函數(shù)i(x)=2x+2(d)將任何數(shù)定義為函數(shù)o和i應(yīng)用到e的求值到數(shù)n的唯一序列(e)如下定義vw-樹:(i)定義項(xiàng)v(t,ts)計(jì)數(shù)o應(yīng)用的數(shù)量t+1(如從0開始計(jì)數(shù)),跟隨著在ts中i和o應(yīng)用的類似計(jì)數(shù)的交替。(ii)定義項(xiàng)w(t,ts)計(jì)數(shù)i應(yīng)用的數(shù)量t+1,跟隨著在ts中o和i應(yīng)用的類似計(jì)數(shù)的交替。(f)使用項(xiàng)重寫邏輯通過可逆謂詞s(pred,succ)如下定義后繼和前任,其中succ是pred的后繼:s(e,v(e,[])).s(v(e,[]),w(e,[])).s(v(e,[x|xs]),w(sx,xs))→s(x,sx).s(v(t,xs),w(e,[p|xs]))→s(p,t).s(w(t,[]),v(st,[]))→s(t,st).s(w(z,[e]),v(z,[e])).s(w(z,[e,y|ys]),v(z,[sy|ys]))→s(y,sy).s(w(z,[x|xs]),v(z,[e,sx|xs]))→s(sx,x).(g)恒等式是:on(k)=2n(k+1)-1in(k)=2n.(k+2)-2on(0)=2n-1in(0)=2(n+1)-2ok(x)+ok(y)=ik(x+y)ok(x)+ik(y)=ik(x)+ok(y)=ik.(x+y+1)-1ik(x)+ik(y)=ik.(x+y+2)-2(h)從樹到自然數(shù)的雙射:表2示例:對于函數(shù)n(t,n),其中t是項(xiàng),n是數(shù),因此,n=42。關(guān)于o和i的運(yùn)算符的示例:0=e;1=o(e);2=i(e);3=o(o(e));4=i(o(e));5=o(i(e))作為樹的示例:0=e,1=v(e,[]),2=w(e,[]),3=v(v(e,[]),[]),4=w(e,[e]),5=v(e,[e])給定n=20,因此,對應(yīng)的樹項(xiàng)是:w(e,[e,e,e])。因此,對應(yīng)的樹項(xiàng)是:v(v(v(v(v(e,[]),[]),[]),[]),[])。(i)項(xiàng)樹:以下函數(shù)t(x)定義相關(guān)聯(lián)到數(shù)的樹表示:如果x=0,那么t(x)=e如果x>0并且x是奇數(shù),那么如果x>0并且x是偶數(shù),那么(j)關(guān)于o和i的樹變換:o(e,v(e,[])).o(w(x,xs),v(e,[x|xs])).o(v(x,xs),v(sx,xs)):-s(x,sx).i(e,w(e,[])).i(v(x,xs),w(e,[x|xs])).i(w(x,xs),w(sx,xs)):-s(x,sx).(k)兩個(gè)數(shù)a和b的乘法:on(a)om(b)=o(n+m).(ab+a+b)-on(a)-om(b)(l)減法如果x>y那么ok(x)-ok(y)=ok.(x-y-1)+1如果x>y+1那么ok(x)-ik(y)=ok.(x-y-2)+2如果x≥y那么ik(x)-ok(y)=ok.(x-y)如果x>y那么ik(x)-ik(y)=ok.(x-y-1)+1可以通過結(jié)構(gòu)歸納證明保有peano公理,并且{t,e,s}是peano代數(shù)。因此,這些定義也可以遞歸地應(yīng)用于計(jì)數(shù)器(i和o),直到達(dá)到空序列。因此,可以在基于樹的編號上執(zhí)行所有的算術(shù)運(yùn)算。此外,當(dāng)它們被擴(kuò)展到大的非平衡二叉樹時(shí),本文描述的基于樹的編號相反可以有利地處理指數(shù)塔的線性組合,諸如2x-1。o和i的n次迭代的恒等式:如果k>0,那么1+on(k-1)=2nk;如果k>1,那么2+in(k-2)=2nk并且,on(k)=2n(k+1)-1其中on(0)=2n-1;in(k)=2n(k+2)-2其中,in(0)=2n+1-2,并且此外,對于k,on(k)+2n=in(k)+1;in(k)=on(k)+on(0);on(k+1)=in(k)+1如本發(fā)明前面所定義的,給定o(x)=2x+1并且i(x)=2x+2,那么設(shè)置s(x)=x+1并且s′(x)=x-1,其中我們設(shè)置:on(k)=s(in(s′(k)));in(k)=s′(on(s(k)))以下將后繼和前任關(guān)聯(lián)到o和i的迭代應(yīng)用:s(on(k))=i(os′(n)(k));s(in(k))=on(s(k))s′(on(k))=in(s′(k));s′(in(k))=o(is′(n)(k))本文描述的基于樹的數(shù)將計(jì)算的可追溯性提高到由其操作數(shù)的表示大小限制,而不是由受本地處理器限制的位大小限制?;跇涞臄?shù)用于簡潔地表示稀疏或密集列表、集合和多集。這提供數(shù)據(jù)類型的雙射大小成比例的戈德爾編號。存儲和檢索以及經(jīng)網(wǎng)絡(luò)數(shù)據(jù)的傳輸將通過兩個(gè)參數(shù)進(jìn)行壓縮和選擇:或者通過樹大小或者通過位大?。喝绻淮笮∶黠@大于樹大小,那么基于樹的數(shù)將用于編碼數(shù)據(jù)結(jié)構(gòu)的數(shù)的表示,否則,將使用普通的位串。在基于樹的數(shù)的情況下,如下使用自定界的3位代碼:表3二進(jìn)制代碼表示000e001v010w011(100)101[110]111,代碼是自定界的,因?yàn)槔ㄌ柨梢员挥?jì)數(shù),因?yàn)槭冀K存在左括號和右括號對??梢允褂媚撤N形式的計(jì)算機(jī)處理器或處理電路系統(tǒng)來實(shí)現(xiàn)本發(fā)明的上述每一個(gè)算法和過程以及特征中的每一個(gè),例如,使用特別編程的處理電路系統(tǒng)。電路系統(tǒng)可以被特別設(shè)計(jì)或編程以實(shí)現(xiàn)上述功能和特征,這些功能和特征提高了電路系統(tǒng)的處理,并且允許數(shù)據(jù)以不可能由人或甚至缺乏本實(shí)施例的特征的通用計(jì)算機(jī)的方式處理。如本領(lǐng)域普通技術(shù)人員將認(rèn)識到的,計(jì)算機(jī)處理器可以被實(shí)現(xiàn)為離散的邏輯門,如專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)或其它復(fù)雜可編程邏輯器件(cpld)。fpga或cpld實(shí)現(xiàn)可以以vhdl、verilog或任何其它硬件描述語言進(jìn)行編碼,并且代碼可以直接存儲在fpga或cpld內(nèi)的或者作為單獨(dú)的電子存儲器的電子存儲器中。此外,電子存儲器可以是非易失性的,諸如rom、eprom、eeprom或flash存儲器。電子存儲器也可以是易失性的,諸如靜態(tài)ram或動態(tài)ram,并且可以提供處理器(諸如,微控制器或微處理器)來管理電子存儲器以及fpga或cpld與電子存儲器之間的交互??商娲模?jì)算機(jī)處理器可以執(zhí)行包括執(zhí)行本文描述的功能的一組計(jì)算機(jī)可讀指令的計(jì)算機(jī)程序,該程序被存儲在上述非瞬態(tài)電子存儲器和/或硬盤驅(qū)動器cd、dvd、閃存驅(qū)動器或任何其它已知的存儲介質(zhì)中的任何一種中。此外,計(jì)算機(jī)可讀指令可以作為結(jié)合處理器(諸如,來自美國intel的xenon處理器或來自美國amd的opteron處理器)和操作系統(tǒng)(諸如,microsoftvista、unix、solaris、linux、apple、mac-osx以及本領(lǐng)域技術(shù)人員已知的其它操作系統(tǒng))執(zhí)行的實(shí)用應(yīng)用、后臺守護(hù)程序、或操作系統(tǒng)的組件或其組合提供。此外,可以使用基于計(jì)算機(jī)的系統(tǒng)1701來實(shí)現(xiàn)本發(fā)明??梢杂梢粋€(gè)或多個(gè)處理電路來實(shí)現(xiàn)上述實(shí)施例的功能中的每一個(gè)功能。處理電路包括被編程的處理器(例如,圖17中的處理器1703),因?yàn)樘幚砥靼娐废到y(tǒng)。處理電路還包括諸如專用集成電路(asic)和被布置成執(zhí)行所述功能的常規(guī)電路部件的設(shè)備。上述討論的各種特征可以由計(jì)算設(shè)備(諸如,計(jì)算機(jī)系統(tǒng)(或可編程邏輯))來實(shí)現(xiàn)。圖17圖示了這種計(jì)算機(jī)系統(tǒng)1701。圖17的計(jì)算機(jī)系統(tǒng)1701可以是特定的專用機(jī)器。在一種實(shí)施例中,當(dāng)處理器1703被編程為計(jì)算向量縮并時(shí),計(jì)算機(jī)系統(tǒng)1701是特定的專用機(jī)器。計(jì)算機(jī)系統(tǒng)1701包括耦合到總線1702以控制用于存儲信息和指令的一個(gè)或多個(gè)存儲設(shè)備的盤控制器1706,該一個(gè)或多個(gè)存儲設(shè)備諸如磁硬盤1707和可移除介質(zhì)驅(qū)動器1708(例如,軟盤驅(qū)動器、只讀緊湊型盤驅(qū)動器、讀/寫緊湊型盤驅(qū)動器、緊湊型盤自動點(diǎn)唱機(jī)(jukebox)、帶驅(qū)動器和可移除磁光驅(qū)動器)??梢允褂眠m當(dāng)?shù)脑O(shè)備接口(例如,小型計(jì)算機(jī)系統(tǒng)接口(scsi)、集成設(shè)備電子器件(ide)、增強(qiáng)型ide(e-ide)、直接存儲器訪問(dma)或超-dma)將存儲設(shè)備添加到計(jì)算機(jī)系統(tǒng)801。計(jì)算機(jī)系統(tǒng)1701還可以包括專用邏輯器件(例如,專用集成電路(asic))或可配置邏輯器件(例如,簡單可編程邏輯器件(spld)、復(fù)雜可編程邏輯器件(cpld)和現(xiàn)場可編程門陣列(fpga))。計(jì)算機(jī)系統(tǒng)1701還可以包括耦合到總線1702以控制用于向計(jì)算機(jī)用戶顯示信息的顯示器1710的顯示控制器1709。計(jì)算機(jī)系統(tǒng)包括輸入設(shè)備(諸如,鍵盤1711和定點(diǎn)設(shè)備1712),用于與計(jì)算機(jī)用戶交互并向處理器1703提供信息。定點(diǎn)設(shè)備1712例如可以是鼠標(biāo)、軌跡球、用于觸摸屏傳感器的手指、或用于向處理器1703傳達(dá)方向信息和命令選擇以及用于控制在顯示器1710上的光標(biāo)移動的定點(diǎn)桿。處理器1703執(zhí)行包含在存儲器(諸如,主存儲器1704)中的一條或多條指令的一個(gè)或多個(gè)序列。這些指令可以從另一個(gè)計(jì)算機(jī)可讀介質(zhì)(諸如,硬盤1707或可移除介質(zhì)驅(qū)動器1708)讀入到主存儲器1704中。也可以利用多處理布置中的一個(gè)或多個(gè)處理器執(zhí)行包含在主存儲器1704中的指令序列。在替代實(shí)施例中,可以使用硬連線電路系統(tǒng)代替軟件指令或硬連線電路系統(tǒng)可以與軟件指令組合使用。因此,實(shí)施例不限于硬件電路系統(tǒng)和軟件的任何特定組合。如上所述,計(jì)算機(jī)系統(tǒng)1701包括至少一個(gè)計(jì)算機(jī)可讀介質(zhì)或存儲器,所述至少一個(gè)計(jì)算機(jī)可讀介質(zhì)或存儲器用于保存根據(jù)本公開的任何教導(dǎo)編程的指令和用于包含本文所述的數(shù)據(jù)結(jié)構(gòu)、表、記錄或其它數(shù)據(jù)。計(jì)算機(jī)可讀介質(zhì)的示例是緊湊型盤、硬盤、軟盤、帶、磁光盤、prom(eprom、eeprom、閃存eprom)、dram、sram、sdram或任何其它磁介質(zhì)、緊湊型盤(例如,cd-rom)或任何其它光學(xué)介質(zhì)、穿孔卡、紙帶或具有孔模式的其它物理介質(zhì)。存儲在計(jì)算機(jī)可讀介質(zhì)中的任何一個(gè)上或其組合上,本公開包括用于控制計(jì)算機(jī)系統(tǒng)1701、用于驅(qū)動用于實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)設(shè)備、以及用于使得計(jì)算機(jī)系統(tǒng)1701能夠與人類用戶交互的軟件。這樣的軟件可以包括但不限于設(shè)備驅(qū)動程序、操作系統(tǒng)和應(yīng)用軟件。這樣的計(jì)算機(jī)可讀介質(zhì)還包括用于執(zhí)行在實(shí)現(xiàn)本發(fā)明的任何部分中執(zhí)行的處理的全部或部分(如果處理是分布式)的本公開的計(jì)算機(jī)程序產(chǎn)品。本實(shí)施例的計(jì)算機(jī)代碼設(shè)備可以是任何可解釋或可執(zhí)行的代碼機(jī)制,包括但不限于腳本、可解釋程序、動態(tài)鏈接庫(dll)、java類和完整的可執(zhí)行程序。此外,為了更好的性能、可靠性和/或成本,本實(shí)施例的處理的部分可以是分布式的。本文所使用的術(shù)語“計(jì)算機(jī)可讀介質(zhì)”是指參與向處理器1703提供指令用于執(zhí)行的任何非瞬態(tài)介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以采取許多形式,包括但不限于,非易失性介質(zhì)或易失性介質(zhì)。非易失性介質(zhì)包括例如光盤、磁盤和磁光盤,諸如硬盤1707或可移除介質(zhì)驅(qū)動器1708。易失性介質(zhì)包括動態(tài)存儲器,諸如主存儲器1704。相反,傳輸介質(zhì)包括同軸電纜、銅線和光纖,包括構(gòu)成總線1702的電線。傳輸介質(zhì)也可以采取聲波或光波(諸如,在無線電波和紅外數(shù)據(jù)通信期間所生成的那些波)的形式。將一條或多條指令的一個(gè)或多個(gè)序列攜帶出到處理器1703中用于執(zhí)行可以涉及各種形式的計(jì)算機(jī)可讀介質(zhì)。例如,指令最初可以被攜帶在遠(yuǎn)程計(jì)算機(jī)的磁盤上。遠(yuǎn)程計(jì)算機(jī)可以將用于實(shí)現(xiàn)本公開的全部或部分的指令加載到動態(tài)存儲器中,并使用調(diào)制解調(diào)器通過電話線發(fā)送指令。計(jì)算機(jī)系統(tǒng)1701本地的調(diào)制解調(diào)器可以接收電話線上的數(shù)據(jù)并將數(shù)據(jù)放置在總線1702上。總線1702將數(shù)據(jù)攜帶到主存儲器1704,處理器1703從中檢索并執(zhí)行指令。由主存儲器1704接收到的指令可以可選地在由處理器1703執(zhí)行之前或之后存儲在存儲設(shè)備1707或1708上。計(jì)算機(jī)系統(tǒng)1701還包括耦合到總線1702的通信接口1713。通信接口1713提供耦合到網(wǎng)絡(luò)鏈路1714的雙向數(shù)據(jù)通信,該網(wǎng)絡(luò)鏈路1714連接到例如局域網(wǎng)(lan)1715或者連接到另一個(gè)通信網(wǎng)絡(luò)1716,諸如互聯(lián)網(wǎng)。例如,通信接口1713可以是附接到任何分組交換lan的網(wǎng)絡(luò)接口卡。作為另一個(gè)示例,通信接口1713可以是綜合業(yè)務(wù)數(shù)字網(wǎng)(isdn)卡。也可以實(shí)現(xiàn)無線鏈路。在任何這樣的實(shí)現(xiàn)中,通信接口1713發(fā)送和接收攜帶表示各種類型的信息的數(shù)字?jǐn)?shù)據(jù)流的電信號、電磁信號或光信號。網(wǎng)絡(luò)鏈路1714通常通過一個(gè)或多個(gè)網(wǎng)絡(luò)向其它數(shù)據(jù)設(shè)備提供數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路1714可以通過本地網(wǎng)絡(luò)1715(例如,lan)或通過由服務(wù)提供商操作的裝備來提供與另一個(gè)計(jì)算機(jī)的連接,該服務(wù)提供商通過通信網(wǎng)絡(luò)1716提供通信服務(wù)。本地網(wǎng)絡(luò)1714和通信網(wǎng)絡(luò)1716使用例如攜帶數(shù)字?jǐn)?shù)據(jù)流的電信號、電磁信號或光信號以及相關(guān)聯(lián)的物理層(例如,cat5電纜、同軸電纜、光纖等)??梢栽诨鶐盘柣蚧谳d波的信號中實(shí)現(xiàn)通過各種網(wǎng)絡(luò)的信號以及在網(wǎng)絡(luò)鏈路1714上并且通過通信接口1713的信號,所述信號攜帶去往和來自計(jì)算機(jī)系統(tǒng)1701的數(shù)字?jǐn)?shù)據(jù)?;鶐盘枌?shù)字?jǐn)?shù)據(jù)作為描述數(shù)字?jǐn)?shù)據(jù)位流的未調(diào)制電脈沖運(yùn)送,其中術(shù)語“位”要被廣義地解釋為表示符號,其中每一個(gè)符號運(yùn)送至少一個(gè)或多個(gè)信息位。數(shù)字?jǐn)?shù)據(jù)還可以用于調(diào)制載波,諸如在傳導(dǎo)介質(zhì)上傳播或者通過傳播介質(zhì)作為電磁波傳輸?shù)姆孺I控信號、相位鍵控信號和/或頻移鍵控信號。因此,數(shù)字?jǐn)?shù)據(jù)可以通過“有線”通信信道作為未調(diào)制的基帶數(shù)據(jù)發(fā)送和/或通過調(diào)制載波在與基帶不同的預(yù)定頻帶內(nèi)發(fā)送。計(jì)算機(jī)系統(tǒng)1701可以通過(一個(gè)或多個(gè))網(wǎng)絡(luò)1715和1716、網(wǎng)絡(luò)鏈路1714和通信接口1713傳輸和接收包括程序代碼的數(shù)據(jù)。此外,網(wǎng)絡(luò)鏈路1714可以通過lan1715向移動設(shè)備1717(諸如,個(gè)人數(shù)字助理(pda)、膝上型計(jì)算機(jī)或蜂窩電話)提供連接。本實(shí)施例具有許多應(yīng)用,包括但不限于搜索和識別數(shù)據(jù)中的模式。雖然已經(jīng)描述某些實(shí)現(xiàn),但是這些實(shí)現(xiàn)僅僅是作為示例給出,并且不旨在限制本公開的教導(dǎo)。實(shí)際上,可以用各種其它形式體現(xiàn)本文描述的新穎方法、裝置和系統(tǒng);此外,在不脫離本公開的精神的情況下,可以對本文描述的方法、裝置和系統(tǒng)的形式做出各種省略、替換和改變。當(dāng)前第1頁12