(57)【要約】【課題】  分岐が少なく縦長、及び、分岐が多く横長でアンバランスな木構造の参照局所性を向上させる。【解決手段】  本発明は、入力された探索木構造について、参照確率の高い根ノードから単一の葉方向にＫ個のノードに単体物理ノードに集約し、その他のノードから構成される部分木は集約されたノードの子ノードとして再配置する単一パス集約処理手段と、入力された探索木構造について、参照確率の高い根ノードからＪ個の葉方向にＫ個のノード列を単体物理ノードに集約し、その他のノードから構成される部分木は集約されたノードの子ノードとして再配置する部分木集約処理手段と、入力された集約起点ノードから単一パス集約処理手段と部分木集約処理手段を利用して集約されるノードの参照確率に基づいてコストを計算し、コストの高い手段を選択し、集約処理を実行させる木構造適応型集約処理手段と、を有する。【選択図】  図２
2014126883.tif 000002
【特許請求の範囲】
【請求項１】
長さＮの文字列の中から任意の部分文字列Ｍを探索する際に、探索木構造が分岐の少ない縦長と分岐の多い横長の木構造であるとき、該木構造を再構成する木構造の再構成装置であって、
入力された探索木構造について、参照確率の高い根ノードから単一の葉方向にＫ個のノードに単体物理ノードに集約し、その他のノードから構成される部分木は集約されたノードの子ノードとして再配置し、最適化木構造記憶手段に格納する単一パス集約処理手段と、
前記入力された探索木構造について、参照確率の高い根ノードからＪ個の葉方向にＫ個のノード列を単体物理ノードに集約し、その他のノードから構成される部分木は集約されたノードの子ノードとして再配置し、前記最適化木構造記憶手段に格納する部分木集約処理手段と、
入力された集約起点ノードから前記単一パス集約処理手段と前記部分木集約処理手段を利用して集約されるノードの参照確率に基づいてコストを計算し、コストの高い手段を選択し、集約処理を実行させる木構造適応型集約処理手段と、
を有することを特徴とする部分的木構造に応じた適応型再構成装置。
【請求項２】
前記木構造適用型集約処理手段は、
前記単一パス集約処理手段でノードの集約を行った場合の集約コストとして、選択されたパスにおける最後のノードの参照確率をパスの集約コストCpとするパス集約コスト計算手段と、
前記部分木集約処理手段でノードの集約を行った場合の集約コストとして、選択される部分木における葉のノードの参照確率の平均値を部分木集約コストCTに設定する部分木集約コスト計算手段と、
前記パスの集約コストCpが前記部分木集約コストCTより大きい場合は前記単一パス集約処理手段による集約を行い、該部分木集約コストCTが該パスの集約コストCpより大きい場合は前記部分木集約処理手段による集約を行う集約方法判定手段と、
を含む請求項1記載の部分的木構造に応じた適応型再構成装置。
【請求項３】
長さＮの文字列の中から任意の部分文字列Ｍを探索する際に、探索木構造が分岐の少ない縦長と分岐の多い横長の木構造であるとき、該木構造を再構成する木構造の再構成方法であって、
単一パス集約処理手段、部分木集約処理手段、最適木構造記憶手段、木構造適応型集約処理手段とを有する装置において、
前記単一パス集約手段が、入力された探索木構造について、参照確率の高い根ノードから単一の葉方向にＫ個のノードに単体物理ノードに集約し、その他のノードから構成される部分木は集約されたノードの子ノードとして再配置し、前記最適化木構造記憶手段に格納する単一パス集約処理ステップと、
前記部分木集約処理手段が、前記入力された探索木構造について、参照確率の高い根ノードからＪ個の葉方向にＫ個のノード列を単体物理ノードに集約し、その他のノードから構成される部分木は集約されたノードの子ノードとして再配置し、前記最適化木構造記憶手段に格納する部分木集約処理ステップと、
前記木構造適応型集約処理手段が、入力された集約起点ノードから前記単一パス集約処理ステップと前記部分木集約処理ステップを利用して集約されるノードの参照確率に基づいてコストを計算し、コストの高いいずれかのステップを選択し、集約処理を実行させる木構造適応型集約処理ステップと、
を行うことを特徴とする部分的木構造に応じた適応型再構成方法。
【請求項４】
前記木構造適用型集約処理ステップにおいて、
前記単一パス集約処理ステップを用いてノードの集約を行った場合の集約コストとして、選択されたパスにおける最後のノードの参照確率をパスの集約コストCpとするパス集約コスト計算ステップと、
前記部分木集約処理ステップを用いてノードの集約を行った場合の集約コストとして、選択される部分木における葉のノードの参照確率の平均値を部分木集約コストCTに設定する部分木集約コスト計算ステップと、
前記パスの集約コストCpが前記部分木集約コストCTより大きい場合は前記単一パス集約処理ステップを行い、該部分木集約コストCTが該パスの集約コストCpより大きい場合は前記部分木集約処理ステップを行う集約方法判定ステップと、
を含む請求項３記載の部分的木構造に応じた適応型再構成方法。
【請求項５】
コンピュータを、
請求項１または２に記載の部分的木構造に応じた適応型再構成装置の各手段として機能させるための部分的木構造に応じた適応型再構成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、部分的木構造に応じた適応型再構成装置及び方法及びプログラムに係り、特に、木構造を用いて文字列を探索する際に、探索対象の文字列から構成されたアンバランスな木構造（トライ木やパトリシア木）を再構成し、より探索の際に参照局所性を改善するための部分的木構造に応じた適応型再構成装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
文字列探索の木の最適化方法として、文字列探索のための木構造における冗長的なポインタと探索を削減するために、部分的なノードをカップリングすることで、ポインタの数を削減し、参照局所性を限定的に改善する方法がある（例えば特許文献1参照）。
【０００３】
また、文字列探索の木構造において、根ノードから単一の葉ノードまでの全ノード集合を単体物理ノードに再帰的に集約することで参照局所性を改善する方法がある（例えば、非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許４４０２１２０号公報
【非特許文献】
【０００５】
【非特許文献１】Roberto Gross and Giuseppe Ottaviano, 「Fast Compressed Tries through Path Decompositions」, ALENEX, 2012.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の特許文献１の手法では、探索対象の文字列から構築した木構造の形や各ノードの参照確率によって、参照局所性が極端に悪くなり、探索速度が著しく悪化するケースがある。また、非特許文献１の手法では、特に、高さのある木構造では、参照確率が低いアクセスされないノードまで集約されるため非効率である。
【０００７】
本発明は、上記の点に鑑みなされたもので、階層型のメモリ構造において、分岐が少なく縦長、及び、分岐が多く横長でアンバランスな木構造の参照局所性を向上させることにより、探索速度を高速化可能な部分的木構造に応じた適応型再構成装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、本発明（請求項１）は、長さＮの文字列の中から任意の部分文字列Ｍを探索する際に、探索木構造が分岐の少ない縦長と分岐の多い横長の木構造であるとき、該木構造を再構成する木構造の再構成装置であって、
入力された探索木構造について、参照確率の高い根ノードから単一の葉方向にＫ個のノードに単体物理ノードに集約し、その他のノードから構成される部分木は集約されたノードの子ノードとして再配置し、最適化木構造記憶手段に格納する単一パス集約処理手段と、
前記入力された探索木構造について、参照確率の高い根ノードからＪ個の葉方向にＫ個のノード列を単体物理ノードに集約し、その他のノードから構成される部分木は集約されたノードの子ノードとして再配置し、前記最適化木構造記憶手段に格納する部分木集約処理手段と、
入力された集約起点ノードから前記単一パス集約処理手段と前記部分木集約処理手段を利用して集約されるノードの参照確率に基づいてコストを計算し、コストの高い手段を選択し、集約処理を実行させる木構造適応型集約処理手段と、を有する。
【０００９】
また、本発明（請求項２）は、前記木構造適用型集約処理手段において、
前記単一パス集約処理手段でノードの集約を行った場合の集約コストとして、選択されたパスにおける最後のノードの参照確率をパスの集約コストCpとするパス集約コスト計算手段と、
前記部分木集約処理手段でノードの集約を行った場合の集約コストとして、選択される部分木における葉のノードの参照確率の平均値を部分木集約コストCTに設定する部分木集約コスト計算手段と、
前記パスの集約コストCpが前記部分木集約コストCTより大きい場合は前記単一パス集約処理手段による集約を行い、該部分木集約コストCTが該パスの集約コストCpより大きい場合は前記部分木集約処理手段による集約を行う集約方法判定手段と、を含む。
【発明の効果】
【００１０】
上記のように、本発明によれば、長さＮの文字列の中から任意の部分文字列Ｍ（N>>M前提）を効率的に探索するための木構造（トライ木）を構成した場合に起こるアンバランスな構造、特に、分岐が少なく縦長な木構造や、分岐が多く横長の木構造等のアンバランスな木構造の部分要素毎にコストを求め、コストが高くより参照されやすい方法を選択して単体物理ノードに集約することで、アンバランスだった木構造全体が平衡化して階層型メモリにおける参照局所性が向上し、結果として探索速度が改善される。
【図面の簡単な説明】
【００１１】
【図１】本発明の概要を示す図である。
【図２】本発明の一実施の形態における木構造再構成装置の構成例である。
【図３】本発明の一実施の形態における集約起点候補ノード記憶部のデータフォーマットである。
【図４】本発明の一実施の形態におけるパス情報記憶部のデータフォーマットである。
【図５】本発明の一実施の形態における木構造入力装置から入力されるデータ例である。
【図６】本発明の一実施の形態における木構造最適化処理部のフローチャートである。
【図７】本発明の一実施の形態における木構造適応型集約処理部のフローチャートである。
【図８】本発明の一実施の形態におけるパス集約計算モジュールのフローチャートである。
【図９】本発明の一実施の形態における部分木集約コスト計算モジュールのフローチャートである。
【図１０】本発明の一実施の形態における部分木集約処理モジュールのフローチャートである。
【図１１】本発明の一実施の形態における単一パス集約処理モジュールのフローチャートである。
【図１２】本発明の一実施の形態における入力の特徴と再構成の具体例である。
【図１３】本発明の一実施の形態におけるコスト計算を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、図面と共に本発明の実施の形態を説明する。
【００１３】
図１は、本発明の概要を示す図である。
【００１４】
本発明は、文字列探索のためのアンバランスな木構造を最適化するものであり、具体的には、探索対象の文字列から構成されたアンバランスな木構造（トライ木／パトリシア木）を再構成することでより探索の際の参照局所性を改善した木構造を生成する。
【００１５】
同図（ａ）は文字列探索のための木構造を示しており、左が縦長の木構造の例であり、右が横長の木構造の例である。本発明では、このように探索対象の文字列から当該入力文字列の特性に依存したアンバランスな木が入力されるものとする。同図（ａ）のような縦長な木構造と横長の木構造が組み合わされた木構造から、アンバランス性を改善し、同図（ｂ）に示すように、最適化された木構造を出力する。
【００１６】
図２は、本発明の一実施の形態における木構造再構成装置の構成例である。
【００１７】
同図に示す木構造再構成装置１０は、木構造最適化処理部１１、集約起点候補ノード記憶部１２、単一パス集約処理部１３、ノード情報記憶部１４、最適化木構造記憶部１５、木構造記憶部１６、部分木集約処理部１７、パス情報記憶部１８、木構造適応型集約処理部１９を有し、木構造最適化処理部１１は、外部の木構造入力装置１と結果出力装置２に接続されている。
【００１８】
集約起点候補ノード記憶部１２は、最初は外部から入力された根ノードが設定され、以降は単一パス集約処理部１３から入力される集約起点候補ノードが格納される。集約起点候補ノード記憶部１２の例を図３に示す。同図に示すように、集約起点候補ノード記憶部１２は、更新順序番号毎にノード番号が格納され、先頭から順に参照される。
【００１９】
ノード情報記憶部１４は、単一パス集約処理部１３や部分木集約処理部１７によって、木構造記憶部１６から処理対象ノードに対応するノード情報が読み出されて格納される。
【００２０】
最適化木構造記憶部１５は、木構造最適化処理部１１及び単一パス集約処理部１３で最適化処理されたノード番号の集合（パス）が格納される。
【００２１】
木構造記憶部１６は、木構造最適化処理部１１から入力された入力木構造が格納され、単一パス集約処理部１３及び部分木集約処理部１７によって、処理対象ノードが検索され読み出される。
【００２２】
パス情報記憶部１８は、部分木集約処理部１３で決定されたパス集合を格納する。パス情報記憶部１８の例を図４に示す。更新順序番号とパスを構成するノード番号を格納する。部分木集約処理部１７の実行前は何も格納されていない。
【００２３】
木構造入力装置１から入力されるデータは、文字列から構成した探索木構造であり、図５（ａ）に示すように、ノード番号、隣接ノード番号、参照確率からなり、当該データは、例えば、同図（ｂ）に示すような縦長の木構造と横長の木構造の両方が組み合わされたものである。本発明ではこのように、ノード［１］⇒［２］⇒［４］⇒［５］⇒［７］⇒［８］のような縦長の木構造と、ノード［３］⇒［９］，［３］⇒［１０］，［３］⇒［１１］，［３］⇒［１２］のような横長の木構造の両方を含む木構造を集約する場合を考える。
【００２４】
以下、上記の構成における処理を説明する。
【００２５】
図６は、本発明の一実施の形態における木構造最適化処理部のフローチャートである。
【００２６】
ステップ１０）  木構造最適化処理部１１は、木構造入力装置１から文字列探索のための入力木構造を受け取るまで待機する。
【００２７】
ステップ２０）  木構造入力装置１から、図５に示すような入力木構造を取得する。入力されるデータは、ノード番号、隣接ノード番号、参照確率であり、同図（ｂ）に示すように縦に長い木構造と横に長い木構造のイメージである。木構造最適化処理部１１は、入力された入力木構造を木構造記憶部１６に格納し、指定された根のノードを集約起点候補ノード記憶部１２に挿入する。また、木構造最適化処理部１１は、木構造適応型集約処理部１９に集約起点ノードの情報を出力し、木構造適応型集約処理部１９は木構造記憶部１６から当該集約起点ノードに対応する木構造を処理対象ノードとして抽出し、ノード情報記憶部１４に格納する。ノード情報記憶部１４には、例えば、図５（ａ）に示すように、ノード番号、隣接ノード番号、参照確率が格納される。
【００２８】
ステップ３０）  集約回数用のカウンタｉを０で初期化する。
【００２９】
ステップ４０）  集約起点候補ノード記憶部１２から集約起点となるノードを１つ取得する。最初の集約起点ノードは、ステップ２０で得られた根のノードであり、次回以降は集約起点候補ノード記憶部１２の中で更新順序番号が最も小さいノードを集約起点ノードとして取得する。また、取得した当該ノードを当該集約起点候補ノード記憶部１２から削除する。これにより、集約起点候補ノード記憶部１２に残るのは未処理の候補ノードのみとなる。
【００３０】
ステップ５０）  ステップ４０で取得した集約起点ノードを木構造適応型集約処理部１９に入力し、木構造適応型集約処理部１９に図７の処理を実行させる。
【００３１】
ステップ６０）  木構造最適化処理部１１は、集約起点ノードノード記憶部１２内に存在する候補数Ｓを取得し、Ｓが０より大きければステップ７０に移行し、そうでなければ、最適化完了通知を結果出力装置２に出力して当該木構造最適化処理部１１の処理を終了する。
【００３２】
ステップ７０）  カウンタｉを１増加させ（ｉ=ｉ＋１）、ｉが、集約回数の入力パラメータであるNUM_COMPACTIONより小さい場合は、ステップ４１５に移行し、そうでない場合はステップ８０に移行する。なお、NUM_COMPACTION（集約回数）は、ステップ４０〜７０を繰り返す回数であり、事前に決定され、入力手段（図示せず）から入力される、または、メモリ（図示せず）に格納されているものとする。
【００３３】
ステップ８０）  集約起点候補ノード記憶部１２内に残された集約対象とならなかったノード集合を最適化構造記憶部１５に記録する。なお、NUM_COMPACTIONは、予め設定されているものとする。当該処理は、図７に示す木構造適応型集約処理部１９の処理において集約対象とならなかった集約起点候補ノード記憶部１２内の残りのノード集合を最適化構造記憶部１５に格納することで、当該最適化構造記憶部１５に木全体の情報が記録されることになる。
【００３４】
図７は、本発明の一実施の形態における木構造適応型集約処理部のフローチャートである。当該処理の前処理として、木構造最適化処理部１１が、図５に示すような入力木構造のデータを取得し、木構造記憶部１６に格納しておく。また、木構造最適化処理部１１が集約起点ノード候補記憶部１２から集約起点ノードを取得し、木構造適応型集約処理部１９に出力するものとする。
【００３５】
ステップ１００）  木構造適応型集約処理部１９は、木構造最適化処理部１１から入力された集約起点ノードを取得して当該ノードを処理対象ノードとする。
【００３６】
ステップ２００）  対象となる集約起点ノードを入力として、後述するパス集約コスト計算モジュールの処理（図８）を実行する。
【００３７】
ステップ３００）  ステップ２００のパス集約コスト計算モジュールで求められたパス集約のコストをCpに設定する。
【００３８】
ステップ４００）  対象となる集約起点ノードを入力として、後述する部分木集約コスト計算モジュールの処理（図９）を実行する。
【００３９】
ステップ５００）  ステップ４００の部分木集約コスト計算モジュールで求められた部分木集約コストをCTに設定する。
【００４０】
ステップ６００）  パス集約のコストCpと部分木集約コストCTを比較し、Cp＜CTであればステップ７００に移行し、そうでなければステップ８００に移行する。
【００４１】
ステップ７００）  対象となる集約起点ノードを部分木集約処理部１７への入力として、を部分木集約処理部１７に部分木集約のための集約処理モジュール（図１０）を実行させ、結果を最適化木構造記憶部１５に格納させ、処理を終了する。
【００４２】
ステップ８００）  対象となる集約起点ノードを単一パス集約処理部１３への入力としてパス集約のための集約処理モジュール（図１１）を実行させ、結果を最適化木構造記憶部１５に格納させ、処理を終了する。
【００４３】
次に、上記の図７のステップ２００の処理について説明する。
【００４４】
図８は、本発明の一実施の形態におけるパス集約コスト計算モジュールのフローチャートである。
【００４５】
ステップ２１０）  木構造適応型集約処理部１９は、木構造最適化処理部１１から入力された集約起点ノードを取得して処理対象ノードとする。
【００４６】
ステップ２２０）  カウンタｉを初期化（ｉ=1）する。
【００４７】
ステップ２３０）  処理対象ノードに基づいて木構造記憶部１６を参照し、当該処理対象ノードの子ノードが存在する場合には、当該子ノードをノード情報記憶部１４に格納する。子ノードがない場合は、ステップ２６０に移行する。
【００４８】
ステップ２４０）  取得した子ノードの集合の中で、最も参照確率の高いノードを次の処理対象ノードとする。ノード情報記憶部１４をクリアする。
【００４９】
ステップ２５０）  カウンタｉをインクリメント（ｉ＝ｉ＋１）し、ｉがＫより小さい場合はステップ２３０に戻り、ｉがＫ以上の場合はステップ２６０に移行する。ここで、Ｋは、予め与えられたノードの数である。
【００５０】
ステップ２６０）  現在の処理対象ノード（最終の処理対象ノード）の参照確率を返却値（パス集約のコストCp）に設定し、処理を終了する。
【００５１】
次に、上記の図７のステップ４００の処理について説明する。
【００５２】
図９は、本発明の一実施の形態における部分木集約コスト計算モジュールのフローチャートである。
【００５３】
ステップ４１０）  木構造適応型集約処理部１９は、木構造最適化処理部１１から入力された集約起点ノードを取得して処理対象ノードとする。
【００５４】
ステップ４１５）  カウンタｉを初期化（ｉ＝０）する。
【００５５】
ステップ４２０）  メモリ上の部分木集約コストCTの初期値を0.0とする。
【００５６】
ステップ４２５）  処理対象ノードに基づいて木構造記憶部１６を参照し、当該処理対象ノードの子ノードが存在する場合には、当該子ノード集合を参照確率との組としてノード情報記憶部１４に格納する。
【００５７】
ステップ４３０）  ノード情報記憶部１４に記録されているノード集合の中で最も参照確率の高いノードを探索する。このとき、該当ノードがない場合はステップ４６５に移行する。
【００５８】
ステップ４３５）  該当ノードをノード情報記憶部１４から取得し、また、取り出したノードはノード情報記憶部１４から削除する。
【００５９】
ステップ４４０）  取り出したノードと次の処理対象ノードとする。
【００６０】
ステップ４４５）  処理対象ノードと現在の集約起点ノードとの距離（ノード数）Ｓを取得し、Ｓが所定のノード数Ｋより小さい場合はステップ４２５に移行し、そうでない場合はステップ４５０に移行する。
【００６１】
ステップ４５０）  部分木集約コストCTに処理対象ノードの参照確率を加算する。
【００６２】
ステップ４５５）  ｉをインクリメント（ｉ＝１＋１）し、ｉが所定の葉方向のノードの数Ｊより小さければステップ４３０に戻り、そうでない場合はステップ４６０に移行する。
【００６３】
ステップ４６０）  部分木集約コストCT／Ｊ（平均値）を返却値に設定し、処理を終了する。
【００６４】
ステップ４６５）  0.0を返却値に設定値し、処理を終了する。
【００６５】
次に、上記の図７のステップ７００の処理について説明する。当該処理は、パス集約コストCpより部分木集約コストCTが大きい場合に実行される処理である。
【００６６】
図１０は、本発明の一実施の形態における部分木集約処理モジュールのフローチャートである。当該部分木集約処理モジュールは、部分木集約処理部１７で行われる処理である。
【００６７】
ステップ７１０）  部分木集約処理部１７は、入力された集約起点ノードを取得して処理対象ノードとする。
【００６８】
ステップ７１５）  カウンタｉを初期化（ｉ=０）する。
【００６９】
ステップ７２０）  処理対象ノードに基づいて木構造記憶部１６を参照し、当該処理対象ノードの子ノード集合を参照確率と組にしてノード情報記憶部１４に格納する。
【００７０】
ステップ７２５）  ノード情報記憶部１４に格納されているノード集合の中で最も参照確率の高いノードを探索し、該当ノードがない場合は当該処理を終了する。
【００７１】
ステップ７３０）  該当ノードがある場合は、当該ノードをノード情報記憶部１４から取得し、当該ノードをノード情報記憶部１４から削除する。
【００７２】
ステップ７３５）  取り出したノードを、次の処理対象ノードとする。
【００７３】
ステップ７４０）  処理対象ノードと現在の集約起点ノードとの距離（ノード数）Ｓを取得し、Ｓが所定の値Ｋより小さい場合はステップ７２０に戻る。そうでない場合はステップ７４５に移行する。
【００７４】
ステップ７４５）  処理対象ノードと集約起点ノード間のパスをパス情報記憶部１８に格納する。
【００７５】
ステップ７５０）  カウンタｉをインクリメントし（ｉ＝ｉ＋１）、ｉが所定の葉方向のノード数Ｊより小さい場合はステップ７２５に移行し、そうでない場合はステップ７５５に移行する。
【００７６】
ステップ７５５）  パス情報記憶部１８から決定したパス集合を取得する。
【００７７】
ステップ７６０）  取得したパス集合から集約部分木ノードを構成し、最適化記憶部１８に格納する。
【００７８】
次に、上記の図７のステップ８００の処理について説明する。当該処理は、パス集約コストCpが部分木集約コストCTより大きい場合に実行される処理である。
【００７９】
図１１は、本発明の一実施の形態における単一パス集約処理モジュールのフローチャートである。当該部分木集約処理モジュールは、単一パス集約処理部１３で行われる処理である。
【００８０】
ステップ８１０）  単一パス集約処理部１３は、木構造最適化処理部１１から入力された集約起点ノードを取得して処理対象ノードとする。
【００８１】
ステップ８１５）  カウンタｉを初期化（ｉ＝０）する。
【００８２】
ステップ８２０）  処理対象ノードを木構造記憶部１６から読み出してノード情報記憶部１４に格納する。
【００８３】
ステップ８２５）  ノード情報記憶部１４から処理対象ノードの子ノード集合を探索し、子ノードがない場合はステップ８４５に移行する。
【００８４】
ステップ８３０）  取得した子ノード集合の中で最も参照確率の高いノードを次の処理対象ノードとしてノード情報記憶部１４に設定する。
【００８５】
ステップ８３５）  処理対象ノードとされた以外の子ノードを全て集約起点ノード候補記憶部１２に挿入する。
【００８６】
ステップ８４０）  カウンタｉをインクリメント（ｉ＝ｉ＋１）し、ｉが所定のノード数Ｋより小さければステップ８２０に移行する。
【００８７】
ステップ８４５）  ノード情報記憶部１４からノード列（パス）を取得する。
【００８８】
ステップ８５０）  取得したノード群から物理的に単一な集約ノードパスを構成し、最適化木構造記憶部１５に格納する。
【００８９】
上記の図１０のステップ７６０、図１１のステップ８５０の処理により、最適化木構造記憶部１５に最適化された木構造が格納されると、木構造最適化処理部１１は最適化完了通知として、最適化された木構造を結果出力装置２に出力する。
【００９０】
以下に具体的に説明する。
【００９１】
図１２は、本発明の一実施の形態における入力の特徴と再構成の具体例を示す。
【００９２】
同図（ａ）では、コスト計算の結果、単一パス集約処理部１３によって、ノード［１］を集約起点ノードとして、葉の方向にＫ個（Ｋ＝５）ノードのノード列［１］［２］［４］［５］［７］［８］が集約される。また、部分木集約処理部１７によって、ノード［３］を集約起点ノードとして、Ｊ個の葉の方向にＫ個（Ｊ＝３／Ｋ＝２）のノード列［３］［１０］［１１］［１２］（Ｊ＝３／Ｋ＝２）が集約される。
【００９３】
この結果、同図（ｂ）に示すように、単一パス集約処理部１３により、集約ノード｛１，２，４，５，７｝が生成され、部分木集約処理部１７により、集約ノード｛３，１０，１１，２２｝が集約される。集約された各ノードの子ノードに再構成された各部分木（同図中の点線の三角で示す）に対して、同様のノード集約を再帰的に実施することで、さらにアンバランスな木構造が集約される。
【００９４】
上記のように、単一パス集約処理部１３及び部分木集約処理部１７で集約されたノード群は、メモリ（図示せず）上に隣接領域に配置され、それらのノード群の子ノードについては、参照確率の最も高いノードを処理対象ノードとして図７の処理を繰り返し行うことで集約することができる。
【００９５】
図１３は、本発明の一実施の形態におけるコスト計算の例を示す。
【００９６】
前述の図７のフローチャートのステップ２００では、Ｋ＝５で集約した場合に、パス［１］［２］［４］［５］［７］が選択され、最後のノードの参照確率をパス集約コストCpとして設定する。同図の例では、ノード［７］の参照確率がCpとなる。また、ステップ４００では、選択される部分木における葉（Ｊ＝３）のノードの参照確率の平均値を部分木集約コストCTとして設定する。同図の例では、ノード［４］［９］［１１］の参照確率の平均値がCTとなる。その結果、CT＞Cpであれば、単一パス集約処理部１３によりノード集約を行い、CT＜Cpであれば、部分木集約処理部１７によりノード集約を行う。なお、ノードの参照確率は、そのノードを根とした場合の木の全体の合計参照確率とする。
【００９７】
上記のように、入力された木構造入力データのノードが有する参照確率から単一パス集約処理部１３、部分木集約処理部１７のいずれの処理を行った場合にコストが高くなり、参照されやすいかを判定し、コストの高い集約処理を実行して、物理的集約ノードを生成し、集約ノードの子ノードは再配置することにより、階層型メモリ上の木構造探索において、参照局所性が向上する。
【００９８】
なお、上記の図２の木構造再構成装置の各構成要素の動作をプログラムとして構築し、木構造再構成装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００９９】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【０１００】
１  木構造入力装置
２  結果出力装置
１０  木構造再構成装置
１１  木構造最適化処理部
１２  集約起点候補ノード記憶部
１３  単一パス集約処理部
１４  ノード情報記憶部
１５  最適化木構造記憶部
１６  木構造記憶部
１７  部分木集約処理部
１８  パス情報記憶部
１９  木構造適応型集約処理部
【図１】
2014126883.tif 000003
【図２】
2014126883.tif 000004
【図３】
2014126883.tif 000005
【図４】
2014126883.tif 000006
【図５】
2014126883.tif 000007
【図６】
2014126883.tif 000008
【図７】
2014126883.tif 000009
【図８】
2014126883.tif 000010
【図９】
2014126883.tif 000011
【図１０】
2014126883.tif 000012
【図１１】
2014126883.tif 000013
【図１２】
2014126883.tif 000014
【図１３】
2014126883.tif 000015