JP5912714B2 - データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム - Google Patents

データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム Download PDF

Info

Publication number
JP5912714B2
JP5912714B2 JP2012064180A JP2012064180A JP5912714B2 JP 5912714 B2 JP5912714 B2 JP 5912714B2 JP 2012064180 A JP2012064180 A JP 2012064180A JP 2012064180 A JP2012064180 A JP 2012064180A JP 5912714 B2 JP5912714 B2 JP 5912714B2
Authority
JP
Japan
Prior art keywords
data
bit
column
node
equal
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.)
Active
Application number
JP2012064180A
Other languages
English (en)
Other versions
JP2013196489A (ja
Inventor
稔 畠本
稔 畠本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2012064180A priority Critical patent/JP5912714B2/ja
Priority to US13/477,718 priority patent/US8661061B2/en
Publication of JP2013196489A publication Critical patent/JP2013196489A/ja
Application granted granted Critical
Publication of JP5912714B2 publication Critical patent/JP5912714B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees

Landscapes

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

Description

本発明は、データ構造等に関し、より特定的には、検索対象の複数のデータ列からなるツリー型のデータ構造等に関する。
従来、情報検索を効率良く行うために、検索対象の複数のデータ列を、パトリシア木を用いたツリー型のデータ構造で格納しておくことが知られている(例えば、特許文献1)。
特開2011−257877号公報
しかし、特許文献1に記載されているようなパトリシア木を用いたツリー型のデータ構造では、例えば、長い文字列のデータ列を検索する場合に、文字列の特性によって検索速度が変化する不安定なものになるという課題がある。
具体的には、図11に示すように、従来のパトリシア木を用いたデータ構造では、文字列の最初から共通部分毎に分岐するツリーが作成されるため、文字列の前方に共通する文字を多く含むデータ集合(すなわち、前方部分が類似した文字列を多く含むデータ集合)である場合、ツリーはバランスの悪い形状となり、文字列によって検索速度が変化する不安定なものとなる。例えば、図11において、文字列‘aaaaaaa’は、7つの分岐によって特定される一方で、文字列‘bbbbbbb’は、1つの分岐によって特定される。このため、文字列‘aaaaaaa’を検索する際には、検索速度が遅くなり、文字列‘bbbbbbb’を検索する際には、検索速度が速くなるといったように、検索速度が不安定なものとなる。
それゆえに、この発明の主たる目的は、データ列の特性によらず、安定した検索速度を実現するデータ構造の生成方法等を提供することである。
本発明は、上述の課題を解決するために、以下の構成を採用した。
本発明に係る生成方法は、複数のデータ列からなるツリー型のデータ構造を生成する方法である。上記生成方法は、親ノードに分類されている複数のデータ列に対して、当該複数のデータ列それぞれのある列位置におけるデータのデータ種別毎の数を、列位置毎に積算する積算ステップ、および複数のデータ列を、積算ステップで積算された列位置毎のデータ種別毎の数に基づいて、所定の列位置におけるデータ種別毎に、複数の子ノードに分類する分類ステップを含む。
本構成によれば、複数のデータ列は、列位置毎に積算されたデータ種別毎の数に基づいて決定される所定の列位置におけるデータ種別毎に複数のグループに分類されるので、データ列の特性(データ種別)に応じて決定される列位置で分類される。このことにより、データ列の特性に応じて、安定した検索速度を実現できるデータ構造を生成することができる。
また、分類ステップでは、積算ステップで積算されたデータ種別毎の数が、データ種別毎に均等または均等に近い値となる列位置を特定し、親ノードに分類された複数のデータ列を、当該特定した列位置におけるデータ種別毎に、複数の子ノードに分類してもよい。
本構成によれば、複数のデータ列は、列位置毎に積算されたデータ種別毎の数に基づいて、均等、若しくは、ほぼ均等に分類される。したがって、複数のデータ列は、データ列の特性によらず、バランス良く分類される。このことにより、データ列の特性によらず、安定した検索速度を実現できるデータ構造を生成することができる。
また、分類ステップで分類された子ノードを親ノードとして、積算ステップおよび分類ステップからなる一連のステップを再帰的に繰り返す制御ステップをさらに含んでもよい。
本構成によれば、分類された子ノードを親ノードとして、当該親ノードに分類された複数のデータ列は、列位置毎に積算されたデータ種別毎の数に基づいてさらに分類される。これが繰り返されることにより、データ列の特性に応じて、さらに安定した検索速度を実現できるデータ構造を生成することができる。なお、複数のデータ列が、均等、若しくは、ほぼ均等にさらに分類される場合には、生成されるデータ構造のツリーは、全体としてバランスの取れた形状となる。このことにより、データ列の特性によらず、さらに安定した検索速度を実現できるデータ構造を生成することができる。
また、制御ステップは、子ノードに含まれるデータ列が1つになるまで、一連のステップを再帰的に繰り返すものとしてもよい。
本構成によれば、子ノード(リーフノード)には、データ列は1つしか含まれない。したがって、生成されるデータ構造のリーフノードとデータ列とを1対1に対応させることでデータ列を特定するデータ構造を生成することができる。
また、データ列は、0または1で表わされるビットで構成されるビット列であるとしてもよい。この場合、積算ステップでは、親ノードに分類されている複数のデータ列に対して、当該複数のデータ列それぞれのあるビット位置におけるビットの0と1の種別毎の数を、ビット位置毎に積算し、分類ステップでは、複数のデータ列を、積算ステップで積算されたビットの0及び1の種別毎の数に基づいて、所定のビット位置におけるビットが0であるか1であるかによって、2つの子ノードに分類する。
本構成によれば、データ列がビット列であるので、所定のビット位置におけるビットが0であるか1であるかの2種類に分類することができる。したがって、生成されるデータ構造は、2分木のツリー形状となり、バランスの取れたツリーとなる。このことにより、データ列の特性によらず、安定した検索速度を実現できるデータ構造を生成することができる。
また、複数のデータ列からなるツリー型のデータ構造を生成する生成方法は以下のようであってもよい。すなわち、生成方法は、親ノードに分類されている複数のデータ列に対して、当該複数のデータ列の所定の列範囲におけるデータパターンを算出する算出ステップ、および複数のデータ列を、データパターンに基づいて、複数のデータ列の数が均等、または均等に近い値になるように複数の子ノードに分類する分類ステップを含む。
本構成によれば、複数のデータ列は、データ列の所定の列範囲におけるデータパターンに基づいて、均等、若しくは、ほぼ均等に分類される。したがって、複数のデータ列は、データ列の特性によらず、バランス良く分類される。このことにより、データ列の特性によらず、安定した検索速度を実現できるデータ構造を生成することができる。
また、複数のデータ列からなるツリー型のデータ構造を生成する生成方法は以下のようであってもよい。すなわち、生成方法は、親ノードに分類されている複数のデータ列に対して、所定のアルゴリズムに基づいて列位置を特定する列位置特定ステップ、および複数のデータ列を、列位置特定ステップで特定された列位置におけるデータ種別毎に、複数の子ノードに分類する分類ステップを含む。
本構成によれば、複数のデータ列は、データ列の前の列位置から順に、当該列位置におけるデータ種別毎に分類されるのではなく、所定のアルゴリズムに基づいて特定された列位置におけるデータ種別毎に分類される。このことにより、複数のデータ列の前方が類似していても、安定した検索速度を実現できるデータ構造を生成することができる。
以上では、データ構造を生成する生成方法として本発明を構成する場合について記載した。しかし、本発明は、上記生成方法により生成されるデータ構造として構成されてもよく、また、上記データ構造を有するライブラリで構成されてもよい。更には、データ構造を生成する情報処理装置、データ構造を生成する情報処理システム、データ構造を生成する情報処理プログラム、又は、上記情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体として構成されてもよい。
本発明によれば、データ列の特性によらず、安定した検索速度を実現するデータ構造の生成方法等を提供することができる。
ゲーム装置1の構成の一例を示すブロック図 開発装置2の構成の一例を示すブロック図 データ構造の生成方法の一例を示すための説明図 データ構造の生成方法の一例を示すための説明図 データ構造の生成方法の一例を示すための説明図 データ構造の生成方法の一例を示すための説明図 分類化された文字列データのデータ構造の一例を示す概念図 ノードデータの一例を示す概念図 ノードデータで表わされるデータ構造の一例を示す概念図 データ構造生成処理フローの一例を示すフローチャート 従来のパトリシア木によるデータ構造の一例を示す概念図
(一実施形態)
以下、図面を参照して、本発明の一実施形態について説明する。ここでは、本発明を情報処理装置に適用した例について説明するが、本発明は、このような情報処理装置に限定されるものではなく、このような情報処理装置の機能を実現する情報処理システムであってもよく、このような情報処理装置における情報処理方法であってもよく、このような情報処理装置において実行される情報処理プログラムであってもよい。更には、本発明は、このような情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体であってもよい。
(ハードウェア構成)
はじめに、図1を用いて、情報処理装置の一例であるゲーム装置1について説明する。本実施形態におけるゲーム装置1は、情報処理プログラム(例えば、ゲームプログラム)を実行する際に、ダイナミックリンクライブラリ(Dynamic Link Library;以下、DLLと称する)を利用する。図1に示すように、ゲーム装置1は、プロセッサ10、およびメモリ11を備えており、当該メモリ11には、DLL110が格納されている。
DLL110は、ゲームプログラムが実行される際にダイナミックリンクされる関数(プログラムモジュール)が取り纏められたライブラリであり、ゲーム装置1の記憶装置(不図示)に記憶されている。また、DLL110は、辞書111を含む。
辞書111は、DLL110内の複数の関数のシンボル(関数名)を示す文字列データが検索キーとして格納されたツリー型のデータ構造であり、関数のシンボルと対応するアドレスとが関連付けられている。
プロセッサ10は、その機能構成として、DLL参照部100と、入力部101と、検索部102と、出力部103とを備える。プロセッサ10は、例えばゲーム装置1のメインメモリ(不図示)に格納されたゲームプログラムを実行することにより、DLL参照部100と、入力部101と、検索部102と、出力部103として動作する。
DLL参照部100は、ゲームプログラムを実行する際に利用するDLL110内の目的の関数のアドレスを取得するために、当該関数のアドレスの検索を入力部101に指示する。
入力部101は、DLL参照部100から指示された検索対象の関数のシンボル(文字列)を検索部102に入力する。
検索部102は、入力部101から入力された文字列に基づいて、ツリー型のデータ構造である辞書111内のデータを検索し、検索結果を出力部103に出力する。
出力部103は、検索部102からの検索結果に基づいて、入力部101で入力された文字列に対応するアドレスをDLL参照部100に出力する。このことにより、DLL参照部100は、目的の機能を有する関数のアドレスを取得することができる。
次に、図2を用いて、上記したDLL110内の辞書111を生成する情報処理装置の一例である開発装置2について説明する。
図2に示すように、開発装置2は、プロセッサ20、記憶装置21、メインメモリ22を備えている。記憶装置21には、プロセッサ20によって実行されるコンピュータプログラムが格納されており、メインメモリ22は、コンピュータプログラムやその他のデータを一時的に記憶する。開発装置2のプロセッサ20は、上記コンピュータプログラムを実行することにより、本実施形態のデータ構造(辞書111)を生成する。なお、開発装置2のプロセッサ20が実行する種々の処理については、後に詳述することにし、まず、本実施形態のデータ構造を生成する生成方法の概要について説明する。
(データ構造生成方法概要)
図3〜図7を用いて、本実施形態における辞書111のデータ構造を生成する方法の概要について説明する。なお、以下では、辞書111のツリー型のデータ構造を構成する検索キー(関数のシンボル)として、‘aaaaaaa’、‘aaaaaab’、‘aaaaabb’、‘aaaabbb’、‘aaabbbb’、‘aabbbbb’、‘abbbbbb’、‘bbbbbbb’の8つの文字列データを例に説明する。
本実施形態では、図3に示すように、まず、各文字列データは、0と1とからなるビット列データに変換される。1文字につき8ビットが割り当てられているので、文字数7の各文字列データは、56ビットのビット列データに変換される。
次に、図4に示すように、全てのビット列データに対して、各ビット列データの各ビット位置におけるビットデータの種別(すなわち、ビット0及びビット1)毎の数がビット位置毎に積算される。したがって、例えば、1ビット目のビット0の数は8、ビット1の数は0と積算され、7ビット目のビット0の数は7、ビット1の数は1と積算される。
次に、各ビット位置において、積算されたビット0の数と、ビット1の数とが比較されて、両者の数が均等、又は、最も均等に近い値であるビット位置(以下、均等ビット位置と称する)が特定される。具体的には、図5に示すように、ビット0の数が4であり、ビット1の数が4である31ビット目が、均等ビット位置として特定される。なお、図5では32ビット目も、ビット0の数が4であり、ビット1の数が4であるため、32ビット目もビット0とビット1の数が均等となるビット位置であるが、このようにビット0とビット1の数が均等となるビット位置が複数ある場合には、所定のルールで、1つのビット位置を均等ビット位置として特定すればよい(例えば、前方のビット位置を均等ビット位置として特定すればよい)。なお、ビット0とビット1の数が均等となるビット位置を特定するときに、結果的にビット0とビット1の数が均等となるビット位置が複数ある場合であっても、最初にビット0とビット1の数が均等となるビット位置が特定できれば、その時点で特定をやめてもよい。
次に、各ビット列データは、均等ビット位置におけるビットデータの種別(すなわち、ビット0及びビット1)によって、2つのグループに分類される。具体的には、図5に示すように、31ビット目(均等ビット位置)のビットデータが0であるグループ(以下、ノードn1と称する)と、31ビット目のビットデータが1であるグループ(以下、ノードn2と称する)とに分類される。すなわち、文字列データ‘aaaaaaa’、‘aaaaaab’、‘aaaaabb’、‘aaaabbb’がノードn1に分類され、文字列データ‘aaabbbb’、‘aabbbbb’、‘abbbbbb’、‘bbbbbbb’がノードn2に分類される。
次に、各グループ(ノード)に対して、各グループを構成するビット列データに対して、各ビット列データの既に分類に用いられたビット位置とは異なる各ビット位置(31ビット目とは異なるビット位置)において、同様に、積算されたビット0の数と、ビット1の数とが比較されて、均等ビット位置が特定され、均等ビット位置におけるビットデータの種別がビット0であるかビット1であるかによって、2つのグループに分類される。具体的には、図6に示すように、ノードn1に分類された文字列データは、47ビット目が0であるグループ(以下、ノードn3と称する)と、47ビット目が1であるグループ(以下、ノードn4と称する)とに分類される。同様に、ノードn2に分類された文字列データは、15ビット目が0であるグループ(以下、ノードn5と称する)と、15ビット目が1であるグループ(以下、ノードn6と称する)とに分類される。
以下、同様に、グループを構成する文字列データが1つになるまで上記した分類が行われる。具体的には、図6に示すように、ノードn3に分類された文字列データは、55ビット目が0であるグループ(以下、ノードn7と称する)と、55ビット目が1であるグループ(以下、ノードn8と称する)とに分類される。そして、ノードn4に分類された文字列データは、39ビット目が0であるグループ(以下、ノードn9と称する)と、39ビット目が1であるグループ(以下、ノードn10と称する)とに分類される。ノードn5に分類された文字列データは、23ビット目が0であるグループ(以下、ノードn11と称する)と、23ビット目が1であるグループ(以下、ノードn12と称する)とに分類される。ノードn6に分類された文字列データは、7ビット目が0であるグループ(以下、ノードn13と称する)と、7ビット目が1であるグループ(以下、ノードn14と称する)とに分類される。
図7は、上記のように各グループ(ノード)に分類化された文字列データを、ツリー構造で示した概念図である。なお、ノードn0は、全データを構成要素とするグループである。図7に示すように、本実施形態における辞書111のデータ構造のツリーは、図11に示す従来のデータ構造のツリーとは異なり、バランスの取れたツリー形状となっている。具体的には、各文字列データは、分岐の回数がそれぞれ等しい3回となっている。このため、各文字列データの特性によらず、各文字列データの検索速度は安定したものとなる。
(データ構造概要)
次に、図8を用いて、上記した生成方法により生成される辞書111のデータ構造の概要について説明する。本実施形態における辞書111のデータ構造は、階層型のツリー構造であり、辞書111のデータ構造は、ツリーの節点であるノードを示すノードデータで表わされる。なお、ノードデータは、ツリーの最下層であって直下に他のノードを有しないノードを示すリーフノードデータと、当該リーフノード以外のノードを示す内部ノードデータとを含む。図8の(A)は、内部ノードデータの一例を示し、図8の(B)はリーフノードデータの一例を示す。
図8の(A)に示すように、内部ノードデータは、自ノード番号と、指示ビット位置と、第0リンク先と、第1リンク先とを示すデータで構成される。
自ノード番号は、自ノードの識別子を示すデータである。指示ビット位置は、自ノードに含まれる分類対象の文字列データ(ビット列データ)を、どの列位置(ビット位置)で分類するかを示す(すなわち、均等ビット位置を示す)データである。第0リンク先は、指示ビット位置のビットデータが0であるビット列データの分類先のグループ(ノード)であるノード番号を示すデータである。同様に、第1リンク先は、指示ビット位置のビットデータが1であるビット列データの分類先のグループ(ノード)であるノード番号を示すデータである。したがって、各内部ノードは、2つのリンク先のノードを有する。このことにより、ツリー型のデータ構造が形成される。
図8の(B)に示すように、リーフノードデータは、自ノード番号と、チェックビットと、本体データとを示すデータで構成される。
本体データは、分類対象の文字列データを示すデータであり、チェックビットは、本体データのビットデータが正しいか否かをチェックするためのデータである。なお、リーフノードは、このチェックビットを有していなくてもよい。
上記のようにして、各内部ノードが、その直下にリンクされるノードのノード番号を示すデータを有し、リーフノードが、本体データを有することにより、各文字列データは、ツリー型に分類されて、その最下層のノードに本体データとして格納される。具体的には、図7に示すように分類化された文字列データで構成される辞書111のデータ構造は、図9に示すノードデータで表わされる。
(データ構造の生成処理フロー)
次に、図10を用いて、開発装置2のプロセッサ20が実行するデータ構造の生成処理について説明する。プロセッサ20は、まず、メインメモリ22を初期化して、記憶装置21等から各種プログラムや各種データをメインメモリ22にロードした後に、各種プログラムを実行することにより、図10に示すフローチャートの処理を実行する。
ステップS11において、プロセッサ20は、分類対象となる全ての文字列データをビット列データに変換して、変換したビット列データをメインメモリ22に記憶する。その後、処理はステップS12に移る。
ステップS12において、プロセッサ20は、分類対象となる全ての文字列データが分類されるノード(グループ)であるルートノードを作成する。なお、ルートノードを示すノードデータとしては、自ノード番号を示すデータのみが生成される。その後、処理はステップS13に移る。
ステップS13において、プロセッサ20は、ルートノードのノード番号を示すデータを対象ノードデータとして、メインメモリ22に記憶する。その後、処理はステップS14に移る。
ステップS14において、プロセッサ20は、メインメモリ22に記憶された対象ノードデータが示すノードに分類された全ての文字列データのビット列データに対して、各ビット列データの各ビット位置におけるビット0とビット1の種別毎の数を積算し、ビット位置毎の積算値を積算値データとして、メインメモリ22に記憶する。その後、処理はステップS15に移る。
ステップS15において、プロセッサ20は、メインメモリ22に記憶された積算値データに基づいて、ビット0の数とビット1の数とが均等、又は、最も均等に近い値を示すビット位置を特定して、当該ビット位置を均等ビット位置データとしてメインメモリ22に記憶する。その後、処理はステップS16に移る。
ステップS16において、プロセッサ20は、メインメモリ22に記憶された対象ノードデータが示すノードに分類された全ての文字列データを、メインメモリ22に記憶された均等ビット位置データが示すビット位置におけるビットデータの種別がビット0であるノード(以下、ビット0用ノードと称する)と、ビット1であるノード(以下、ビット1用ノードと称する)とに分類する。その後、処理はステップS17に移る。
ステップS17において、プロセッサ20は、ビット0用ノードとビット1用ノードとを生成し、これらのノードをメインメモリ22に記憶された対象ノードデータが示すノードの直下位のノードとする。具体的には、プロセッサ20は、まず、ビット0用ノードを示すノードデータとして、ビット0用ノードの自ノード番号を示すデータを生成し、ビット1用ノードを示すノードデータとして、ビット1用ノードの自ノード番号を示すデータを生成する。なお、これらのノード番号には、すでに生成されたノード番号と重複しない番号が選択される。そして、プロセッサ20は、メインメモリ22に記憶された対象ノードデータが示すノードのノードデータの指示ビット位置を示すデータとして、メインメモリ22に記憶された均等ビット位置データを格納し、第0リンク先を示すデータとして、ビット0用ノードのノード番号を示すデータを格納し、第1リンク先を示すデータとして、ビット1用ノードのノード番号を示すデータを格納する。その後、処理はステップS18に移る。
ステップS18において、プロセッサ20は、メインメモリ22に記憶された対象ノードデータが示すノードの分類済みフラグデータ(不図示)をONに設定し、メインメモリ22に記憶された対象ノードデータ、積算値データ、均等ビット位置データをクリアする。その後、処理はステップS19に移る。
ステップS19において、プロセッサ20は、生成されたノードの分類済みフラグデータがONではないか否かを判定することにより、分類済みではないノードがあるか否かを判定する。この判定結果がYESの場合、処理はステップS20に移り、NOの場合、処理は終了する。すなわち、全てのノードが分類済みである場合に処理は終了する。
ステップS20において、プロセッサ20は、まず、分類済みフラグデータがONではない1つのノードを特定する。具体的には、プロセッサ20は、分類済みフラグデータがONではない1つのノードを所定のルールで特定する。例えば、分類済みフラグデータがONではないノードが複数ある場合には、所定のルールで(例えば、ノード番号の小さい順に)1つのノードが特定されるものとすればよい。そして、プロセッサ20は、特定したノードに分類された文字列データが複数あるか否かを判定する。この判定の結果がYESの場合、処理はステップS21に移り、NOの場合、処理はステップS22に移る。
ステップS21において、プロセッサ20は、ステップS20で特定されたノードのノード番号を示すデータを対象ノードデータとして、メインメモリ22に記憶する。その後、処理はステップS14に戻る。
ステップS22において、プロセッサ20は、ステップS20で特定されたノードをリーフノードとして設定する。具体的には、プロセッサ20は、ステップS20で特定されたノードのノードデータの本体データとして、当該ノードに分類された文字列データを格納し、チェックビットとして、当該文字列データをチェックするためのデータを格納する。その後、処理はステップS23に移る。
ステップS23において、プロセッサ20は、ステップS22でリーフノードとして設定したノードの分類済みフラグデータをONに設定する。その後、処理はステップS19に戻る。
以上に説明したように、本実施形態のデータ構造生成処理によれば、複数の文字列データが分類されたノードは、直下位に2つのノードを有する内部ノードデータとして生成される(図10のステップS11〜S17、及び、ステップS20でYES、ステップS21、S14〜S17)。そして、繰り返し分類されて生成されたノードに、1つの文字列データのみが含まれると、当該ノードは、リーフノードとして生成され、当該リーフノードに文字列データが格納される(ステップS20でNO、ステップS22)。また、各内部ノードに分類された文字列データをさらに分類する際には、分類される文字列データが互いに均等、又は最も均等に近い数になるように分類される(ステップS14〜S16)。したがって、各内部ノードの直下位に生成される2つのノードに含まれる文字列データの数は、均等、又は均等に近い数になる。このため、ノードデータで表わされるデータ構造のツリーの形状は、バランスの取れたものとなる。このことにより、文字列データの特性によらず、安定した検索速度を実現できるデータ構造を生成することができる。なお、上記では特に記載していないが、文字列データは辞書111の検索キーとして用いられるデータであり、この検索キーに対応するデータ(関数のシンボルに対応するアドレスを示すデータ)も辞書111に併せて格納される。
上記実施形態において説明したように、メモリを多く使用するゲームプログラムでは、メモリの使用量を減らすために、DLLが利用されることがある。このDLLには、複数の関数のシンボルと対応するアドレスとを関連付けた辞書が含まれており、関数の呼び出しの際に、関数のシンボルを検索キーにして辞書が検索されて対応する関数のアドレスが取得される。そして、例えば、ゲームプログラムがプログラミング言語C++で記述される場合、関数のシンボルを表わす文字列(検索キー)が長くなりやすく、また、文字列の前方が類似しやすいという性質がある。しかし、本実施形態では、辞書のデータ構造のツリー形状がバランスの取れたものであるため、文字列(検索キー)の特性によらず、安定した検索速度を実現することができる。このことにより、DLLを用いたゲームプログラムの実行速度を安定化させることができる。また、本実施形態の辞書のデータ構造によれば、上記のように文字列を検索キーとして検索する場合に限らず、検索キーとなるデータ列の特性によらず、安定した検索速度を実現することができる。
なお、上記実施形態では、検索キーとなる文字列(関数のシンボル)の文字数は同じであるとしたが、文字数は異なっていても良い。この場合、例えば、最も文字数の多い文字列の文字数を基準に、文字数が少ない文字列は、ビット列に変換される際に、不足分のビット列として後方のビット位置にビット0が追加されるものとすればよい。
また、上記実施形態では、ビット位置におけるビットデータの種別毎の数が全てのビット位置毎に積算されるものとした。しかし、特定のビット位置において積算されたビットデータの種別毎の数が均等になった時点で、積算をやめるものとしてもよい。
また、上記実施形態では、ビット列データに変換された文字列データは、各ビット位置において積算されたビット種別であるビット0及びビット1の数によって、分類されるものとした。しかし、各ビット位置ではなく、複数の連続するビット範囲において積算されたビット種別の数によって、分類されるものとしてもよい。例えば、連続する2ビット範囲におけるビット種別毎の数によって、分類されるものとしてもよい。この場合、ビット種別は、‘00’、‘01’、‘10’、‘11’の4種となるので、各ビット範囲において積算された4種のビット種別毎の数が均等、又は、最も均等に近いビット範囲において、ビット種別毎に4つのグループに分類される。
また、上記実施形態では、文字列データは、ビット列データに変換されてビットデータの種別(ビット0及びビット1)によって、分類されるものとした。しかし、例えば、文字列データのデータ種別が数種類に限られる場合などには、文字列データはビット列データに変換されず、文字列データとして分類されてもよい。
また、上記実施形態では、検索キーとなる文字列として関数のシンボルが与えられ、この検索キーに基づいて関数のアドレスが取得される辞書111について説明した。しかし、辞書111は、このような辞書に限られない。すなわち、検索キーとなるデータ列は、文字列データに限られず、例えばビット列データであってもよく、検索キーに基づいて取得されるデータ列は、関数のアドレスを示す情報に限られず、どのようなものであってもよい。
また、上記実施形態では、DLL110は、ダイナミックリンクライブラリであるとしたが、これに限らず、辞書111を含むスタティックライブラリであってもよい。
また、上記実施形態では、文字列データは、各ビット位置において積算されたビットデータの種別毎の数に基づいてビット位置を特定し、特定したビット位置におけるビットデータ種別毎に分類されるものとした。しかし、所定の関数や乱数を用いて所定のアルゴリズムにしたがってビット位置を特定し、特定したビット位置におけるデータ種別毎に分類されるようにしてもよい。
また、上記実施形態では、1つの開発装置2で上述したデータ構造生成処理を実行しているが、有線又は無線で通信可能な複数の装置からなる開発システム内において上記処理を分担してもよい。
また、上記実施形態において、ゲーム装置1や開発装置2の構成要素等は、単なる一例に過ぎず他の形状、構成要素を有していても、本発明を実現できることは言うまでもない。また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる値等は、単なる一例に過ぎず、本発明の範囲を逸脱しなければ他の順序や値であっても、本発明を実現できることは言うまでもない。
また、上記実施形態の開発装置2において実行される各種情報処理プログラムは、メインメモリ22等の記憶媒体を通じて開発装置2に供給されるだけでなく、有線又は無線の通信回線を通じて開発装置2に供給されてもよい。また、上記プログラムは、開発装置2内部の不揮発性の記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD−ROM、DVD、或いはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ等であってもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを一時的に記憶する揮発性メモリでもよい。
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
1 ゲーム装置
2 開発装置
10 プロセッサ
11 メモリ
20 プロセッサ
21 記憶装置
22 メインメモリ
100 DLL参照部
101 入力部
102 検索部
103 出力部
110 DLL
111 辞書

Claims (7)

  1. 複数のデータ列からなるツリー型のデータ構造を生成する情報処理装置のコンピュータにおいて実行される生成方法であって、
    親ノードに分類されている複数のデータ列に対して、当該複数のデータ列それぞれのある列位置におけるデータのデータ種別毎の数を、前記列位置毎に積算する積算ステップ、および
    前記複数のデータ列を、前記積算ステップで積算された前記列位置毎のデータ種別毎の数に基づいて、所定の前記列位置における前記データ種別毎に、複数の子ノードに分類する分類ステップを含
    前記分類ステップは、前記積算ステップで積算されたデータ種別毎の数が、前記データ種別毎に均等または均等に近い値となる前記列位置を均等位置として特定する第1分類ステップと、前記親ノードに分類された複数のデータ列を、前記第1分類ステップにおいて特定された前記均等位置における前記データ種別毎に、前記複数の子ノードに分類する第2分類ステップとを含み、
    前記第1分類ステップでは、前記列位置毎に順次、前記均等位置であるか否かを判定する判定処理を実行し、所定の列位置が前記均等位置であると判定した時点で、当該所定の列位置を前記均等位置として特定し、前記判定処理を未実行の前記列位置に対しては前記判定処理を実行しない、生成方法。
  2. 前記分類ステップで分類された子ノードを親ノードとして、前記積算ステップおよび前記分類ステップからなる一連のステップを再帰的に繰り返す制御ステップをさらに含む、請求項1に記載の生成方法。
  3. 前記制御ステップは、前記子ノードに含まれる前記データ列が1つになるまで、前記一連のステップを再帰的に繰り返す、請求項に記載の生成方法。
  4. 前記データ列は、0または1で表わされるビットで構成されるビット列であり、
    前記積算ステップでは、親ノードに分類されている複数のデータ列に対して、当該複数のデータ列それぞれのあるビット位置におけるビットの0と1の種別毎の数を、前記ビット位置毎に積算し、
    前記分類ステップでは、前記複数のデータ列を、前記積算ステップで積算されたビットの0及び1の種別毎の数に基づいて、所定の前記ビット位置におけるビットが0であるか1であるかによって、2つの前記子ノードに分類する、請求項1に記載の生成方法。
  5. 複数のデータ列からなるツリー型のデータ構造を生成する情報処理装置であって、
    親ノードに分類されている複数のデータ列に対して、当該複数のデータ列それぞれのある列位置におけるデータのデータ種別毎の数を、前記列位置毎に積算する積算部、および
    前記複数のデータ列を、前記積算部によって積算された前記列位置毎のデータ種別毎の数に基づいて、所定の前記列位置における前記データ種別毎に、複数の子ノードに分類する分類部を含
    前記分類部は、前記積算部によって積算されたデータ種別毎の数が、前記データ種別毎に均等または均等に近い値となる前記列位置を均等位置として特定する第1分類部と、前記親ノードに分類された複数のデータ列を、前記第1分類部によって特定された前記均等位置における前記データ種別毎に、前記複数の子ノードに分類する第2分類部とを含み、
    前記第1分類部は、前記列位置毎に順次、前記均等位置であるか否かを判定する判定処理を実行し、所定の列位置が前記均等位置であると判定した時点で、当該所定の列位置を前記均等位置として特定し、前記判定処理を未実行の前記列位置に対しては前記判定処理を実行しない、情報処理装置。
  6. 複数のデータ列からなるツリー型のデータ構造を生成する情報処理システムであって、
    親ノードに分類されている複数のデータ列に対して、当該複数のデータ列それぞれのある列位置におけるデータのデータ種別毎の数を、前記列位置毎に積算する積算部、および
    前記複数のデータ列を、前記積算部によって積算された前記列位置毎のデータ種別毎の数に基づいて、所定の前記列位置における前記データ種別毎に、複数の子ノードに分類する分類部を含
    前記分類部は、前記積算部によって積算されたデータ種別毎の数が、前記データ種別毎に均等または均等に近い値となる前記列位置を均等位置として特定する第1分類部と、前記親ノードに分類された複数のデータ列を、前記第1分類部によって特定された前記均等位置における前記データ種別毎に、前記複数の子ノードに分類する第2分類部とを含み、
    前記第1分類部は、前記列位置毎に順次、前記均等位置であるか否かを判定する判定処理を実行し、所定の列位置が前記均等位置であると判定した時点で、当該所定の列位置を前記均等位置として特定し、前記判定処理を未実行の前記列位置に対しては前記判定処理を実行しない、情報処理システム。
  7. 複数のデータ列からなるツリー型のデータ構造を生成する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
    前記コンピュータを、
    親ノードに分類されている複数のデータ列に対して、当該複数のデータ列それぞれのある列位置におけるデータのデータ種別毎の数を、前記列位置毎に積算する積算部、および
    前記複数のデータ列を、前記積算部によって積算された前記列位置毎のデータ種別毎の数に基づいて、所定の前記列位置における前記データ種別毎に、複数の子ノードに分類する分類部として機能させ、
    前記分類部は、前記積算部によって積算されたデータ種別毎の数が、前記データ種別毎に均等または均等に近い値となる前記列位置を均等位置として特定する第1分類部と、前記親ノードに分類された複数のデータ列を、前記第1分類部によって特定された前記均等位置における前記データ種別毎に、前記複数の子ノードに分類する第2分類部とを含み、
    前記第1分類部は、前記列位置毎に順次、前記均等位置であるか否かを判定する判定処理を実行し、所定の列位置が前記均等位置であると判定した時点で、当該所定の列位置を前記均等位置として特定し、前記判定処理を未実行の前記列位置に対しては前記判定処理を実行しない、情報処理プログラム。
JP2012064180A 2012-03-21 2012-03-21 データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム Active JP5912714B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012064180A JP5912714B2 (ja) 2012-03-21 2012-03-21 データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム
US13/477,718 US8661061B2 (en) 2012-03-21 2012-05-22 Data structure, data structure generation method, information processing apparatus, information processing system, and computer-readable storage medium having stored therein information processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012064180A JP5912714B2 (ja) 2012-03-21 2012-03-21 データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2013196489A JP2013196489A (ja) 2013-09-30
JP5912714B2 true JP5912714B2 (ja) 2016-04-27

Family

ID=49213323

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012064180A Active JP5912714B2 (ja) 2012-03-21 2012-03-21 データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム

Country Status (2)

Country Link
US (1) US8661061B2 (ja)
JP (1) JP5912714B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10984029B2 (en) * 2016-12-15 2021-04-20 Sap Se Multi-level directory tree with fixed superblock and block sizes for select operations on bit vectors
CN107608669A (zh) * 2017-08-15 2018-01-19 山西云度知识产权服务有限公司 一种基于数据库表结构自动生成功能及页面的方法
US11709813B2 (en) 2021-06-10 2023-07-25 Jpmorgan Chase Bank, N.A. System and method for implementing a contract data management module

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0702311A1 (en) * 1994-09-14 1996-03-20 Kabushiki Kaisha Toshiba Data processing system,data retrieval system,data processing method and data retrieval method
US6047283A (en) * 1998-02-26 2000-04-04 Sap Aktiengesellschaft Fast string searching and indexing using a search tree having a plurality of linked nodes
JP3601416B2 (ja) * 2000-06-13 2004-12-15 日本電気株式会社 情報検索方法及び装置
US7299317B1 (en) * 2002-06-08 2007-11-20 Cisco Technology, Inc. Assigning prefixes to associative memory classes based on a value of a last bit of each prefix and their use including but not limited to locating a prefix and for maintaining a Patricia tree data structure
JP4048861B2 (ja) * 2002-07-23 2008-02-20 日本電気株式会社 アドレス検索装置
US7657748B2 (en) * 2002-08-28 2010-02-02 Ntt Docomo, Inc. Certificate-based encryption and public key infrastructure
US8037102B2 (en) * 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
WO2006026737A2 (en) * 2004-08-31 2006-03-09 Ntt Docomo Inc. Revocation of cryptographic digital certificates
JP4093489B2 (ja) * 2004-10-12 2008-06-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 観測装置、観測方法、及びプログラム
JP4271214B2 (ja) * 2006-07-07 2009-06-03 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
JP4918937B2 (ja) * 2007-03-08 2012-04-18 富士通株式会社 帳票種識別プログラム、帳票種識別方法および帳票種識別装置
TWI358647B (en) * 2007-12-28 2012-02-21 Ind Tech Res Inst Data classification system and method for building
US8239758B2 (en) * 2008-11-13 2012-08-07 International Business Machines Corporation Truncating character strings to generate a list of unique character strings
US8930332B2 (en) * 2010-03-12 2015-01-06 Salesforce.Com, Inc. Method and system for partitioning search indexes
JP2011257877A (ja) 2010-06-07 2011-12-22 Nippon Telegr & Teleph Corp <Ntt> 情報検索装置、情報検索方法、及びプログラム

Also Published As

Publication number Publication date
US20130254201A1 (en) 2013-09-26
JP2013196489A (ja) 2013-09-30
US8661061B2 (en) 2014-02-25

Similar Documents

Publication Publication Date Title
US10503716B2 (en) Systems and methods for generating bit matrices for hash functions using fast filtering
JP4669067B2 (ja) 動的フラグメントマッピング
JP6605573B2 (ja) 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ
TWI250424B (en) Method and apparatus for enhancing multiway radix tree
US10164884B2 (en) Search apparatus, search configuration method, and search method
CN116822422B (zh) 数字逻辑电路的分析优化方法及相关设备
JP3630057B2 (ja) 検索用データ構造構築方法、その装置、及び機械可読プログラム記録媒体
CN108205571B (zh) 键值数据表的连接方法及装置
US10031936B2 (en) Database table data fabrication
JP2023501010A (ja) TextRankに基づくアプリケーション選好テキストの分類方法
JP5912714B2 (ja) データ構造、データ構造生成方法、情報処理装置、情報処理システム、及び情報処理プログラム
CN111027703A (zh) 一种量子线路查询的方法、装置、存储介质及电子装置
KR101210339B1 (ko) 트리 구조에서의 노드 식별자 생성 방법
JP2007011784A (ja) データソート処理プログラム、データソート処理方法およびデータソート処理装置
JP2006139427A (ja) データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体
JP2018523245A (ja) Simd命令を使用したテーブルルックアップ
JP2007034878A5 (ja)
KR102098255B1 (ko) 지식 임베딩 기반 지식 보강 시스템 및 방법
US20130173647A1 (en) String matching device based on multi-core processor and string matching method thereof
TW202226767A (zh) 應用於鍵樹的編碼方法、應用於鍵樹的解碼方法與電子裝置
JP4347086B2 (ja) パターンマッチング装置および方法ならびにプログラム
JPWO2014168199A1 (ja) 論理演算方法および情報処理装置
JP6107488B2 (ja) 有向グラフ生成方法、有向グラフ生成プログラム、及び有向グラフ生成装置
JPH10240741A (ja) 木構造型データの管理方法
JP7295464B2 (ja) オントロジーマッピングシステムおよびオントロジーマッピングプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160229

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: 20160315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160401

R150 Certificate of patent or registration of utility model

Ref document number: 5912714

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250