TW200817945A - Bit sequence search device, search method, and program - Google Patents

Bit sequence search device, search method, and program Download PDF

Info

Publication number
TW200817945A
TW200817945A TW096124374A TW96124374A TW200817945A TW 200817945 A TW200817945 A TW 200817945A TW 096124374 A TW096124374 A TW 096124374A TW 96124374 A TW96124374 A TW 96124374A TW 200817945 A TW200817945 A TW 200817945A
Authority
TW
Taiwan
Prior art keywords
node
search
key
bit
tree
Prior art date
Application number
TW096124374A
Other languages
English (en)
Inventor
Toshio Shinjo
Original Assignee
S Grants Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by S Grants Co Ltd filed Critical S Grants Co Ltd
Publication of TW200817945A publication Critical patent/TW200817945A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

200817945 九、發明說明 【發明所屬之技術領域】 本發明,係爲有關於從位元列之集合而檢索出所期望 之位元列的檢索裝置者,特別是有關於對記憶位元列之資 • 料構造作設計,以達成檢索速度等之提升的技術領域者。 【先前技術】 φ 近年,社會之資訊化係在進展,而大規模之資料庫亦 成爲被利用在各個領域中。爲了從此種大規模之資料庫而 檢索出記錄,通常係將與各記錄所被記憶之位址附加有對 應關係的記錄內之項目作爲索引鑰並進行檢索,而找出所 期望的記錄。又,在全文檢索中之文字列,亦可看作爲文 章的索引綸。 而,由於此些之索引鑰係作爲位元列而被表現,因此 資料庫的檢索係可回歸於位元列之檢索。 • 爲了高速進行上述位元列之檢索,從先前起,即已進 行有對記憶位元列之資料構造所做的各種設計。作爲此些 之其中一例,係周知有所謂的帕翠西雅樹(Patricia tree ~ )之樹構造。 圖17,係爲展示被使用於上述之先前的檢索處理中之 帕翠西雅樹之其中一例者。帕翠西雅樹之節點,係包含有 :索引鑰、檢索鑰之檢查位元位置、左右之連結指標,而 被構成。雖並未明示,但是,不用說,在節點中,係被包 含有用以對對應於索引鑰的記錄作存取(access )之資訊 -4- 200817945 在圖17之例中,保持索引鑰” 1 0001 0”之節點1 750a 係成爲根節點,該檢查位元位置係爲0。在節點1 750a之 左連結1 740a,係被連接有節點1 750b,在右連結1741a, 係被連接有節點1 750f。 節點1 7 5 0 b所保持之索引鑰係爲"〇1〇〇11”,檢查位元 位置1 73 0b係爲1。在節點1 750b之左連結1740b,係被 連接有節點1 750c,在右連結1741b,係被連接有節點 1 7 5 0 d。節點1 7 5 0 c所保持之索引鑰係爲” 〇 〇 〇丨丨丨·,,檢查 位元位置係爲3。節點1 750d所保持之索引鑰係爲 "011010",檢查位元位置係爲2。 從節點1 7 5 0 c而被連接有實線之部分,係爲表示節點 1 75 0c之左右的連結指標者,未被連接有虛線的左指標 1 740c ’係表示該欄係爲空欄。被連接有虛線之右指標 1741c的虛線之連接目標’係表示指標所展示的位址,在 現在的情況,係表示在節點1 7 5 0 c係指定右指標。 在節點1 7 5 0 d之右連結1 7 4 1 d,係指定有節點1 7 5 0 d 本身,在左連結1 740d ’係被連接有節點1 750e。節點 1 750e所保持之索引鑰係爲"〇1〇〇1〇",檢查位元位置係爲 5。節點1 75 0e之左連結1 740e,係指定有節點175〇b,在 右連結1741e,係指定有節點1 75 0e。 又’節點1 75 Of所保持之索引鑰係爲"! 〇〗〇 n ",檢查 位元位置173 Of係爲2。在節點175 Of之左連結174〇f,係 被連fe:有卽點1750g’在右連結I741f,係被連接有節點 200817945 1750h 。 節點175 Og所保持之索引鑰係爲” 1 0001 1 ”,檢查位元 位置1 73 0g係爲5。節點l 75 0g之左指標1 740g係指向節 點1 750a,右指標1741g係指向節點1 75 0g。 -節點175 Oh所保持之索引鑰係爲”101 1〇〇”,檢查位元 , 位置173 Oh係爲3。節點175 〇h之左連結174Oh,係指向 節點1 750f,右連結1741h,係指向節點1 750h。 # 於圖17之例中,係以隨著從根節點1 750a而在樹上 下降,各節點之檢查位元位置爲變大的方式而被構成。 當以某一檢索鑰而進行檢索時,係從根節點起而依序 對被保持於各節點之檢索鑰的檢查位元位置作檢查,並進 行關於檢查位元位置之位元値係爲0或是1的判定,若是 爲1,則到達右連結,若是〇,則到達左連結。而後,若 是連結目標之檢查位元位置並未較連結源頭之節點的檢查 位元位置大,亦即是,若是連結目標係並非爲朝向下方而 • 係回到上方(於圖17中,將以虛線所示之此倒退的連結 稱爲退後連結。),則進行連結目標之索引鑰與檢索鑰之 比較。比較之結果’若是相等,則係保證檢索爲成功,若 ' 是不相等,則係保證檢索爲失敗。 如上述所示,在使用有帕翠西雅樹的檢索處理中,雖 然具有:僅需對必要之位元作檢查,即可進行檢索;以及 繪全體之比較係只需一次即可等的優點,但是亦會有:由 於從各節點必定會分出有2個的連結,因此會使記憶容量 增大;或是因爲退後連接之存在所造成的判定處理之複雜 -6 - 200817945 化;因爲必須在藉由退後連結而倒退的情況下才會進行與 索引鑰間之比較所致的檢索處理之延遲;以及在追加、削 除等之資料維護上的困難性等等的缺點。 作爲用以解決此些之帕翠西雅樹的缺點者,例如係有 在下述之專利文獻1中所揭示的技術。在下述之專利文獻 1中所記載的帕翠西雅樹中,係藉由將下位之左右的節點 記憶在連續之區域中,而削減指標之記憶容量,同時,藉 由將用以表示接下來之連結是否爲退後連結的位元設置在 各節點中,而減輕退後連結之判定處理的負擔。 然而,在下述專利文獻1中所揭示者,亦係由於一個 的節點係必定佔據有索引鑰之區域與指標之區域,以及由 於將下位之左右的節點記憶在連續之區域中,而將指標設 爲1個,因此造成就算是在例如圖17所示之帕翠西雅樹 的最下段之左指標1 740 c右指標174 lh等的部分,亦需要 分配有與節點相同容量之記憶區域等的原因,而使得記憶 容量之削減效果並不是很大。又,關於因退後連結所致之 檢索處理的延遲問題,或是追加削除等之處理係爲困難的 事態,亦並未被改善。 〔專利文獻1〕日本特開200 1 -3 57070號公報 【發明內容】 〔發明所欲解決之課題〕 於此,本發明所欲解決之課題,係爲提供具備有一種 資料構造的位元列檢索裝置以及檢索方法。該資料構造, 200817945 係爲檢索對象之位元列的資料構造,且所需要之記憶容量 爲小,檢索速度係爲高速,資料維護亦爲容易。 〔用以解決課題之手段〕 若藉由本發明,則係提供一種稱之爲耦合節點樹( coupled node tree)的具備有以下之資料構造的樹,在本 發明之位元列檢索裝置中,係使用此耦合節點樹而進行索 引鑰之檢索。 本發明之耦合節點樹,係具備有:具有連結目標之資 料的分支節點,和具有身爲檢索對象之索引鑰的葉節點。 而,此樹狀構造,係由根節點,和被配置於鄰接之記憶區 域的分支節點與葉節點;又或是分支節點彼此又或是葉節 點彼此的節點對所構成。 分支節點,係包含有檢索鑰之辨別位置與用以與連結 目標之節點對中的其中一方之代表節點作連結的代表節點 號碼,前述葉節點,係包含有由身爲檢索對象之位元列所 成的索引鑰。根節點,除了樹的節點係爲僅有1個的情況 之外,係爲分支節點。 檢索鑰之辨別位元位置,在係使用檢索鑰之位置的位 元値之點上,係爲和帕翠西雅樹的檢查位元位置相同,但 是,在帕翠西雅樹中,係對檢查位元位置之位元値作判定 ,而求取連結目標,相對於此,在本發明之耦合節點樹中 ’係將辨別位置之位元値使用在求取出連結目標的節點之 演算中。此點係爲相異。 -8- 200817945 檢索鑰所致之檢索的實行,係藉由:在包含根節點之 各分支節點中,因應於被包含在該分支節點中的辨別位元 位置之檢索鑰的位元値,來對連結目標之節點對的其中一 方之節點作連結,並反覆進行此步驟,直到到達葉節點爲 止,而進行之。 若是到達了葉節點,則將葉節點所保持之索引鑰與檢 索鑰作比較,若是一致,則檢索係爲成功。若是不一致, 則在檢索對象之索引鑰中,係成爲沒有與檢索鑰一致者。 當在本發明之耦合節點樹中追加新的索引鑰時,首先 係將該索引鑰作爲檢索鑰而進行檢索,並取得所發現之葉 節點的索引鑰。又,將到達葉節點爲止所經過之分支節點 的號碼,從根節點起而依序儲存在堆疊中。 對所追加之索引鑰與藉由檢索所取得之索引鑰之間, 進行大小比較與位元列比較,並藉由在位元列比較中成爲 相異之位元値的前端之(最上位之)位元位置與被儲存於 堆疊中之分支節點的辨別位元位置之相對的位置關係,來 決定所追加之節點對的插入位置,並藉由大小關係,來決 定將包含有索引鑰之葉節點作爲所追加之節點對中之何方 的節點。 當從本發明之耦合節點樹中將某索引鑰作削除時,係 藉由欲削除之鍵來進行檢索,並將與保持削除對象之索引 鑰的節點一同構成同一節點對的節點之內容,寫入至該節 點對之連結源頭的分支節點中,而削除該節點對。 200817945 〔發明之效果〕 本發明所致之耦合節點樹,係以節點對來構成樹狀構 造’對於索引鑰之集合,可使其大小成爲緊密(compaet )。又,由於係將節點分離爲包含有指標之分支節點與包 含有索引鑰之葉節點,因此在需要指標資訊之節點中,雖 係具備有ί曰標貝sJl ’但是並不需要索引繪之區域,因此不 會在記憶區域中產生浪費。又,亦不需要如同帕翠西雅樹 一般之退後連結的處理。 在將_合節點樹儲存於配列中時,可將指標作爲配列 號碼,而可更爲減低所需要之記憶容量。 若藉由本發明,則可減低將上述一般之使用於檢索的 樹狀構造體作儲存所需之記憶容量,且經由此,亦可減輕 檢索處理之負擔,進而,由於分支節點,係以保持藉由被 包含於耦合節點樹中之索引的位元列構成所規定之辨別位 元位置的方式而被配置,因此係成爲僅有在必要之位元位 置處的處理,故分歧處理之負擔亦爲小。又,辨別位元位 置之位元値,係並非使用於判定處理,而是使用於演算處 理,在此點上,CPU之處理負擔亦變輕。 又,耦合節點樹之插入處理或是削除處理亦爲單純, 在維護上之負擔亦成爲較輕。 如以上所述,若藉由本發明,則能夠提供一種:可高 速的實行位元列檢索,且資料維護亦爲容易之位元列檢索 裝置。 -10- 200817945 【實施方式】 以下,作爲用以實施本發明之最佳的 合節點樹儲存於配列中之例作說明。作爲 保持之連結目標的位置之資料,亦可使用 資訊,但是,藉由使用由可將分支節點或 佔有的區域之記憶容量較大者作儲存之配 列,能將節點之位置以配列號碼來表示, 訊之資訊量。 圖1,係爲說明被儲存於配列中之親 例之圖。 若參考圖1,則節點1 0 1係被配置在 號碼1 0的配列要素中。節點1 01,係由節 辨別位元位置103以及代表節點號碼104 節點種類別1 〇 2係爲〇,並表示節點 點。在辨別位元位置1 〇 3中,係被儲存有 號碼1 04中,係被記憶有連結目標之節點 配列號碼20。另外,於以下,爲了表記之 被儲存於代表節點號碼中之配列號碼稱爲 情形。又,亦有將被儲存於代表節點號碼 以附加於該節點之符號或者是附加於節點 表的情況。 在配列號碼20之配列要素中,係被 對1 1 1之代表節點的節點〔0〕1 1 2。而 個配列要素(配列號碼2 0 + 1 )中,係 形態,針對將耦 表示分支節點所 記憶裝置之位址 是葉節點之中所 列要素所成的配 而能削減位置資 合節點樹的構成 配列100之配列 ί點種類別102、 所構成。 1 0 1係爲分支節 ‘ 1。在代表節點 對的代表節點之 簡略化,亦有將 代表節點號碼的 中之配列號碼, 對之符號來作代 儲存有身爲節點 在相鄰接之下一 :儲存有與代表節 -11 -
200817945 點成爲一對之節點〔1〕113。在節點〔0〕112之節 別1 1 4中係被儲存有0 ;在辨別位元位置1 1 5中係 有3 ;在代表節點號碼1 1 6中係被儲存有30。又, 〔1〕1 1 3之節點種類別1 1 7中係被儲存有1,而表 〔1〕1 13係爲葉節點。在索引鑰11 8中,係被 ”000 1 ”。當然,與針對帕翠西雅樹而在先前所述才 於葉節點中係包含有對與索引鑰相對應之記錄進ί 資訊,但是,於表記中係省略。 另外’將代表卽點以卽點〔0〕來表不’將I 之節點以節點〔1〕來表示。 由被儲存於配列號碼3 0以及3 1之配列要素C 122與節點123所成之節點對121的內容,係被省 在被儲存有節點〔〇〕1 1 2、節點〔1〕1 1 3、| 、以及節點1 2 3的配列要素中分別被附加的〇或: 爲在以檢索鑰來進行檢索的情況時,用以表示對| 何一節點作連結。將在前段之分支節點的辨別位$ 之檢索鑰的位元値0或是1,加到代表節點號碼_ 此配列號碼之節點作連結。 故而,藉由在前段之分支節點的代表節點號 加上檢索繪之辨別位兀位置的位元値,而能求取 標之節點所被儲存之配列要素的配列號碼。 另外,在上述之例中,係採用節點對之被配 號碼中之較小的一方作爲代表節點號碼,但是, 亦可採用較大的一方。 點種類 被儲存 在節點 不節點 儲存有 同地, 存取的 其成對 的節點 點122 :1,係 點對之 位置中 ,並對 上,再 連結目 的配列 用說, -12- 200817945 圖2,係爲將耦合節點樹之樹狀構造作槪念展示的圖 。圖示之6位元的索引鑰,係與圖1 7所例示之帕翠西雅 樹者相同。 符號210a所示,係爲根節點。於圖示之例中,根節 點210a係作爲被配置於配列號碼220中之節點對201a的 代表節點。 作爲樹狀構造,於根節點2 1 0a之下方係配置有節點 對20 1b,而於其下層係配置有節點對201c與節點對201 f ’在節點對201f之下層,係被配置有節點對201h與節點 對201g。在節點對201c之下方係被配置有節點對201 d, 並更進而在其下方被配置有節點對201e。 被附加在各節點之前的0或是1的符號,係與於圖1 中所說明之被附加在配列要素之前的符號相同。因應於檢 索鑰之辨別位元位置的位元値而攀登樹,並找出檢索對象 之葉節點。 在圖示之例中,根節點2 1 0 a之節點種類別係爲〇,表 示其係爲分支節點,而辨別位元位置2 3 〇 a係顯示〇。代表 節點號碼係爲2 2 0 a,此係爲節點對2 0 1 b之代表節點2 1 〇 b 的被儲存之配列要素的配列號碼。 節點對20 1b係以節點210b與211b所構成,此些之 節點種類別260b、261b係均爲〇,而表示其係爲分支節點 。在節點2 1 0 b之辨別位元位置2 3 〇 b,係被儲存有1,在 連結目標之代表節點號碼中,係被儲存有節點對2〇丨e之 代表節點210c所被儲存之配列要素的配列號碼22〇b。 -13- 200817945 在節點210c之節點種類別260c中,由於係被儲存有 1,因此此節點係爲葉節點,故而,係包含有索引鑰。在 索引鑰250c中,係被儲存有”0001 1 1 "。另一方面,節點 2 1 1 c之節點種類別係爲〇,辨別位元位置23〗c係爲2,在 - 代表節點號碼中,係被儲存有節點對201 d之代表節點 . 2 10d所被儲存之配列要素的配列號碼221(:。 節點2 1 0d之節點種類別260d係爲〇,辨別位元位置 • 2 3 0 d係爲5,在代表節點號碼中,係被儲存有節點對2 0 1 e 之代表節點210e所被儲存之配列要素的配列號碼22〇d。 與節點2 1 0d成對之節點2 1 1 d的節點種類別26 1 d係爲1, 在索引鑰25 Id中,係被儲存有”〇1 1010”。 節點對2 0 1 e之節點2 1 0 e、2 1 1 e的節點種類別2 6 0 e、 261e係均爲1,表示其雙方均爲葉節點,而在各別的索引 鑰250e、251e中,作爲索引鑰,係被儲存有”010010”和 "0 1 0 0 1 1 M 〇 # 在身爲節點對201b之另外一方的節點之節點21 lb的 辨別位元位置231b中,係被儲存有2,在連結目標之代表 ♦ 節點號碼中,係被儲存有節點對20 1 f之代表節點2 1 Of所 ‘ 被儲存之配列要素的配列號碼22 1 b。 節點對201f之節點21 Of、21 If的節點種類別26 Of、 261f係均爲〇,表示其雙方均爲分支節點。在各別之辨別 位元位置23 0f、231f中,係被儲存有5、3。在節點210f 之代表節點號碼中,係被儲存有節點對201g之代表節點 2 l〇g所被儲存之配列要素的配列號碼220f,在節點21 If 200817945 之代表節點號碼中,係被儲存有身爲節點對2 0 1 h之代表 節點的節點〔0〕2 1 Oh所被儲存之配列要素的配列號碼 22 If、 節點對201g之節點210g、211g的節點種類別260g、 2 6 1 g係均爲1,表示其雙方均爲葉節點,而在各別的索引 鑰 2 5 0 g、2 5 1 g 中,係被儲存有 ’· 1 0 0 0 1 〇 "和 ” 1 〇 〇 〇 1 1 "。 又,同樣的,身爲節點對201 h之代表節點的節點〔〇 〕21 Oh、與和其成對之節點〔1〕21 lh的節點種類別26 Oh 、2 6 1 h係均爲1,表示其雙方均爲葉節點,而在各別的索 引鑰25 0h、25 lh中,作爲索引鑰,係被儲存有"ioioi j ” 和 M 1 0 1 1 0 0 ” ° 以下,針對從上述之樹中對索引鑰" 1 000 1 0”作檢索的 處理之流程作簡單說明。辨別位元位置,係設爲從左起而 爲1、2、…。 首先,將位元列” 1 000 1 0”作爲檢索鑰,而從根節點 210a起開始進行處理。根節點210 a之辨別位元位置23〇a 由於係爲〇,因此若是檢查檢索鑰’’ 1 0 0 0 1 0 ”之辨別位元位 置0的位元値,則發現其係爲1。於此,對將代表節點號 碼所被儲存之配列號碼2 2 0 a中加上1之後的配列號碼之 配列要素中所儲存的位元211b作連結。在節點211b之辨 別位元位置2 3 1 b中,由於係被儲存有2,因此,若是檢查 檢索鑰"10001011之辨別位元位置2的位元値,則發現其係 爲0,故而,對代表節點號碼之被儲存的配列號碼22 1 b之 配列要素中所儲存的節點21 Of作連結。 -15- 200817945 在節點21 Of之辨別位元位置230f中,由於係被儲存 有5,因此,若是檢查檢索鑰" 1 0001 0"之辨別位元位置5 的位元値,則發現其係爲〇,故而,對代表節點號碼之被 儲存的配列號碼220f之配列要素中所儲存的節點21 0g作 連結。 由於節點210g之節點種類別260g係爲1,而代表其 係爲葉節點,因此,將索引鑰讀出,並與檢索鑰作比較, 其結果,兩者係均爲” 1 0001 0",而爲一致。如此地,進行 使用有耦合節點樹之檢索。 接下來,參考圖2,並針對耦合節點樹之構成的意義 作說明。 耦合節點樹之構成,係藉由索引鑰之集合而被規定。 在圖2之例中,根節點21 0a之辨別位元位置爲0的原因 ,係因爲在圖2中所例示之索引鑰中,具備有第0位元爲 〇者以及爲1者之故。第0位元爲0之索引鑰的群組,係 被分類至節點210b之下,而第0位元爲1之索引鑰的群 組,係被分類至節點2 1 1 b之下。 節點2 1 1 b之辨別位元位置爲2的原因,係因爲其係 反映有:在節點211h、210h、211g、210g中所儲存之第0 位元爲1的索引鑰,其第1位元係全部等於〇,而爲在第 2位元才開始有所不同者一般之索引鑰的集合之性質之故 〇 以下,與第〇位元的情況相同地,第2位元爲1者, 係被分類至節點2 1 1 f側,而第2位元爲0者,則被分類 -16- 200817945 至節點21 Of側。 而,第2位元爲1的索引鑰,由於係爲從第3位 開始有所不同者,因此在節點2 1 1 f之辨別位元位置 係被儲存有3,而在第2位元爲〇的索引鑰中,由於 3位元與第4位元均爲相等,而從第5位元才開始有 同,因此,節點21 Of之辨別位元位置中,係被儲存有 在節點21 1 f之連結目標中,由於第3位元爲1 爲〇者係分別各只有1個,因此節點210h、211h係 葉節點,並分別在索引鑰 25 Oh與 25 lh中被儲 "1 0 1 0 1 1 ’,與"1 0 1 1 0 0,、 就算假設在索引鑰之集合中,替代"101100"而被 有”101 101”或是”10 1110”,亦由於其之到第3位元爲 與"1 0 1 1 0 0 "相等’因此僅會使被儲存在節點2 1 1 h中 引鑰改變,而不會使樹狀構造之本身改變。但是,若 了 " 1 0 1 1 0 0 "之外,再加上亦包含有” 1 〇 1〗〇 i ”,則節點 係成爲分支節點,而其辨別位元位置係成爲5。若是 加之索引鑰係爲"1 0 1 1 1 0”,則辨別位元位置係成爲4。 如以上所說明一般,耦合節點樹之構造,係藉由 含於索引鑰之集合中的各索引鑰之各位元位置的位元 被決定。當以檢索鑰來作檢索時,則係成爲經過索引 在耦合節點樹上所被配置之路徑,例如,若是檢索鑰 ”101100” ’則係能到達節點21 lh。又,從上述之說明 以想像到,就算是當使用” 1 0 1 1 0 1 ”或是”〗〇〗〗丨〇 ”來作 索鑰的情況時,亦會到達節點2 1 1 h,但是,藉由將其 元而 中, 其第 所不 5。 者與 成爲 存有 包含 止係 之索 是除 21 lh 被追 被包 値而 鑰之 係爲 ,可 爲檢 與索 -17- 200817945 引鑰2 5 1 h作比較,檢索會成爲失敗。 又,就算是在例如以"100100Π來作檢索的情況時,亦 由於在節點2 1 0a、2 1 1 b、2 1 Of的連結經路中檢索鑰的第3 位元與第4位元係不會被使用,且"1 00 1 〇〇 ”的第5位元係 爲〇,因此係和以來檢索的情況時相同,而成爲 到達節點210g。如此這般’係成爲使用因應於被儲存在耦 合節點樹中之索引鑰的位元構成之辨別位元位置而進行分 歧。 另外,針對檢索之詳細的演算法,以及對於索引鑰之 集合係以何種方式來構成耦合節點樹,係於後面作詳細說 明。 圖3,係爲說明用以實施本發明之硬體的構成例之圖 〇 本發明之檢索裝置所致的檢索處理以及資料維護,係 藉由至少具備有中央處理裝置302以及快取記憶體3 03的 資料處理裝置301,並使用資料儲存裝置308而被實施。 資料儲存裝置3 08,係具備有:耦合節點樹所被配置之配 列3 09、以及記憶有在檢索中所經過之節點所被儲存的配 列要素之配列號碼的探索經路堆疊3 1 0,該資料儲存裝置 3〇8,係可藉由主記憶裝置305又或是外部記憶裝置306 而實現,或者是,亦可使用經由通訊裝置307而被連接之 被配置在遠方的裝置。 在圖3之例示中,主記憶裝置3 0 5、外部記憶裝置 306以及通訊裝置307,雖係藉由一條的匯流排304而被 -18- 200817945 連接於資料處理裝置3 0 1,但是,連接方法係並不限定於 此。又,亦可爲將主記憶裝置3 〇 5設爲資料處理裝置3 0 1 內者,且亦可將探索經路堆疊3 1 0作爲中央處理裝置3 02 內之硬體而實現之。或者是,不用說,亦可使外部記憶裝 • 置3 06具有配列3 09,或是使主記憶裝置3 05具備有探索 . 經路堆疊3 1 0等,而因應於可使用之硬體環境、索引鑰集 合之大小等,來適宜地對硬體構成作選擇。 # 又,雖然並未特別圖示,但是,當然地,爲了將在處 理途中所得到的各種値使用於其後之處理中,故因應於各 個處理,會暫時使用到記憶裝置。圖4,係爲展示在本發 明之其中一種實施形態內的檢索處理之流程圖。於此,一 面適宜參考圖2,一面對檢索處理之演算法作說明。 在開始檢索處理時,取得身爲檢索對象耦合節點樹的 根節點之配列號碼(步驟S40 1 )。由於耦合節點樹係可 藉由該根節點之配列號碼而識別,因此耦合節點樹之管裡 • ,係可使用根節點之配列號碼來進行。於此,假設在耦合 節點樹之管理手段中,係被登錄有耦合節點樹之根節點的 配列號碼。 ^ 另外,雖然明顯的,圖示之檢索處理係可藉由電腦上 之程式而實現,但是,上述耦合節點樹之管理手段,例如 係可設爲用以使電腦實行檢索處理之程式上的記億區域。 又,當在1個的電腦系統中搭載有複數之使用有耦合 節點樹的檢索系統時,則亦如亦可將其設爲存在於各個的 檢索程式之外部。 -19- 200817945 在圖2之例中,係相當於取得配列號碼22 0。另外, 根節點之配列號碼的取得,係並不限於上述之方法,而亦 可設爲從鍵盤等而直接輸入配列號碼,亦可作爲固定値而 預先設定在程式上。 接下來,在步驟S402中,將於步驟S401中所取得之 配列號碼儲存在探索經路堆疊中。前進至步驟S403,將 被堆積於探索經路堆疊之最上部的配列號碼之配列要素, 作爲連結目標之節點,而從配列中讀取出。在步驟S404 中,從在步驟S403中所讀取出之節點中,取出節點種類 別。 接下來,在步驟S405中,進行節點種類別之判定。 在步驟S405之判定中,若是分支節點,則前進至步驟 S406。在步驟S406中,係從節點而取出辨別位元位置。 接下來,在步驟S407中,取得從檢索鑰而在步驟S406中 所取出之辨別位元位置的位元値。接下來,前進至步驟 S408,從節點中,取得連結目標之節點對的代表節點之配 列號碼。接下來,前進至步驟S409,對在步驟S408中所 取得之配列號碼上,加算上在步驟S407中所取得之位元 値,而取得連結目標節點之配列號碼,並回到步驟S4 02 〇 在步驟S402中,係將於步驟S409中所取得之配列號 碼儲存在探索經路堆疊中。 反覆進行以上之步驟S402〜S409的迴圏處理,直到 在步驟S405中之判定係成爲葉節點爲止。 -20- 200817945 在步驟S405中,若是判別節點種類別係爲葉節點, 則移行至步驟S 4 1 0,並從節點而取出索引鑰。而後,前 進至步驟S4 11,並判定檢索鑰與索引鑰是否相等。若是 相等,則檢索係爲成功,若是不相等’則檢索係爲失敗。 - 在上述之說明中,爲了識別處理中之節點的配列號碼 ^ ,雖係使用了堆疊,但是,若是只爲了檢索,則亦可將普 通的工作區域(work area )作爲暫時記憶用而使用。但是 n ,在以下所說明之插入處理中,由於使用堆疊一事係爲有 效,因此在檢索處理中,亦以使用堆疊爲理想。 接下來,藉由圖5〜圖8,對在耦合節點樹中之節點 插入處理作說明。 圖5〜圖7,係爲說明通常之插入處理者,圖8係爲 說明根節點之插入處理者。由於係藉由根節點之插入處理 與通常之插入處理,而產生耦合節點樹,因此節點插入處 理之說明,係亦爲耦合節點樹之產生·處理的說明。 ® 圖5係爲展示插入處理之前段的檢索處理之處理流程 的圖’而相當於在圖4所示之檢索處理中將插入鍵作爲檢 索鑰者。步驟S501〜步驟S5 10之處理,由於係完全對應 於圖4之步驟S401〜步驟S410,故省略其說明。 在圖5之步驟S511中,將插入鍵與索引鑰作比較, 若是相等,則由於插入鍵係已存在於耦合節點樹中,因此 插入係成爲失敗,而結束處理。而若是不相等,則進行以 下之處理,亦即是前進至圖6之步驟S512以下的處理。 B 6 ’係爲用以說明爲了對欲插入之節點對所需要的 -21 - 200817945 配列要素作準備之處理的處理流程圖。 在步驟S 5 1 2中,從配列中求取空的節點對,並取得 於該節點對中應成爲代表節點的配列要素之配列號碼。 前進至步驟S513,將插入鍵與在步驟S51〇中所得到 之索引鑰的大小作比較,當插入鍵爲較大的情況時,得到 値1之布林値,當較小時,則得到値0的布林値。 前進至步驟S514,在以步驟S512所得到的代表節點 之配列號碼上,加算上以步驟S5 1 3所得到之布林値,而 得到配列號碼。 前進至步驟S515,在以步驟S512所得到的代表節點 之配列號碼上,加算上以步驟S5 1 3所得到之布林値的邏 輯否定値,而得到配列號碼。 以步驟S 5 1 4所得之配列號碼,係爲將插入鍵作爲索 引鑰而持有之葉節點所被儲存之配列要素的配列號碼,以 步驟S 5 1 5所得到之配列號碼,則係爲與該葉節點成對之 分支節點所被儲存之配列要素者。 亦即是,藉由被儲存於在前段之檢索處理中所得到之 葉節點中的索引鑰與插入鍵之大小,來決定在所插入之節 點對中的何者之節點處,儲存保持有插入鍵之葉節點。 例如,當在圖2之耦合節點樹中插入”011011"的情況 時,檢索結果之索引鑰’係成爲被儲存於節點2 1 1 d中之 ” 0 1 1 0 1 0 "。藉由插入鍵” 0 1 1 0 1 1 與被儲存於節點2 1 1 d中之 索引鑰”01 1010”間的大小比較,求取出布林値,在現在之 例中,由於插入鍵係爲較大,因此係得到布林値1,並在 -22- 200817945 將所插入之節點對的代表節點號碼上加上1後之配列要素 中,儲存保持有插入鍵之葉節點。另一方面,索引鑰 "0 1 1 0 1 οπ,係被儲存於將以大小比較所得到之布林値作邏 輯反轉後所得之値加算至代表節點號碼上後之配列號碼的 配列要素中。 此時,由於索引鑰"0 1 1 0 1 〇 "與插入鍵” 〇 1 1 〇 1 1,,間,係 爲在第5位元成爲相異,因此,節點2 n d,係成爲··將辨 別位元位置設爲5,並將代表節點號碼作爲所插入之節點 對的代表節點之配列號碼的分支節點。 又’當在圖2之耦合節點樹中欲插入"011001”的情況 時’檢索結果之索引鑰,係成爲被儲存於節點21 Id中之 "0 1 1 0 1 0 ”。於此情況中,由於插入鍵係爲較小,因此得到 布林値〇,並在將所插入之節點對的代表節點號碼上加上 了 〇之配列要素中,儲存保持有插入鍵之葉節點。而後, 由於索引鑰” 〇 1 1 〇 1 〇 ”與插入鍵” 0 1 1 00 1 ”間,係爲在第4位 元成爲相異,因此,節點2 1 1 d,係成爲:將辨別位元位置 設爲4,並將代表節點號碼作爲所插入之節點對的代表節 點之配列號碼的分支節點。接下來,前進至圖7之步驟 S 5 1 6以下的處理。 圖7係爲展示:在將節點儲存於在圖6所準備之配列 中的同時,求取其插入位置,並改變既存之節點的內容, 而完成插入處理的處理流程之圖。 從步驟S5 16〜步驟S523爲止的處理,係爲求取出所 插入之節點對的在耦合節點樹上之位置的處理,而步驟 -23- 200817945 S 5 24以下之處理,係爲在各節點中設定資料並完成插入 處理的處理。 在步驟S516中,將插入鍵與在步驟S510中所得到之 索引鑰的位元列,以例如排他之邏輯和來進行比較,並得 到差分位元列。 前進至步驟S 5 1 7,從在步驟S 5 1 6中所得到的差分位 元列,而得到從上位之第〇位元起所看到之最初的不一致 位元之位元位置。此處理,例如在具備有優先編碼器( priority encoder)的CPU中,係於該處輸入差分位元列, 而可得到不一致之位元位置。又,亦可軟體式的進行與優 先編碼器同等之處理,而得到最初之不一致位元的位元位 置。 接下來,前進至步驟S5 1 8,並判定探索經路堆疊之 堆疊指標是否指向根節點之配列號碼。若是係指向該處, 則移行至步驟S524中,若是未指向該處,則前進至步驟 S519 〇 在步驟S5 19中,係將探索經路之堆疊指標倒退一個 ,並取出被堆疊於該處之配列號碼。 前進至步驟S520,將在步驟S519中所取出的配列號 碼之配列要素,從配列中作爲節點而讀取出。 前進至步驟S521,從在步驟S 520所讀取出之節點中 ,取出辨別位元位置。 接下來,前進至步驟S522,判定以步驟S521所取出 之辨別位元位置是否爲較以步驟S 5 1 7所得到之位元位置 -24- 200817945 更上位之位置關係。於此,所謂的上位之位置關係,係指 位元列之靠左側的位置,亦即是位元位置之値爲小的位置 〇 若是步驟S522之判定結果係爲否定,則回到步驟 S 5 1 8,並反覆進行處理,直到在步驟S 5 1 8之判定成爲肯 定,或是在步驟S522之判定成爲肯定爲止。若是在步驟 S 5 22之判定成爲肯定,則在步驟S 523中,使探索經路之 指標前進1個,並移行至步驟S5 24以下之處理。 在上述步驟S5 16〜步驟S523中所說明之處理,係爲 了決定插入之節點對的插入位置,而對所插入之索引鑰與 藉由檢索所取得之索引鑰之間,進行位元列比較,並對在 位元列比較中成爲相異之位元値的前端之(最上位之)位 元位置與被儲存於堆疊中之分支節點的辨別位元位置之相 對的位置關係作調查,而將辨別位元位置成爲上位之分支 節點的下一個分支節點之連結目標,作爲所插入之節點對 的插入位置。 例如,當在圖2之耦合節點樹中插入” 1 1 1 000”的情況 時,檢索結果之索引鑰,係成爲被儲存於節點210h中之 •’10101 1 ”。藉由對插入鍵"1 1 1 000”與被儲存於節點210h中 之索引鑰’’ 1 〇 1 〇 11 ’’所進行的位元列比較,而得到成爲相異 位元値之最上位的位元位置1。若是對所得到之位元位置 1與被儲存在堆積於經路探索堆疊中之配列號碼的配列要 素中之分支節點的辨別位元位置間之位置關係,以使辨別 位元位置成爲上位爲止的方式,來以反方向而依序經過經 -25- 200817945 路採索堆暨,則會到達根節點2 1 0 a。於此,使探索經路堆 疊之指標前進1個,而得到節點211b之配列號碼。插入 鍵” 111000"係被插入至節點211b之連結目標處。 又,若是就算是以反方向來經過探索經路堆疊並到達 根節點,該根節點之辨別位元位置,亦係並非爲較在先前 所求取之位元列比較中成爲相異位元値之最上位的位元位 置更上位之位元位置,則係表示··在該耦合節點樹之索引 鑰的上位位元中,較根節點之辨別位元位置爲更上位的上 位之位元的値係全部爲相等。而,在所插入之索引鑰中, 第一次出現有在較根節點之辨別位元位置更上位的位元之 値中具有相異之位元値者。故而,所插入之節點對,係成 爲根節點之直接的連結目標,根節點之辨別位元位置,係 變更爲身爲與既存之索引鑰爲相異値之插入鍵的最上位位 元之位置。 接下來,針對步驟S524以下之在各節點中設定資料 並完成插入處理的處理作說明。 在步驟S5 24中,係從探索經路堆疊中將指標所指向 之配列號碼取出。 在步驟S 525中,在以步驟S5 14所得到之配列號碼所 指向的配列要素之節點種類別中寫入1 (葉節點),並在 索引鑰中寫入插入鍵。 前進至步驟S526,將在步驟S 524中所取出的配列號 碼之配列要素,#從配列中讀取出。 接下來,在步驟S 527中,在以步驟S515所得到之配 -26- 200817945 列號碼的配列要素中,將藉由步驟s 5 2 6所讀出的內容寫 入。 最後,在步驟S528中,在以步驟S524所得到之配列 號碼所指向的配列要素之節點種類別中寫入〇 (分支節點 _ ),並在辨別位元位置中寫入以步驟S 5 1 7所得到之位元 • 位置,在代表節點號碼中寫入以步驟S 5 1 2所捌到之配列 號碼,而結束處理。 Φ 在上述之於圖2的耦合節點樹中插入"1 1 1 〇 〇 ’,的例中 ’係在所取得之空節點對的節點〔〇〕中,寫入節點2 i i b 之內容(步驟S527 ),並將節點〔1〕,作爲保持插入鍵 ” 1 1 1 000”之葉節點(步驟S52 5 )。而後,在節點211b之 辨別位元位置中,儲存藉由位元列比較而成爲相異之位元 値的最上位之位元位置1,而在代表節點號碼中,係儲存 有所取得之節點對的代表節點所被儲存之配列要素的配列 號碼(步驟S528)。 • 圖8,係爲對本發明之其中一種實施形態中的將包含 有根節點之插入處理的索引鑰作追加時之節點插入處理全 體作說明的處理流程圖。 ’ 在步驟S551中,判定被要求作取得之耦合節點樹的 根節點之配列號碼是否爲已登錄。若係爲已登錄,則係進 行使用圖5〜圖7而說明了的通常之插入處理。 在步驟S 5 5 1中之判定’若是係爲未登錄,則係成爲 開始全新之耦合節點樹的登錄、產生。 首先,在步驟S 5 5 2中’從配列中求取空的節點對’ •27- 200817945 並取得於該節點對中應成爲代表節點的配列要素之配列號 碼。接下來,在步驟s 5 5 3中,求取出在以步驟S 5 5 2所得 到之配列號碼中加上〇的配列號碼。(實際上,係成爲與 以步驟S 5 5 2所取得之配列號碼相同。)進而,在步驟 • S5 54中,在以步驟S553所得到之配列號碼的配列要素中 . ,於插入之根節點的節點種類別中寫入1 (葉節點),並 於索引鑰中寫入插入鍵,而在步驟 S 5 5 6中,將以步驟 B S5 52所取得之根節點的配列號碼作登錄,並結束處理。 如先前所述一般,明顯的,當存在有索引鑰之集合時 ,藉由從該處依序取出索引鑰,並反覆進行圖8以及圖5 〜圖7之處理,而能夠建構對應於索引鑰之集合的本發明 之耦合節點樹。 接下來,參考圖9、圖1 0,對於從本發明之其中一種 實施形態的耦合節點樹中之索引鑰的集合,來將特定之索 引鑰作削除的處理流程作說明。 • 圖9,係爲展示插入處理之前段的檢索處理之處理流 程的圖,而相當於在圖4所示之檢索處理中將削除鍵作爲 檢索鑰者。步驟S901〜步驟S910之處理,由於係完全對 ’ 應於圖4之步驟S401〜步驟S410,故省略其說明。 在圖9之步驟S91 1中,將削除鍵與索引鑰作比較, 若是不相等,則由於欲削除之索引鑰鍵係不存在於耦合節 點樹中,因此削除係成爲失敗,而結束處理。而若是相等 ,則進行圖1 0之步驟S 9 1 2以下的處理。 圖1 〇,係爲說明削除處理之後段的處理流程之圖。 -28- 200817945 首先,在步驟S912中,判定在探索經路堆疊中是否 被儲存有2個以上的配列號碼。若是未被儲存有2個以上 的配列號碼,換句話說,僅存在有1個,則該配列號碼係 爲被儲存有根節點之配列要素。於該情況,係移行至步驟 S 918,並將屬於以步驟S901所得到之根節點的配列號碼 之節點對削除。接下來,前進至步驟S 9 1 9,並將被登錄 之根節點的配列號碼削除,而結束處理。 在步驟S9 1 2中,若是被判定爲在探索經路堆疊中係 儲存有2個以上的配列號碼,則前進至步驟S 9 1 3,並得 到在以步驟S908所得到之代表節點號碼中加算有以步驟 S 907所得到之位元値反轉後的値之配列號碼。此處理, 係爲求取與身爲削除對象之索引鑰所被儲存之葉節點成對 之節點的所被配置之配列號碼者。 接下來,在步驟S 9 1 4中,讀取出以步驟S 9 1 3所得到 之配列號碼的配列要素之內容,並在步驟S915中,將探 索經路堆疊之堆疊指標倒退1個,而取出配列號碼。 接下來,前進至步驟S916,將在以步驟S914所讀出 之配列要素的內容,抹寫至以步驟S915所得到的配列號 碼之配列要素中。此處理,係爲將身爲對削除對象之索引 鑰所被儲存之葉節點之連結目標的分支節點,置換爲與上 述葉節點成對之節點者。 最後,在步驟S917中,將相關於以步驟S908所得到 之代表節點號碼的節點對作削除,並結束處理。 圖1 1 A以及圖1 1 B,係爲說明從在圖2所例示之耦合 -29 - 200817945 節點樹中將索引鑰"011010”作削除的處理之圖。 於圖1 1 A中所示之耦合節點樹,在節點對20 1 f以下 之節點的記載係被省略。削除對象之索引鑰”011010”,係 被儲存在身爲暫時記憶區域的削除鍵270之中。探索經路 堆疊280之堆疊指標,係指向配列號碼221c+ 1,而表示 檢索處理係爲結束。圖中之以粗框所包圍的節點,係爲在 檢索處理中所到達之節點,該配列號碼,係從根節點2 1 0a 者起直到葉節點2 1 1 d者爲止,而被堆積在探索經路堆疊 280之中。 在削除鍵所致之檢索處理中,首先,於一開始,係取 得根節點210a之配列號碼220,並將其儲存在探索經路堆 疊280之中。由於根節點210a之辨別位元位置係爲〇,而 削、除鍵之位元位置0的位元値係爲〇,因此代表節點號碼 220a+ 0 = 220a,係被儲存在探索經路堆疊280之中。 如此一來,節點2 1 Ob係被讀出,由於辨別位元位置 2 3 0b係爲1,而削除鍵之位元位置1的位元値係爲1,因 此代表節點號碼220b + 1係被儲存在探索經路堆疊280之 中。 接下來,節點211c係被讀出,由於辨別位元位置 23 1 e係爲2,而削除鍵之位元位置2的位元値係爲1,因 此代表節點號碼221c + 1係被儲存在探索經路堆疊280之 中。由於在配列號碼爲22 1 c + 1之配列要素中所儲存的節 點2 1 1 d之節點種類別2 6 1 d係爲1,而表示其係爲葉節點 ,因此若是取出索引鑰25 Id,則其値係爲π〇1 1010",而與 -30- 200817945 被儲存在削除鍵26 1中之削除對象的索引鑰爲一致。 在圖11A所示之狀態中,與具備有削除對象之索引鑰 的節點2 1 1 d成對之節點2 1 0d內容係被讀出,而該內容, 係被寫入至將探索經路堆疊280之堆疊指標倒退1個之處 所儲存的配列號碼22〇b + 1之配列要素(節點221c )之中 。而後,將節點對20 1 d削除。節點對被削除之配列要素 係成爲空的,而成爲可再利用。 在圖1 1 B中所示之耦合節點樹,係爲削除處理結束後 者。在節點21 1c之節點種類別261c、辨別位元位置231c 、代表節點號碼22 1 c中,係如以括弧書寫所示一般,直 接儲存有被儲存在節點2 1 0d中之値。 接下來,藉由圖12A、圖12B以及圖13〜圖16,舉 出具體例來對插入處理作更進一步的說明。 於圖 12A所示者,係爲將位元列”0100”、"000 1 ”、 ”〇〇〇〇”作爲索引鑰而持有之耦合節點樹,以及保持有從現 在開始而欲插入之插入鍵"001 1 ”的暫時記憶區域1 250。圖 示之樹,係由節點對1 2 0 1 a、1 2 0 1 b、1 2 0 1 c所構成。 節點對1201a之代表節點,係爲根節點1210a,而在 辨別位元位置中,係被保持有1。節點對1 20 1 a之下位的 節點對1201b之代表節點1210b,係爲分支節點,在辨別 位元位置中,係被保持有3,與代表節點1 2 1 Ob成對之節 點1211b係爲葉節點,而係被保持有索引鑰"0100”。身爲 分支節點之節點1 2 1 Ob,係連接於節點對1 20 1 c。 構成節點對1 20 1 c之節點1 2 1 Oc、1 2 1 1 c,係均爲葉節 -31 - 200817945 點,並分別保持有索引鑰"0000"、”000 1 ”。 圖12B,係爲展示將插入鍵"00 11"插入後 樹的圖。新的節點對1201d,係被插入於節點_ 節點對1201c之間。 - 若將圖12A與圖12B作比較,則被插入之 , 的內容,係爲插入前之節點1210b者,而插 1 2 1 Ob的辨別位元位置係從3而變化爲2。
II 以下,一面適當參考圖5〜圖7,一面藉E 16,來說明在圖12Α以及圖12Β中所例示的插 圖1 3〜圖1 6中,以粗線所展示之處理流程, 12Α以及圖12Β之例示者。又,S501等之符 示該部分之處理係爲對應於在圖5〜圖7中所 S 5 0 1等中的處理。 圖13,係爲展示身爲在圖5所示的插入處 分的檢索處理中之處理區塊的流程的圖。 # 如圖13所示,在最初的處理區塊中,係 節點之設定。藉由取得根節點之配列號碼,而 之位置。將所取得之配列號碼1 2 1 0a,儲存在 | 疊中。另外,於此,係將表示配列號碼之符號 示節點之符號。 接下來,在由步驟S503、步驟S504以3 所成之節點讀出•判定區塊中,節點1210 a係 支節點,而被進行有分支處理。 在分支處理中,係將插入鍵"00 11”之第1彳 之耦合節點 討1 2 0 1 b與 ,節點1210d 入後之節點 &圖1 3〜圖 入說明。在 係爲沿著圖 號,係爲表 記載之步驟 理之前段部 被進行有根 設定根節點 探索經路堆 ’兼用爲表 乏步驟S505 被判定爲分 ί立元的” 0 "與 -32- 200817945 被儲存有節點1210a之代表節點號碼的配列號碼1201b作 加算,而算出連結目標之節點位置。另外,於此,係將被 儲存有代表節點號碼之配列號碼,以連結目標之節點對的 符號來表示。 - 所算出之節點位置1 2 1 Ob,係被儲存於探索經路堆疊 中〇 根據在分支處理中所算出之節點位置,再度進行節點 ^ 讀出•判定處理,而讀取出節點1 2 1 Ob,並判定出其係爲 分支節點。 於此,係再度被進行分支處理,並將插入鍵π〇〇1 1”之 第3位元的”1”與被儲存有節點1210b之代表節點號碼的 配列號碼1 20 1 c作加算,而算出連結目標之節點位置。所 算出之節點位置1 2 1 1 c,係被儲存於探索經路堆疊中。 在接下來的節點讀出•判定處理中,讀取出節點 1 2 1 1 c,並被判定其係爲葉節點。 Φ 於此,處理係分歧至葉節點處理,而被進行有節點 1211c之索引鑰”000 1 ”與插入鍵"0011"的位元列比較,若 是一致,則插入係成爲失敗,若是不一致,則前進至接下 ^ 來的處理。 另外,在虛線之箭頭的前端所記載之符號D5 13等的 出口記號,係表示:連接於虛線之其中一方的資料値,係 在相同符號之登入點(entry point )中被使用。D5 1 3中之 5 1 3,係表示其係在步驟S 5 1 3中被使用。以上事項,係在 圖1 4〜圖1 6中亦爲相同。 -33- 200817945 圖1 4,係爲展示對在圖6所示的插入之節點對所需要 的配列要素作準備之處理區塊的流程的圖。 在空節點對取得區塊中,係從配列中而取得屬於連續 之區域的 2個空配列要素之配列號碼的代表節點號碼 1201d ° 接下來,在節點儲存位置算出區塊中,係進行插入鍵 ”0011"與以步驟S5 10所得到之索引鑰”0001 ”之大小的比 較,而決定將保持插入鍵之葉節點,儲存於在空節點對取 得區塊中所取得之2個的配列要素中之何者的配列要素中 。比較結果,由於插入鍵係爲較大,因此係成爲在將代表 節點號碼1 20 1 d上加算了 1之配列號碼的配列要素中,儲 存作爲節點1 2 1 1 d而保持插入鍵的葉節點。 圖15,係爲展示在圖7所示的處理中,求取前半所插 入之節點對的在耦合節點樹上之位置的處理流程之圖。 在差分位元位置檢測區塊中,係被演算有插入鍵 "0011”與以步驟S5 10所得到的索引鑰"00 0 1 ”間之各位元 的排他之邏輯和"0010”,而求取出差分位元位置係爲第2 位元。 在插入節點位置探索區塊中,係一面將被儲存於探索 經路堆疊之指標所指向的配列號碼之配列要素中的節點之 辨別位元位置與差分位元位置作比較,一面使指標依序倒 退,直到辨別位元位置成爲上位爲止。當在途中指標指向 根節點之配列號碼時,則插入位置係成爲根節點之正下方 -34- 200817945 在開始插入位置之探索之前的階段中,由於探索經路 之指標係指向配列號碼1 2 1 1 c,因此,將指標倒退1個, 並開始插入節點位置探索處理,而取出節點1 2 1 Ob之儲存 位置並讀出節點1 2 1 Ob。由於節點1 2 1 Ob之辨別位元位置 - 係爲3,而爲較差分位元位置2更爲下位,且節點121 Ob , 並非爲根節點,因此係更進而繼續進行插入節點位置之探 索。 B 若是更進而使指標倒退1個,則係取出節點1210a之 儲存位置,而讀取出節點1210a。由於節點1210a之辨別 位元位置係爲1,而爲較差分位元位置2更爲上位,因此 係將指標的位置前進1,並進行插入節點位置讀出區塊之 處理。 當進行插入位置之讀出時,由於探索經路堆疊之指標 係指向配列號碼1 2 1 Ob,因此作爲將插入節點插入之位置 ,而讀取出配列號碼1210b。 # 圖16,係爲對在圖7所示的處理中,後半之對各節點 設定資料並完成插入處理的處理流程作說明之圖。 在葉節點組合•寫入區塊中,係組合出一個在節點種 ‘ 類別中儲存有1,在索引鑰中儲存有插入鍵"0011"之葉節 點,並將其儲存在圖1 4中所示之以節點儲存位置算出區 塊所算出之配列號碼1 2 1 1 d的配列要素中。 接下來,在插入位置之節點讀出•寫入區塊中’將圖 1 5所示之以插入節點位置讀出區塊所讀出的配列號碼之節 點12 10b讀出,並將其內容,儲存至圖14所示之以節點 -35- 200817945 儲存位置算出區塊所算出的配列號碼1210d之配列要素中 Ο 接下來,在分支節點組合•寫入區塊中,係組合出一 個在節點種類別中儲存有0,在辨別位元位置中儲存有以 圖1 5所示之差分位元位置檢測區塊所檢測出的差分位元 位置2,而在代表節點號碼中儲存有以圖1 4所示之空節點 對取得區塊所取得的代表節點號碼1201d之分支節點。而 後,將所組合之分支節點,寫入至以圖1 5所示之插入節 點位置讀出區塊所讀出的配列號碼1 2 1 Ob之配列要素中。 藉由上述之處理,而在圖12A中所示之耦合節點樹中 ,插入插入鍵π〇〇11",而完成圖12A所示之耦合節點樹。 以上。雖係對用以實施本發明之最佳實施形態作了說 明’但是,同業者應可清楚明白,本發明之實施形態係並 不限定於此,而可作各種之變形。 又,明顯的,本發明之位元列檢索裝置,係可藉由儲 存耦合節點樹之記憶手段,與使電腦實行於圖4中所示之 處理的程式,而構築在電腦上。 進而,明顯的,藉由使電腦實行圖5〜圖7所示之索 引插入處理與其均等物的程式,能夠實現本發明之索引插 入方法,而藉由使電腦實行圖1 0以及圖1 1所示之削除處 理與其均等物的程式,能夠實現本發明之索引插入方法。 而後,藉y由此些之程式,能夠在電腦上,實現分支節點與 葉節點之識別手段、因應於分支節點之辨別位元位置而決 定對連結目標之節點對的何者之節點作連結的手段等。 -36- 200817945 故而,上述程式、以及記憶有程式而爲電腦可讀取之 記憶媒體,係亦包含於本發明之實施形態內。進而’本發 明之耦合節點樹的資料構造,係亦包含於本發明之實施形 態中。 - 藉由使用以上所詳細說明的本發明所提供之全新資料 . 構造的耦合節點樹,成爲能夠進行更爲高速之位元列資料 的'檢索,且亦能容易地實行位元列資料之追加削除。 【圖式簡單說明】 > 〔圖1〕說明被儲存於配列中之耦合節點樹的構成例 之圖。 〔圖2〕對耦合節點樹之樹狀構造作說明的圖。 〔圖3〕說明用以實施本發明之硬體的構成例之圖。 〔圖4〕展示在本發明之其中一種實施形態中的檢索 處理之流程圖。 ® 〔圖5〕展示身爲在本發明之其中一種實施形態中的 插入處理之前段部分的檢索處理之處理流程的圖。 〔圖6〕用以說明對在本發明之其中一種實施形態中 ' 的插入處理中所插入之節點對所需要的配列要素作準備之 處理流程的圖。 〔圖7〕展示對插入節點對之位置作求取,並將節點 對之各節點的內容作寫入,而完成插入處理之處理流程的 圖。 〔圖8〕對本發明之其中一種實施形態中的將包含有 -37- 200817945 根節點之插入處理的索引鑰作追加時之節點插入處理全體 作說明的處理流程圖。 〔圖9〕展示身爲在本發明之其中一種實施形態中的 插入處理之前段部分的檢索處理之處理流程的圖。 〔圖1 0〕展示身爲在本發明之其中一種實施形態中的 插入處理之後段部分的處理流程之圖。 〔圖11A〕對削除處理前之耦合節點樹與削除鍵 ” 〇 11 〇 1 0"作說明的圖。 〔圖1 1 B〕對削除處理後之耦合節點樹作說明的圖。 〔圖1 2 A〕對插入處理前之耦合節點樹與插入鍵 ”00 11”作說明的圖。 〔圖1 2B〕對插入處理後之耦合節點樹作說明的圖。 〔圖13〕展示身爲在圖5所示的插入處理之前段部分 的檢索處理中之處理區塊的流程的圖。 〔圖1 4〕展示對在圖6所示的插入之節點對所需要的 配列要素作準備之處理區塊的流程的圖。 〔圖15〕展示在圖7所示的處理中,求取前半所插入 之節點對的在耦合節點樹上之位置的處理流程之圖。 〔圖1 6〕對在圖7所示的處理中,後半之對各節點設 定資料並完成插入處理的處理流程作說明之圖。 〔圖17〕展示在先前之檢所中所使用的帕翠西雅樹之 其中一例的圖。 【主要元件符號說明】 -38- 200817945 10、20、30 :配列號碼 1 0 0 :配列 1 0 1 :節點 102 :節點種類別 - 103 :辨別位元位置 . 104 :代表節點號碼 1 1 1 :節點對 瞻 1 12 :節點〔0〕,代表節點 1 1 3 :節點〔1〕,與代表節點成對之節點 118 :索引鑰 3 0 1 :資料處理裝置 302:中央處理裝置 3 03 :快取記憶體 3 04 :匯流排 3 05 :主記憶裝置 # 3 06 :外部記憶裝置 3 07 :通訊裝置 308:資料儲存裝置308:資料處理裝置 ~ 3 0 9 :配列 3 1 0 :探索經路堆疊 -39 -

Claims (1)

  1. 200817945 十、申請專利範圍 1 · 一種位元列檢索裝置,其特徵爲: 具備有親合節點樹(COUpled node tree),該親合節 點樹,係爲由根節點(root node )、與被配置於相鄰接之 - 記憶區域中的分支節點(branch node )與葉節點(leaf . node )、又或是與分支節點彼此又或是葉節點彼此之節點 對所成的使用於位元列檢索之樹(tree ), φ 前述根節點,係爲表示前述樹之起點的節點,當該樹 之節點係爲1個時,係身爲前述葉節點,而當該樹之節點 係爲2個以上時,則係爲前述分支節點, 前述分支節點,係包含有表示進行位元列檢索之檢索 鑰的辨別位元位置、以及表示連接(link )目標之節點對 的其中一方之節點的位置之資訊,前述葉節點,係包含有 由檢索對象之位兀列所成的索引鑰(index key), 在包含有前述根節點之前述分支節點中,藉由因應於 Φ 被包含於該分支節點中之辨別位元位置之檢索鑰的位元値 ,而依序決定對連接目標之節點對的何者之節點作連接, 並反覆進行此動作,直到到達前述葉節點爲止,而實行前 ^ 述檢索鑰所致之檢索。 2 .如申請專利範圍第1項所記載之位元列檢索裝置 ,其中,前述耦合節點樹,係被記憶於配列中,表示前述 .連接目標之節點對的其中一方之節點的位置之資訊,係爲 被儲存有該節點之前述配列的配列要素之配列號碼。 3.如申請專利範圍第2項所記載之位元列檢索裝置 -40- 200817945 ,其中,係藉由對前述配列號碼與前述檢索鑰之辨別位元 位置的位元値之演算,來求取出被儲存於連接目標之配列 要素的配列號碼。 4.如申請專利範圍第1項所記載之位元列檢索裝置 ,其中,前述分支節點與葉節點,係包含有表示各別之節 點的種類別之資料。 5 ·如申請專利範圍第1項至第4項中之任一項所記 載之位元列檢索裝置,其中,將被包含於前述葉節點之索 引鑰與前述檢索鑰作比較,若係爲一致,則設爲檢索成功 ,若係不一致,則設爲檢索失敗。 6 · —種檢索鑰插入方法,其特徵爲: 在將包含有由所期望之位元列所成的檢索鑰之葉節點 插入至如申請專利範圍第2項所記載之位元列檢索裝置的 前述耦合節點樹中之檢索鑰插入方法中, 將前述索引鑰作爲前述檢索鑰而從前述耦合節點樹中 檢索符合之葉節點,同時,將到達該葉節點爲止所經過之 連結路徑的分支節點、與被儲存有該葉節點之配列要素的 配列號碼,依序儲存在堆疊(stock )中, 在前述檢索鑰與被包含於前述符合之葉節點的索引鑰 之間進行大小比較與位元列比較, 藉由在位元列比較中之成爲相異位元値的開頭之位元 位置與被儲存於前述堆疊中之分支位元的辨別位元位置間 的相對之位置關係,來決定由包含有所插入之索引鑰的葉 節點與另一方之節點所成之節點對的插入位置, -41 - 200817945 決定將包含有藉由前述大小關係所插入之索引鑰的葉 節點作爲前述被插入之節點對中的何者之節點。 7. —種索引鑰削除方法,其特徵爲: 在從如申請專利範圍第2項所記載之位元列檢索裝置 的前述耦合節點樹來將包含有任意之索引鑰的葉節點作削 除之索引鑰削除方法中, * 將前述索引鑰作爲前述檢索鑰,而從前述耦合節點樹 中檢索出符合之葉節點, 將與保持作爲削除對象之索引鑰的前述葉節點構成相 同之節點對的節點之內容,寫入至該節點對之連接源頭的 分支節點中, 將該節點對削除。 8 . —種位元列檢索方法,其特徵爲: 使用有耦合節點樹(coupled node tree),該耦合節 點樹,係爲由根節點(root node )、與被配置於相鄰接之 記憶區域中的分支節點(branch node )與葉節點(16&£ node )、又或是與分支節點彼此又或是葉節點彼此之節點 對所成的使用於位元列檢索之樹(tree ), 前述根節點,係爲表示樹之起點的節點,當該樹之節 點係爲1個時,係身爲前述葉節點,而當該樹之節點係爲 2個以上時,則係爲前述分支節點, 前述分支節點,係包含有表示進行位元列檢索之檢索 鑰的辨別位元位置、以及連接(link )目標之節點對的其 中一方之節點的位置之資訊,前述葉節點,係包含有由檢 -42- 200817945 索對象之位元列所成的索引鑰(index key ), 在包含有前述根節點之前述分支節點中,藉由因應 被包含於該分支節點中之辨別位元位置之檢索鑰的位元 ,而依序決定對連接目標之節點對的何者之節點作連接 並反覆進行此動作,直到到達前述葉節點爲止,而實行 述檢索鑰所致之檢索。 9.如申請專利範圍第8項所記載之位元列檢索方 ,其中,前述耦合節點樹,係被記憶於配列中,表示前 連接目標之節點對的其中一方之節點的位置之資訊,係 被儲存有該節點之前述配列的配列要素之配列號碼。 1 0.如申請專利範圍第9項所記載之位元列檢索方 ,其中,係藉由對前述配列號碼與前述檢索鑰之辨別位 位置的位元値之演算,來求取出被儲存於連接目標之配 要素的配列號碼。 1 1 ·如申請專利範圍第8項至第1 0項中之任一項 記載之位元列檢索方法,其中,將被包含於前述葉節點 索引鑰與檢索鑰作比較,若係爲一致,則設爲檢索成功 若係不一致,則設爲檢索失敗。 12. —種記錄媒體,其特徵爲:係爲記錄有用以使 腦實行如申請專利範圍第8〜1 1項中之任一項所記載的 元列檢索方法之程式的記錄媒體。 1 3 · —種記錄媒體,其特徵爲:係爲記錄有用以使 腦實行如申請專利範圍第6項所記載的索引鑰插入方法 程式的記錄媒體。 於 値 ,.、八 刖 法 述 爲 法 元 列 所 之 電 位 電 之 -43- 200817945 1 4· 一種記錄媒體,其特徵爲:係爲記錄有用 腦實行如申請專利範圍第7項所記載的索引鑰削除 程式的記錄媒體。 1 5 · —種資料構造,係爲使用於位元列檢索中 - 的資料構造,其特徵爲: ” 係爲由根節點(root node )、與被配置於相鄰 憶區域中的分支節點(branch node )與葉節點(le; B )、又或是與分支節點彼此又或是葉節點彼此之節 成, 前述根節點,係爲表示前述樹之起點的節點, 之節點係爲1個時,係身爲前述葉節點,而當該樹 係爲2個以上時,則係爲前述分支節點, 前述分支節點,係包含有表示進行位元列檢索 鑰的辨別位元位置、以及連接(link )目標之節點 中一方之節點的位置之資訊, % 前述葉節點,係包含有由檢索對象之位元列所 引鑰(index key), 在包含有前述根節點之前述分支節點中,藉由 * 被包含於該分支節點中之辨別位元位置之檢索鑰的 ,而依序決定對連接目標之節點對的何者之節點作 並反覆進行此動作,直到到達前述葉節點爲止,而 前述檢索鑰所致之檢索。 1 6.如申請專利範圍第1 5項所記載之資料構 中,前述資料構造,係被記憶於配列中,表示前述 以使電 方法之 之樹狀 接之記 af node 點對所 當該樹 之節點 之檢索 對的其 成的索 因應於 位元値 連接, 可實行 造,其 連接目 44· 200817945 標之節點對的其中一方之節點的位置之資訊,係爲被儲存 有該節點之前述配列的配列要素之配列號碼。
    -45 -
TW096124374A 2006-07-07 2007-07-04 Bit sequence search device, search method, and program TW200817945A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006187827A JP4271214B2 (ja) 2006-07-07 2006-07-07 ビット列検索装置、検索方法及びプログラム

Publications (1)

Publication Number Publication Date
TW200817945A true TW200817945A (en) 2008-04-16

Family

ID=38894310

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096124374A TW200817945A (en) 2006-07-07 2007-07-04 Bit sequence search device, search method, and program

Country Status (7)

Country Link
US (1) US8073874B2 (zh)
EP (1) EP2048584B1 (zh)
JP (1) JP4271214B2 (zh)
CN (1) CN101484895B (zh)
DE (1) DE602007013905D1 (zh)
TW (1) TW200817945A (zh)
WO (1) WO2008004335A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8150856B2 (en) 2006-07-07 2012-04-03 S. Grants Co., Ltd. Bit string searching apparatus, searching method, and program
JP4379894B2 (ja) 2006-11-28 2009-12-09 株式会社エスグランツ カップルドノードツリーの分割/結合方法及びプログラム
JP4402120B2 (ja) 2007-01-24 2010-01-20 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP4514768B2 (ja) 2007-04-19 2010-07-28 株式会社エスグランツ カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム
WO2008132806A1 (ja) 2007-04-19 2008-11-06 S.Grants Co., Ltd. カップルドノードツリーの退避/復元方法、最長一致/最短一致検索方法、ビット列検索方法及び記憶媒体
JP4514771B2 (ja) 2007-05-18 2010-07-28 株式会社エスグランツ カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム
JP4439013B2 (ja) 2007-04-25 2010-03-24 株式会社エスグランツ ビット列検索方法及び検索プログラム
JP4527753B2 (ja) 2007-07-03 2010-08-18 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
CN101802822B (zh) 2007-09-14 2012-10-24 新叶股份有限公司 比特序列检索装置、检索方法以及程序
JP4502223B2 (ja) 2007-12-05 2010-07-14 株式会社エスグランツ ビット列のマージソート装置、方法及びプログラム
JP4498409B2 (ja) 2007-12-28 2010-07-07 株式会社エスグランツ データベースのインデックスキー更新方法及びプログラム
JP4567754B2 (ja) 2008-01-17 2010-10-20 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP2009199577A (ja) * 2008-01-22 2009-09-03 S Grants Co Ltd ビット列検索装置、検索方法及びプログラム
JP2009251840A (ja) * 2008-04-04 2009-10-29 S Grants Co Ltd ビット列検索装置、検索方法及びプログラム
JP4514810B2 (ja) 2008-05-18 2010-07-28 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP4464459B1 (ja) * 2009-03-29 2010-05-19 株式会社エスグランツ コード列検索装置、検索方法及びプログラム
JP2010257427A (ja) * 2009-04-28 2010-11-11 S Grants Co Ltd インデックス更新データ作成装置、作成方法及びプログラム
JP5165662B2 (ja) * 2009-10-27 2013-03-21 株式会社高速屋 ビット列キー分類・分配装置、分類・分配方法及びプログラム
CN102741841A (zh) * 2009-11-30 2012-10-17 新叶股份有限公司 比特序列检索装置、检索方法以及程序
JP5220057B2 (ja) * 2010-05-27 2013-06-26 株式会社高速屋 ビット列検索装置、検索方法及びプログラム
JP5220047B2 (ja) * 2009-11-30 2013-06-26 株式会社高速屋 ビット列検索装置、検索方法及びプログラム
CN102184165B (zh) * 2011-04-22 2013-01-02 烽火通信科技股份有限公司 一种节省内存的lcs算法
JP5912714B2 (ja) * 2012-03-21 2016-04-27 任天堂株式会社 データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム
CN103902699B (zh) * 2014-03-31 2017-04-12 哈尔滨工程大学 一种用于大数据环境下可支持多格式特性的数据空间检索方法
JP5960863B1 (ja) * 2015-03-11 2016-08-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 検索装置、検索方法、プログラム、及び記録媒体
JP6911877B2 (ja) * 2018-02-19 2021-07-28 日本電信電話株式会社 情報管理装置、情報管理方法及び情報管理プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202986A (en) * 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
JPH07210569A (ja) 1994-01-19 1995-08-11 Oki Electric Ind Co Ltd 情報検索方法および情報検索装置
US6012061A (en) 1997-11-25 2000-01-04 International Business Machines Corp. Method and apparatus for deleting nodes in Patricia trees
US6029170A (en) * 1997-11-25 2000-02-22 International Business Machines Corporation Hybrid tree array data structure and method
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
JP3601416B2 (ja) 2000-06-13 2004-12-15 日本電気株式会社 情報検索方法及び装置
JP3569233B2 (ja) * 2001-01-31 2004-09-22 川本工業株式会社 竪型ミルのシール構造
CN1432943A (zh) * 2002-01-17 2003-07-30 北京标杆网络技术有限公司 标杆智能搜索引擎系统
JP3691018B2 (ja) 2002-01-31 2005-08-31 日本電信電話株式会社 最長一致検索回路および方法およびプログラムおよび記録媒体

Also Published As

Publication number Publication date
US20090240655A1 (en) 2009-09-24
WO2008004335A1 (fr) 2008-01-10
EP2048584B1 (en) 2011-04-13
DE602007013905D1 (de) 2011-05-26
EP2048584A4 (en) 2010-03-24
US8073874B2 (en) 2011-12-06
JP2008015872A (ja) 2008-01-24
CN101484895B (zh) 2011-12-28
CN101484895A (zh) 2009-07-15
JP4271214B2 (ja) 2009-06-03
EP2048584A1 (en) 2009-04-15

Similar Documents

Publication Publication Date Title
TW200817945A (en) Bit sequence search device, search method, and program
CN101535993B (zh) 比特序列检索装置及检索方法
US8224861B2 (en) Coupled node tree splitting/conjoining method and program
TW200832168A (en) Bit string retrieving device, retrieving method, and program memory medium
US8332410B2 (en) Bit string merge sort device, method, and program
US8386526B2 (en) Coupled node tree backup/restore apparatus, backup/restore method, and program
TW200910127A (en) Bit string search method and program
US20120209855A1 (en) Bit-string key classification/distribution apparatus, classification/distribution method, and program
US8166043B2 (en) Bit strings search apparatus, search method, and program
JP4567754B2 (ja) ビット列検索装置、検索方法及びプログラム
WO2009122651A1 (ja) ビット列検索装置、検索方法及びプログラム
EP2149845B1 (en) Coupled node tree backup/restore apparatus, backup/restore method, and program
JP2011018296A (ja) カップルドノードツリーのインデックスキー挿入/削除方法
JP4813575B2 (ja) ビット列検索装置