專利名稱:比特序列檢索裝置、檢索方法以及程序的制作方法
技術(shù)領域:
本發(fā)明涉及從比特序列的集合中檢索期望比特序列的檢索裝置、檢索方法以及程 序,尤其涉及對存儲比特序列的數(shù)據(jù)結(jié)構(gòu)進行研究來提高檢索速度等的技術(shù)領域。
背景技術(shù):
近年來,隨著社會信息化的進展,在各個場所都利用大規(guī)模的數(shù)據(jù)庫。為了從這樣 大規(guī)模的數(shù)據(jù)庫中檢索記錄,通常是將與存儲有各記錄的地址相對應的記錄內(nèi)的項目作為 索引關鍵字進行檢索,搜索出期望的記錄。另外,也可以將全文檢索中的字符串視為文檔的 索引關鍵字。并且,由于這些索引關鍵字用比特序列來表現(xiàn),因此可以將數(shù)據(jù)庫的檢索歸結(jié)為 比特序列的檢索。一直以來,為了高速地進行上述比特序列的檢索,對存儲比特序列的數(shù)據(jù)結(jié)構(gòu)進 行了各種研究。作為這樣的結(jié)構(gòu)之一,已知有Patricia樹這樣的樹結(jié)構(gòu)。圖1示出上述現(xiàn)有檢索處理所使用的Patricia樹的一例。Patricia樹的節(jié)點構(gòu) 成為包含索引關鍵字、檢索關鍵字的檢查比特位置、左右鏈接指針。雖未明示,但顯然節(jié)點 中包含用于對與索引關鍵字對應的記錄進行訪問的信息。在圖1的例子中,保持索引關鍵字"100010"的節(jié)點1750a是根節(jié)點,其檢查比特 位置是0。節(jié)點1750a的左鏈接1740a與節(jié)點1750b連接,右鏈接1741a與節(jié)點1750f連接。節(jié)點1750b所保持的索引關鍵字是〃 010011〃,檢查比特位置2030b是1。節(jié)點 1750b的左鏈接1740b與節(jié)點1750c連接,右鏈接1741b與節(jié)點1750d連接。節(jié)點1750c 所保持的索引關鍵字是〃 000111",檢查比特位置是3。節(jié)點1750d所保持的索引關鍵字 是〃 011010〃,檢查比特位置是2。從節(jié)點1750c起用實線連接的部分表示節(jié)點1750c的左右鏈接指針,未進行虛線 連接的左指針1740c表示其欄為空欄。進行了虛線連接的右指針1741c的虛線連接目的地 表示指針所示的地址,此時表示右指針指定節(jié)點1750c的情況。節(jié)點1750d的右指針1741d指向節(jié)點1750d自身,左鏈接1740d與節(jié)點1750e連 接。節(jié)點1750e保持的索引關鍵字是“010010”,檢查比特位置是5。節(jié)點1750e的左指針 1740e指向節(jié)點1750b,右指針1741e指向節(jié)點1750e。并且,節(jié)點1750f保持的索引關鍵字是“101011”,檢查比特位置1730f是2。節(jié)點 1750f的左鏈接1740f與節(jié)點1750g連接,右鏈接174If與節(jié)點1750h連接。節(jié)點1750g保持的索引關鍵字是“100011”,檢查比特位置1730g是5。節(jié)點1750g 的左指針1740g指向節(jié)點1750a,右指針1741g指向節(jié)點1750g。節(jié)點1750h保持的索引關鍵字是“101100”,檢查比特位置1730h是3。節(jié)點1750h 的左指針1740h指向節(jié)點1750f,右指針1741h指向節(jié)點1750h。在圖1的例子中,形成這樣的結(jié)構(gòu)隨著從根節(jié)點1750a開始對樹進行向下遍歷,各節(jié)點的檢查比特位置增大。當使用某檢索關鍵字進行檢索時,從根節(jié)點起依次檢查由各節(jié)點所保持的檢索關 鍵字的檢查比特位置,判定檢查比特位置的比特值是1還是0,是1時搜索右鏈接,是0時搜 索左鏈接。然后,當鏈接目的地節(jié)點的檢查比特位置不大于鏈接源節(jié)點的檢查比特位置時, 即,鏈接目的地不是下方而是回到上方時(將圖1中虛線所示的該后退的鏈接稱為反向鏈 接),對鏈接目的地節(jié)點的索引關鍵字與檢索關鍵字進行比較。保證在比較結(jié)果相同時檢索 成功,在比較結(jié)果不相同時檢索失敗。如上所述,在使用Patricia樹的檢索處理中,有以下等優(yōu)點只通過必要的比特 檢查即可進行檢索,以及關鍵字全體的比較只需一次,然而具有以下等缺點由于必定有從 各節(jié)點起的2個鏈接而使存儲容量增大,由于反向鏈接的存在而使判定處理復雜化,由于 通過反向鏈接返回后才與索引關鍵字進行比較而造成的檢索處理延遲以及追加刪除等數(shù) 據(jù)維護困難。作為解決Patricia樹的這些缺點的技術(shù),例如有下述專利文獻1所公開的技術(shù)。 在下述專利文獻1所記載的Patricia樹中,通過在連續(xù)的區(qū)域中存儲下位的左右節(jié)點來削 減指針的存儲容量,并且在各節(jié)點中設置表示下一鏈接是否是反向鏈接的比特,由此減輕 反向鏈接的判定處理。然而,在下述專利文獻1所公開的技術(shù)中,由于1個節(jié)點必定占據(jù)索引關鍵字的區(qū) 域和指針的區(qū)域,將下位的左右節(jié)點存儲在連續(xù)的區(qū)域中而采用1個指針,因而對于例如 圖1所示的Patricia樹的最下段部分即左指針1740c、右指針1741h等部分,也必須分配與 節(jié)點相同容量的存儲區(qū)域,存儲容量的削減效果不怎么好。并且,也沒有改善由反向鏈接引 起的檢索處理的延遲問題,并且很難進行追加刪除等處理。另外,在從數(shù)據(jù)庫檢索記錄時,通常不僅將與數(shù)據(jù)庫的記錄1對1地對應的項目的 值作為索引關鍵字進行檢索,還將構(gòu)成記錄的任意項目的值作為檢索關鍵字進行檢索。因 為該項目的值根據(jù)記錄不一定是唯一的,所以在多個記錄中進行重復關鍵字的檢索。在下 述專利文獻2中記載了使用這種重復關鍵字的一例。專利文獻1 日本特開2001-357070號公報專利文獻2 日本特開平11-96058號公報因此,本發(fā)明要解決的課題是提供一種能進行重復關鍵字的檢索且所需的存儲容 量小、檢索速度為高速、具有容易進行數(shù)據(jù)維護的數(shù)據(jù)結(jié)構(gòu)的比特序列檢索裝置以及檢索 方法。作為解決上述現(xiàn)有檢索方法中的問題點的方法,本申請人在日本特愿 2006-187827中提出了采用配對節(jié)點樹的比特序列檢索,該配對節(jié)點樹是由根節(jié)點、以及配 置在相鄰存儲區(qū)域中的分支節(jié)點和葉節(jié)點、或者分支節(jié)點之間或葉節(jié)點之間的節(jié)點對構(gòu)成 的用于比特序列檢索的樹,根節(jié)點是表示樹的起點的節(jié)點,當該樹的節(jié)點為一個時根節(jié)點 是葉節(jié)點,當樹的節(jié)點為兩個以上時根節(jié)點是上述分支節(jié)點,上述分支節(jié)點包含進行比特 序列檢索的檢索關鍵字的鑒別比特位置和表示鏈接目的地節(jié)點對的一個節(jié)點的代表節(jié)點 的位置的位置信息,上述葉節(jié)點包含由檢索對象的比特序列構(gòu)成的索引關鍵字。在上述申請中,示出根據(jù)所賦予的索引關鍵字集合來生成配對節(jié)點樹的方法和從 配對節(jié)點樹中檢索單一索引關鍵字的方法等采用了配對節(jié)點樹的基本檢索方法。
6
另外,在比特序列的檢索中,存在求出最小值、最大值、求出某范圍的值等各種檢 索要求。因此,本申請人在日本特愿2006-293619中提出了求出配對節(jié)點樹的任意部分樹 所包含的索引關鍵字的最大值/最小值的方法等。此外,本申請人在日本特愿2007-114915中提出了下述配對節(jié)點樹以及采用該配 對節(jié)點樹的各種檢索處理,對于該配對節(jié)點樹,將索引關鍵字配置在不同于配對節(jié)點樹的 區(qū)域內(nèi),在葉節(jié)點中取代索引關鍵字而存儲有表示配置索引關鍵字的存儲區(qū)域的位置的信 肩、ο但是,上述配對節(jié)點樹的結(jié)構(gòu)基于索引關鍵字彼此間的比特值不同的位置即差分 比特位置,因此在這種狀態(tài)下無法處理重復關鍵字。
發(fā)明內(nèi)容
本發(fā)明的目的在于能夠在應用了該配對節(jié)點樹的高速檢索方法中處理重復關鍵字。根據(jù)本發(fā)明的一個方式,通過組合多個關鍵字作為關鍵字序列,使關鍵字序列的 末尾關鍵字成為不重復的唯一關鍵字,由此將由多個關鍵字的關鍵字序列構(gòu)成的索引關鍵 字構(gòu)成為唯一關鍵字。并且,在上述配對節(jié)點樹的葉節(jié)點中存儲第2位置信息,該第2位置 信息表示配置有該唯一關鍵字的存儲區(qū)域的位置。檢索關鍵字是組合多個關鍵字作為關鍵 字序列、且關鍵字序列的末尾關鍵字唯一的檢索關鍵字序列。在分支節(jié)點中,具有第1鑒別 位置和第2鑒別位置,該第1鑒別位置表示進行比特序列檢索的檢索關鍵字序列中的、進行 比特序列比較的關鍵字的位置信息,該第2鑒別位置表示該關鍵字的鑒別比特位置。另外, 分支節(jié)點包含第1位置信息,該第1位置信息表示作為鏈接目的地節(jié)點對的一個節(jié)點的代 表節(jié)點的位置。采用具有以上這樣的數(shù)據(jù)結(jié)構(gòu)的配對節(jié)點樹,從檢索關鍵字序列中取出分支節(jié)點 的第1鑒別位置的關鍵字,根據(jù)該關鍵字的第2鑒別位置(鑒別比特位置)的比特值,鏈接 到鏈接目的地節(jié)點對中的某一節(jié)點,進行上述處理直至到達葉節(jié)點為止,利用存儲在葉節(jié) 點內(nèi)的表示存儲區(qū)域位置的信息,取得配置在該存儲區(qū)域內(nèi)的索引關鍵字,由此實施基于 上述檢索關鍵字序列的檢索。根據(jù)本發(fā)明,能對重復關鍵字進行處理,并且能進行更高速的比特序列數(shù)據(jù)的檢 索。而且還能容易地執(zhí)行比特序列數(shù)據(jù)的追加刪除。
圖1是示出在現(xiàn)有檢索中采用的Patricia樹的一例的圖。圖2A是說明存儲在數(shù)組中的配對節(jié)點樹的結(jié)構(gòu)例的圖。圖2B是概念性示出配對節(jié)點樹的樹結(jié)構(gòu)的圖。圖3是說明用于實施本發(fā)明的硬件結(jié)構(gòu)例的圖。圖4是說明本發(fā)明一實施方式的檢索處理的流程圖。圖5是說明本發(fā)明一實施方式的作為插入處理前級的檢索處理的處理流程的圖。圖6是說明準備用于本發(fā)明一實施方式的插入處理的待插入節(jié)點對的數(shù)組元素 的處理流程的圖。
圖7是說明求取插入節(jié)點對的位置、寫入節(jié)點對的各節(jié)點的內(nèi)容來完成插入處理 的處理流程的圖。圖8A是說明本發(fā)明一實施方式的包含根節(jié)點插入處理的葉節(jié)點插入處理整體的 處理流程的圖。圖8B是說明本發(fā)明一實施方式的關鍵字序列比較處理的處理流程的圖。圖9是說明本發(fā)明一實施方式的作為刪除處理前級的檢索處理的處理流程的圖。圖10是說明本發(fā)明一實施方式的刪除處理后級的處理流程的圖。圖IlA是例示說明刪除處理前的配對節(jié)點樹和刪除關鍵字序列的圖。圖IlB是說明刪除處理后的配對節(jié)點樹的圖。圖12A是例示說明插入處理前的配對節(jié)點樹和插入關鍵字序列的圖。圖12B是說明插入處理后的配對節(jié)點樹的圖。
具體實施例方式以下,作為用于實施本發(fā)明的優(yōu)選方式,說明在數(shù)組中存儲配對節(jié)點樹的例子。作 為分支節(jié)點所保持的表示鏈接目的地代表節(jié)點的位置的數(shù)據(jù),還可以為存儲裝置的地址信 息,可以通過采用由可存儲分支節(jié)點或葉節(jié)點中占有區(qū)域的存儲容量大的一方的數(shù)組元素 構(gòu)成的數(shù)組,由此利用數(shù)組編號來表示節(jié)點位置,可削減表示代表節(jié)點位置的位置信息的
fn息里。圖2A是說明本發(fā)明一實施方式的存儲在數(shù)組內(nèi)的配對節(jié)點樹的結(jié)構(gòu)例的圖。參照圖2A,節(jié)點101配置在數(shù)組100的數(shù)組編號10的數(shù)組元素內(nèi)。節(jié)點101由節(jié) 點類別102、第1鑒別位置103a、第2鑒別位置103以及代表節(jié)點編號104構(gòu)成。節(jié)點類別 102是0,表示節(jié)點101是分支節(jié)點。在第1鑒別位置103a中存儲0,表示對檢索關鍵字序 列的第0位置的關鍵字進行比特序列比較。在第2鑒別位置103中存儲1。在代表節(jié)點編 號104中存儲鏈接目的地的節(jié)點對的代表節(jié)點的數(shù)組編號20。此外,以下為了簡化表述,有 時將存儲在代表節(jié)點編號內(nèi)的數(shù)組編號稱為代表節(jié)點編號。另外,有時還利用對該節(jié)點賦 予的標號或者對節(jié)點對賦予的標號來表示存儲在代表節(jié)點編號內(nèi)的數(shù)組編號。此外,還將 第1鑒別位置或第2鑒別位置所存儲的值簡稱為第1鑒別位置或第2鑒別位置。在數(shù)組編號20的數(shù)組元素中存儲有節(jié)點對111的代表節(jié)點即節(jié)點W] 112。并 且在相鄰的下一數(shù)組元素(數(shù)組編號20+1)中存儲與代表節(jié)點成對的節(jié)點[1]113。節(jié)點 W] 112與節(jié)點101同樣是分支節(jié)點。在節(jié)點W] 112的節(jié)點類別114中存儲0,在第1鑒別 位置115a中存儲1,在第2鑒別位置115中存儲3,在代表節(jié)點編號116中存儲30。另外, 節(jié)點[1]113由節(jié)點類別117和參照指針118a構(gòu)成。在節(jié)點類別117中存儲1,表示節(jié)點 [1]113是葉節(jié)點。在參照指針118a中存儲參照索引關鍵字的存儲區(qū)域的指針。參照指針 118a所存儲的數(shù)據(jù)是上述第2位置信息的具體例。以下為了簡化表述,有時還將參照指針 所存儲的數(shù)據(jù)稱為參照指針。關于Patricia樹與先前敘述的相同,顯然還需要用于對與索引關鍵字對應的記 錄進行訪問的訪問目的地信息。例如,可以通過在與存儲索引關鍵字的存儲區(qū)域相鄰的存 儲區(qū)域中,存儲與該索引關鍵字對應的訪問目的地信息,來進行索引關鍵字和訪問目的地 信息的對應。以下,省略說明訪問目的地信息。
此外,有時用節(jié)點
來表示代表節(jié)點,用節(jié)點[1]來表示與代表節(jié)點成對的節(jié) 點。另外,有時將存儲在某數(shù)組編號的數(shù)組元素中的節(jié)點稱為該數(shù)組編號的節(jié)點,有時還將 存儲有節(jié)點的數(shù)組元素的數(shù)組編號稱為節(jié)點的數(shù)組編號。省略由存儲在數(shù)組編號30和31的數(shù)組元素中的節(jié)點122和節(jié)點123構(gòu)成的節(jié)點 對121的內(nèi)容。對存儲有節(jié)點
112、節(jié)點[1] 113、節(jié)點122以及節(jié)點123的數(shù)組元素分別賦予 的0或1,表示在利用檢索關鍵字序列進行檢索時鏈接到節(jié)點對的哪個節(jié)點。對代表節(jié)點編 號加上檢索關鍵字序列中位于前級分支節(jié)點的第1鑒別位置的關鍵字(以下,有時稱為檢 索關鍵字。)的位于第2鑒別位置(以下,有時稱為鑒別比特位置。)的比特值0或1,鏈接 到相加后所得到的數(shù)組編號的節(jié)點。因此,可以通過對前級分支節(jié)點的代表節(jié)點編號加上位于前級分支節(jié)點的第1鑒 別位置的檢索關鍵字的、位于鑒別比特位置的比特值,來求出存儲有鏈接目的地節(jié)點的數(shù) 組元素的數(shù)組編號。此外,在上述例中代表節(jié)點編號采用配置有節(jié)點對的數(shù)組編號中較小的一方,顯 然也可以采用較大的一方。圖2B是概念性示出本實施方式的配對節(jié)點樹的樹結(jié)構(gòu)和檢索關鍵字序列(以下, 有時稱為索引關鍵字。)的存儲區(qū)域的圖。圖2B(1)所示的是配對節(jié)點樹的樹結(jié)構(gòu)。用標 號210a示出的是根節(jié)點。在圖示的例中,根節(jié)點210a是配置在數(shù)組編號220中的節(jié)點對 201a的代表節(jié)點。作為樹結(jié)構(gòu),在根節(jié)點210a的下方配置有節(jié)點對201b,在節(jié)點對201b的下層配 置有節(jié)點對201c和節(jié)點對201f,在節(jié)點對201f的下層配置有節(jié)點對201h和節(jié)點對201g。 在節(jié)點對201c的下方配置有節(jié)點對201d,并且在節(jié)點對201d的下方配置有節(jié)點對201e。在各節(jié)點的前方賦予的0或1的標號與在圖2A中說明的數(shù)組元素的前方賦予的 標號相同。根據(jù)檢索關鍵字的鑒別比特位置的比特值來搜索樹,找到與檢索對象的索引關 鍵字對應的葉節(jié)點。在所圖示的例子中示出,根節(jié)點210a的節(jié)點類別260a為0表示是分支節(jié)點,第1 鑒別位置240a示出0,鑒別比特位置230a示出0。代表節(jié)點編號是220a,其是存儲有節(jié)點 對201b的代表節(jié)點210b的數(shù)組元素的數(shù)組編號。 節(jié)點對20Ib由節(jié)點2IOb和21 Ib構(gòu)成,這些節(jié)點的節(jié)點類別260b、26Ib都是0,表 示為分支節(jié)點。在節(jié)點210b的第1鑒別位置240b中存儲0,在鑒別比特位置230b中存儲 1,在鏈接目的地的代表節(jié)點編號中存儲有存儲節(jié)點對201c的代表節(jié)點210c的數(shù)組元素的 數(shù)組編號220b。在節(jié)點210c的節(jié)點類別260c中存儲1,所以該節(jié)點是葉節(jié)點,因此,含有參照指針 250c。在圖示的例子中,在參照指針250c中存儲下述指針,該指針參照存儲有由第1關鍵 字290c和第2關鍵字290c ‘構(gòu)成的索引關鍵字的存儲區(qū)域。參照指針250c所存儲的數(shù)據(jù) 也稱為參照指針,用標號280c來表示。其它葉節(jié)點也同樣,將參照指針和參照指針所存儲 的數(shù)據(jù)都用參照指針這樣的表達來描述。圖2B(2)示出了連續(xù)設置多個索引關鍵字的存儲區(qū)域的例子,將這些連續(xù)的存儲 區(qū)域整體示作索引關鍵字存儲區(qū)域311,不過索引關鍵字也可以不存儲在連續(xù)的區(qū)域內(nèi)。另外,樹結(jié)構(gòu)上葉節(jié)點彼此間的關系也可以與索引關鍵字存儲區(qū)域311中的索引關鍵字的配
置順序無關。返回到節(jié)點對201c的說明,與代表節(jié)點210c成對的另一個節(jié)點211c的節(jié)點類別 261c是0,第1鑒別位置241c是1,鑒別比特位置231c是0,在代表節(jié)點編號中存儲有存儲 節(jié)點對201d的代表節(jié)點210d的數(shù)組元素的數(shù)組編號221c。節(jié)點2IOd的節(jié)點類別260d是0,第1鑒別位置240d是1,鑒別比特位置230d 是2,在代表節(jié)點編號中存儲有存儲節(jié)點對201e的代表節(jié)點210e的數(shù)組元素的數(shù)組編號 220d。與節(jié)點210d成對的節(jié)點21 Id的節(jié)點類別261d是1,在參照指針251d中存儲參照 指針281d,該參照指針281d表示存儲有〃 011010"、“ 1000〃這樣的關鍵字序列291d、 291d'的存儲區(qū)域。節(jié)點對201e的節(jié)點210e、211e的節(jié)點類別260e、261e都是1,表示雙方都是葉節(jié) 點。在節(jié)點210e、211e的參照指針250e、251e中分別存儲有參照指針280e、281e,參照指針 280e指向存儲有"011010"、" 0101〃這樣的關鍵字序列290e,參照指針281e指向存儲 有"011010"、“ 0110"這樣的關鍵字序列291e'。在節(jié)點對201b的另一個節(jié)點即節(jié)點211b的第1鑒別位置241b中存儲0,在鑒別 比特位置231b中存儲2,在鏈接目的地的代表節(jié)點編號中存儲有存儲節(jié)點對201f的代表節(jié) 點210f的數(shù)組元素的數(shù)組編號221b。節(jié)點對201f的節(jié)點210f、211f的節(jié)點類別260f、261f都是0,雙方都是分支節(jié) 點。在第1鑒別位置240f、241f中分別存儲有0、1,在鑒別比特位置230f、231f中存儲有 5、2。在節(jié)點210f的代表節(jié)點編號中存儲有存儲節(jié)點對201g的代表節(jié)點210g的數(shù)組元素 的數(shù)組編號220f,在節(jié)點211f的代表節(jié)點編號中存儲有存儲節(jié)點對201h的代表節(jié)點即節(jié) 點W]210h的數(shù)組元素的數(shù)組編號221f。節(jié)點對201g的節(jié)點210g、211g的節(jié)點類別260g、261g都是1,表示雙方都是葉節(jié) 點。在節(jié)點210g、211g各自的參照指針250g、251g中存儲有參照指針280g、281g,參照指針 280g指向存儲有"100010〃、〃 0100〃這樣的關鍵字序列290g、290g'的存儲區(qū)域,參照 指針281g指向存儲有〃 100011〃、〃 0011〃這樣的關鍵字序列291g、291g'的存儲區(qū)域。另外示出,相同的節(jié)點對201h的代表節(jié)點即節(jié)點
210h和與其成對的節(jié) 點[l]211h的節(jié)點類別260h、261h都是1,表示雙方都是葉節(jié)點。在節(jié)點210h、211h 各自的參照指針250h、251h中存儲有參照指針280h、281h,參照指針280h指向存儲 有〃 101100"、“ 0001這樣的關鍵字序列290h、290h'的存儲區(qū)域,參照指針281h指向 存儲有"101100"、“ 0010〃這樣的關鍵字序列291h、291h'的存儲區(qū)域。以下,簡單說明從上述樹中檢索索引關鍵字〃 1011000010〃的處理的流程。上述 索引關鍵字是由第1關鍵字"101100"和第2關鍵字"0010"構(gòu)成的關鍵字序列。第1 鑒別位置以及第2鑒別位置(鑒別比特位置)從左開始為0、1、2、...。首先,將比特序列〃 1011000010〃作為檢索關鍵字序列從根節(jié)點210a起開始處 理。因為根節(jié)點210a的第1鑒別位置240a是0,鑒別比特位置230a是0,所以當觀察檢索 關鍵字序列的第1關鍵字"101100"的鑒別比特位置為0的比特值時該值是1。因此鏈接 到對存儲有代表節(jié)點編號的數(shù)組編號220a加1得到的數(shù)組編號的數(shù)組元素所存儲的節(jié)點 211b。因為在節(jié)點211b的第1鑒別位置241b上存儲0、在鑒別比特位置231b上存儲2,所以當觀察第1關鍵字"101100"的鑒別比特位置為2的比特值時該值是1,因此鏈接到存 儲有代表節(jié)點編號的數(shù)組編號221b的數(shù)組元素所存儲的節(jié)點211f。因為在節(jié)點211f的第1鑒別位置241f上存儲1、在鑒別比特位置231f上存儲2, 所以當觀察第2關鍵字"0010"的鑒別比特位置為2的比特值時該值是1,因此鏈接到存 儲有代表節(jié)點編號的數(shù)組編號221f的數(shù)組元素所存儲的節(jié)點211h。節(jié)點211h的節(jié)點類別261h是1表示為葉節(jié)點,所以參照由參照指針281h示出的 存儲區(qū)域,讀出在該存儲區(qū)域中存儲的索引關鍵字即關鍵字序列291h、291h'。通過這種方 式來進行采用了配對節(jié)點樹的檢索。當將讀出的關鍵字序列與檢索關鍵字比較時,可知在 上述例的情況下是一致的。此外,在上述說明中,將識別檢索關鍵字序列中的關鍵字位置的第1鑒別位置,以 從左起0、1、2、...這樣的方式設為與關鍵字的排列順序?qū)年P鍵字位置編號,但不限于 此,例如也可以通過設檢索關鍵字序列整體的離開開頭比特的偏移值、或者交替使用0和1 來表示關鍵字位置切換的方式,由此識別關鍵字的位置。接著,參照圖2B對配對節(jié)點樹結(jié)構(gòu)的意思進行說明。配對節(jié)點樹的結(jié)構(gòu)是由索引關鍵字的集合規(guī)定的。在圖2B的例子中,根節(jié)點的第 1鑒別位置240a為0反映了下述情況在索引關鍵字的第1關鍵字中存在不同的值,即不 是所有的第1關鍵字都重復。根節(jié)點210a的鑒別比特位置230a為0是因為,在索引關鍵 字的開頭關鍵字即第1關鍵字中具有第0比特為0的值和第0比特為1的值。第1關鍵字 的第0比特為0的索引關鍵字的組被分類于節(jié)點210b之下,第0比特為1的索引關鍵字的 組被分類于節(jié)點211b之下。節(jié)點211b的鑒別比特位置231b是2反映了下述索引關鍵字集合的性質(zhì)其下位 的葉節(jié)點211h、210h、211g、210g所對應的索引關鍵字的第1關鍵字的第1比特全部為0而 相等,從第2比特起才不同。節(jié)點211b的緊接下位的節(jié)點對201f的節(jié)點211f的第1鑒別位置為1反映了節(jié) 點211f下位的葉節(jié)點211h、210h所對應的索引關鍵字的第1關鍵字290h、291h重復,表示 接著通過第2關鍵字290h'、291h'的比特序列來確定配對節(jié)點樹上的節(jié)點位置。并且,節(jié) 點211f的鑒別比特位置231f為2是因為,第2關鍵字290h'、291h'從開頭起在第2比特 成為不同的值,反映其比特值在與各個索引關鍵字對應的位置上配置有葉節(jié)點211h、210h。另一方面,在第1關鍵字的第2比特為0的索引關鍵字中,第3比特和第4比特都 相等而在第5比特不同,因此在節(jié)點210f的鑒別比特位置230f中存儲5。在索引關鍵字中 第1關鍵字的第5比特為1的值和第5比特為0的值分別僅有1個,因此節(jié)點210f的鏈接 目的地的節(jié)點210g、211g是葉節(jié)點,在參照指針250g和251g中分別存儲參照指針280g、 281g,參照指針280g指向存儲有關鍵字序列290g、290g'的存儲區(qū)域,參照指針281g指向 存儲有關鍵字序列291g、291g'的存儲區(qū)域。即使在索引關鍵字的集合內(nèi)包含〃 1011010001 〃或〃 1011100001 〃來取 代〃 1011000001",由于第1關鍵字到第3比特為止以及第2關鍵字與"1011000001"相 等,因而只是由節(jié)點210h的參照指針280h指示的存儲區(qū)域所存儲的索引關鍵字的值改變, 樹結(jié)構(gòu)本身不會改變。但是,當除了〃 1011000001〃之外還包含〃 1011000000〃時,節(jié)點 210h成為分支節(jié)點,其鑒別比特位置成為3。
11
如以上說明的那樣,配對節(jié)點樹的結(jié)構(gòu)是由索引關鍵字集合中包含的各索引關鍵 字的各比特位置的比特值所確定的。進一步說來,針對成為不同比特值的每個比特位置,分支成比特值為“1”的節(jié)點、 和比特值為“0”的節(jié)點,所以當優(yōu)先節(jié)點“1”側(cè)和樹的深度方向來搜索葉節(jié)點時,存儲在節(jié) 點中的索引關鍵字成為與節(jié)點211h對應的索引關鍵字"1011000010"、與節(jié)點210h對應 的索引關鍵字〃 1011000001"...、與節(jié)點210c對應的索引關鍵字"0001110111 〃,以降 序的方式排序。S卩,在配對節(jié)點樹中,索引關鍵字以排序的方式配置在樹上。當利用檢索關鍵字序列進行檢索時,搜索在配對節(jié)點樹上配置有索引關鍵字的 路徑,例如,如果檢索關鍵字序列是〃 1011000001〃則可到達節(jié)點210h。并且,根據(jù)上述 說明還可以想到,即使在將〃 1011000000〃作為檢索關鍵字序列的情況下,也會到達節(jié)點 210h,獲得由參照指針280h指示的存儲區(qū)域所存儲的索引關鍵字,作為檢索結(jié)果關鍵字序 列。另外,例如在利用"1001001001 〃進行檢索的情況下,在節(jié)點210a、211b、210f 的鏈接路徑中,不使用檢索關鍵字序列的第1關鍵字的第3比特和第4比特,第1關鍵字 的〃 100100"的第5比特為0,因此與利用"1000100100"進行檢索的情況相同,到達節(jié)點 210g。這樣,采用與存儲在配對節(jié)點樹中的索引關鍵字的比特結(jié)構(gòu)對應的第1鑒別位置和 第2鑒別位置(鑒別比特位置)來進行分支。圖3是說明用于實施本發(fā)明的硬件結(jié)構(gòu)例的圖。利用至少具有中央處理裝置302以及緩存存儲器303的數(shù)據(jù)處理裝置301采用數(shù) 據(jù)存儲裝置308來實施本發(fā)明的檢索裝置的檢索處理以及數(shù)據(jù)維護。數(shù)據(jù)存儲裝置308可 利用主存儲裝置305或外部存儲裝置306來實現(xiàn),或者還可以采用經(jīng)由通信裝置307連接 的配置于遠方的裝置,數(shù)據(jù)存儲裝置308具有配置有配對節(jié)點樹的數(shù)組309、對存儲有在 檢索中搜索到的節(jié)點的數(shù)組元素的數(shù)組編號進行存儲的搜索路徑堆棧310以及索引關鍵 字存儲區(qū)域311。圖2A的數(shù)組100是數(shù)組309的一例。另外,與圖2B相同,索引關鍵字存 儲區(qū)域311以連續(xù)區(qū)域的方式進行了圖示,但顯然也可以是不連續(xù)的區(qū)域。此外,因為以在 數(shù)組內(nèi)配置配對節(jié)點樹進行說明,所以雖然說明了在搜索路徑堆棧310內(nèi)存儲對在檢索中 搜索到的節(jié)點進行了存儲的數(shù)組元素的數(shù)組編號,但一般情況下,對存儲有節(jié)點的存儲區(qū) 域的地址等表示節(jié)點位置的信息進行存儲。在圖3的例示中,主存儲裝置305、外部存儲裝置306以及通信裝置307利用一根 總線304與數(shù)據(jù)處理裝置301連接,但連接方法不限于此。另外,可以將主存儲裝置305作 為數(shù)據(jù)處理裝置301內(nèi)的裝置,或者還可以將搜索路徑堆棧310實現(xiàn)為中央處理裝置302 內(nèi)的硬件?;蛘?,顯然可以根據(jù)可使用的硬件環(huán)境、索引關鍵字集合的大小等來適當選擇硬 件結(jié)構(gòu),例如將數(shù)組309保持在外部存儲裝置306內(nèi),將搜索路徑堆棧310保持在主存儲裝 置305內(nèi)等。另外,雖未特別圖示,但顯然為了在之后的處理中使用在處理中途獲得的各種值 而采用與各個處理對應的臨時存儲區(qū)域。在以下的說明中,與先前所述的第1鑒別位置等 的情況相同,有時利用臨時存儲區(qū)域的名字來稱呼臨時存儲區(qū)域所存儲或設定的值。如圖3所示,由存儲有配對節(jié)點樹的節(jié)點的數(shù)組元素構(gòu)成的數(shù)組309和索引關鍵字存儲區(qū)域311是不同的區(qū)域。因此,與在存儲有葉節(jié)點的數(shù)組元素中包含索引關鍵字的 情況相比,在圖3的結(jié)構(gòu)中,通常1個數(shù)組元素所需的存儲區(qū)域的量較少。即,通過從存儲 配對節(jié)點樹的數(shù)組309中分離索引關鍵字存儲區(qū)域311,由此可以在對緩存存儲器303讀入 配對節(jié)點樹的過程中,增加每個緩存塊所存儲的節(jié)點數(shù)。由此,在后述的檢索處理等中,緩 存未命中的頻率減少,更高速地進行處理。接著,依次詳細說明本發(fā)明一實施方式的采用配對節(jié)點樹的基本操作即檢索、插 入、刪除。圖4是示出一實施方式的比特序列檢索處理的流程圖。首先,在步驟S401a中,取得檢索開始節(jié)點的數(shù)組編號。與所取得的數(shù)組編號對應 的數(shù)組存儲有構(gòu)成配對節(jié)點樹的任意節(jié)點。在之后說明的各種應用檢索中進行檢索開始節(jié) 點的指定。所取得的檢索開始節(jié)點的數(shù)組編號被設定在未圖示的檢索開始節(jié)點設定區(qū)域內(nèi), 該檢索開始節(jié)點設定區(qū)域是先前所述的“為了在之后的處理中使用在處理中途獲得的各種 值而與各個處理對應的臨時存儲區(qū)域”之一。在以下的說明中,有時還改變“設定在未圖示 的檢索開始節(jié)點設定區(qū)域”這樣的表述,而記述為“獲得檢索開始節(jié)點的數(shù)組編號?!薄ⅰ霸O定 為檢索開始節(jié)點”或者簡述為“設定成檢索開始節(jié)點”。接著在步驟S401b中,之后對保存第1鑒別位置的值的臨時存儲區(qū)域即保存鑒別 位置設定初始值。由于索引關鍵字開頭關鍵字序列的第1鑒別位置設為0,因此在初始值中 設定負值。接著,在步驟S402中,在搜索路徑堆棧中存儲所取得的數(shù)組編號,在步驟S403中, 讀出與該數(shù)組編號對應的數(shù)組元素作為應參照的節(jié)點。然后,在步驟S404中,從所讀出的 節(jié)點中取出節(jié)點類別,在步驟S405中,判定節(jié)點類別是否是分支節(jié)點。在步驟S405的判定中,所讀出的節(jié)點是分支節(jié)點的情況下,進到步驟S406a。在步 驟S406a中從節(jié)點取出第1鑒別位置,在下一步驟S406b中,判定在步驟S406a取出的第1 鑒別位置是否與保存鑒別位置一致。在第1鑒別位置與保存鑒別位置一致的情況下,轉(zhuǎn)到步驟S406,在不一致的情況 下進到步驟S406c,從檢索關鍵字序列中取出在步驟S406a取出的第1鑒別位置所指的關鍵 字,設定為檢索關鍵字。接著,在步驟S406d中對保存鑒別位置設定步驟S406a中取出的第1鑒別位置,進 到步驟S406。在步驟S406中,從在步驟S403讀出的節(jié)點中取出第2鑒別位置(鑒別比特位置), 進而在步驟S407中,從檢索關鍵字中取出與所取出的鑒別比特位置對應的比特值。然后, 在步驟S408中,從在步驟S403讀出的節(jié)點中取出代表節(jié)點編號,在步驟S409中,將從檢索 關鍵字取出的比特值與代表節(jié)點編號相加,作為新的數(shù)組編號返回步驟S402。以后,反復從步驟S402到步驟S409的處理,直到在步驟S405的判定中判定為葉 節(jié)點而進到步驟S410a為止。在步驟S410a中,從葉節(jié)點取出參照指針,結(jié)束檢索。接著,利用圖5 圖8A來說明配對節(jié)點樹中的節(jié)點插入處理。圖5 圖7是說明 通常的插入處理的圖,圖8A是說明根節(jié)點的插入處理的圖。由于通過根節(jié)點的插入處理和 通常的插入處理生成配對節(jié)點樹,所以節(jié)點插入處理的說明也是配對節(jié)點樹的生成處理的說明。圖5是示出作為插入處理前級的檢索處理的處理流程的圖,相當于在圖4所示的 檢索處理中,將插入關鍵字序列作為檢索關鍵字序列、將檢索開始節(jié)點作為根節(jié)點。首先,在步驟S501a中對檢索開始節(jié)點設定根節(jié)點的數(shù)組編號,在步驟S501b中把 插入關鍵字序列設定為檢索關鍵字序列。作為插入處理的前提條件,預先取得索引關鍵字 存儲區(qū)域的指針,插入關鍵字序列存儲在該存儲區(qū)域內(nèi)。插入關鍵字序列末尾的關鍵字在 全部索引關鍵字中取唯一的值。接著,在步驟S510a中,利用檢索關鍵字序列從檢索開始節(jié)點起進行圖4所示的檢 索處理,取得參照指針,在步驟S510b中取出該參照指針指向的關鍵字序列,設定為比較關 鍵字序列。接著在步驟S510c中,依次比較插入關鍵字序列的關鍵字和比較關鍵字序列的關 鍵字。比較的結(jié)果是,輸出表示比較關鍵字序列與插入關鍵字序列是否完全一致的信息。 在不完全一致的情況下,將第一個不一致關鍵字的位置設定為第1鑒別位置,并且將插入 關鍵字序列中的該第1鑒別位置的關鍵字設定為插入關鍵字,將比較關鍵字序列中的該第 1鑒別位置的關鍵字設定為比較關鍵字。步驟S510C的詳細在后文中參照圖8B進行說明。接著在步驟S511a中,作為步驟S510c的比較結(jié)果,判定插入關鍵字序列的關鍵字 與比較關鍵字序列的關鍵字是否完全相等,如果相等則插入關鍵字序列已經(jīng)存在于配對節(jié) 點樹的參照指針所指向的存儲區(qū)域內(nèi),所以插入失敗,處理結(jié)束。如果不相等則進到下一處 理、圖6的步驟S512以下的處理。圖6是說明準備用于待插入節(jié)點對的數(shù)組元素的處理的處理流程圖。在步驟S512中,從數(shù)組中求出空的節(jié)點對,取得在該節(jié)點對中應成為代表節(jié)點的 數(shù)組元素的數(shù)組編號。進到步驟S513a,比較在步驟S510c中獲得的插入關鍵字和比較關鍵字的大小,在 插入關鍵字大時獲得值1的布爾值,在插入關鍵字小時獲得值0的布爾值。進到步驟S514,將在步驟S512獲得的代表節(jié)點的數(shù)組編號與在步驟S513獲得的 布爾值相加,得到相加后的數(shù)組編號。進到步驟S515,將在步驟S512獲得的代表節(jié)點的數(shù)組編號與在步驟S513獲得的 布爾值的邏輯非值相加,得到相加后的數(shù)組編號。在步驟S514取得的數(shù)組編號是存儲具有下述參照指針的葉節(jié)點的數(shù)組元素的數(shù) 組編號,該參照指針指向存儲插入關鍵字序列作為索引關鍵字的存儲區(qū)域,在步驟S515取 得的數(shù)組編號是存儲與該葉節(jié)點構(gòu)成節(jié)點對的節(jié)點的數(shù)組元素的編號。即,根據(jù)在前級檢索處理中獲得的葉節(jié)點所對應的索引關鍵字與插入關鍵字序列 的大小,來確定在待插入節(jié)點對中的哪個節(jié)點中存儲保持指向插入關鍵字序列的參照指針 的葉節(jié)點。例如在圖2B的配對節(jié)點樹中插入插入關鍵字序列〃 0110111001〃的情況下,檢 索結(jié)果的索引關鍵字為與節(jié)點211d對應的關鍵字序列"0110101000"。當依次比較插入 關鍵字序列和檢索結(jié)果的關鍵字序列的關鍵字時,第1關鍵字不一致,通過第1關鍵字彼此 間的大小比較來求出布爾值,在當前的例子中插入關鍵字序列的第1關鍵字大,所以獲得 布爾值1,在待插入節(jié)點對的代表節(jié)點編號與1相加所得的數(shù)組元素中,存儲保持指向插入關鍵字序列的參照指針的葉節(jié)點。另一方面,指向索引關鍵字"0110101000"的參照指針 281d存儲在將利用大小比較獲得的布爾值邏輯反轉(zhuǎn)后得到的值與代表節(jié)點編號相加所得 的數(shù)組編號的數(shù)組元素中。此時,因為檢索結(jié)果的索引關鍵字的第1關鍵字291d" 011010"與插入關鍵字序 列的第1關鍵字〃 011011"在第5比特不同,所以節(jié)點211d成為鑒別比特位置設為5、代 表節(jié)點編號設為待插入節(jié)點對的代表節(jié)點的數(shù)組編號的分支節(jié)點。另外,要在圖2B的配對節(jié)點樹內(nèi)插入〃 0110011010〃的情況下,檢索結(jié)果也為與 節(jié)點211d對應的"0110101000"的值的索引關鍵字。在該情況下插入關鍵字序列與檢 索結(jié)果的關鍵字序列的第1關鍵字也不一致,在該情況下,因為插入關鍵字序列的第1關 鍵字小所以獲得布爾值0,在待插入節(jié)點對的代表節(jié)點編號與0相加所得的數(shù)組元素中, 存儲保持指向插入關鍵字序列的參照指針的葉節(jié)點。而且,因為索引關鍵字的第1關鍵字 291d〃 011010〃與插入關鍵字序列的第1關鍵字〃 011001〃在第4比特不同,所以節(jié)點 211d成為鑒別比特位置設為4、代表節(jié)點編號設為待插入節(jié)點對的代表節(jié)點的數(shù)組編號的 分支節(jié)點。接下去,在步驟S516中,例如利用邏輯“異或”對在步驟S510c獲得的插入關鍵字 與比較關鍵字進行比特序列比較,獲得差分比特序列。進到步驟S517,從在步驟S516獲得的差分比特序列中,獲得從上位第0比特起觀 察到的第一個不一致比特的比特位置(以下,有時稱為差分比特位置。)。對于處理,例如 可在具有優(yōu)先編碼器的CPU中,向該優(yōu)先編碼器輸入差分比特序列,獲得不一致的比特位 置。另外,也可以軟件的方式進行與優(yōu)先編碼器等同的處理,獲得第一個不一致比特的比特位置。在步驟S517之后,進行圖7所示的步驟S518以下的處理。圖7是示出在圖6中準備的數(shù)組元素內(nèi)存儲節(jié)點并且求出其插入位置、變更現(xiàn)有 節(jié)點的內(nèi)容來完成插入處理的處理流程的圖。步驟S518 步驟S523的處理是求出待插入節(jié)點對在配對節(jié)點樹上的位置的處 理,步驟S524以下的處理是在各節(jié)點中設定數(shù)據(jù)來完成插入處理的處理。在步驟S518中,判定搜索路徑堆棧的堆棧指針是否指向根節(jié)點的數(shù)組編號。如果 指向則轉(zhuǎn)到步驟S524,如果沒有指向則進到步驟S519。在步驟S519中,使搜索路徑堆棧的堆棧指針后退1,取出堆棧在此的數(shù)組編號。進到步驟S520,從數(shù)組中讀出在步驟S519取出的數(shù)組編號的數(shù)組元素作為節(jié)點。進到步驟S520a,從在步驟S520讀出的節(jié)點中取出第1鑒別位置,在步驟S520b 中,對在步驟S520a取出的第1鑒別位置"A"與在步驟S510c取得的第1鑒別位置"B" 進行大小比較。如果A > B,則返回步驟S518,如果A = B,則進到步驟S521,如果A < B,則進到步
馬聚S5 2 3 ο在步驟S521中,從在步驟S520讀出的節(jié)點中取出第2鑒別位置(鑒別比特位置), 進到步驟S522,判定在步驟S521取出的鑒別比特位置是否是比在步驟S517取得的差分比 特位置上位的位置關系。這里所謂上位的位置關系是指比特序列的更左側(cè)的位置、即比特 位置的值較小的位置。
如果步驟S522的判定結(jié)果是否定的,則返回步驟S518進行反復,直到在步驟S518 中的判定為肯定、或者在步驟S520b中判定為A < B、或者在步驟S522中的判定為肯定為 止。當在步驟S522的判定為肯定時,進到步驟S523。在步驟S523中,搜索路徑堆棧的堆棧指針前進1,轉(zhuǎn)到步驟S524以下的處理。關于在上述步驟S518 步驟S523中說明的處理,為了確定待插入節(jié)點對的插入 位置,調(diào)查存儲在搜索路徑堆棧中的分支節(jié)點的第1鑒別位置(A)與在步驟S510c取得的 第1鑒別位置(B)之間的相對位置關系,如果A < B則將分支節(jié)點的鏈接目的地設為待插 入節(jié)點對的插入位置;如果A = B,針對利用待插入索引關鍵字(插入關鍵字)與通過檢索 取得的索引關鍵字(比較關鍵字)之間的比特序列比較成為不同比特值的差分比特位置, 調(diào)查該差分比特位置與存儲在搜索路徑堆棧中的分支節(jié)點的鑒別比特位置之間的相對位 置關系,將鑒別比特位置為上位的分支節(jié)點的下一分支節(jié)點的鏈接目的地作為待插入節(jié)點 對的插入位置。另外,在對搜索路徑堆棧進行反向搜索而到達根節(jié)點時,根節(jié)點的鏈接目的地成 為插入位置。例如在圖2B的配對節(jié)點樹中插入〃 1110000000〃時,檢索結(jié)果的索引關鍵字 成為對應于節(jié)點210h的"1011000001 "。在此例的情況下,第1鑒別位置(A)是1(第 1鑒別位置241f)、第1鑒別位置⑶是0,所以A > B,當鏈接路徑返回節(jié)點211b時,第 1鑒別位置241b是0,所以A = B。在當前例的情況下,插入關鍵字〃 111000〃與比較關 鍵字〃 101100〃的差分比特位置是1,鑒別比特位置231b是2,因此進一步追溯到根節(jié)點 210a。根節(jié)點210a的鑒別比特位置230a是0,比差分比特位置1上位,所以堆棧指針指 向220a。因此,插入位置是節(jié)點211b的鏈接目的地。當插入節(jié)點對時,如后所述,分支節(jié)點 211b的鑒別比特位置成為差分比特位置的值1。此外,A < B例如是對第1關鍵字不重復的索引關鍵字插入包含重復的第1關鍵字 的插入關鍵字序列的情況,在圖2B的例子中,當賦予插入關鍵字序列"1000101001"時, 第1鑒別位置(A)是第1鑒別位置240f,值是0,第1鑒別位置(B)的值是1,A < B成立, 節(jié)點210g成為插入位置,為待插入節(jié)點對的緊接上位的分支節(jié)點。接下來,說明步驟S524以下對各節(jié)點設定數(shù)據(jù)來完成插入處理的處理。在步驟S524中從搜索路徑堆棧內(nèi)取出堆棧指針所指向的數(shù)組編號。進到步驟S525d,針對在步驟S514取得的數(shù)組編號所指向的數(shù)組元素,對節(jié)點類 別寫入葉節(jié)點,對參照指針寫入插入關鍵字序列的指針。進到步驟S526,從數(shù)組中讀出在步驟S524取得的數(shù)組編號的數(shù)組元素。接著在步驟S527中,在步驟S515取得的數(shù)組編號的數(shù)組元素中寫入在步驟S526 讀出的內(nèi)容。最后在步驟S528a中,針對在步驟S524取得的數(shù)組編號所指向的數(shù)組元素,對節(jié) 點類別寫入分支,對第1鑒別位置寫入在步驟S510c取得的第1鑒別位置,對第2鑒別位置 寫入在步驟S517取得的比特位置,對代表節(jié)點編號寫入在步驟S512取得的數(shù)組編號,結(jié)束處理。在將插入關鍵字序列〃 1110000000 〃插入到上述圖2B的配對節(jié)點樹的例子中,在步驟S525d中,將取得的空節(jié)點對的節(jié)點[1]作為保持指向插入關鍵字序 列"1110000000"的參照指針的葉節(jié)點,在步驟S527中,在節(jié)點
中寫入節(jié)點211b的內(nèi) 容。然后,在步驟S528a中,在節(jié)點211b的節(jié)點類別中存儲0,在第1鑒別位置中存儲0,在 鑒別比特位置中存儲通過比特序列比較而獲得的差分比特位置1,在代表節(jié)點編號中存儲 存儲有所取得的節(jié)點對的代表節(jié)點的數(shù)組元素的數(shù)組編號。圖8A是說明本發(fā)明一實施方式的包含根節(jié)點插入處理的葉節(jié)點的插入處理整體 的處理流程的圖。在步驟S551中,判定是否登記了要取得的配對節(jié)點樹的根節(jié)點的數(shù)組編號。如果 登記完畢,則進行采用圖5 圖7說明的通常插入處理。如果步驟S551中的判定不是登記完畢,則開始全新的配對節(jié)點樹的登記、生成。 即使在該情況下,作為插入處理的前提條件,預先取得索引關鍵字的存儲區(qū)域的指針,插入 關鍵字序列存儲在該存儲區(qū)域內(nèi)。首先,在步驟S552中,從數(shù)組中求出空的節(jié)點對,取得該節(jié)點對中應成為代表節(jié) 點的數(shù)組元素的數(shù)組編號。接著在步驟S553中,求出將在步驟S552取得的數(shù)組編號與0 相加所得的數(shù)組編號。(實際上,等于在步驟S552取得的數(shù)組編號。)接著,在步驟S554d 中,針對在步驟S553取得的數(shù)組編號的數(shù)組元素、即與待插入的根節(jié)點對應的數(shù)組元素, 對節(jié)點類別寫入葉節(jié)點,對參照指針寫入插入關鍵字序列的指針。然后,在步驟S556中,登 記在步驟S553取得的根節(jié)點的數(shù)組編號,結(jié)束處理。如先前所述,顯然在具有索引關鍵字集合時,通過從該集合中依次取出索引關鍵 字,反復圖8A以及圖5 圖7的處理,由此可以構(gòu)建與索引關鍵字集合對應的本發(fā)明的配 對節(jié)點樹。接著,參照圖8B說明在先前所述的圖5所示的步驟S510c中執(zhí)行的本發(fā)明一實施 方式的關鍵字序列比較處理的處理流程。如圖所示,在步驟SlOl中,對鑒別位置設定值"0"作為初始值。在步驟S102中,判定序列中的所有關鍵字是否處理完畢,如果處理完畢則輸出完 全一致的信息,結(jié)束處理,如果沒有處理完畢則進到步驟S103。在步驟S103中,從插入關鍵字序列中取出鑒別位置所指向的關鍵字,設定為插入
關鍵字。進到步驟S104,從在圖5所示的步驟S510b設定的比較關鍵字序列中取出鑒別位 置所指向的關鍵字,設定為比較關鍵字。接著進到步驟S105,判定插入關鍵字與比較關鍵字是否一致。如果一致則在步驟 S106中更新設定為鑒別位置的值,返回步驟S102,如果不一致,則轉(zhuǎn)入步驟S107將鑒別位 置設定為第1鑒別位置,并且輸出非完全一致,結(jié)束處理。接下來,參照圖9、圖10,說明本發(fā)明一實施方式的從配對節(jié)點樹中刪除與特定索 弓I關鍵字對應的葉節(jié)點的處理流程。圖9是示出作為刪除處理前級的檢索處理的處理流程的圖,相當于在圖4所示的 檢索處理中,將刪除關鍵字序列作為檢索關鍵字序列、將檢索開始節(jié)點作為根節(jié)點。首先,在步驟S901a中把根節(jié)點的數(shù)組編號設定為檢索開始節(jié)點,在步驟S901b中 把刪除關鍵字序列設定為檢索關鍵字序列。
接著,在步驟S910a中,利用檢索關鍵字序列從檢索開始節(jié)點起進行圖4所示的檢 索處理,取得參照指針,在步驟S910b中取出該參照指針所指向的關鍵字序列,設定為比較 關鍵字序列。接著在步驟S910c中,設定刪除關鍵字序列末尾的關鍵字作為刪除關鍵字,在步 驟S910d中,設定比較關鍵字序列末尾的關鍵字作為索引關鍵字。在步驟S911中比較在步驟S910c設定的刪除關鍵字和在步驟S910d設定的索引 關鍵字,如果不相等,則在配對節(jié)點樹中不存在要刪除的索引關鍵字,因此刪除失敗,處理 結(jié)束。如果相等則進到下一處理即圖10的步驟S912以下的處理。此外,之所以比較上述 關鍵字序列中末尾關鍵字是因為,末尾關鍵字是不重復的唯一關鍵字。圖10是說明刪除處理后級的處理流程的圖。首先,在步驟S912中判定在搜索路徑堆棧內(nèi)是否存儲有2個以上的數(shù)組編號。所 謂沒有存儲2個以上的數(shù)組編號換言之就是僅有1個,該數(shù)組編號是存儲有根節(jié)點的數(shù)組 元素的編號。在該情況下轉(zhuǎn)至步驟S918,刪除在步驟S901a取得的根節(jié)點的數(shù)組編號所涉 及的節(jié)點對,結(jié)束處理。在步驟S912中判定為在搜索路徑堆棧內(nèi)存儲有2個以上的數(shù)組編號時,進到步驟 S913a,將在步驟S910a中執(zhí)行的圖4所示的檢索處理的步驟S408中取得的代表節(jié)點編號, 加上同樣在步驟S910a中執(zhí)行的圖4所示的檢索處理的步驟S407中取得的比特值被反轉(zhuǎn) 后的值,得到相加所得的數(shù)組編號。該處理求出配置有與刪除對象的葉節(jié)點成對的節(jié)點的 數(shù)組編號。接著在步驟S914中,讀出在步驟S913取得的數(shù)組編號的數(shù)組元素的內(nèi)容,在步驟 S915中使搜索路徑堆棧的堆棧指針后退1來取出數(shù)組編號。接著進到步驟S916,將在步驟S914讀出的數(shù)組元素的內(nèi)容重寫到在步驟S915取 得的數(shù)組編號的數(shù)組元素中。該處理將作為鏈接到刪除對象的葉節(jié)點的鏈接源的分支節(jié)點 置換為與上述葉節(jié)點成對的節(jié)點。接著在步驟S917中,刪除在步驟S910a中執(zhí)行的圖4所示的檢索處理的步驟S408 中取得的代表節(jié)點編號所涉及的節(jié)點對,結(jié)束處理。圖IlA以及圖IlB是說明在圖2B所例示的配對節(jié)點樹中將〃 0110101000〃作為
刪除關鍵字序列進行刪除處理的例子的圖。圖IlA所示的配對節(jié)點樹中,對節(jié)點對201f以下的節(jié)點省略了敘述。刪除關鍵字 序列〃 0110101000〃是由第1關鍵字〃 011010〃和第2關鍵字〃 1000〃構(gòu)成的關鍵字序 列,存儲在作為臨時存儲區(qū)域的刪除關鍵字270內(nèi)。在搜索路徑堆棧310中存儲數(shù)組編號,其堆棧指針指向數(shù)組編號221C+1。在圖中 用粗框包圍的節(jié)點是在檢索處理中搜索到的節(jié)點,在搜索路徑堆棧310中堆積有其數(shù)組編 號為根節(jié)點210a的編號到葉節(jié)點211d的編號。在基于刪除關鍵字序列"0110101000"的檢索處理中,首先最先取得根節(jié)點 210a的數(shù)組編號220,將其存儲在搜索路徑堆棧310內(nèi)。因為根節(jié)點210a的第1鑒別位置 240a是0,所以取出刪除關鍵字序列的第1關鍵字"011010"設定為檢索關鍵字,鑒別比特 位置230a是0、檢索關鍵字的比特位置0的比特值是0,所以在搜索路徑堆棧310中存儲將 代表節(jié)點編號220a與比特值0相加所得的數(shù)組編號220a。
18
接著,讀出數(shù)組編號220a所指向的節(jié)點210b,判定為分支節(jié)點。因為第1鑒別位 置240b是0與第1鑒別位置240a沒有變化,所以從先前設定的檢索關鍵字中取得與鑒別 比特位置230b的值1對應的該比特位置的比特值1,將該比特值1與代表節(jié)點編號220b相 加而獲得數(shù)組編號220b+l,將該數(shù)組編號220b+l存儲在搜索路徑堆棧310內(nèi)。接著,讀出節(jié)點211c,第1鑒別位置241c是1更新了 1個,因此將刪除關鍵字序列 的第2關鍵字"1000"設定為檢索關鍵字。因為鑒別比特位置231c是0,檢索關鍵字的比 特位置0的比特值是1,所以如圖所示在搜索路徑堆棧310內(nèi)存儲代表節(jié)點編號221c與1 相加所得的數(shù)組編號221c+l。在數(shù)組編號為221c+l的數(shù)組元素內(nèi)所存儲的節(jié)點211d的節(jié)點類別261d是1,表 示為葉節(jié)點。與該葉節(jié)點對應的索引關鍵字(關鍵字序列291d、291d')存儲在由參照指針 281d示出的存儲區(qū)域內(nèi)。該存儲區(qū)域是索引關鍵字存儲區(qū)域311的一部分。因此,當取出參 照指針281d所參照的索引關鍵字的末尾關鍵字即第2關鍵字291d'時,其值是"1000", 與存儲在刪除關鍵字270內(nèi)的第2關鍵字一致。在圖IlA所示的狀態(tài)下,讀出與刪除對象的節(jié)點211d成對的節(jié)點210d的內(nèi)容,將 該內(nèi)容寫入到使搜索路徑堆棧310的堆棧指針后退1時所存儲的數(shù)組編號220b+l的數(shù)組 元素(節(jié)點211c)中。然后刪除節(jié)點對201d。刪除了節(jié)點對的數(shù)組元素為空,可再次利用。圖IlB所示的配對節(jié)點樹是刪除處理結(jié)束后的樹。在節(jié)點211c的節(jié)點類別261c、 第1鑒別位置241c、鑒別比特位置231c、代表節(jié)點編號221c中,如括弧所示,按原樣存儲有 存儲在節(jié)點210d中的值。另外,搜索路徑堆棧310的堆棧指針指向數(shù)組編號220b+l。接著,參照圖12A以及圖12B來說明插入處理的具體例。如圖12A所示的是具有參照比特序列〃 01000001〃、〃 00010010"、" 00000011 “作為索引關鍵字的參照指針1281b、1281c、1280c的配對節(jié)點樹。在參照指針1281b所指向的存儲區(qū)域中,存儲有由第1關鍵字1291b" 0100"和 第2關鍵字1291b' “ 0001"構(gòu)成的關鍵字序列。同樣,在參照指針1281c指向的存儲區(qū) 域中,存儲有由第1關鍵字1291c" 0001"和第2關鍵字1291c' “ 0010〃構(gòu)成的關鍵字 序列,在參照指針1280c指向的存儲區(qū)域中存儲有由第1關鍵字1290c" 0000"和第2關 鍵字1290c' “ 0011〃構(gòu)成的關鍵字序列。在圖示的例子中,接下來要插入的插入關鍵字序列是"00000100"。如先前所述, 前提是取得索引關鍵字存儲區(qū)域的指針1281d,將存儲在指針1281d所指向的區(qū)域的序列 作為插入關鍵字序列,插入關鍵字序列的末尾關鍵字即第2關鍵字"0100"取在所有索引 關鍵字中唯一的值。圖示的樹由節(jié)點對1201a、1201b、1201c構(gòu)成。節(jié)點對1201a的代表節(jié)點是根節(jié)點1210a,在第1鑒別位置上保持0,在鑒別比特 位置上保持1。節(jié)點對1201a下位的節(jié)點對1201b的代表節(jié)點1210b是分支節(jié)點,在第1鑒 別位置上保持0,在鑒別比特位置上保持3,與代表節(jié)點1210b成對的節(jié)點1211b是葉節(jié)點, 保持指向關鍵字序列1291b、1291b'的參照指針1281b。作為分支節(jié)點的節(jié)點1210b鏈接 到節(jié)點對1201c。構(gòu)成節(jié)點對1201c的節(jié)點1210c和1211c都是葉節(jié)點,分別存儲指向關鍵字序列 1290cU290c'的參照指針1280c和指向關鍵字序列1291cU291c'的參照指針1281c。
插入關鍵字序列的第1關鍵字1291d與參照指針1280c指向的存儲區(qū)域所存儲的 關鍵字序列的第1關鍵字重復。因此在圖示的例子的情況下,當利用插入關鍵字序列進行 檢索時,到達存儲有參照指針1280c的葉節(jié)點1210c,設定第2關鍵字1290c'作為比較關 鍵字,設插入關鍵字序列的第2關鍵字1290d'作為插入關鍵字,進行大小關系的判定和比 特序列比較。這樣一來,插入關鍵字大于比較關鍵字,第一個不一致比特的位置為1。圖12B是示出插入了插入關鍵字序列〃 00000100〃的配對節(jié)點樹的圖。新的節(jié)點 對1201d被插入到節(jié)點對1201c的下位。節(jié)點對1201d的節(jié)點[1] 1211d生成為包含插入 關鍵字序列的指針作為參照指針1281d葉節(jié)點,在節(jié)點W]1210d中寫入如圖12A所示的節(jié) 點1210的內(nèi)容。并且,在圖12B所示的分支節(jié)點1210c的第1鑒別位置中存儲有表示是第 2關鍵字的1,在第2鑒別位置中存儲有作為插入關鍵字和比較關鍵字的第一個不一致比特 的位置的1,在代表節(jié)點編號中存儲有配置了節(jié)點對1201的代表節(jié)點1210d的數(shù)組元素的 數(shù)組編號。以上,對用于實施本發(fā)明的優(yōu)選方式進行了詳細說明,但本發(fā)明的實施方式不限 于此,可進行各種變形,這對本領域技術(shù)人員而言是顯而易見的。例如對于葉節(jié)點,可取代 表示存儲有索引關鍵字的存儲區(qū)域的位置的信息,而包含索引關鍵字本身,這對本領域技 術(shù)人員而言是顯而易見的。另外,雖然將識別檢索關鍵字序列中的關鍵字位置的第1鑒別 位置以從左起0、1、2、...這樣的方式設為與關鍵字的排列順序相應的關鍵字的位置編號, 但不限于此,例如可以通過設檢索關鍵字序列整體的離開開頭比特的偏移值、或者交替使 用0和1來表示關鍵字位置切換的方式,由此識別關鍵字的位置,這對本領域技術(shù)人員而言 是顯而易見的。另外可知,執(zhí)行本發(fā)明的比特序列檢索方法的裝置可通過存儲配對節(jié)點樹的存儲 單元和使計算機執(zhí)行圖4所示的處理的程序而構(gòu)建在計算機上。此外可知,可通過使計算機執(zhí)行圖5 圖7、圖8A、圖8B所示的插入處理及其等同 物的程序,來實現(xiàn)本發(fā)明的插入方法,還可通過使計算機執(zhí)行圖9以及圖10所示的刪除處 理及其等同物的程序,來實現(xiàn)本發(fā)明的刪除方法。并且,可利用這些程序在計算機上實現(xiàn)分 支節(jié)點與葉節(jié)點的識別單元、根據(jù)分支節(jié)點的鑒別比特位置來鏈接到鏈接目的地的節(jié)點對 的某一方的單元等。因此,本發(fā)明的實施方式包含上述程序以及存儲有程序的計算機可讀存儲介質(zhì)。 此外,在本發(fā)明的實施方式還包含本發(fā)明的配對節(jié)點樹的數(shù)據(jù)結(jié)構(gòu)。通過采用以上詳細說明的作為本發(fā)明提供的新數(shù)據(jù)結(jié)構(gòu)的配對節(jié)點樹,可對重復 關鍵字進行處理,并且能夠更高速地檢索比特序列數(shù)據(jù)。而且還能夠容易地執(zhí)行比特序列 數(shù)據(jù)的追加刪除。
權(quán)利要求
一種使用配對節(jié)點樹的比特序列檢索方法,該配對節(jié)點樹是用于比特序列檢索的樹,由根節(jié)點、以及配置在相鄰存儲區(qū)域中的分支節(jié)點和葉節(jié)點、或者分支節(jié)點之間或葉節(jié)點之間的節(jié)點對構(gòu)成,所述根節(jié)點是表示樹的起點的節(jié)點,當該樹的節(jié)點為一個時所述根節(jié)點是所述葉節(jié)點,當樹的節(jié)點為兩個以上時所述根節(jié)點是所述分支節(jié)點,所述分支節(jié)點包含第一位置信息,該第一位置信息表示作為鏈接目的地節(jié)點對中的一個節(jié)點的代表節(jié)點的位置,所述葉節(jié)點包含第二位置信息,該第二位置信息表示存儲有由檢索對象比特序列構(gòu)成的索引關鍵字的存儲區(qū)域的位置,該比特序列檢索方法的特征在于,所述索引關鍵字是一個以上的關鍵字的序列,該關鍵字序列的末尾關鍵字是不重復的唯一關鍵字,所述分支節(jié)點還包含第1鑒別位置和第2鑒別位置,該第1鑒別位置識別進行比特序列檢索的檢索關鍵字序列中的關鍵字的位置,該第2鑒別位置是該關鍵字的鑒別比特位置,將所述配對節(jié)點樹的任意節(jié)點作為檢索開始節(jié)點,依次反復下述動作在所述分支節(jié)點中,根據(jù)所述檢索關鍵字序列中的、由該分支節(jié)點所包含的第1鑒別位置所識別的位置的關鍵字的所述鑒別比特位置的比特值,來鏈接到鏈接目的地節(jié)點對中的代表節(jié)點或配置在與該代表節(jié)點相鄰的存儲區(qū)域內(nèi)的節(jié)點,直至到達所述葉節(jié)點為止,由此將存儲在所述葉節(jié)點所包含的所述第二位置信息所示的存儲區(qū)域內(nèi)的索引關鍵字作為檢索結(jié)果關鍵字序列,該檢索結(jié)果關鍵字序列是所述配對節(jié)點樹的以所述檢索開始節(jié)點為根節(jié)點的任意部分樹的、基于所述檢索關鍵字序列的檢索結(jié)果。
2.根據(jù)權(quán)利要求1所述的比特序列檢索方法,其特征在于,所述配對節(jié)點樹存儲在數(shù)組中,所述第一位置信息是所述數(shù)組的存儲有與該第一位置 信息對應的所述代表節(jié)點的數(shù)組元素的數(shù)組編號。
3.根據(jù)權(quán)利要求2所述的比特序列檢索方法,其特征在于,在堆棧內(nèi)依次保持存儲有所述檢索開始節(jié)點的數(shù)組元素的數(shù)組編號、以及存儲有從所 述檢索開始節(jié)點到所述葉節(jié)點的鏈接目的地節(jié)點的數(shù)組元素的數(shù)組編號。
4.一種葉節(jié)點插入方法,該葉節(jié)點插入方法對在權(quán)利要求1所述的比特序列檢索方法 中使用的配對節(jié)點樹,插入包含表示存儲有新的索引關鍵字的存儲區(qū)域的位置的所述第二 位置信息的葉節(jié)點,其特征在于,該葉節(jié)點插入方法包含以下步驟檢索結(jié)果關鍵字序列取得步驟,將所述新的索引關鍵字作為所述檢索關鍵字序列,將 所述配對節(jié)點樹的根節(jié)點作為檢索開始節(jié)點,在存儲從根節(jié)點到葉節(jié)點的鏈接路徑的同 時,利用權(quán)利要求1所述的比特序列檢索方法來取得所述檢索結(jié)果關鍵字序列;第1鑒別位置取得步驟,從開頭關鍵字起依次比較所述檢索關鍵字序列與所述檢索結(jié) 果關鍵字序列的關鍵字,取得第一個成為不同值的關鍵字位置;比較步驟,在所述檢索關鍵字序列與所述檢索結(jié)果關鍵字序列的、位于在所述第1鑒 別位置取得步驟中取得的關鍵字位置的關鍵字之間,進行大小比較和比特序列比較;插入位置確定步驟,根據(jù)所述鏈接路徑上的分支節(jié)點的第1鑒別位置與在所述第1鑒 別位置取得步驟中取得的所述關鍵字位置之間的相對位置關系、以及在所述比較步驟的比 特序列比較中成為不同比特值的第一個比特位置與所述鏈接路徑上的分支節(jié)點的第2鑒別位置之間的相對位置關系,來確定由待插入的所述葉節(jié)點和另一個節(jié)點構(gòu)成的節(jié)點對的 插入位置;節(jié)點位置確定步驟,根據(jù)所述比較步驟中的所述大小比較的結(jié)果,來確定將待插入的 所述葉節(jié)點設為待插入的所述節(jié)點對中的哪個節(jié)點;以及葉節(jié)點生成步驟,將表示存儲所述新的索引關鍵字的存儲區(qū)域的位置的信息作為所述 第二位置信息,存儲在所述葉節(jié)點中。
5.根據(jù)權(quán)利要求4所述的葉節(jié)點插入方法,其特征在于,所述配對節(jié)點樹存儲在數(shù)組中,所述第一位置信息是所述數(shù)組的存儲有與該第一位置 信息對應的所述代表節(jié)點的數(shù)組元素的數(shù)組編號。
6.根據(jù)權(quán)利要求5所述的葉節(jié)點插入方法,其特征在于,在堆棧內(nèi)依次保持存儲有所述根節(jié)點的數(shù)組元素的數(shù)組編號以及存儲有從所述根節(jié) 點到所述葉節(jié)點的鏈接目的地節(jié)點的數(shù)組元素的數(shù)組編號。
7.一種葉節(jié)點刪除方法,該葉節(jié)點刪除方法從在權(quán)利要求1所述的比特序列檢索方法 中使用的配對節(jié)點樹中,刪除包含表示存儲有所指定的所述索引關鍵字的存儲區(qū)域的位置 的所述第二位置信息的葉節(jié)點,該葉節(jié)點刪除方法的特征在于,將所述指定的索引關鍵字作為檢索關鍵字序列,將所述配對節(jié)點樹的根節(jié)點作為檢索 開始節(jié)點,利用權(quán)利要求1所述的比特序列檢索方法來取得所述檢索結(jié)果關鍵字序列,針對包含表示存儲所述檢索結(jié)果關鍵字序列的存儲區(qū)域的位置的信息作為所述第二 位置信息的葉節(jié)點,將與該葉節(jié)點成對的另一個節(jié)點存儲到該葉節(jié)點的鏈接源的分支節(jié)點 中,由此刪除所述葉節(jié)點。
8.根據(jù)權(quán)利要求7所述的葉節(jié)點刪除方法,其特征在于,所述配對節(jié)點樹存儲在數(shù)組中,所述第一位置信息是所述數(shù)組的存儲有與該第一位置 信息對應的所述代表節(jié)點的數(shù)組元素的數(shù)組編號。
9.根據(jù)權(quán)利要求8所述的葉節(jié)點刪除方法,其特征在于,在堆棧內(nèi)依次保持存儲有所述根節(jié)點的數(shù)組元素的數(shù)組編號以及存儲有從所述根節(jié) 點到所述葉節(jié)點的鏈接目的地節(jié)點的數(shù)組元素的數(shù)組編號。
10.一種程序,其中,該程序用于使計算機執(zhí)行權(quán)利要求1 9中任意一項所述的方法。
11.一種樹狀的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)用于比特序列檢索,其特征在于,該數(shù)據(jù)結(jié)構(gòu)由根節(jié)點、以及配置在相鄰存儲區(qū)域中的分支節(jié)點和葉節(jié)點、或者分支節(jié) 點之間或葉節(jié)點之間的節(jié)點對構(gòu)成,所述根節(jié)點是表示樹的起點的節(jié)點,當該樹的節(jié)點為一個時所述根節(jié)點是所述葉節(jié) 點,當樹的節(jié)點為兩個以上時所述根節(jié)點是所述分支節(jié)點,所述分支節(jié)點包含第一位置信息,該第一位置信息表示作為鏈接目的地節(jié)點對中的一 個節(jié)點的代表節(jié)點的位置,所述索引關鍵字是一個以上的關鍵字序列,該關鍵字序列的末尾關鍵字是不重復的唯 一關鍵字,所述分支節(jié)點還包含第1鑒別位置和第2鑒別位置,該第1鑒別位置識別進行比 特序列檢索的檢索關鍵字序列中的關鍵字的位置,該第2鑒別位置是該關鍵字的鑒別比特 位置,將所述配對節(jié)點樹的任意節(jié)點作為檢索開始節(jié)點,依次反復下述動作在所述分支節(jié) 點中,根據(jù)所述檢索關鍵字序列中的、由該分支節(jié)點所包含的第1鑒別位置所識別的位置 的關鍵字的在所述鑒別比特位置的比特值,來鏈接到鏈接目的地節(jié)點對中的代表節(jié)點或配 置在與該代表節(jié)點相鄰的存儲區(qū)域內(nèi)的節(jié)點,直至到達所述葉節(jié)點為止,由此能夠執(zhí)行基 于所述檢索關鍵字序列的檢索。
12.根據(jù)權(quán)利要求11所述的數(shù)據(jù)結(jié)構(gòu),其特征在于,所述數(shù)據(jù)結(jié)構(gòu)存儲在數(shù)組中,所述第一位置信息是所述數(shù)組的存儲有與該第一位置信 息對應的所述代表節(jié)點的數(shù)組元素的數(shù)組編號。
13.一種使用配對節(jié)點樹的比特序列檢索裝置,該配對節(jié)點樹是用于比特序列檢索的 樹,由根節(jié)點、以及配置在相鄰存儲區(qū)域中的分支節(jié)點和葉節(jié)點、或者分支節(jié)點之間或葉節(jié) 點之間的節(jié)點對構(gòu)成,所述根節(jié)點是表示樹的起點的節(jié)點,當該樹的節(jié)點為一個時所述根節(jié)點是所述葉節(jié) 點,當樹的節(jié)點為兩個以上時所述根節(jié)點是所述分支節(jié)點,所述分支節(jié)點包含第一位置信息,該第一位置信息表示作為鏈接目的地節(jié)點對中的一 個節(jié)點的代表節(jié)點的位置,所述葉節(jié)點包含第二位置信息,該第二位置信息表示存儲有由 檢索對象比特序列構(gòu)成的索引關鍵字的存儲區(qū)域的位置,該比特序列檢索裝置的特征在于,所述索引關鍵字是一個以上的關鍵字的序列,該關鍵字序列的末尾關鍵字是唯一關鍵 字,所述分支節(jié)點還包含第1鑒別位置和第2鑒別位置,該第1鑒別位置識別進行比特序列 檢索的檢索關鍵字序列中的關鍵字的位置,該第2鑒別位置是該關鍵字的鑒別比特位置,將所述配對節(jié)點樹的任意節(jié)點作為檢索開始節(jié)點,依次反復下述動作在所述分支節(jié) 點中,根據(jù)所述檢索關鍵字序列中的、由該分支節(jié)點所包含的第1鑒別位置所識別的位置 的關鍵字的在所述鑒別比特位置的比特值,來鏈接到鏈接目的地節(jié)點對中的代表節(jié)點或配 置在與該代表節(jié)點相鄰的存儲區(qū)域內(nèi)的節(jié)點,直至到達所述葉節(jié)點為止,由此將存儲在所 述葉節(jié)點所包含的所述第二位置信息所示的存儲區(qū)域內(nèi)的索引關鍵字作為檢索結(jié)果關鍵 字序列,該檢索結(jié)果關鍵字序列是所述配對節(jié)點樹的以所述檢索開始節(jié)點為根節(jié)點的任意 部分樹的、基于所述檢索關鍵字序列的檢索結(jié)果。
14.根據(jù)權(quán)利要求13所述的比特序列檢索裝置,其特征在于,該比特序列檢索裝置具有數(shù)組,所述配對節(jié)點樹存儲在該數(shù)組中,所述第一位置信息 是所述數(shù)組的存儲有與該第一位置信息對應的所述代表節(jié)點的數(shù)組元素的數(shù)組編號。
15.根據(jù)權(quán)利要求14所述的比特序列檢索裝置,其特征在于,該比特序列檢索裝置具有堆棧,在所述堆棧中依次保持存儲有所述檢索開始節(jié)點的數(shù) 組元素的數(shù)組編號以及存儲有從所述檢索開始節(jié)點到所述葉節(jié)點的鏈接目的地節(jié)點的數(shù) 組元素的數(shù)組編號。
全文摘要
在應用了配對節(jié)點樹的檢索方法中,為了能夠處理重復關鍵字,將以末尾關鍵字為唯一關鍵字的多個關鍵字作為關鍵字序列進行組合來構(gòu)成索引關鍵字,檢索關鍵字是組合多個關鍵字作為關鍵字序列、且關鍵字序列的末尾關鍵字唯一的檢索關鍵字序列。分支節(jié)點中具有表示進行比特序列檢索的檢索關鍵字序列中的、進行比特序列比較的關鍵字的位置信息的第1鑒別位置和該關鍵字的第2鑒別位置,另外還包含表示作為鏈接目的地節(jié)點對中的一個節(jié)點的代表節(jié)點的位置的位置信息。從檢索關鍵字序列中取出分支節(jié)點的第1鑒別位置的關鍵字,根據(jù)該關鍵字的第2鑒別位置的比特值,鏈接到鏈接目的地節(jié)點對的一個節(jié)點,進行上述處理直至到達與索引關鍵字對應的葉節(jié)點為止,檢索到索引關鍵字。
文檔編號G06F17/30GK101911068SQ20088012493
公開日2010年12月8日 申請日期2008年11月11日 優(yōu)先權(quán)日2008年1月17日
發(fā)明者國分光裕, 新莊敏男 申請人:新葉股份有限公司