JPWO2006080268A1 - ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム - Google Patents
ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム Download PDFInfo
- Publication number
- JPWO2006080268A1 JPWO2006080268A1 JP2007500493A JP2007500493A JPWO2006080268A1 JP WO2006080268 A1 JPWO2006080268 A1 JP WO2006080268A1 JP 2007500493 A JP2007500493 A JP 2007500493A JP 2007500493 A JP2007500493 A JP 2007500493A JP WO2006080268 A1 JPWO2006080268 A1 JP WO2006080268A1
- Authority
- JP
- Japan
- Prior art keywords
- node
- array
- nodes
- vertex
- identifier
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/40—Data acquisition and logging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
それぞれが特定のノードおよびその子孫ノードを含む1以上のノード群である部分ツリーを表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した頂点ノードリストを、記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、を備えたことを特徴とする配列の生成方法により達成される。
前記第1の配列の部分に格納された値から、頂点ノードのノード識別子を減じた値を、それぞれ、前記領域に格納するステップと、を含む。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列により特定されるツリー中、検索キーとなるツリーと同一のトポロジーを有する、部分ツリーを検索する方法であって、
検索キーとなるツリーを表現する検索キー配列として、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する配列を、記憶装置中に生成するステップと、
前記検索キー配列中のノード識別子にオフセットを与え、前記オフセットが与えられたノード識別子と、前記オフセットにしたがった前記第1の配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
前記比較により全てが一致した前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置中に生成するステップと、を備えたことを特徴とする検索方法により達成される。
前記部分ツリーに含まれない場合に、前記比較により全てが一致した前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置に生成するステップと、を備えている。
さらに、前記比較により全てが一致した部分のノード識別子により特定されるノードに関連付けられた実体情報と、検索キー配列のノード識別子により特定されたノードに関連付けられた実体情報とを、それぞれ比較するステップと、
全ての実体情報が、前記キー配列に関する対応する実体情報と一致したような、前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置中に生成するステップと、を備えている。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
第1の配列により特定されるツリーの部分ツリーを集計する方法であって、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、
前記生成された第2の配列を参照して、第2の配列の種別ごとに、生成された配列数をカウントし、配列数を前記第2の配列の種別と関連付けて、前記記憶装置中に記憶するステップと、を備えたことを特徴とする集計方法により達成される。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列により特定されるツリーの部分ツリーの順序をソートする方法であって、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、
前記生成された第2の配列を参照して、設定された評価基準にしたがって、前記頂点ノードのノード識別子の順序を入れ替えるステップと、を備えたことを特徴とするソート方法により達成される。
同じ世代よりも子ノードを優先して、ルート・ノードを含むノードに、ノード識別子として、固有の連続する整数を付与するステップと、
子ノードをもつノードについて、それぞれのノード識別子と、当該子ノードをもつノードを親ノードとする子ノードの出現数との組を、前記ノード識別子の順に配置した昇順形式の集計配列を、前記記憶装置中に生成するステップと、を備えたことを特徴とするツリー型データ構造の構築方法によっても達成される。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列中のノード識別子と、前記第1の配列においてノード識別子が出現する数を示す出現数との組を、前記第1の配列中のノード識別子の順に配置した昇順形式の集計配列を、前記記憶装置中に生成するステップを備えたことを特徴とする配列の生成方法によっても達成される。
前記集計配列中の出現数に基づき、ノード識別子を格納位置番号とする第1の配列のための領域を、前記記憶装置中に確保するステップと、
前記集計配列および第1の配列のそれぞれにおいて、第1のポインタおよび第2のポインタを初期位置に配置するステップと、
前記集計配列中、前記第1のポインタが示すノード識別子と、前記第2のポインタが示す格納位置番号から「1」を減じた値とが一致する場合に、前記第1のポインタが示すノード識別子を、第1の配列において、前記第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、前記第1のポインタが示す出現数を「1」だけ減じ、かつ、第1のポインタおよび第2のポインタを、その格納位置番号が増大するように移動させるステップと、
前記集計配列中、前記第1のポインタが示すノード識別子と、前記第2のポインタが示す格納位置番号から「1」を減じた値とが一致しない場合に、前記集計配列において、前記第1のポインタに初期的に配置される第3のポインタを、その格納位置番号を減じるように移動させて、最初に、集計配列において、その出現数が「0」とならない位置を特定して、当該第3のポインタが示すノード識別子を、第1の配列において、前記第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、前記第3のポインタが示す出現数を「1」だけ減じ、かつ、第2のポインタを、その格納位置番号が増大するように移動させるステップと、を備えている。
前記集計配列において、前記頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
前記集計配列において、格納位置番号が増大するように、ノード識別子を参照し、前記ノード識別子に対応するノードが、前記頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、前記子孫ノードのノード識別子を更新するステップと、
前記頂点ノードの子孫ノードとなると判断されたノードのノード識別子と前記関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、を備えている。
前記検索キーとなるツリーを表現する検索キー配列として、子ノードをもつノードについて、それぞれのノード識別子と、当該ノードを親ノードとする子ノードの出現数との組を、前記ノード識別子の順に配置した昇順形式の集計配列を、記憶装置中に生成するステップと、
前記検索キー配列中のノード識別子に、オフセットを与え、前記オフセットが与えられたノード識別子と、前記オフセットにしたがった前記集計配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
前記比較により全てが一致した集計配列の部分のノード識別子とその出現数とを含む、検索結果を示す集計配列を、前記記憶装置中に格納するステップと、を備えている。
さらに、前記比較により全てが一致した部分のノード識別子により特定されるノードに関連付けられた実体情報と、検索キー配列のノード識別子により特定されたノードに関連付けられた実体情報とを、それぞれ比較するステップと、
全ての実体情報が、前記キー配列に関する対応する実体情報と一致したような、前記集計配列中の部分のノード識別子とその出現数とを含む、検索結果を表わす集計配列を、前記記憶装置中に生成するステップと、を備えている。
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記集計配列において、前記頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
前記集計配列において、格納位置番号が増大するように、ノード識別子を参照し、前記ノード識別子に対応するノードが、前記頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、前記子孫ノードのノード識別子を更新するステップと、
前記頂点ノードの子孫ノードとなると判断されたノードのノード識別子とおよび関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、
前記部分配列において、そのノード識別子から、先頭のノード識別子を減じて、標準形式の部分配列を、記憶装置中に生成するステップと、
前記生成された標準形式の部分配列を参照して、前記標準形式の部分配列の種別ごとに、生成された配列数をカウントし、配列数を前記種別と関連付けて、前記記憶装置中に記憶するステップと、を備えている。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、部分ツリーを表わす配列を生成するために、前記コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
それぞれが特定のノードおよびその子孫ノードを含む1以上のノード群である部分ツリーを表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した頂点ノードリストを、記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、を実行させることを特徴とするコンピュータプログラムによっても達成される。
頂点ノードのノード識別子が示す前記第1の配列中の位置から、ノード識別子が増大する方向に、前記第1の配列中の値が、前記頂点ノード識別子が示す前記第1の配列中の値より大きい範囲を特定するステップを、前記コンピュータに実行させる。
前記第1の配列の部分と同一サイズの配列の領域であって、その格納位置番号として、前記ルート・ノードのノード識別子を初期値とする連続する整数が与えられた領域を、前記記憶装置中に確保するステップと、
前記第1の配列の部分に格納された値から、頂点ノードのノード識別子を減じた値を、それぞれ、前記領域に格納するステップと、を前記コンピュータに実行させる。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列により特定されるツリー中、検索キーとなるツリーと同一のトポロジーを有する、部分ツリーを検索するために、前記コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
検索キーとなるツリーを表現する検索キー配列として、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する配列を、記憶装置中に生成するステップと、
前記検索キー配列中のノード識別子にオフセットを与え、前記オフセットが与えられたノード識別子と、前記オフセットにしたがった前記第1の配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
前記比較により全てが一致した前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置中に生成するステップと、を実行させることを特徴とするコンピュータプログラムによっても達成される。
前記ノード識別子の全てが一致した場合に、当該配列の部分の末尾の次のノード識別子を参照して、当該ノード識別子に対応するノードが、前記頂点ノードにより特定される部分ツリーに含まれるか否かを判断するステップと、
前記部分ツリーに含まれない場合に、前記比較により全てが一致した前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置中に生成するステップと、を実行させる。
さらに、前記コンピュータに、
前記比較により全てが一致した部分のノード識別子により特定されるノードに関連付けられた実体情報と、検索キー配列のノード識別子により特定されたノードに関連付けられた実体情報とを、それぞれ比較するステップと、
全ての実体情報が、前記キー配列に関する対応する実体情報と一致したような、前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置に生成するステップと、を実行させる。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
第1の配列により特定されるツリーの部分ツリーを集計するために、コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、
前記生成された第2の配列を参照して、第2の配列の種別ごとに、生成された配列数をカウントし、配列数を前記第2の配列の種別と関連付けて、前記記憶装置中に記憶するステップと、実行させることを特徴とするコンピュータプログラムによっても達成される。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列により特定されるツリーの部分ツリーの順序をソートするために、前記コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、
前記生成された第2の配列を参照して、設定された評価基準にしたがって、前記頂点ノードのノード識別子の順序を入れ替えるステップと、を実行させることを特徴とするコンピュータプログラムによっても達成される。
前記コンピュータに、
同じ世代よりも子ノードを優先して、ルート・ノードを含むノードに、ノード識別子として、固有の連続する整数を付与するステップと、
子ノードをもつノードについて、それぞれのノード識別子と、当該子ノードをもつノードを親ノードとする子ノードの出現数との組を、前記ノード識別子の順に配置した昇順形式の集計配列を、前記記憶装置中に生成するステップと、を実行させることを特徴とするコンピュータプログラムによっても達成される。
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、前記ツリー型データ構造を、当該コンピュータの記憶装置中に構築するために、前記コンピュータにより読み出し可能な実行させるコンピュータプログラムであって、
前記コンピュータに、
前記第1の配列中のノード識別子と、当該値の出現する数である出現数との組を、前記第1の配列中のノード識別子の順に配置した昇順形式の集計配列を生成し、当該集計配列を、前記記憶装置に格納するステップを実行させることを特徴とするコンピュータプログラムによっても達成される。
前記コンピュータに、
前記集計配列中の出現数に基づき、ノード識別子を格納位置番号とする第1の配列のための領域を、前記記憶装置中に確保するステップと、
前記集計配列および第1の配列のそれぞれにおいて、第1のポインタおよび第2のポインタを初期位置に配置するステップと、
前記集計配列中、前記第1のポインタが示すノード識別子と、前記第2のポインタが示す格納位置番号から「1」を減じた値とが一致する場合に、前記第1のポインタが示すノード識別子を、第1の配列において、前記第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、前記第1のポインタが示す出現数を「1」だけ減じ、かつ、第1のポインタおよび第2のポインタを、その格納位置番号が増大するように移動させるステップと、
前記集計配列中、前記第1のポインタが示すノード識別子と、前記第2のポインタが示す格納位置番号から「1」を減じた値とが一致しない場合に、前記集計配列において、前記第1のポインタに初期的に配置される第3のポインタを、その格納位置番号を減じるように移動させて、最初に、集計配列において、その出現数が「0」とならない位置を特定して、当該第3のポインタが示すノード識別子を、第1の配列において、前記第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、前記第3のポインタが示す出現数を「1」だけ減じ、かつ、第2のポインタを、その格納位置番号が増大するように移動させるステップと、を実行させる。
前記コンピュータに、
前記集計配列において、前記頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
前記集計配列において、格納位置番号が増大するように、ノード識別子を参照し、前記ノード識別子に対応するノードが、前記頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、前記子孫ノードのノード識別子を更新するステップと、
前記頂点ノードの子孫ノードとなると判断されたノードのノード識別子と前記関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、を実行させる。
前記部分配列において、そのノード識別子から、先頭のノード識別子を減じて、標準形式の部分配列を、記憶装置中に生成するステップを実行させる。
前記コンピュータに、
前記検索キーとなるツリーを表現する検索キー配列として、子ノードをもつノードについて、それぞれのノード識別子と、当該ノードを親ノードとする子ノードの出現数との組を、前記ノード識別子の順に配置した昇順形式の集計配列を、記憶装置中に生成するステップと、
前記検索キー配列中のノード識別子に、オフセットを与え、前記オフセットが与えられたノード識別子と、前記オフセットにしたがった前記集計配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
前記比較により全てが一致した集計配列中の部分のノード識別子とその出現数とを含む、検索結果を示す集計配列を、前記記憶装置中に生成するステップと、を実行させる。
さらに、前記コンピュータに、
前記比較により全てが一致した部分のノード識別子により特定されるノードに関連付けられた実体情報と、検索キー配列のノード識別子により特定されたノードに関連付けられた実体情報とを、それぞれ比較するステップと、
全ての実体情報が、前記キー配列に関する対応する実体情報と一致したような、前記集計配列中の部分のノード識別子とその出現数とを含む、検索結果を表わす集計配列を、前記記憶装置に生成するステップと、を実行させる。
前記コンピュータに、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記集計配列において、前記頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
前記集計配列において、格納位置番号が増大するように、ノード識別子を参照し、前記ノード識別子に対応するノードが、前記頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、前記子孫ノードのノード識別子を更新するステップと、
前記頂点ノードの子孫ノードとなると判断されたノードのノード識別子とおよび関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、
前記部分配列において、そのノード識別子から、先頭のノード識別子を減じて、標準形式の部分配列を、記憶装置中に生成するステップと、
前記生成された標準形式の部分配列を参照して、前記標準形式の部分配列の種別ごとに、生成された配列数をカウントし、配列数を前記種別と関連付けて、前記記憶装置中に記憶するステップと、を実行させる。
図1は、本発明の実施の形態にかかるツリー型データ構造を取り扱うコンピュータシステムのハードウェア構成を示すブロックダイヤグラムである。図1に示すように、このコンピュータシステム10は、通常のものと同様の構成であり、プログラムを実行することによりシステム全体および個々の構成部分を制御するCPU12、ワークデータなどを記憶するRAM(Random Access Memory)14、プログラム等を記憶するROM(Read Only Memory)16、ハードディスク等の固定記憶媒体18、CD−ROM19をアクセスするためのCD−ROMドライバ20、CD−ROMドライバ20や外部ネットワーク(図示せず)と接続された外部端子との間に設けられたインタフェース(I/F)22、キーボードやマウスからなる入力装置24、CRT表示装置26を備えている。CPU12、RAM14、ROM16、外部記憶媒体18、I/F22、入力装置24および表示装置26は、バス28を介して相互に接続されている。
図2Aは、ツリー形式データの一例であるPOSデータの説明図であり、図2Aは、このツリー形式データのデータ構造(即ち、トポロジー)及びデータ値を視覚的に表現した一例であり、図2Bは、同じツリー形式データをXML形式で表現した一例である。図2に示されるようにツリー型データ構造は、ルート・ノード(本例では、POSデータ)から始めて、各ノードで枝分かれしてリーフ・ノード(端点)に至るノードとアークの組み合わせによって表現される。各ノードには、項目名情報、すなわち、ノードのタイプと、項目値情報、すなわち、ノードの値が関連付けられ、図2A、Bの例では、XML形式の
<shopName>フランス店</shopName>
に対応したノードは、「shopName(=店名)」というノードタイプと「フランス店」というノード値が関連付けられている。この関連付けは、例えば、ノードタイプ及びノード値を記述する情報が格納されたノード情報格納領域へのポインタを、ノード識別子に随伴させることによって実現することができる。しかし、本発明は、ツリー型データ構造の実体的な値の取り扱い方によって限定されないことに注意する必要がある。
図3A〜Cの例では、アークリストは、親ノードに子ノードを対応付ける「親→子」関係に基づいて記述されている。そのため、一つの親ノード、例えば、ルート・ノード0には、3個の子ノード10、60及び80が存在するため、アークリストのFrom−IDには、同じノードIDの0が3回出現している。つまり、親ノードを特定しても子ノードを特定することができないので、アークリストは、要素From−IDの配列と要素To−IDの配列により構成される。アークリストを使用する場合、あるノードは、From−IDの配列と、To−IDの配列の両方の配列に出現する。
好ましい一実施例によれば、ノード定義ステップはノード識別子として数値を使用し、より好ましくは、連続する整数を使用し、更に好ましくは、0又は1からの整数連番を使用する。これにより、ノード識別子から、そのノードに対応する親ノードのノード識別子が格納されているアドレスを簡単に取得することができるので、子ノードのノード識別子から親ノードのノード識別子を引く処理を高速化することができる。
本発明の一実施例によれば、図6Cに示されるような深さ優先に基づくツリー型データ構造は、図1に示されたコンピュータシステム10に、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数を付与するノード定義ステップと、
ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成される配列を記憶装置に格納する親子関係定義ステップと、
を実行させることによって、記憶装置上に構築される。これにより、ノードは深さ優先で連続整数が付与され、ノード間の親子関係は「子→親」関係の配列によって表現される。
最初にルート・ノードに番号を付与するステップ801と、
既に番号が付与されたあるノードに唯一の子ノードが存在する場合には、当該子ノードに当該あるノードに付与された番号の次の番号を付与するステップ802と、
既に番号が付与されたあるノードに複数の子ノードが存在する場合には、当該複数の子ノードの間の兄弟関係に従って、弟ノードは直上の兄ノードの全ての子孫ノードに番号が付与された後に次の番号が付与されるように、一番上の兄ノードから一番下の弟ノードまで番号を付与するステップ803と、
を実行させる。これにより、深さ優先モードで同一の親ノードから派生した複数の子ノードの間に兄弟関係が定義される。
(1)ノードの番号が配列P→Cの最大の添字(=11)と一致する場合、このノードに属する子ノードは存在しない。したがって、処理は継続されない。
(2)同図に太字で表された親ノードの番号からAggr値を求める。このAggr値は、配列P→Cの開始点を表す。
(3)太字で表された親ノード番号+1に対応するAggr値を求める。このAggr値−1が配列P→Cの終了点である。
本発明の一実施例によれば、図7Cに示されるような幅優先に基づくツリー型データ構造は、図1に示されたコンピュータシステム10に、
子ノードよりも同じ世代のノードを優先して、ルート・ノードを含むノードに固有の連続する整数を付与するノード定義ステップと、
ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成される配列を記憶装置に格納する親子関係定義ステップと、
を実行させることによって、記憶装置上に構築される。これにより、ノードは幅優先モードで連続整数が付与され、ノード間の親子関係は「子→親」関係の配列によって表現される。
各ノードがルート・ノードから何世代目のノードであるか、及び、各世代に含まれるノード数を算出するステップ1101と、
最初にルート・ノードに番号を付与するステップ1102と、
ある世代に含まれる全てのノードに番号が付与されたならば、当該ある世代の次の世代にノードが存在しなくなるまで、当該次の世代に含まれる全てのノードに対して、親ノードが異なる場合には、当該親ノードに番号が付与された順番に当該ノードに番号を付与し、当該親ノードが同一である場合には、当該親ノードから派生した複数の子ノードの間に兄弟関係を定義し、一番上の兄ノードから一番下の弟ノードまで直前に付与された番号の次の番号から連続的に変化する固有の整数を順に付与するステップ1013と、
を実行させる。これにより、幅優先モードで同一の親ノードから派生した複数の子ノードの間に兄弟関係が定義される。
(1)ノードの番号が配列P→Cの最大の添字(=11)と一致する場合、このノードに属する子ノードは存在しない。したがって、処理は継続されない。
(2)同図に太字で表された親ノードの番号からAggr値を求める。このAggr値は、配列P→Cの開始点を表す。
(3)太字で表された親ノード番号+1に対応するAggr値を求める。このAggr値−1が配列P→Cの終了点である。
ツリー型データ構造のデータを検索、集計、ソートする際に、ツリーデータの全体の中で特定の部分を処理の対象、例えば、検索の対象範囲とする場合がある。本発明者は、複数のノードを含む特定の部分を代表する一つのノードを導入することにより、種々の処理を効率化する手法を提案した。次に、この手法について詳述する。
あるノードおよびそのノードから枝分かれしてリーフ・ノードに至る部分ツリー群における、ノードおよびその間の接続関係を、本明細書において「トポロジー」と称する。たとえば、図21に示すツリーがあり、このツリー2100の構造は、深さ優先モードの「子→親」表現に基づく親子関係の配列(符号2101参照:図面においては、「C−>P」と表記するが、明細書においては、以下、「C−P配列」と称する。)により表わされると考える。
それぞれが特定のノードおよびその子孫ノードを含む1以上のノード群である部分ツリーを表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した頂点ノードリストを、記憶装置中に生成するステップと、
頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、第1の配列中の部分を特定するステップと、
第1の配列中の部分のそれぞれについて、部分ツリーの頂点ノードが、ルート・ノードとなるように、ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、記憶装置中に生成するステップと、を備える。ここで、第1の配列とは、C−P配列をいう。
また、それぞれの親ノードが、何個の子ノードを持つかを示す配列を考えることができる。この配列を昇順形式の配列と称する。昇順形式の配列には、以下のような利点がある。
(1)昇順形式の配列においては、親ノードの番号順に昇順で並べられているため、ルート・ノードに近い側から親ノードのノード識別子が出現し、昇順形式相互の比較では、よりルート・ノードに近い側から比較される。
2つの昇順形式の配列を先頭から比較すると、よりルートに近い側から比較されることになる。
(2)比較が効率的に行える。
同じ世代よりも子ノードを優先して、ルート・ノードを含むノードに、ノード識別子として、固有の連続する整数を付与するステップと、
子ノードをもつノードについて、それぞれのノード識別子と、当該子ノードをもつノードを親ノードとする子ノードの出現数との組を、ノード識別子の順に配置した昇順形式の集計配列を、記憶装置中に生成するステップと、を備えることで実現できる。
集計配列中の出現数に基づき、ノード識別子を格納位置番号とする第1の配列のための領域を、記憶装置中に確保するステップと、
集計配列および第1の配列のそれぞれにおいて、第1のポインタおよび第2のポインタを初期位置に配置するステップと、
集計配列中、第1のポインタが示すノード識別子と、第2のポインタが示す格納位置番号から「1」を減じた値とが一致する場合に、第1のポインタが示すノード識別子を、第1の配列において、第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、第1のポインタが示す出現数を「1」だけ減じ、かつ、第1のポインタおよび第2のポインタを、その格納位置番号が増大するように移動させるステップと、
集計配列中、第1のポインタが示すノード識別子と、第2のポインタが示す格納位置番号から「1」を減じた値とが一致しない場合に、集計配列において、第1のポインタに初期的に配置される第3のポインタを、その格納位置番号を減じるように移動させて、最初に、集計配列において、その出現数が「0」とならない位置を特定して、当該第3のポインタが示すノード識別子を、第1の配列において、第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、第3のポインタが示す出現数を「1」だけ減じ、かつ、第2のポインタを、その格納位置番号が増大するように移動させるステップと、を備えている。
上述した昇順形式の集計配列においては、末端のノード(リーフ・ノード)のノード識別子は、出現値として出現しない。たとえば、図48Aに示すツリーは、昇順形式の集計配列を利用して、図48Bのように表わされる(符号4800参照)。図48Aから理解できるように、このツリーにおいて、リーフ・ノードのノード識別子は、「3」、「5」、「6」、「10」および「11」となる。図48Bに示す部分配列の出現値の項目を参照すると、上記ノード識別子「3」、「5」、「6」、「10」および「11」は出現していない。また、図48Bに示す部分配列を参照すれば理解できるように、出現回数の総和は、「全てのノード数−1」に等しい。
集計配列において、頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
集計配列において、格納位置番号が増大するように、ノード識別子を参照し、ノード識別子に対応するノードが、頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、子孫ノードのノード識別子を更新するステップと、
頂点ノードの子孫ノードとなると判断されたノードのノード識別子と関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、を備える。
ツリー全体において、或いは、ある頂点ノードにより特定される部分ツリーにおいて、ツリー或いは部分ツリーと同じ接続態様、つまり、同一のトポロジーを有する部分ツリーを見出すことを考える。たとえば、図35Bに示すツリーにおいて、図35Aに示すツリーと同一のトポロジーを有する部分ツリーを探すと、図35Bにおいて点線で示す部分ツリーを特定することができる。これを、トポロジー検索と称する。トポロジー検索において、その検索結果は、検索により特定された部分ツリーの頂点ノードのノード識別子を含む配列(頂点ノードリスト)で表わすことができる。図35A、Bの例では、検索結果は、[7]となる。
検索キーとなるツリーを表現する検索キー配列として、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する配列を、記憶装置中に生成するステップと、
検索キー配列中のノード識別子にオフセットを与え、オフセットが与えられたノード識別子と、オフセットにしたがった第1の配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
比較により全てが一致した第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、記憶装置中に生成するステップと、を備える。
たとえば、トポロジーに加えて、そのノードのタイプ(図2A,Bを参照して説明したノードの項目名情報)の一致も、検索条件とする場合も考えられる。この場合には、上記処理において、上記ステップ3606の後に、比較された各要素に対応するノードのタイプを比較し、当該タイプが一致した場合には、オフセット値を頂点ノードリストに格納すればよい。
トポロジー検索は、昇順形式の集計配列を利用しても実現できる。基本的には、検索キーとなるツリー(検索トポロジー)を表現した、標準化された昇順形式の集計配列と、ツリーの昇順形式の集計配列とを比較する。図53は、本実施の形態にかかる昇順形式を利用したトポロジー検索の処理を示すフローチャートである。図53の処理は、図36の処理(C−P配列を用いたトポロジー検索処理)とほぼ同様である。図36の処理においては、比較対象部分の次の要素が、当該比較対象部分と同一ブロックに属するかどうかの判断(ステップ3606)がされていたが、昇順形式の集計配列を利用すると、このステップを省略することができる。
検索キーとなるツリーを表現する検索キー配列として、子ノードをもつノードについて、それぞれのノード識別子と、当該ノードを親ノードとする子ノードの出現数との組を、ノード識別子の順に配置した昇順形式の集計配列を、記憶装置中に生成するステップと、
検索キー配列中のノード識別子に、オフセットを与え、オフセットが与えられたノード識別子と、オフセットにしたがった集計配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
比較により全てが一致した集計配列の部分のノード識別子とその出現数とを含む、検索結果を示す集計配列を、記憶装置中に格納するステップと、を備える。
次に、トポロジー集計について説明する。トポロジー集計とは、以下のような2つの態様を考えることができる。
(1)トポロジーを次元として、ツリーにおいて、そのトポロジー種の件数を求める。
(2)トポロジーを次元として、ツリーにおいて、そのトポロジー種に属する指定の測度(たとえば、年齢、体重など)の件数、最大値、最小値、合計値、平均値などを求める。
図40Aに示すツリーを考える。ここで、頂点ノードリスト[2,7,8]で特定される部分ツリー群において、トポロジー種ごとの件数を求めることを考える。その結果、トポロジー4011が、頂点ノードリスト[2,8]で示される2つの部分ノードとして現れる。また、トポロジー4012は、頂点ノードリスト[7]で示される1つの部分ノードとして現れる。したがって、トポロジー4011が2件、トポロジー4012が1件というトポロジー集計結果が得られる(図40B参照)。
部分ツリーの頂点ノードを格納した頂点ノードリストを、記憶装置中に生成するステップと、
頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、第1の配列中の部分を特定するステップと、
第1の配列中の部分のそれぞれについて、部分ツリーの頂点ノードが、ルート・ノードとなるように、ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、記憶装置中に生成するステップと、
生成された第2の配列を参照して、第2の配列の種別ごとに、生成された配列数をカウントし、配列数を第2の配列の種別と関連付けて、記憶装置中に記憶するステップと、を備える。
第2のトポロジー集計においては、第1のトポロジー集計の結果から、分類された部分配列ごとに、さらに、指定された測度の件数や、指定された値に関する演算値(最大値、最小値、合計値、平均値など)を求めればよい。
トポロジー集計は、昇順形式の集計配列を利用しても実現できる。図40Aに示すツリーは、昇順形式の集計配列を用いると、図56のように表すことができる。図40Aに示す例と同様に、頂点ノードリスト[2,7,8]で特定される部分ツリー群において、トポロジー種ごとの件数を求めることを考える。
部分ツリーの頂点ノードを格納した頂点ノードリストを、記憶装置中に生成するステップと、
集計配列において、頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
集計配列において、格納位置番号が増大するように、ノード識別子を参照し、ノード識別子に対応するノードが、頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、子孫ノードのノード識別子を更新するステップと、
頂点ノードの子孫ノードとなると判断されたノードのノード識別子とおよび関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、
部分配列において、そのノード識別子から、先頭のノード識別子を減じて、標準形式の部分配列を、記憶装置中に生成するステップと、
生成された標準形式の部分配列を参照して、標準形式の部分配列の種別ごとに、生成された配列数をカウントし、配列数を種別と関連付けて、記憶装置中に記憶するステップと、を備える。
たとえば、上記集計結果について、件数を昇順或いは降順として並べて表示することが望まれる場合がある。つまり、推移律を満たす大小の尺度に基づいて、最小のものから最大のもの(或いはその逆)に連続してアクセスできる配列を生成することが望まれる場合がある。このように上記大小の尺度に基づく配列を生成することをソートと称する。
第1の配列により特定されるツリーの部分ツリーの順序をソートする方法であって、
部分ツリーの頂点ノードを格納した頂点ノードリストを、記憶装置中に生成するステップと、
頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、第1の配列中の部分を特定するステップと、
第1の配列中の部分のそれぞれについて、部分ツリーの頂点ノードが、ルート・ノードとなるように、ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、記憶装置中に生成するステップと、
生成された第2の配列を参照して、設定された評価基準にしたがって、頂点ノードのノード識別子の順序を入れ替えるステップと、を備える。
図47は、本発明の実施の形態にかかるツリー型データ構造を構築し、頂点ノードリストを生成し、ツリー型データ構造を構築する種々の配列を生成して、これをメモリに記憶し、かつ、トポロジー検索、トポロジー集計およびトポロジーソートの処理を実行する情報処理装置の例を示す機能ブロックダイヤグラムである。この情報処理装置4700は、実際には、図1に示すコンピュータシステム10に必要なプログラムをインストールすることにより実現される。
12 CPU
14 RAM
16 ROM
18 固定記憶装置
20 CD−ROMドライバ
22 I/F
24 入力装置
26 表示装置
4700 情報処理装置
4701 記憶部
4702 ノード定義部
4703 親子関係定義部
4704 標準化処理部
4705 昇順形式処理部
4706 トポロジー検索処理部
4707 トポロジー集計処理部
4708 トポロジーソート処理部
別子とを比較するステップと、
比較により全てが一致した第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、記憶装置中に生成するステップと、を備える。
[0137]
図36は、本実施の形態にかかるトポロジー検索処理を示すフローチャートである。図36に示すように、CPU12は、RAM14などのメモリに格納された検索トポロジーを表わすC−P配列を参照して、先頭の要素を削除した、検索キー配列を生成する(ステップ3601)。次いで、CPU12は、検索キー配列の値に加算するオフセット値を「0(ゼロ)」に初期化し(ステップ3602)、かつ、検索キー配列と、検索対象となるC−P配列との間の比較をすべき位置を示すポインタを初期位置に配置する(ステップ3603)。ステップ3603においては、ポインタは、C−P配列中、オフセット値に「1」を加えた位置に、初期的に位置する。たとえば、図37Aに示すように、初期的には、比較位置を示すポインタは、C−P配列中、「オフセット値(0)+1=1」を示す。このため、後述するように、検索キー配列の先頭の要素が、ポインタの示すC−P配列の格納位置番号「1」の要素と比較されることになる。
[0138]
CPU12は、検索キー配列の要素のそれぞれにオフセット値を加算し、かつ、オフセット値が加算された検索キー配列の要素と、ポインタに示されるC−P配列の部分中、当該検索キー配列の要素に対応する要素とを比較し(ステップ3604)、それぞれの要素が一致するか否かを判断する(ステップ3605)。ステップ3605でイエス(Yes)と判断された場合には、CPU12は、比較対象となったC−P配列の部分の末尾のさらに次、つまり、末尾の格納位置番号に「1」を加えた格納位置番号の要素を参照し、当該要素が、比較対象となったC−P配列の部分により特定されるツリーと同一ブロックに属するか否かを判断する(ステップ3606)。具体的には、CPU12は、比較対象となったC−P配列の部分の末尾のさらに次の要素が、オフセット値以上であるか否かを調べ、オフセット値以上であれば、同一ブロックに属すると判断する。
[0139]
ステップ3606でノー(No)と判断された場合には、オフセット値を、検索結果を格納するためのメモリ上に生成した頂点ノードリストに格納する(ステップ3607)。その後、CPU12は、ポインタを1つだけ下側、つまり、格納位置番号が「1」だけ増大するように移動するとともに(ステップ3608)、オフセット値を「1」だけ増大させる(ステップ36
Claims (32)
- 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
それぞれが特定のノードおよびその子孫ノードを含む1以上のノード群である部分ツリーを表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した頂点ノードリストを、記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、を備えたことを特徴とする配列の生成方法。 - 前記第1の配列中の部分を特定するステップが、頂点ノードのノード識別子が示す前記第1の配列中の位置から、ノード識別子が増大する方向に、前記第1の配列中の値が、前記頂点ノード識別子が示す前記第1の配列中の値より大きい範囲を特定するステップを含むことを特徴とする請求項1に記載の方法。
- 前記標準形式の第2の配列を生成するステップが、前記第1の配列の部分と同一サイズの配列の領域であって、その格納位置番号として、前記ルート・ノードのノード識別子を初期値とする連続する整数が与えられた領域を、前記記憶装置中に確保するステップと、
前記第1の配列の部分に格納された値から、頂点ノードのノード識別子を減じた値を、それぞれ、前記領域に格納するステップと、を含むことを特徴とする請求項1または2に記載の方法。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列により特定されるツリー中、検索キーとなるツリーと同一のトポロジーを有する、部分ツリーを検索する方法であって、
検索キーとなるツリーを表現する検索キー配列として、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する配列を、記憶装置中に生成するステップと、
前記検索キー配列中のノード識別子にオフセットを与え、前記オフセットが与えられたノード識別子と、前記オフセットにしたがった前記第1の配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
前記比較により全てが一致した前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置中に生成するステップと、を備えたことを特徴とする検索方法。 - 前記ノード識別子の全てが一致した場合に、当該第1の配列中の部分の末尾の次のノード識別子を参照して、当該ノード識別子に対応するノードが、前記頂点ノードにより特定される部分ツリーに含まれるか否かを判断するステップと、
前記部分ツリーに含まれない場合に、前記比較により全てが一致した前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置に生成するステップと、を備えたことを特徴とする請求項4に記載の検索方法。 - 前記ノードが、データを表わす少なくとも一つの実体情報が関連付けられ、
さらに、前記比較により全てが一致した部分のノード識別子により特定されるノードに関連付けられた実体情報と、検索キー配列のノード識別子により特定されたノードに関連付けられた実体情報とを、それぞれ比較するステップと、
全ての実体情報が、前記キー配列に関する対応する実体情報と一致したような、前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置中に生成するステップと、を備えたことを特徴とする請求項4または5に記載の検索方法。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
第1の配列により特定されるツリーの部分ツリーを集計する方法であって、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、
前記生成された第2の配列を参照して、第2の配列の種別ごとに、生成された配列数をカウントし、配列数を前記第2の配列の種別と関連付けて、前記記憶装置中に記憶するステップと、を備えたことを特徴とする集計方法。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列により特定されるツリーの部分ツリーの順序をソートする方法であって、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、
前記生成された第2の配列を参照して、設定された評価基準にしたがって、前記頂点ノードのノード識別子の順序を入れ替えるステップと、を備えたことを特徴とするソート方法。 - ツリー型データ構造を記憶装置中に構築する方法であって、
同じ世代よりも子ノードを優先して、ルート・ノードを含むノードに、ノード識別子として、固有の連続する整数を付与するステップと、
子ノードをもつノードについて、それぞれのノード識別子と、当該子ノードをもつノードを親ノードとする子ノードの出現数との組を、前記ノード識別子の順に配置した昇順形式の集計配列を、前記記憶装置中に生成するステップと、を備えたことを特徴とするツリー型データ構造の構築方法。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列中のノード識別子と、前記第1の配列においてノード識別子が出現する数を示す出現数との組を、前記第1の配列中のノード識別子の順に配置した昇順形式の集計配列を、前記記憶装置中に生成するステップを備えたことを特徴とする配列の生成方法。 - 請求項9に記載された集計配列に基づき、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列を生成する方法であって、
前記集計配列中の出現数に基づき、ノード識別子を格納位置番号とする第1の配列のための領域を、前記記憶装置中に確保するステップと、
前記集計配列および第1の配列のそれぞれにおいて、第1のポインタおよび第2のポインタを初期位置に配置するステップと、
前記集計配列中、前記第1のポインタが示すノード識別子と、前記第2のポインタが示す格納位置番号から「1」を減じた値とが一致する場合に、前記第1のポインタが示すノード識別子を、第1の配列において、前記第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、前記第1のポインタが示す出現数を「1」だけ減じ、かつ、第1のポインタおよび第2のポインタを、その格納位置番号が増大するように移動させるステップと、
前記集計配列中、前記第1のポインタが示すノード識別子と、前記第2のポインタが示す格納位置番号から「1」を減じた値とが一致しない場合に、前記集計配列において、前記第1のポインタに初期的に配置される第3のポインタを、その格納位置番号を減じるように移動させて、最初に、集計配列において、その出現数が「0」とならない位置を特定して、当該第3のポインタが示すノード識別子を、第1の配列において、前記第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、前記第3のポインタが示す出現数を「1」だけ減じ、かつ、第2のポインタを、その格納位置番号が増大するように移動させるステップと、を備えたことを特徴とする配列の生成方法。 - 請求項9に記載された集計配列から、頂点ノードおよびその子孫ノードを含む部分ツリーを表わす部分配列を生成する方法であって、
前記集計配列において、前記頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
前記集計配列において、格納位置番号が増大するように、ノード識別子を参照し、前記ノード識別子に対応するノードが、前記頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、前記子孫ノードのノード識別子を更新するステップと、
前記頂点ノードの子孫ノードとなると判断されたノードのノード識別子と前記関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、を備えたことを特徴とする配列の生成方法。 - さらに、前記部分配列において、そのノード識別子から、先頭のノード識別子を減じて、標準形式の部分配列を、記憶装置中に生成するステップを備えたことを特徴とする請求項12に記載の配列の生成方法。
- 請求項9に記載された集計配列により特定されるツリー中、検索キーとなるツリーと同一のトポロジーを有する部分ツリーを検索する方法であって、
前記検索キーとなるツリーを表現する検索キー配列として、子ノードをもつノードについて、それぞれのノード識別子と、当該ノードを親ノードとする子ノードの出現数との組を、前記ノード識別子の順に配置した昇順形式の集計配列を、記憶装置中に生成するステップと、
前記検索キー配列中のノード識別子に、オフセットを与え、前記オフセットが与えられたノード識別子と、前記オフセットにしたがった前記集計配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
前記比較により全てが一致した集計配列の部分のノード識別子とその出現数とを含む、検索結果を示す集計配列を、前記記憶装置中に格納するステップと、を備えたことを特徴とする検索方法。 - 前記ノードが、データを表わす少なくとも一つの実体情報が関連付けられ、
さらに、前記比較により全てが一致した部分のノード識別子により特定されるノードに関連付けられた実体情報と、検索キー配列のノード識別子により特定されたノードに関連付けられた実体情報とを、それぞれ比較するステップと、
全ての実体情報が、前記キー配列に関する対応する実体情報と一致したような、前記集計配列中の部分のノード識別子とその出現数とを含む、検索結果を表わす集計配列を、前記記憶装置中に生成するステップと、を備えたことを特徴とする請求項14に記載の検索方法。 - 請求項9に記載された集計配列に基づき、当該集計配列により特定されるツリーの部分ツリーを集計する方法であって、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記集計配列において、前記頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
前記集計配列において、格納位置番号が増大するように、ノード識別子を参照し、前記ノード識別子に対応するノードが、前記頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、前記子孫ノードのノード識別子を更新するステップと、
前記頂点ノードの子孫ノードとなると判断されたノードのノード識別子とおよび関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、
前記部分配列において、そのノード識別子から、先頭のノード識別子を減じて、標準形式の部分配列を、記憶装置中に生成するステップと、
前記生成された標準形式の部分配列を参照して、前記標準形式の部分配列の種別ごとに、生成された配列数をカウントし、配列数を前記種別と関連付けて、前記記憶装置中に記憶するステップと、を備えたことを特徴とする集計方法。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、部分ツリーを表わす配列を生成するために、前記コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
それぞれが特定のノードおよびその子孫ノードを含む1以上のノード群である部分ツリーを表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した頂点ノードリストを、記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、を実行させることを特徴とするコンピュータプログラム。 - 前記第1の配列中の部分を特定するステップにおいて、
頂点ノードのノード識別子が示す前記第1の配列中の位置から、ノード識別子が増大する方向に、前記第1の配列中の値が、前記頂点ノード識別子が示す前記第1の配列中の値より大きい範囲を特定するステップを、前記コンピュータに実行させることを特徴とする請求項17に記載のコンピュータプログラム。 - 前記標準形式の第2の配列を生成するステップにおいて、
前記第1の配列の部分と同一サイズの配列の領域であって、その格納位置番号として、前記ルート・ノードのノード識別子を初期値とする連続する整数が与えられた領域を、前記記憶装置中に確保するステップと、
前記第1の配列の部分に格納された値から、頂点ノードのノード識別子を減じた値を、それぞれ、前記領域に格納するステップと、を前記コンピュータに実行させることを特徴とする請求項17または18に記載のコンピュータプログラム。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列により特定されるツリー中、検索キーとなるツリーと同一のトポロジーを有する、部分ツリーを検索するために、前記コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
検索キーとなるツリーを表現する検索キー配列として、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する配列を、記憶装置中に生成するステップと、
前記検索キー配列中のノード識別子にオフセットを与え、前記オフセットが与えられたノード識別子と、前記オフセットにしたがった前記第1の配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
前記比較により全てが一致した前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置中に生成するステップと、を実行させることを特徴とするコンピュータプログラム。 - 前記コンピュータに、
前記ノード識別子の全てが一致した場合に、当該配列の部分の末尾の次のノード識別子を参照して、当該ノード識別子に対応するノードが、前記頂点ノードにより特定される部分ツリーに含まれるか否かを判断するステップと、
前記部分ツリーに含まれない場合に、前記比較により全てが一致した前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置中に生成するステップと、を実行させることを特徴とする請求項20に記載のコンピュータプログラム。 - 前記ノードが、データを表わす少なくとも一つの実体情報が関連付けられ、
さらに、前記コンピュータに、
前記比較により全てが一致した部分のノード識別子により特定されるノードに関連付けられた実体情報と、検索キー配列のノード識別子により特定されたノードに関連付けられた実体情報とを、それぞれ比較するステップと、
全ての実体情報が、前記キー配列に関する対応する実体情報と一致したような、前記第1の配列中の部分のノード識別子を含む、検索結果を示す頂点ノードリストを、前記記憶装置に生成するステップと、を実行させることを特徴とする請求項20または21に記載のコンピュータプログラム。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
第1の配列により特定されるツリーの部分ツリーを集計するために、コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、
前記生成された第2の配列を参照して、第2の配列の種別ごとに、生成された配列数をカウントし、配列数を前記第2の配列の種別と関連付けて、前記記憶装置中に記憶するステップと、実行させることを特徴とするコンピュータプログラム。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
前記第1の配列により特定されるツリーの部分ツリーの順序をソートするために、前記コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記頂点ノードリストに格納されたノード識別子に対応する頂点ノードのそれぞれにより特定される部分ツリーを表す、前記第1の配列中の部分を特定するステップと、
前記第1の配列中の部分のそれぞれについて、前記部分ツリーの頂点ノードが、ルート・ノードとなるように、前記ノード間の親子関係が、頂点ノード以外のノードである非頂点ノードの各々に付与されたノード識別子に対応する、非頂点ノードの各々に関連付けられた親ノードのノード識別子により表現された、標準形式の第2の配列を、前記記憶装置中に生成するステップと、
前記生成された第2の配列を参照して、設定された評価基準にしたがって、前記頂点ノードのノード識別子の順序を入れ替えるステップと、を実行させることを特徴とするコンピュータプログラム。 - ツリー型データ構造を、コンピュータの記憶装置中に構築するために、コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
同じ世代よりも子ノードを優先して、ルート・ノードを含むノードに、ノード識別子として、固有の連続する整数を付与するステップと、
子ノードをもつノードについて、それぞれのノード識別子と、当該子ノードをもつノードを親ノードとする子ノードの出現数との組を、前記ノード識別子の順に配置した昇順形式の集計配列を、前記記憶装置中に生成するステップと、を実行させることを特徴とするコンピュータプログラム。 - 同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに、固有の連続する整数となるノード識別子が付与され、
ノード間の親子関係が、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列によって表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、前記ツリー型データ構造を、当該コンピュータの記憶装置中に構築するために、前記コンピュータにより読み出し可能な実行させるコンピュータプログラムであって、
前記コンピュータに、
前記第1の配列中のノード識別子と、当該値の出現する数である出現数との組を、前記第1の配列中のノード識別子の順に配置した昇順形式の集計配列を生成し、当該集計配列を、前記記憶装置に格納するステップを実行させることを特徴とするコンピュータプログラム。 - 請求項25に記載された集計配列に基づき、ノード間の親子関係を表現する、ルート・ノード以外のノードである非ルート・ノードの各々に付与されたノード識別子に対応する、非ルート・ノードの各々に関連付けられた親ノードのノード識別子を有する第1の配列を生成するために、コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
前記集計配列中の出現数に基づき、ノード識別子を格納位置番号とする第1の配列のための領域を、前記記憶装置中に確保するステップと、
前記集計配列および第1の配列のそれぞれにおいて、第1のポインタおよび第2のポインタを初期位置に配置するステップと、
前記集計配列中、前記第1のポインタが示すノード識別子と、前記第2のポインタが示す格納位置番号から「1」を減じた値とが一致する場合に、前記第1のポインタが示すノード識別子を、第1の配列において、前記第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、前記第1のポインタが示す出現数を「1」だけ減じ、かつ、第1のポインタおよび第2のポインタを、その格納位置番号が増大するように移動させるステップと、
前記集計配列中、前記第1のポインタが示すノード識別子と、前記第2のポインタが示す格納位置番号から「1」を減じた値とが一致しない場合に、前記集計配列において、前記第1のポインタに初期的に配置される第3のポインタを、その格納位置番号を減じるように移動させて、最初に、集計配列において、その出現数が「0」とならない位置を特定して、当該第3のポインタが示すノード識別子を、第1の配列において、前記第2のポインタが示す格納位置番号に対応する値として格納するとともに、集計配列中、前記第3のポインタが示す出現数を「1」だけ減じ、かつ、第2のポインタを、その格納位置番号が増大するように移動させるステップと、を実行させることを特徴とするコンピュータプログラム。 - 請求項25に記載された集計配列から、頂点ノードおよびその子孫ノードを含む部分ツリーを表わす部分配列を生成するために、コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
前記集計配列において、前記頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
前記集計配列において、格納位置番号が増大するように、ノード識別子を参照し、前記ノード識別子に対応するノードが、前記頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、前記子孫ノードのノード識別子を更新するステップと、
前記頂点ノードの子孫ノードとなると判断されたノードのノード識別子と前記関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、を実行させることを特徴とするコンピュータプログラム。 - さらに、前記コンピュータに、
前記部分配列において、そのノード識別子から、先頭のノード識別子を減じて、標準形式の部分配列を、記憶装置中に生成するステップを実行させることを特徴とする請求項28に記載のコンピュータプログラム。 - 請求項25に記載された集計配列により特定されるツリー中、検索キーとなるツリーと同一のトポロジーを有する部分ツリーを検索するために、コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
前記検索キーとなるツリーを表現する検索キー配列として、子ノードをもつノードについて、それぞれのノード識別子と、当該ノードを親ノードとする子ノードの出現数との組を、前記ノード識別子の順に配置した昇順形式の集計配列を、記憶装置中に生成するステップと、
前記検索キー配列中のノード識別子に、オフセットを与え、前記オフセットが与えられたノード識別子と、前記オフセットにしたがった前記集計配列中の部分に含まれる、対応するノード識別子とを比較するステップと、
前記比較により全てが一致した集計配列中の部分のノード識別子とその出現数とを含む、検索結果を示す集計配列を、前記記憶装置中に生成するステップと、を実行させることを特徴とするコンピュータプログラム。 - 前記ノードが、データを表わす少なくとも一つの実体情報が関連付けられ、
さらに、前記コンピュータに、
前記比較により全てが一致した部分のノード識別子により特定されるノードに関連付けられた実体情報と、検索キー配列のノード識別子により特定されたノードに関連付けられた実体情報とを、それぞれ比較するステップと、
全ての実体情報が、前記キー配列に関する対応する実体情報と一致したような、前記集計配列中の部分のノード識別子とその出現数とを含む、検索結果を表わす集計配列を、前記記憶装置に生成するステップと、を実行させることを特徴とする請求項30に記載のコンピュータプログラム。 - 請求項25に記載された集計配列に基づき、当該集計配列により特定されるツリーの部分ツリーを集計するために、コンピュータにより読み出し可能なコンピュータプログラムであって、
前記コンピュータに、
前記部分ツリーの頂点ノードを格納した頂点ノードリストを、前記記憶装置中に生成するステップと、
前記集計配列において、前記頂点ノードのノード識別子と、当該ノード識別子に関連付けられた出現数とに基づき、少なくとも子孫ノードとなるノードのノード識別子を初期的に算出するステップと、
前記集計配列において、格納位置番号が増大するように、ノード識別子を参照し、前記ノード識別子に対応するノードが、前記頂点ノードの子孫ノードとなるか否かを判断するとともに、当該集計配列のノード識別子に関連付けられた出現数を参照して、前記子孫ノードのノード識別子を更新するステップと、
前記頂点ノードの子孫ノードとなると判断されたノードのノード識別子とおよび関連付けられた出現数との組を、部分配列として記憶装置中に生成するステップと、
前記部分配列において、そのノード識別子から、先頭のノード識別子を減じて、標準形式の部分配列を、記憶装置中に生成するステップと、
前記生成された標準形式の部分配列を参照して、前記標準形式の部分配列の種別ごとに、生成された配列数をカウントし、配列数を前記種別と関連付けて、前記記憶装置中に記憶するステップと、を実行させることを特徴とするコンピュータプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005016373 | 2005-01-25 | ||
JP2005016373 | 2005-01-25 | ||
PCT/JP2006/300940 WO2006080268A1 (ja) | 2005-01-25 | 2006-01-23 | ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2006080268A1 true JPWO2006080268A1 (ja) | 2008-08-07 |
JP4653157B2 JP4653157B2 (ja) | 2011-03-16 |
Family
ID=36740299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007500493A Expired - Fee Related JP4653157B2 (ja) | 2005-01-25 | 2006-01-23 | ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム |
Country Status (7)
Country | Link |
---|---|
US (1) | US7937399B2 (ja) |
EP (1) | EP1857945A1 (ja) |
JP (1) | JP4653157B2 (ja) |
KR (1) | KR20070101288A (ja) |
CN (1) | CN101128825A (ja) |
CA (1) | CA2593118A1 (ja) |
WO (1) | WO2006080268A1 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943045B2 (en) * | 2009-01-28 | 2015-01-27 | Oracle International Corporation | Mechanisms for efficient autocompletion in XML search applications |
WO2010106681A1 (ja) * | 2009-03-19 | 2010-09-23 | 富士通株式会社 | データベース検索プログラムを記録するコンピュータ読取可能な記憶媒体、データベース検索装置、および、データベース検索方法 |
EP2256660B1 (en) * | 2009-05-28 | 2015-08-12 | Sap Se | Computer-implemented method, computer system, and computer program product for optimization of evaluation of a policy specification |
US8370394B2 (en) * | 2009-07-17 | 2013-02-05 | International Business Machines Corporation | Parallel processing of data organized in a tree structure |
CN102402545B (zh) * | 2010-09-14 | 2015-09-02 | 腾讯科技(深圳)有限公司 | 一种存储数据的方法及装置 |
US8713056B1 (en) | 2011-03-30 | 2014-04-29 | Open Text S.A. | System, method and computer program product for efficient caching of hierarchical items |
CN102681975B (zh) * | 2012-05-10 | 2013-06-19 | 江苏省电力公司电力科学研究院 | 一种基于链表的pqdif文件树形结构比较方法 |
WO2013171953A1 (ja) | 2012-05-15 | 2013-11-21 | 日本電気株式会社 | 分散データ管理装置及び分散データ操作装置 |
CN103020273B (zh) * | 2012-12-27 | 2016-08-17 | 福建榕基软件股份有限公司 | 树形结构数据的展示及相关索引表生成的方法与装置 |
US9465523B2 (en) * | 2013-06-27 | 2016-10-11 | Sap Se | Visual exploration of multidimensional data |
US9619499B2 (en) * | 2013-08-07 | 2017-04-11 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm |
US9495418B2 (en) | 2013-08-07 | 2016-11-15 | International Business Machines Corporation | Scalable acceleration of database query operations |
US9830354B2 (en) | 2013-08-07 | 2017-11-28 | International Business Machines Corporation | Accelerating multiple query processing operations |
US9251218B2 (en) | 2013-08-07 | 2016-02-02 | International Business Machines Corporation | Tunable hardware sort engine for performing composite sorting algorithms |
JP6290443B2 (ja) * | 2014-10-31 | 2018-03-07 | 株式会社東芝 | 通信制御装置、通信制御方法およびプログラム |
US10310813B2 (en) | 2014-12-29 | 2019-06-04 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm using an external memory |
US9367425B1 (en) | 2015-09-30 | 2016-06-14 | Semmle Limited | Disjoint-or trees for caching aggregated dependencies |
SE2251212A1 (en) * | 2015-11-25 | 2022-10-15 | Teamifier Inc | Apparatuses for graphically representing a reconfigured portion of a directed acyclic graph as a hierarchical tree structure |
CN105930514B (zh) * | 2016-05-16 | 2019-05-24 | 珠海格力电器股份有限公司 | 配套关系检索方法和系统 |
CN110889022A (zh) * | 2018-08-17 | 2020-03-17 | 迈普通信技术股份有限公司 | 数据查询方法、装置及电子设备 |
EP4014125A1 (en) * | 2020-02-26 | 2022-06-22 | Huawei Technologies Co., Ltd. | A device and a method for indexing snapshots of multiple file systems |
US11734243B2 (en) * | 2021-11-04 | 2023-08-22 | Google Llc | Sparse mapping of hierarchical subset |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS648448A (en) * | 1987-07-01 | 1989-01-12 | Hitachi Ltd | Expression system for tree structure data |
JPH02148173A (ja) * | 1988-11-30 | 1990-06-07 | Fuji Xerox Co Ltd | 木構造図作成システム |
JPH10240741A (ja) * | 1997-02-28 | 1998-09-11 | Nippon Telegr & Teleph Corp <Ntt> | 木構造型データの管理方法 |
JP2000348038A (ja) * | 1999-06-02 | 2000-12-15 | Fujitsu Ltd | 半構造データベースのためのデータ格納装置および方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301583B1 (en) * | 1997-05-16 | 2001-10-09 | Paul Zellweger | Method and apparatus for generating data files for an applet-based content menu using an open hierarchical data structure |
US6029170A (en) * | 1997-11-25 | 2000-02-22 | International Business Machines Corporation | Hybrid tree array data structure and method |
US6397214B1 (en) * | 1998-11-03 | 2002-05-28 | Computer Associates Think, Inc. | Method and apparatus for instantiating records with missing data |
US6381605B1 (en) * | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
JP2001167087A (ja) * | 1999-12-14 | 2001-06-22 | Fujitsu Ltd | 構造化文書検索装置,構造化文書検索方法,構造化文書検索用プログラム記録媒体および構造化文書検索用インデックス作成方法 |
US6981040B1 (en) * | 1999-12-28 | 2005-12-27 | Utopy, Inc. | Automatic, personalized online information and product services |
JP2001195406A (ja) | 2000-01-06 | 2001-07-19 | Media Fusion Co Ltd | データベース管理システム |
JP3513562B2 (ja) * | 2000-04-20 | 2004-03-31 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 形状解析システム、3次元形状モデルの差分検出システム、類似形状検索システム、形状解析方法及び記憶媒体 |
JP4165086B2 (ja) | 2002-02-25 | 2008-10-15 | 日本電気株式会社 | Xmlデータのrdbへの格納装置及び方法、rdbからのxmlデータの取得装置及び方法並びにプログラム |
JP4537391B2 (ja) * | 2004-03-16 | 2010-09-01 | 株式会社ターボデータラボラトリー | ツリー型データ構造を取り扱う方法、情報処理装置、及び、プログラム |
EP1764710A4 (en) * | 2004-06-03 | 2009-03-18 | Turbo Data Lab Inc | LAYOUT GENERATION PROCESS, INFORMATION PROCESSING DEVICE AND PROGRAM |
WO2006001241A1 (ja) * | 2004-06-23 | 2006-01-05 | Turbo Data Laboratories Inc. | ノードを挿入する方法、装置及びプログラム |
US20060053122A1 (en) * | 2004-09-09 | 2006-03-09 | Korn Philip R | Method for matching XML twigs using index structures and relational query processors |
CN100587673C (zh) * | 2004-10-01 | 2010-02-03 | 特博数据实验室公司 | 排列的生成方法以及排列生成装置 |
WO2007020850A1 (ja) * | 2005-08-12 | 2007-02-22 | Turbo Data Laboratories Inc. | 情報処理方法、情報処理装置および情報処理プログラム |
-
2006
- 2006-01-23 WO PCT/JP2006/300940 patent/WO2006080268A1/ja active Application Filing
- 2006-01-23 EP EP06712156A patent/EP1857945A1/en not_active Withdrawn
- 2006-01-23 KR KR1020077017189A patent/KR20070101288A/ko not_active Application Discontinuation
- 2006-01-23 US US11/814,705 patent/US7937399B2/en not_active Expired - Fee Related
- 2006-01-23 CA CA002593118A patent/CA2593118A1/en not_active Abandoned
- 2006-01-23 JP JP2007500493A patent/JP4653157B2/ja not_active Expired - Fee Related
- 2006-01-23 CN CNA200680003147XA patent/CN101128825A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS648448A (en) * | 1987-07-01 | 1989-01-12 | Hitachi Ltd | Expression system for tree structure data |
JPH02148173A (ja) * | 1988-11-30 | 1990-06-07 | Fuji Xerox Co Ltd | 木構造図作成システム |
JPH10240741A (ja) * | 1997-02-28 | 1998-09-11 | Nippon Telegr & Teleph Corp <Ntt> | 木構造型データの管理方法 |
JP2000348038A (ja) * | 1999-06-02 | 2000-12-15 | Fujitsu Ltd | 半構造データベースのためのデータ格納装置および方法 |
Non-Patent Citations (2)
Title |
---|
CSNG200500414011, 江田 毅晴, "XML木のための動的範囲ラベル付け手法", 情報処理学会論文誌, 20040615, 第45巻 No.SIG7(TOD22), 102−114ページ, JP, 社団法人情報処理学会 * |
JPN6010071018, 江田 毅晴, "XML木のための動的範囲ラベル付け手法", 情報処理学会論文誌, 20040615, 第45巻 No.SIG7(TOD22), 102−114ページ, JP, 社団法人情報処理学会 * |
Also Published As
Publication number | Publication date |
---|---|
US20090106194A1 (en) | 2009-04-23 |
WO2006080268A1 (ja) | 2006-08-03 |
JP4653157B2 (ja) | 2011-03-16 |
KR20070101288A (ko) | 2007-10-16 |
US7937399B2 (en) | 2011-05-03 |
CN101128825A (zh) | 2008-02-20 |
CA2593118A1 (en) | 2006-08-03 |
EP1857945A1 (en) | 2007-11-21 |
WO2006080268A9 (ja) | 2007-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4653157B2 (ja) | ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム | |
JP4681544B2 (ja) | 配列の生成方法、情報処理装置、及び、プログラム | |
JP4796970B2 (ja) | ツリーデータの検索・集計・ソート方法及びプログラム | |
JP4537391B2 (ja) | ツリー型データ構造を取り扱う方法、情報処理装置、及び、プログラム | |
JP4886693B2 (ja) | 情報処理方法、情報処理装置および情報処理プログラム | |
JP5407169B2 (ja) | クラスタリングプログラム、検索プログラム、クラスタリング方法、検索方法、クラスタリング装置および検索装置 | |
JP4712718B2 (ja) | 配列の生成方法、及び、配列生成プログラム | |
US9081849B2 (en) | System and method of multidimensional query results processing | |
Dalamagas et al. | A methodology for clustering XML documents by structure | |
JP3754253B2 (ja) | 構造化文書検索方法、構造化文書検索装置及び構造化文書検索システム | |
JP3842577B2 (ja) | 構造化文書検索方法および構造化文書検索装置およびプログラム | |
JP4681555B2 (ja) | ノード挿入方法、情報処理装置、および、ノード挿入プログラム | |
CN115982390A (zh) | 一种产业链构建和迭代扩充开发方法 | |
CA2468372C (en) | System and method of multidimensional query results processing | |
Navarro | Compact Data Structures Meet Databases (Invited Talk) | |
JP5191441B2 (ja) | インデクス構築方法及び装置及び情報検索方法及び装置及びプログラム | |
CN116776991A (zh) | 基于共享度和B+树结构的Rete推理方法 | |
Furmanek et al. | Realization of a system of efficient querying of hierarchical data transformed into a quasi-relational model | |
JP2006228070A (ja) | データの検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081203 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081203 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101214 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101216 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131224 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |