JP4681544B2 - 配列の生成方法、情報処理装置、及び、プログラム - Google Patents
配列の生成方法、情報処理装置、及び、プログラム Download PDFInfo
- Publication number
- JP4681544B2 JP4681544B2 JP2006514082A JP2006514082A JP4681544B2 JP 4681544 B2 JP4681544 B2 JP 4681544B2 JP 2006514082 A JP2006514082 A JP 2006514082A JP 2006514082 A JP2006514082 A JP 2006514082A JP 4681544 B2 JP4681544 B2 JP 4681544B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- array
- node identifier
- identifier
- nodes
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 72
- 230000010365 information processing Effects 0.000 title claims description 27
- 238000010606 normalization Methods 0.000 claims description 56
- 238000003491 array Methods 0.000 claims description 47
- 238000012217 deletion Methods 0.000 claims description 19
- 230000037430 deletion Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 53
- 238000012545 processing Methods 0.000 description 43
- 239000013256 coordination polymer Substances 0.000 description 33
- 230000014509 gene expression Effects 0.000 description 29
- 238000004364 calculation method Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 22
- 238000010276 construction Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000001174 ascending effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Description
ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によってノード間の親子関係が表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を設けるステップと、
前記第1の配列を参照して、前記第2の配列に含まれるノード識別子で特定される頂点ノードのそれぞれについて、当該頂点ノード、および、頂点ノードに属するノードが重複しないように、他の頂点ノードに含まれる頂点ノードのノード識別子を、前記第2の配列から削除するステップと、を備えたことを特徴とする頂点ノードのノード識別子の配列の生成方法により達成される。
前記第2の配列中のノード識別子の各々が、前記第1の配列を参照して、前記第2の配列中の他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除するステップを含む。
前記第1の配列と同一のサイズの第3の配列を生成するステップと、
前記第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子が示す位置の、第3の配列の値として格納し、その際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の値として、他のノード識別子が存在する場合、当該他のノード識別子を、第2の配列から削除するステップと、を含む。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップが、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除するステップと、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、ノード識別子を格納するとともに、前記第1の配列において、当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該ノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するステップと、を含む。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップが、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除するステップと、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、ノード識別子を格納するとともに、前記第1の配列において、当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該ノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するステップと、を含むように構成されていても良い。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップが、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するステップと、を含む。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップが、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するステップと、を含むように構成されていても良い。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップが、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、当該あるノード識別子を有するノードの子孫のノードを特定し、特定された子孫のノードのノード識別子が示す位置の第3の配列の値が、前記第2の配列中に存在する場合には、前記第2の配列から当該値を削除するステップと、を含む。
それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成するステップと、
それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納するステップと、
前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が前記新たな配列に相当する第5の配列に存在しない場合に、当該第5の配列の値として格納するステップと、を備えたことを特徴とする配列の生成方法によっても達成される。
ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によってノード間の親子関係が表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した複数の第2の配列であって、それぞれの第2の配列において、当該頂点ノード、および、頂点ノードに属するノードが重複しないような第2の配列を設けるステップと、
それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成するステップと、
それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納するステップと、
前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が第5の配列に存在しない場合に、当該第5の配列の値として格納するステップと、を備えたことを特徴とする配列の生成方法によっても達成される。
ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によってノード間の親子関係が表現された、ツリー型データ構造のデータを備えたコンピュータにおいて、
それぞれが、1以上の特定のノードおよび当該特定のノードにそれぞれ含まれるノード群を、当該特定のノードを頂点ノードとして、当該頂点ノードのノード識別子を含む複数の第2の配列であって、それぞれの第2の配列において、当該頂点ノード、および、頂点ノードに属するノードが重複しない第2の配列を設けるステップと、
前記複数の第2の配列の値の全てを含む第6の配列を生成するステップと、
前記第6の配列に含まれるノード識別子で特定される頂点ノードのそれぞれについて、当該頂点ノード、および、頂点ノードに属するノードが重複しないように、他の頂点ノードに含まれる頂点ノードのノード識別子を、前記第6の配列から削除するステップと、を備えたことを特徴とする配列の生成方法によっても達成される。
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列と、
前記第1の配列を参照して、前記第2の配列に含まれるノード識別子で特定される頂点ノードのそれぞれについて、当該頂点ノード、および、頂点ノードに属するノードが重複しないように、他の頂点ノードに含まれる頂点ノードのノード識別子を、前記第2の配列から削除する、配列の値の正規化手段と、を備えたことを特徴とする情報処理装置によっても達成される。
前記第2の配列中のノード識別子の各々が、前記第1の配列を参照して、前記第2の配列中の他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除するように構成されている。
前記第1の配列と同一のサイズの第3の配列を生成し、かつ、
前記第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子が示す位置の第3の配列の値として格納し、その際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の他の値として、他のノード識別子が存在する場合、当該他のノード識別子を、第2の配列から削除するように構成されている。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記正規化手段が、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除し、かつ、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、ノード識別子を格納するとともに、前記第1の配列において、当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該ノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するように構成されている。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記正規化手段が、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除し、かつ、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、ノード識別子を格納するとともに、前記第1の配列において、当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該ノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するように構成されていても良い。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記正規化手段が、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納し、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除し、かつ、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するように構成されている。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記正規化手段が、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納し、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除し、かつ、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するように構成されていても良い。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記正規化手段が、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納し、かつ、
あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、当該あるノード識別子を有するノードの子孫のノードを特定し、特定された子孫のノードのノード識別子が示す位置の第3の配列の値が、前記第2の配列中に存在する場合には、前記第2の配列から当該値を削除するように構成されている。
前記配列生成手段が、
それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成し、
それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納し、かつ、
前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が前記新たな配列に相当する第5の配列に存在しない場合に、当該第5の配列の値として格納するように構成されている。
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した複数の第2の配列であって、それぞれの第2の配列において、当該頂点ノード、および、頂点ノードに属するノードが重複しないような第2の配列と、
複数の第2の配列において、第2の配列の値のそれぞれにより表わされる複数のツリー群の何れにも属するツリー群を表わすための、当該ツリー群の頂点ノードのノード識別子からなる新たな配列を生成する配列生成手段と、を備え、
前記配列生成手段が、
それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成し、
それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納し、かつ、
前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が第5の配列の値に存在しない場合に、当該第5の配列として格納するように構成されたことを特徴とする情報処理装置によっても達成される。
それぞれが、1以上の特定のノードおよび当該特定のノードにそれぞれ含まれるノード群を、当該特定のノードを頂点ノードとして、当該頂点ノードのノード識別子を含む複数の第2の配列であって、それぞれの第2の配列において、当該頂点ノード、および、頂点ノードに属するノードが重複しない第2の配列と、
複数の第2の配列において、第2の配列の値のそれぞれにより表わされる複数のツリー群の何れか1つに属するツリー群を表わすための、当該ツリー群の頂点ノードのノード識別子からなる新たな配列を生成する第2の配列生成手段と、を備え、
前記第2の配列生成手段が、
前記複数の第2の配列の値の全てを含む第6の配列を生成し、かつ、
前記第6の配列に含まれるノード識別子で特定される頂点ノードのそれぞれについて、当該頂点ノード、および、頂点ノードに属するノードが重複しないように、他の頂点ノードに含まれる頂点ノードのノード識別子を、前記第6の配列から削除するように構成されたことを特徴とする情報処理装置によっても達成される。
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を設けるステップと、
前記第1の配列を参照して、前記第2の配列に含まれるノード識別子で特定される頂点ノードのそれぞれについて、当該頂点ノード、および、頂点ノードに属するノードが重複しないように、他の頂点ノードに含まれる頂点ノードのノード識別子を、前記第2の配列から削除するステップと、を前記コンピュータに実行させることを特徴とする頂点ノードのノード識別子の配列を生成するコンピュータプログラムによっても達成される。
前記第2の配列中のノード識別子の各々が、前記第1の配列を参照して、前記第2の配列中の他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除するステップを、前記コンピュータに実行させる。
前記第1の配列と同一のサイズの第3の配列を生成するステップと、
前記第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子が示す位置の、第3の配列の値として格納し、その際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の値として、他のノード識別子が存在する場合、当該他のノード識別子を、第2の配列から削除するステップと、を前記コンピュータに実行させる。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除するステップと、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、ノード識別子を格納するとともに、前記第1の配列において、当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該ノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するステップと、を前記コンピュータに実行させる。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除するステップと、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、ノード識別子を格納するとともに、前記第1の配列において、当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該ノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するステップと、を前記コンピュータに実行させても良い。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するステップと、を前記コンピュータに実行させる。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するステップと、を前記コンピュータに実行させても良い。
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、当該あるノード識別子を有するノードの子孫のノードを特定し、特定された子孫のノードのノード識別子が示す位置の第3の配列の値が、前記第2の配列中に存在する場合には、前記第2の配列から当該値を削除するステップと、を前記コンピュータに実行させる。
それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成するステップと、
それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納するステップと、
前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が前記新たな配列に相当する第5の配列に存在しない場合に、当該第5の配列の値として格納するステップと、を前記コンピュータに実行させることを特徴とするプログラムによっても達成される。
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した複数の第2の配列であって、それぞれの第2の配列において、当該頂点ノード、および、頂点ノードに属するノードが重複しないような第2の配列を設けるステップと、
それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成するステップと、
それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納するステップと、
前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が第5の配列に存在しない場合に、当該第5の配列の値として格納するステップと、を前記コンピュータに実行させることを特徴とするプログラムによっても達成される。
それぞれが、1以上の特定のノードおよび当該特定のノードにそれぞれ含まれるノード群を、当該特定のノードを頂点ノードとして、当該頂点ノードのノード識別子を含む複数の第2の配列であって、それぞれの第2の配列において、当該頂点ノード、および、頂点ノードに属するノードが重複しない第2の配列を設けるステップと、
前記複数の第2の配列の値の全てを含む第6の配列を生成するステップと、
前記第6の配列に含まれるノード識別子で特定される頂点ノードのそれぞれについて、当該頂点ノード、および、頂点ノードに属するノードが重複しないように、他の頂点ノードに含まれる頂点ノードのノード識別子を、前記第6の配列から削除するステップと、を前記コンピュータに実行させることを特徴とするプログラムによっても達成される。
図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、Bは、それぞれ、ツリー形式データの一例であるPOSデータの説明図であり、図2Aは、このツリー形式データのデータ構造(即ち、トポロジー)及びデータ値を視覚的に表現した一例であり、図2Bは、同じツリー形式データをXML形式で表現した一例である。図2A、Bに示されるようにツリー型データ構造は、ルート・ノード(本例では、POSデータ)から始めて、各ノードで枝分かれしてリーフ・ノード(端点)に至るノードとアークの組み合わせによって表現される。各ノードの実体的な値、例えば、店名ノードの値="フランス店"の格納場所は、店名ノードに関連したポインタで指定される。
図3A〜Cに示す例では、アークリストは、親ノードに子ノードを対応付ける「親→子」関係に基づいて記述されている。そのため、一つの親ノード、例えば、ルート・ノード0には、3個の子ノード10、60及び80が存在するため、アークリストのFrom−IDには、同じノードIDの0が3回出現している。つまり、親ノードを特定しても子ノードを特定することができないので、アークリストは、要素From−IDの配列と要素To−IDの配列により構成される。アークリストを使用する場合、あるノードは、From−IDの配列と、To−IDの配列の両方の配列に出現する。
好ましい一実施例によれば、ノード定義ステップはノード識別子として数値を使用し、より好ましくは、連続する整数を使用し、更に好ましくは、0又は1からの整数連番を使用する。これにより、ノード識別子から、そのノードに対応する親ノードのノード識別子が格納されているアドレスを簡単に取得することができるので、子ノードのノード識別子から親ノードのノード識別子を引く処理を高速化することができる。
本発明の一実施例によれば、図6A〜Cに示されるような深さ優先に基づくツリー型データ構造は、図1に示されたコンピュータシステム10に、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数を付与するノード定義ステップと、
ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成される配列を前記記憶装置に格納する親子関係定義ステップと、
を実行させることによって、記憶装置上に構築される。これにより、ノードは深さ優先で連続整数が付与され、ノード間の親子関係は「子→親」関係の配列によって表現される。
最初にルート・ノードに番号を付与するステップ801と、
既に番号が付与されたあるノードに唯一の子ノードが存在する場合には、当該子ノードに当該あるノードに付与された前記番号の次の番号を付与するステップ802と、
既に番号が付与されたあるノードに複数の子ノードが存在する場合には、当該複数の子ノードの間の兄弟関係に従って、弟ノードは直上の兄ノードの全ての子孫ノードに番号が付与された後に次の番号が付与されるように、一番上の兄ノードから一番下の弟ノードまで番号を付与するステップ803と、
を実行させる。これにより、深さ優先モードで同一の親ノードから派生した複数の子ノードの間に兄弟関係が定義される。
(1)ノードの番号が配列P→Cの最大の添字(=11)と一致する場合、このノードに属する子ノードは存在しない。したがって、処理は継続されない。
(2)同図に太字で表された親ノードの番号からAggr値を求める。このAggr値は、配列P→Cの開始点を表す。
(3)太字で表された親ノード番号+1に対応するAggr値を求める。このAggr値−1が配列P→Cの終了点である。
本発明の一実施例によれば、図7A〜Cに示されるような幅優先に基づくツリー型データ構造は、図1に示されたコンピュータシステム10に、
子ノードよりも同じ世代のノードを優先して、ルート・ノードを含むノードに固有の連続する整数を付与するノード定義ステップと、
前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成される配列を前記記憶装置に格納する親子関係定義ステップと、
を実行させることによって、記憶装置上に構築される。これにより、ノードは幅優先モードで連続整数が付与され、ノード間の親子関係は「子→親」関係の配列によって表現される。
各ノードが前記ルート・ノードから何世代目のノードであるか、及び、各世代に含まれるノード数を算出するステップ1101と、
最初に前記ルート・ノードに番号を付与するステップ1102と、
ある世代に含まれる全てのノードに番号が付与されたならば、当該ある世代の次の世代にノードが存在しなくなるまで、当該次の世代に含まれる全てのノードに対して、親ノードが異なる場合には、当該親ノードに番号が付与された順番に当該ノードに番号を付与し、当該親ノードが同一である場合には、当該親ノードから派生した複数の子ノードの間に兄弟関係を定義し、一番上の兄ノードから一番下の弟ノードまで直前に付与された番号の次の番号から連続的に変化する固有の整数を順に付与するステップ1013と、
を実行させる。これにより、幅優先モードで同一の親ノードから派生した複数の子ノードの間に兄弟関係が定義される。
(1)ノードの番号が配列P→Cの最大の添字(=11)と一致する場合、このノードに属する子ノードは存在しない。したがって、処理は継続されない。
(2)同図に太字で表された親ノードの番号からAggr値を求める。このAggr値は、配列P→Cの開始点を表す。
(3)太字で表された親ノード番号+1に対応するAggr値を求める。このAggr値−1が配列P→Cの終了点である。
上述したツリーにおいて、ルート・ノードに最も近いノードの値で、当該ノードおよびそのノードから枝分かれしてリーフ・ノード(端点)に至るまでの全てのノードを表現することを考える。ここで、あるノードおよびそのノードから枝分かれしてリーフ・ノードに至るまでのノード群を、部分ツリーと称する。また、上記ノード(ルート・ノード)に最も近いノードを頂点ノードと称する。
上記対応は、頂点ノード「2」を展開し、頂点ノード「2」に含まれるノードのノード識別子が{2,6}であり、かつ、頂点ノード「3」を展開し、頂点ノード「3」に含まれるノードのノード識別子が{3,7,10,11}であることを示している。
この対応においては、ノード識別子{7,10,11}が重複して出現している。したがって、頂点ノードリスト[3,7]にて表現される部分ツリー群は、非正規部分ツリー群である。
この頂点ノードリストを展開したノード識別子のリストであって、同一のノード識別子が重複しないような頂点ノードリストは、[2,3]である。したがって、本明細書において、ノードリストの正規化演算をNORMと称する。したがって、上記例においては、
NORM[2,3,7]=[2,3]と表す。
正規化は、後述する集合演算を効率的に実施する上で重要になる。正規化された部分ツリー群では、どのノードも高々1つの頂点ノードに属するのみであるため、各ノードが所属する頂点ノードのリストは、高々頂点ノードの数に等しいサイズの配列で記述することができる。このため、正規化された状態では、論理積や論理和に代表される集合演算を効率的に実施することができる。
以下、ある頂点ノードリストの正規化演算の処理について説明する。図15は、本実施の形態にかかるコンピュータシステム10おいて実行される正規化演算の処理を示すフローチャートである。図15に示すように、システム10は、「子→親」表現に基づく親子関係の配列(以下、「C−P配列」と称する。)と同じサイズのフラグ配列を作成し(ステップ1501)、当該フラグ配列中に初期値を格納する(ステップ1502)。初期値は、ノード識別子の値として取りえない値(この例では「−1」)を採用すればよい。また、システム10は、頂点ノードリストのポインタ位置を初期化する(ステップ1503)。図16Aは、初期状態のC−P配列およびフラグ配列を示し、図16Bは、頂点ノードリストを示す。頂点ノードリストに付された矢印は、ポインタ位置を示す。
NORM[1,7,3,4]=[1,3]となる。
次に、他の実施の形態にかかる正規化演算について説明する。第1の手法においては、頂点ノードリストの要素である頂点ノードにポインタを配置し、各頂点ノードの値に基づいて、C−P配列を検索している。この手法は、頂点ノードリストのサイズが、C−P配列のサイズより十分に小さいときに有効である。これに対して以下に述べる第2の手法は、頂点ノードリストが比較的大きい場合に有効である。図22は、他の実施の形態にかかる正規化演算の処理を示すフローチャートである。図22に示すように、まず、システム10は、C−P配列と同じサイズの所属ノード配列を生成し、初期値を格納する(ステップ2201)。図23Aは、図14A、Bに示す例において、頂点ノードリスト[1,4,7,3,4]を正規化するために、初期値が格納された所属ノード配列が生成された状態を示す。
次に、さらに他の実施の形態にかかる正規化演算について説明する。第3の手法も、第2の手法と同様に、頂点ノードリストのサイズが比較的大きいときに有効である。第3の手法においては、深さ優先のツリー型データ構造から作成された「子→親」表現に基づく親子関係の配列(C−P配列)が利用される(図30A、B参照)。
本実施の形態にかかる正規部分ツリー群の間では、論理積(AND)や論理輪(OR)、否定(NOT)、減算(SUB)、排他的論理和(XOR)を定義することができる。このような演算の結果も正規部分ツリー群にて表わす。以下、これら演算について説明する。以下、図14A、Bに示す例において、それぞれの演算について説明する。
(1)論理和(OR)
たとえば、正規部分ツリー群[2]、[3]の論理和を考える。
正規部分ツリー群[3]:{3,7,10,11}
これらの論理和[2]OR[3]=[2,3]
([2,3]:{2,6},{3,7,10,11})
となる。
正規部分ツリー群[7]:{7,10,11}
したがって、これらの論理和[3]OR[7]=[3]となる。
(2)論理積(AND)
正規部分ツリー群[2,3]、[7]の論理積を考える。
正規部分ツリー群[7]:[7,10,11]
したがって、これらの論理積[2,3]AND[7]=[7]となる。
まず、論理積演算の原理について説明する。図37Aに示すように、2つの正規部分ツリー群3701および3702を考える。2つの正規部分ツリー群は、以下に述べるような関係を有する。
論理和演算は、以下のように記述することができる。
=NORM[a1,a2,・・・,an,b1,b2,・・・,bn]
つまり、上述した正規化の手法を用いれば、論理和演算の結果を示す頂点ノードリストを得ることができる。
上述した論理和演算および論理積演算を利用して、正規部分ツリー群の減算は、以下のように定義することができる。なお、以下において、減算は「−(マイナス)」で表わす。
(A−B)OR(C−D)=(A OR C)AND(B AND D) (式2)
A−B−C=A−(B OR C) (式3)
つまり、ブール代数と同じ演算規則が成立する。
また、正規部分ツリー群の否定(NOT)も、除外頂点ノードリストとして表わすことができる。つまり、正規部分ツリー群Aの否定である「NOT A」(Aは正規部分ツリー群)は、頂点ノードリストにリストされた頂点ノードおよびその子孫のノードを除いた全てのノードである。
図41は、本発明の一実施例にかかるツリー型データ構造を構築し、かつ、正規化演算および集合演算を実行する情報処理装置4100の機能ブロックダイヤグラムである。この情報処理装置4100は、実際には、図1に示すコンピュータシステム10に必要なプログラムをインストールすることにより実現される。
12 CPU
14 RAM
16 ROM
18 固定記憶装置
20 CD−ROMドライバ
22 I/F
24 入力装置
26 表示装置
4100 情報処理装置
4101 記憶部
4102 ノード定義部
4103 親子関係定義部
4104 正規化演算部
4105 集合演算部
Claims (18)
- ノードに固有のノード識別子が付与され、
ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によってノード間の親子関係が表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにおいて、
前記コンピュータのCPUが、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を設けるステップと、
前記CPUが、前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップを含み、
前記削除ステップは、
前記CPUが、前記第1の配列と同一のサイズの第3の配列を生成するステップと、
前記CPUが、前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子を当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子によって示される第3の配列の位置にその値として格納する際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の値として、他のノード識別子が存在する場合、当該ノード識別子と当該他のノード識別子のうち子孫に相当する方のノード識別子を、第2の配列から削除するステップとを含む、頂点ノードのノード識別子の配列の生成方法であって、
子ノードよりも同じ世代のノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップは、
前記CPUが、前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除するステップと、
前記CPUが、前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、当該ノード識別子を格納するとともに、前記第1の配列を参照して得られる当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該子孫のノードのノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するステップと、
を含む、頂点ノードのノード識別子の配列の生成方法。 - ノードに固有のノード識別子が付与され、
ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によってノード間の親子関係が表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにおいて、
前記コンピュータのCPUが、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を設けるステップと、
前記CPUが、前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップを含み、
前記削除ステップは、
前記CPUが、前記第1の配列と同一のサイズの第3の配列を生成するステップと、
前記CPUが、前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子を当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子によって示される第3の配列の位置にその値として格納する際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の値として、他のノード識別子が存在する場合、当該ノード識別子と当該他のノード識別子のうち子孫に相当する方のノード識別子を、第2の配列から削除するステップとを含む、頂点ノードのノード識別子の配列の生成方法であって、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップは、
前記CPUが、前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除するステップと、
前記CPUが、前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、当該ノード識別子を格納するとともに、前記第1の配列を参照して得られる当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該子孫ノードのノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するステップと、
を含む、頂点ノードのノード識別子の配列の生成方法。 - ノードに固有のノード識別子が付与され、
ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によってノード間の親子関係が表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにおいて、
前記コンピュータのCPUが、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を設けるステップと、
前記CPUが、前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップを含み、
前記削除ステップは、
前記CPUが、前記第1の配列と同一のサイズの第3の配列を生成するステップと、
前記CPUが、前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記CPUが、前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除するステップとを含む、頂点ノードのノード識別子の配列の生成方法であって、
子ノードよりも同じ世代のノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップは、
前記CPUが、前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除するステップと、
前記CPUが、前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するステップと、
を含む、頂点ノードのノード識別子の配列の生成方法。 - ノードに固有のノード識別子が付与され、
ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によってノード間の親子関係が表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにおいて、
前記コンピュータのCPUが、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を設けるステップと、
前記CPUが、前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップを含み、
前記削除ステップは、
前記CPUが、前記第1の配列と同一のサイズの第3の配列を生成するステップと、
前記CPUが、前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記CPUが、前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除するステップとを含む、頂点ノードのノード識別子の配列の生成方法であって、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップは、
前記CPUが、前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除するステップと、
前記CPUが、前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するステップと、
を含む、頂点ノードのノード識別子の配列の生成方法。 - ノードに固有のノード識別子が付与され、
ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によってノード間の親子関係が表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにおいて、
前記コンピュータのCPUが、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を設けるステップと、
前記CPUが、前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップを含み、
前記削除ステップは、
前記CPUが、前記第1の配列と同一のサイズの第3の配列を生成するステップと、
前記CPUが、前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記CPUが、前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除するステップとを含む、頂点ノードのノード識別子の配列の生成方法であって、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップは、
前記CPUが、あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記第1の配列によって表現されたノード間の親子関係を参照して、当該あるノード識別子を有するノードの子孫のノードを特定し、特定された子孫のノードのノード識別子が示す位置の第3の配列の値が、前記第2の配列中に存在する場合には、前記第2の配列から当該値を削除するステップと、
を含む、頂点ノードのノード識別子の配列の生成方法。 - 前記コンピュータが、請求項1ないし5の何れか一項に記載の方法により生成された複数の第2の配列に関して、第2の配列の値のそれぞれにより表わされる複数のツリー群の何れにも属するツリー群を表わすために、当該ツリー群の頂点ノードのノード識別子からなる新たな配列を生成する方法であって、
前記CPUが、それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成するステップと、
前記CPUが、それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納するステップと、
前記CPUが、前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が前記新たな配列に相当する第5の配列に存在しない場合に、当該第5の配列の値として格納するステップと、を備える配列の生成方法。 - ノードに固有のノード識別子が付与されたツリー型データ構造における、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列、および、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を格納する記憶装置と、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する正規化手段と、を備え、
前記正規化手段は、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納し、かつ、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子を当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子によって示される第3の配列の位置にその値として格納する際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の他の値として、他のノード識別子が存在する場合、当該ノード識別子と当該他のノード識別子のうち子孫に相当する方のノード識別子を、第2の配列から削除するように構成されている、情報処理装置であって、
子ノードよりも同じ世代のノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記正規化手段が、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除し、かつ、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、当該ノード識別子を格納するとともに、前記第1の配列を参照して得られる当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該子孫のノードのノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するように構成されている、情報処理装置。 - ノードに固有のノード識別子が付与されたツリー型データ構造における、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列、および、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を格納する記憶装置と、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する正規化手段と、を備え、
前記正規化手段は、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納し、かつ、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子を当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子によって示される第3の配列の位置にその値として格納する際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の他の値として、他のノード識別子が存在する場合、当該ノード識別子と当該他のノード識別子のうち子孫に相当する方のノード識別子を、第2の配列から削除するように構成されている、情報処理装置であって、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記正規化手段が、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除し、かつ、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、当該ノード識別子を格納するとともに、前記第1の配列を参照して得られる当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該子孫のノードのノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するように構成されている、情報処理装置。 - ノードに固有のノード識別子が付与されたツリー型データ構造における、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列、および、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を格納する記憶装置と、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する正規化手段と、を備え、
前記正規化手段は、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納する手段と、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納する手段と、
前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除する削除手段と、を含む情報処理装置であって、
子ノードよりも同じ世代のノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記削除手段が、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除し、かつ、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するように構成されている、情報処理装置。 - ノードに固有のノード識別子が付与されたツリー型データ構造における、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列、および、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を格納する記憶装置と、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する正規化手段と、を備え、
前記正規化手段は、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納する手段と、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納する手段と、
前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除する削除手段と、を含む情報処理装置であって、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記削除手段が、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除し、かつ、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するように構成されている、情報処理装置。 - ノードに固有のノード識別子が付与されたツリー型データ構造における、ノード間の親子関係を表現するための、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列、および、それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を格納する記憶装置と、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子又は当該他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する正規化手段と、を備え、
前記正規化手段は、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納する手段と、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納する手段と、
前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除する削除手段と、を含む情報処理装置であって、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記削除手段が、
あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記第1の配列によって表現されたノード間の親子関係を参照して、当該あるノード識別子を有するノードの子孫のノードを特定し、特定された子孫のノードのノード識別子が示す位置の第3の配列の値が、前記第2の配列中に存在する場合には、前記第2の配列から当該値を削除するように構成されている、情報処理装置。 - さらに、複数の第2の配列において、第2の配列の値のそれぞれにより表わされる複数のツリー群の何れにも属するツリー群を表わすための、当該ツリー群の頂点ノードのノード識別子からなる新たな配列を生成する配列生成手段を備え、
前記配列生成手段が、
それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成し、前記記憶装置に格納し、
それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納し、かつ、
前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が前記新たな配列に相当する前記記憶装置に格納されている第5の配列に存在しない場合に、当該第5の配列の値として格納するように構成されている、請求項11に記載の情報処理装置。 - ノードに固有のノード識別子が付与され、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によって表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにより読み出し可能なコンピュータプログラムであって、
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を前記記憶装置に設けるステップと、
前記第1の配列によって表現されたノード間の親子関係を参照して、
前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップと、を前記コンピュータに実行させ、
前記削除ステップにおいて、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納するステップと、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子を当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子によって示される第3の配列の位置にその値として格納する際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の値として、他のノード識別子が存在する場合、当該ノード識別子と当該他のノード識別子のうち子孫に相当する方のノード識別子を、第2の配列から削除するステップと、を前記コンピュータに実行させ、
子ノードよりも同じ世代のノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除するステップと、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、当該ノード識別子を格納するとともに、前記第1の配列を参照して得られる当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該ノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するステップと、を前記コンピュータに実行させる、頂点ノードのノード識別子の配列を生成するコンピュータプログラム。 - ノードに固有のノード識別子が付与され、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によって表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにより読み出し可能なコンピュータプログラムであって、
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を前記記憶装置に設けるステップと、
前記第1の配列によって表現されたノード間の親子関係を参照して、
前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップと、を前記コンピュータに実行させ、
前記削除ステップにおいて、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納するステップと、
前記第1の配列によって表現されたノード間の親子関係を参照して、前記第2の配列中のノード識別子を当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子によって示される第3の配列の位置にその値として格納する際に、当該ノード識別子を有するノードとその子孫のノードのノード識別子が示す位置の第3の配列の値として、他のノード識別子が存在する場合、当該ノード識別子と当該他のノード識別子のうち子孫に相当する方のノード識別子を、第2の配列から削除するステップと、を前記コンピュータに実行させ、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第2の配列中のノード識別子を参照して当該ノード識別子が示す位置の第3の配列の値が初期値でない場合には、当該ノード識別子を、前記第2の配列から削除するステップと、
前記ノード識別子が示す位置の第3の配列の値が初期値である場合に、当該第3の配列の値として、当該ノード識別子を格納するとともに、前記第1の配列を参照して得られる当該ノード識別子を有するノードの、子孫のノードのノード識別子について、当該ノード識別子が示す位置の第3の配列の値が初期値ではない場合には、当該子孫のノードのノード識別子を第2の配列から削除するステップと、を前記コンピュータに実行させる、頂点ノードのノード識別子の配列を生成するコンピュータプログラム。 - ノードに固有のノード識別子が付与され、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によって表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにより読み出し可能なコンピュータプログラムであって、
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を前記記憶装置に設けるステップと、
前記第1の配列によって表現されたノード間の親子関係を参照して、
前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップと、を前記コンピュータに実行させ、
前記削除ステップにおいて、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納するステップと、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除するステップと、を前記コンピュータに実行させ、
子ノードよりも同じ世代のノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するステップと、を前記コンピュータに実行させる、頂点ノードのノード識別子の配列を生成するコンピュータプログラム。 - ノードに固有のノード識別子が付与され、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によって表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにより読み出し可能なコンピュータプログラムであって、
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を前記記憶装置に設けるステップと、
前記第1の配列によって表現されたノード間の親子関係を参照して、
前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップと、を前記コンピュータに実行させ、
前記削除ステップにおいて、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納するステップと、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除するステップと、を前記コンピュータに実行させ、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するとともに、当該あるノード識別子を、前記第2の配列から削除するステップと、
前記第1の配列を参照して、あるノード識別子のノードの、親ノードのノード識別子が示す位置の第3の配列の値が初期値でなく、かつ、当該あるノード識別子が示す位置の第3の配列の値が初期値である場合には、当該あるノード識別子が示す位置の第3の配列の値として、前記親ノードのノード識別子が示す位置の第3の配列の値を格納するステップと、を前記コンピュータに実行させる、頂点ノードのノード識別子の配列を生成するコンピュータプログラム。 - ノードに固有のノード識別子が付与され、ルート・ノード以外のノードである非ルート・ノードのノード識別子に関連付けられた親ノードのノード識別子からなる第1の配列によって表現された、ツリー型データ構造のデータを格納する記憶装置を備えたコンピュータにより読み出し可能なコンピュータプログラムであって、
それぞれが特定のノードおよびその子孫のノードを含む1以上のノード群を表わすために、当該特定のノードを頂点ノードとして、そのノード識別子を格納した第2の配列を前記記憶装置に設けるステップと、
前記第1の配列によって表現されたノード間の親子関係を参照して、
前記第2の配列中のノード識別子の各々が前記第2の配列中の他のノード識別子で特定されるノードの子孫のノードのノード識別子である場合に、当該ノード識別子を、前記第2の配列から削除する削除ステップと、を前記コンピュータに実行させ、
前記削除ステップにおいて、
前記第1の配列と同一のサイズの第3の配列を生成し、前記記憶装置に格納するステップと、
前記第2の配列中のノード識別子を参照して、当該ノード識別子のそれぞれが示す位置の第3の配列の値として、当該ノード識別子を格納するステップと、
前記第3の配列中のノード識別子を参照して、当該ノード識別子が初期値ではない場合、当該ノード識別子によって特定されるノードの祖先に相当するノードのノード識別子が前記第3の配列に格納されているならば、当該ノード識別子を、第2の配列から削除するステップと、を前記コンピュータに実行させ、
同じ世代のノードよりも子ノードを優先して、ルート・ノードを含むノードに固有の連続する整数が付与され、
前記第1の配列が、前記ルート・ノード以外のノードである非ルート・ノードの各々に付与された整数の順に、前記非ルート・ノードの各々の親ノードに付与された整数を並べることにより形成され、
前記第2の配列から削除するステップにおいて、
あるノード識別子が示す位置の第3の配列の値が初期値でない場合に、前記第1の配列によって表現されたノード間の親子関係を参照して、当該あるノード識別子を有するノードの子孫のノードを特定し、特定された子孫のノードのノード識別子が示す位置の第3の配列の値が、前記第2の配列中に存在する場合には、前記第2の配列から当該値を削除するステップと、を前記コンピュータに実行させる、頂点ノードのノード識別子の配列を生成するコンピュータプログラム。 - それぞれが、請求項13ないし17の何れか一項に記載されたコンピュータプログラムのステップをコンピュータに実行させたことにより生成された複数の第2の配列において、第2の配列の値のそれぞれにより表わされる複数のツリー群の何れにも属するツリー群を表わすために、当該ツリー群の頂点ノードのノード識別子からなる新たな配列を生成し、前記記憶装置に格納する、前記コンピュータにより読み出し可能なコンピュータプログラムであって、
それぞれが、前記第1の配列と同一のサイズの複数の第4の配列を生成し、前記記憶装置に格納するステップと、
それぞれの第2の配列中のノード識別子を、前記第1の配列を参照して、当該ノード識別子で特定される頂点ノードとその子孫のノードのノード識別子に対応する位置の、関連する第4の配列の値として格納するステップと、
前記複数の第4の配列中、対応する位置のノード識別子の全てが初期値でない場合に、当該対応する位置のノード識別子を比較して、子孫のノードのノード識別子であって、関連する第2の配列に存在するノード識別子を、当該ノード識別子が前記新たな配列に相当する前記記憶装置に格納されている第5の配列に存在しない場合に、当該第5の配列の値として格納するステップと、を前記コンピュータに実行させるコンピュータプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004165364 | 2004-06-03 | ||
JP2004165364 | 2004-06-03 | ||
PCT/JP2005/009755 WO2005119516A1 (ja) | 2004-06-03 | 2005-05-27 | 配列の生成方法、情報処理装置、及び、プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2005119516A1 JPWO2005119516A1 (ja) | 2008-04-03 |
JP4681544B2 true JP4681544B2 (ja) | 2011-05-11 |
Family
ID=35463068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006514082A Expired - Fee Related JP4681544B2 (ja) | 2004-06-03 | 2005-05-27 | 配列の生成方法、情報処理装置、及び、プログラム |
Country Status (7)
Country | Link |
---|---|
US (1) | US7962494B2 (ja) |
EP (1) | EP1764710A4 (ja) |
JP (1) | JP4681544B2 (ja) |
KR (1) | KR101095377B1 (ja) |
CN (1) | CN101180623A (ja) |
CA (1) | CA2567947A1 (ja) |
WO (1) | WO2005119516A1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8037102B2 (en) | 2004-02-09 | 2011-10-11 | Robert T. and Virginia T. Jenkins | Manipulating sets of hierarchical data |
US20090019067A1 (en) * | 2004-06-23 | 2009-01-15 | Turbo Data Laboratories Inc. | Method, apparatus, and program for inserting node |
US7620632B2 (en) * | 2004-06-30 | 2009-11-17 | Skyler Technology, Inc. | Method and/or system for performing tree matching |
US7801923B2 (en) | 2004-10-29 | 2010-09-21 | Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust | Method and/or system for tagging trees |
US7627591B2 (en) | 2004-10-29 | 2009-12-01 | Skyler Technology, Inc. | Method and/or system for manipulating tree expressions |
US7630995B2 (en) | 2004-11-30 | 2009-12-08 | Skyler Technology, Inc. | Method and/or system for transmitting and/or receiving data |
US7636727B2 (en) | 2004-12-06 | 2009-12-22 | Skyler Technology, Inc. | Enumeration of trees from finite number of nodes |
US8316059B1 (en) | 2004-12-30 | 2012-11-20 | Robert T. and Virginia T. Jenkins | Enumeration of rooted partial subtrees |
KR20070101288A (ko) * | 2005-01-25 | 2007-10-16 | 가부시키가이샤 터보 데이터 라보라토리 | 트리의 검색, 집계, 소트 방법, 정보 처리 장치, 및 트리의검색, 집계, 소트 프로그램 |
US8615530B1 (en) | 2005-01-31 | 2013-12-24 | Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust | Method and/or system for tree transformation |
US7681177B2 (en) | 2005-02-28 | 2010-03-16 | Skyler Technology, Inc. | Method and/or system for transforming between trees and strings |
US8356040B2 (en) | 2005-03-31 | 2013-01-15 | Robert T. and Virginia T. Jenkins | Method and/or system for transforming between trees and arrays |
US7899821B1 (en) | 2005-04-29 | 2011-03-01 | Karl Schiffmann | Manipulation and/or analysis of hierarchical data |
JP5347965B2 (ja) * | 2007-09-07 | 2013-11-20 | 日本電気株式会社 | Xmlデータ処理システム、該システムに用いられるデータ処理方法及びxmlデータ処理制御プログラム |
US9348884B2 (en) * | 2008-05-28 | 2016-05-24 | International Business Machines Corporation | Methods and apparatus for reuse optimization of a data storage process using an ordered structure |
US8341183B2 (en) * | 2008-10-10 | 2012-12-25 | International Business Machines Corporation | Representing the allocation of integers |
CN102841891B (zh) * | 2011-06-21 | 2017-02-15 | 金蝶软件(中国)有限公司 | 一种树状结构节点的排序方法、装置及查询系统 |
JP5372131B2 (ja) * | 2011-12-27 | 2013-12-18 | 株式会社日立製作所 | インデックス処理方法及び計算機システム |
EP2851803A4 (en) * | 2012-05-15 | 2016-01-13 | Nec Corp | DISTRIBUTED DATA MANAGEMENT DEVICE AND DISTRIBUTED DATA OPERATION DEVICE |
JP5764226B2 (ja) * | 2014-02-17 | 2015-08-12 | 前田建設工業株式会社 | 情報処理装置、情報処理方法、プログラム、および媒体 |
US9529836B1 (en) * | 2015-09-30 | 2016-12-27 | Semmle Limited | Managing disjoint-or trees |
US10187264B1 (en) * | 2017-02-14 | 2019-01-22 | Intuit Inc. | Gateway path variable detection for metric collection |
US11741485B2 (en) * | 2019-11-06 | 2023-08-29 | The Nielsen Company (Us), Llc | Methods and apparatus to estimate de-duplicated unknown total audience sizes based on partial information of known audiences |
CN112434030B (zh) * | 2020-11-11 | 2022-11-18 | 上海芯翌智能科技有限公司 | 基于树形结构数据的高性能列表实现方法与设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240741A (ja) * | 1997-02-28 | 1998-09-11 | Nippon Telegr & Teleph Corp <Ntt> | 木構造型データの管理方法 |
JPH11175558A (ja) * | 1997-12-17 | 1999-07-02 | Fuji Xerox Co Ltd | 情報検索装置、情報検索方法および記録媒体 |
JP2003114816A (ja) * | 2001-06-04 | 2003-04-18 | Hewlett Packard Co <Hp> | コンピュータメモリにインデックスを記憶するデータ構造 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001195406A (ja) | 2000-01-06 | 2001-07-19 | Media Fusion Co Ltd | データベース管理システム |
US6904562B1 (en) * | 2000-08-31 | 2005-06-07 | International Business Machines Corporation | Machine-oriented extensible document representation and interchange notation |
JP4165086B2 (ja) | 2002-02-25 | 2008-10-15 | 日本電気株式会社 | Xmlデータのrdbへの格納装置及び方法、rdbからのxmlデータの取得装置及び方法並びにプログラム |
-
2005
- 2005-05-27 KR KR1020067023580A patent/KR101095377B1/ko not_active IP Right Cessation
- 2005-05-27 EP EP05743197A patent/EP1764710A4/en not_active Withdrawn
- 2005-05-27 CN CNA2005800179044A patent/CN101180623A/zh active Pending
- 2005-05-27 WO PCT/JP2005/009755 patent/WO2005119516A1/ja active Application Filing
- 2005-05-27 US US11/569,991 patent/US7962494B2/en not_active Expired - Fee Related
- 2005-05-27 CA CA002567947A patent/CA2567947A1/en not_active Abandoned
- 2005-05-27 JP JP2006514082A patent/JP4681544B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240741A (ja) * | 1997-02-28 | 1998-09-11 | Nippon Telegr & Teleph Corp <Ntt> | 木構造型データの管理方法 |
JPH11175558A (ja) * | 1997-12-17 | 1999-07-02 | Fuji Xerox Co Ltd | 情報検索装置、情報検索方法および記録媒体 |
JP2003114816A (ja) * | 2001-06-04 | 2003-04-18 | Hewlett Packard Co <Hp> | コンピュータメモリにインデックスを記憶するデータ構造 |
Also Published As
Publication number | Publication date |
---|---|
EP1764710A1 (en) | 2007-03-21 |
US7962494B2 (en) | 2011-06-14 |
KR20070029170A (ko) | 2007-03-13 |
CN101180623A (zh) | 2008-05-14 |
EP1764710A4 (en) | 2009-03-18 |
JPWO2005119516A1 (ja) | 2008-04-03 |
KR101095377B1 (ko) | 2011-12-16 |
CA2567947A1 (en) | 2005-12-15 |
WO2005119516A1 (ja) | 2005-12-15 |
US20080313196A1 (en) | 2008-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4681544B2 (ja) | 配列の生成方法、情報処理装置、及び、プログラム | |
JP4886693B2 (ja) | 情報処理方法、情報処理装置および情報処理プログラム | |
JP4712718B2 (ja) | 配列の生成方法、及び、配列生成プログラム | |
JP4653157B2 (ja) | ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム | |
JP4537391B2 (ja) | ツリー型データ構造を取り扱う方法、情報処理装置、及び、プログラム | |
US7664773B2 (en) | Structured data storage method, structured data storage apparatus, and retrieval method | |
JP4796970B2 (ja) | ツリーデータの検索・集計・ソート方法及びプログラム | |
JP5241738B2 (ja) | 表からツリー構造データを構築する方法及び装置 | |
WO2015010509A1 (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
JP3797821B2 (ja) | オントロジー構築支援装置 | |
CN110795526A (zh) | 一种用于检索系统的数学公式索引创建方法与系统 | |
JP4681555B2 (ja) | ノード挿入方法、情報処理装置、および、ノード挿入プログラム | |
JP2005190163A (ja) | 構造化データ検索方法、構造化データ検索装置およびプログラム | |
Chu et al. | Automatic data extraction of websites using data path matching and alignment | |
JP2005250820A (ja) | ストレージシステムにおけるxml文書分類方法 | |
JP3842574B2 (ja) | 情報抽出方法および構造化文書管理装置およびプログラム | |
JP2006018584A (ja) | 構造化文書管理システム、値索引生成方法及びプログラム | |
JP2002183142A (ja) | データ格納装置、データ格納方法及びデータ格納方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2006228070A (ja) | データの検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080327 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080327 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101214 |
|
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: 20110201 |
|
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: 20110204 |
|
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: 20140210 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |