(57)【特許請求の範囲】
【請求項１】
ディスクに格納される複数の幾何学的オブジェクトを多次元空間上で表現される多次元ベクトルとして表す多次元空間データのデータ構造であって、
前記多次元空間データは、
前記多次元空間内の幾何学的オブジェクトが所定のエントリ数分それぞれ包含された複数のリーフノードを該多次元空間内の端点の絶対座標値によりそれぞれ表現される複数の最小範囲矩形により梱包して該複数のリーフノードを該複数の最小範囲矩形に対して連接させ、該複数の最小範囲矩形をさらに新たな最小矩形範囲により梱包して該複数の最小範囲矩形を該新たな最小範囲矩形に対して連接させることにより、前記新たな最小範囲矩形を含む複数の最小範囲矩形を複数のノンリーフノードとし前記複数のリーフノードと共に階層化して構成された木構造における、前記複数のリーフノードそれぞれの前記多次元空間内の絶対値座標と、前記木構造における前記複数のノンリーフノードに対応する複数の最小矩形範囲の端点の絶対値座標とから表現された実部分と、
前記木構造における前記複数のノンリーフノードそれぞれに対応する複数の最小範囲矩形に対する相対的位置に基づく複数の仮想範囲矩形を木状に階層化した場合における前記複数の仮想範囲矩形により求められた複数の部分空間符号により表現された仮想部分とを備え、
前記仮想部分は、
前記各ノンリーフノードに連接される複数のノンリーフノードを複数の子ノードとし、連接元の各ノンリーフノードを各親ノードとした際に、該各親ノードに連接される子ノードの数であるエントリ数と、
前記各親ノードに連接される複数の子ノードに対応する複数の仮想範囲矩形の始点および終点それぞれの前記多次元空間内の位置情報により求められた部分空間符号と、
前記各親ノードに連接する複数の子ノードそれぞれの前記ディスク上の格納位置を表すノードポインタとから構成されており、
前記多次元空間の次元数をｎとし、前記各親ノードの最小範囲矩形の対角を成す２つの端点ａ、ａ´、および各親ノードに連接される各子ノードの最小範囲矩形の対角を成す２つの端点ｂ、ｂ´とし、ａ、ａ´、ｂ、ｂ´は、それぞれ下式（１）、（２）、（３）、（４）：
ａ＝［φ1 ，φ2 ，…，φn ］              ・・・（１）
ａ′＝［φ1 ′，φ2 ′，…，φn ′］      ・・・（２）
ｂ＝［ψ1 ，ψ2 ，…，ψn ］              ・・・（３）
ｂ′＝[ψ1 ′，ψ2 ′，…，ψn ′］        ・・・（４）
但し、φi ≦φi ′；ｉ∈｛１，２，…，ｎ｝
をそれぞれ満足する場合における前記各子ノードの各仮想範囲矩形の始点および終点それぞれの前記多次元空間内の位置情報をＶ＝ｖ,ｖ´とし、ｖ、ｖ´は、それぞれ下式（５）、（６）：
ｖ＝［ｒ1 ，ｒ2 ，…，ｒn ］              ・・・（５）
ｖ′＝［ｒ1 ′，ｒ2 ′，…，ｒn ′］      ・・・（６）
但し、ｒi ≦ｒi ′、かつ
【数１】
0003542732.tif 000008
ｉ＝１,２,・・・,ｎ
を満足するものとし、
ηｉとηｉ´（ηｉ≦ηｉ´）を下式（９）および（１０）：
【数２】
0003542732.tif 000009
を満足するｉ次元座標上の部分区間を表すｑ元符号とし、Ｆ２（ηｉ,ｌ）を符号長ｌとするηｉの２進表現として下式（１１）：
【数３】
0003542732.tif 000010
を満足するものとした場合、
前記各子ノードに対応する各仮想範囲矩形の始点および終点それぞれの位置情報により求められる前記多次元空間内の部分空間符号は、前記各子ノードの各仮想範囲矩形の位置情報Ｖを圧縮する２進符号Ｓ＝（ｓ,ｓ´）として、下式（１２）および（１３）：
ｓ＝［Ｆ2 （η1 ，ｌ），Ｆ2 （η2 ，ｌ），…，Ｆ2 （ηn ，ｌ）］                                                ・・・（１２）
ｓ′＝［Ｆ2 （η1 ′，ｌ），Ｆ2 （η2 ′，ｌ），
…，Ｆ2 （ηn ′，ｌ）］                        ・・・（１３）
を満足するように設定されており、前記複数の子ノードに対応する複数の仮想範囲矩形の始点および終点それぞれの位置情報により求められる前記多次元空間内の部分空間符号は、前記複数の子ノードの始点および終点それぞれに対して設定された１次元目からｎ次元目までの次元毎の部分空間符号として構成され、
前記複数の子ノードそれぞれの前記ディスク上の格納位置を表すノードポインタは、該複数の子ノードそれぞれの前記ディスク上の格納位置をノード毎に表すページアドレスおよびバイト変位により構成されたことを特徴とする多次元空間データ構造。
【請求項２】
複数の幾何学的オブジェクトを多次元空間上で表現される多次元ベクトルとして表す多次元空間データのデータ構造を記録したディスクを含む記録媒体であって、
前記多次元空間データは、
前記多次元空間内の幾何学的オブジェクトが所定のエントリ数分それぞれ包含された複数のリーフノードを該多次元空間内の端点の絶対座標値によりそれぞれ表現される複数の最小範囲矩形により梱包して該複数のリーフノードを該複数の最小範囲矩形に対して連接させ、該複数の最小範囲矩形をさらに新たな最小矩形範囲により梱包して該複数の最小範囲矩形を該新たな最小範囲矩形に対して連接させることにより、前記新たな最小範囲矩形を含む複数の最小範囲矩形を複数のノンリーフノードとし前記複数のリーフノードと共に階層化して構成された木構造における、前記複数のリーフノードそれぞれの前記多次元空間内の絶対値座標と、前記木構造における前記複数のノンリーフノードに対応する複数の最小矩形範囲の端点の絶対値座標とから表現された実部分と、
前記木構造における前記複数のノンリーフノードそれぞれに対応する複数の最小範囲矩形に対する相対的位置に基づく複数の仮想範囲矩形を木状に階層化した場合における前記複数の仮想範囲矩形により求められた複数の部分空間符号により表現された仮想部分とを備え、
前記仮想部分は、
前記各ノンリーフノードに連接される複数のノンリーフノードを複数の子ノードとし、連接元の各ノンリーフノードを各親ノードとした際に、該各親ノードに連接される子ノードの数であるエントリ数と、
前記各親ノードに連接される複数の子ノードに対応する複数の仮想範囲矩形の始点および終点それぞれの前記多次元空間内の位置情報により求められた部分空間符号と、
前記各親ノードに連接する複数の子ノードそれぞれの前記ディスク上の格納位置を表すノードポインタとから構成された構造を有し、
前記多次元空間の次元数をｎとし、前記各親ノードの最小範囲矩形の対角を成す２つの端点ａ、ａ´、および各親ノードに連接される各子ノードの最小範囲矩形の対角を成す２つの端点ｂ、ｂ´とし、ａ、ａ´、ｂ、ｂ´は、それぞれ下式（１）、（２）、（３）、（４）：
ａ＝［φ1 ，φ2 ，…，φn ］              ・・・（１）
ａ′＝［φ1 ′，φ2 ′，…，φn ′］      ・・・（２）
ｂ＝［ψ1 ，ψ2 ，…，ψn ］              ・・・（３）
ｂ′＝[ψ1 ′，ψ2 ′，…，ψn ′］        ・・・（４）
但し、φi ≦φi ′；ｉ∈｛１，２，…，ｎ｝
をそれぞれ満足する場合における前記各子ノードの各仮想範囲矩形の始点および終点それぞれの前記多次元空間内の位置情報をＶ＝ｖ,ｖ´とし、ｖ、ｖ´は、それぞれ下式（５）、（６）：
ｖ＝［ｒ1 ，ｒ2 ，…，ｒn ］              ・・・（５）
ｖ′＝［ｒ1 ′，ｒ2 ′，…，ｒn ′］      ・・・（６）
但し、ｒi ≦ｒi ′、かつ
【数４】
0003542732.tif 000011
ｉ＝１,２,・・・,ｎ
を満足するものとし、
ηｉとηｉ´（ηｉ≦ηｉ´）を下式（９）および（１０）：
【数５】
0003542732.tif 000012
を満足するｉ次元座標上の部分区間を表すｑ元符号とし、Ｆ２（ηｉ,ｌ）を符号長ｌとするηｉの２進表現として下式（１１）：
【数６】
0003542732.tif 000013
を満足するものとした場合、
前記各子ノードに対応する各仮想範囲矩形の始点および終点それぞれの位置情報により求められる前記多次元空間内の部分空間符号は、前記各子ノードの各仮想範囲矩形の位置情報Ｖを圧縮する２進符号Ｓ＝（ｓ,ｓ´）として、下式（１２）および（１３）：
ｓ＝［Ｆ2 （η1 ，ｌ），Ｆ2 （η2 ，ｌ），…，Ｆ2 （ηn ，ｌ）］                                                ・・・（１２）
ｓ′＝［Ｆ2 （η1 ′，ｌ），Ｆ2 （η2 ′，ｌ），
…，Ｆ2 （ηn ′，ｌ）］                        ・・・（１３）
を満足するように設定されており、
前記複数の子ノードに対応する複数の仮想範囲矩形の始点および終点それぞれの位置情報により求められる前記多次元空間内の部分空間符号は、前記複数の子ノードの始点および終点それぞれに対して設定された１次元目からｎ次元目までの次元毎の部分空間符号として構成され、
前記複数の子ノードそれぞれの前記ディスク上の格納位置を表すノードポインタは、該複数の子ノードそれぞれの前記ディスク上の格納位置をノード毎に表すページアドレスおよびバイト変位により構成されたことを特徴とする多次元空間データ構造を記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベースに格納される画像を多次元空間上で表現される多次元ベクトルとして表す多次元空間データ構造および多次元空間データの更新および探索方法と前記多次元空間データ構造を記録した記録媒体および前記方法を実施するプログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
従来の空間アクセス法の中で、最も優れたアプローチの１つとしてＲ−ｔｒｅｅが挙げられる。Ｒ−ｔｒｅｅは空間内の幾何学的オブジェクトをＭＢＲ（Minimum Bounding Rectangle；最小範囲矩形）に梱包し、そのオブジェクトを包含したＭＢＲをリーフとして木状に階層化した構造を有する。リーフノードは以下のエントリを含んでいる。
【０００３】
［数５］
ＬｅａｆＮｏｄｅ＝（ε，Ｒｅｃｏｒｄi ）（ｉ＝１，…，ε）
Ｒｅｃｏｒｄi ＝（Ｃ，ｏｂｊｅｃｔ−ｉｄｅｎｔｉｆｉｅｒ）
ここで、εはリーフノードに格納されているエントリ数である。Ｃは幾何学的オブジェクトを近似したＭＢＲ、もしくは点で表現されるオブジェクトの空間ベクトルを表すものであり、具体的にはｎ次元空間上の座標値を保持する。また、ｏｂｊｅｃｔ−ｉｄｅｎｔｉｆｉｅｒによってオブジェクトのコンテンツにアクセスすることができる。更に、ノンリーフノードは以下のエントリを含むものである。
【０００４】
［数６］
Ｎｏｎ−ｌｅａｆＮｏｄｅ＝（ε，Ｒｅｃｏｒｄi ）（ｉ＝１，…，ε）    Ｒｅｃｏｒｄi ＝（Ｃ，ｃｈｉｌｄ−ｐｏｉｎｔｅｒ）
Ｃは、子ノードに格納されている矩形のすべてを包含するＭＢＲを表している。
また、ｃｈｉｌｄ−ｐｏｉｎｔｅｒによって子ノードにアクセスすることができる。この構造を例示したものが図１である。２次元空間上にオブジェクトが点在しているとき、図１のように階層構造を形成する。このような階層構造により、多次元空間内のオブジェクトに効率よくアクセスすることができる。
【０００５】
【発明が解決しようとする課題】
上述した従来の構造では、Ｒ−ｔｒｅｅとその派生手法はいずれも最小範囲矩形ＭＢＲを表現する端点の座標値を座標系における絶対的位置によって表現している。このように絶対的位置を用いれば、厳密な座標位置表現が可能であるが、反面多くの表現コストを必要とし、位置表現コストが高くなる。この結果、探索処理におけるディスクアクセス数の増大、ひいてはコストの上昇を招くという問題がある。
【０００６】
本発明は、上記に鑑みてなされたもので、その目的とするところは、多次元空間における矩形位置情報を部分空間符号で圧縮し、探索処理におけるディスクアクセス数の削減および探索性能の向上を図り得る多次元空間データ構造および多次元空間データの更新および探索方法と前記多次元空間データ構造を記録した記録媒体および前記方法を実施するプログラムを記録した記録媒体を提供することにある。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、請求項１記載の本発明は、ディスクに格納される複数の幾何学的オブジェクトを多次元空間上で表現される多次元ベクトルとして表す多次元空間データのデータ構造であって、前記多次元空間データは、前記多次元空間内の幾何学的オブジェクトが所定のエントリ数分それぞれ包含された複数のリーフノードを該多次元空間内の端点の絶対座標値によりそれぞれ表現される複数の最小範囲矩形により梱包して該複数のリーフノードを該複数の最小範囲矩形に対して連接させ、該複数の最小範囲矩形をさらに新たな最小矩形範囲により梱包して該複数の最小範囲矩形を該新たな最小範囲矩形に対して連接させることにより、前記新たな最小範囲矩形を含む複数の最小範囲矩形を複数のノンリーフノードとし前記複数のリーフノードと共に階層化して構成された木構造における、前記複数のリーフノードそれぞれの前記多次元空間内の絶対値座標と、前記木構造における前記複数のノンリーフノードに対応する複数の最小矩形範囲の端点の絶対値座標とから表現された実部分と、前記木構造における前記複数のノンリーフノードそれぞれに対応する複数の最小範囲矩形に対する相対的位置に基づく複数の仮想範囲矩形を木状に階層化した場合における前記複数の仮想範囲矩形により求められた複数の部分空間符号により表現された仮想部分とを備え、前記仮想部分は、前記各ノンリーフノードに連接される複数のノンリーフノードを複数の子ノードとし、連接元の各ノンリーフノードを各親ノードとした際に、該各親ノードに連接される子ノードの数であるエントリ数と、前記各親ノードに連接される複数の子ノードに対応する複数の仮想範囲矩形の始点および終点それぞれの前記多次元空間内の位置情報により求められた部分空間符号と、前記各親ノードに連接する複数の子ノードそれぞれの前記ディスク上の格納位置を表すノードポインタとから構成されたことを要旨とする。
【０００８】
また、請求項２記載の本発明は、請求項１記載の発明において、前記多次元空間の次元数をｎとし、前記各親ノードの最小範囲矩形の対角を成す２つの端点ａ、ａ´、および各親ノードに連接される各子ノードの最小範囲矩形の対角を成す２つの端点ｂ、ｂ´とし、ａ、ａ´、ｂ、ｂ´は、それぞれ下式（１）、（２）、（３）、（４）：
ａ＝［φ1 ，φ2 ，…，φn ］              ・・・（１）
ａ′＝［φ1 ′，φ2 ′，…，φn ′］      ・・・（２）
ｂ＝［ψ1 ，ψ2 ，…，ψn ］              ・・・（３）
ｂ′＝[ψ1 ′，ψ2 ′，…，ψn ′］        ・・・（４）
但し、φi ≦φi ′；ｉ∈｛１，２，…，ｎ｝
をそれぞれ満足する場合における前記各子ノードの各仮想範囲矩形の始点および終点それぞれの前記多次元空間内の位置情報をＶ＝ｖ,ｖ´とし、ｖ、ｖ´は、それぞれ下式（５）、（６）：
ｖ＝［ｒ1 ，ｒ2 ，…，ｒn ］              ・・・（５）
ｖ′＝［ｒ1 ′，ｒ2 ′，…，ｒn ′］      ・・・（６）
但し、ｒi ≦ｒi ′、かつ
【数７】
0003542732.tif 000002
ｉ＝１,２,・・・,ｎ
を満足するものとし、ηｉとηｉ´（ηｉ≦ηｉ´）を下式（９）および（１０）：
【数８】
0003542732.tif 000003
を満足するｉ次元座標上の部分区間を表すｑ元符号とし、Ｆ２（ηｉ,ｌ）を符号長ｌとするηｉの２進表現として下式（１１）：
ｌ＝「ｌｏｇ２ｑ」                            ・・・（１１）
を満足するものとした場合、前記各子ノードに対応する各仮想範囲矩形の始点および終点それぞれの位置情報により求められる前記多次元空間内の部分空間符号は、前記各子ノードの各仮想範囲矩形の位置情報Ｖを圧縮する２進符号Ｓ＝（ｓ,ｓ´）として、下式（１２）および（１３）：
ｓ＝［Ｆ2 （η1 ，ｌ），Ｆ2 （η2 ，ｌ），…，Ｆ2 （ηn ，ｌ）］                                                ・・・（１２）
ｓ′＝［Ｆ2 （η1 ′，ｌ），Ｆ2 （η2 ′，ｌ），
…，Ｆ2 （ηn ′，ｌ）］                        ・・・（１３）
を満足するように設定されたことを要旨とする。
【０００９】
請求項３記載の本発明は、請求項２記載の発明において、前記複数の子ノードに対応する複数の仮想範囲矩形の始点および終点それぞれの位置情報により求められる前記多次元空間内の部分空間符号は、前記複数の子ノードの始点および終点それぞれに対して設定された１次元目からｎ次元目までの次元毎の部分空間符号として構成されており、前記複数の子ノードそれぞれの前記ディスク上の格納位置を表すノードポインタは、該複数の子ノードそれぞれの前記ディスク上の格納位置をノード毎に表すページアドレスおよびバイト変位により構成されている。
【００１０】
請求項４記載の本発明は、請求項２記載の多次元空間データ構造に対してエントリ収集プロシージャを実行して問合せ点を中心とした近傍オブジェクトを該多次元空間データ構造から検索する多次元空間データ探索方法であって、前記エントリ収集プロシージャを実行することにより、引き継いだパラメータにより前記多次元空間データにおいて指し示されているノードがリーフノードか前記ノンリーフノードであるかを判定し、リーフノードの場合には、該リーフノードに包含されているオブジェクトを候補オブジェクトとして収集バッファに格納し、前記判定の結果ノンリーフノードである場合には、ループ１として、前記ノンリーフノードの最小範囲矩形に連接する複数の子ノードそれぞれの部分空間符号と前記パラメータとして引き継いだ前記ノンリーフノードの最小範囲矩形の位置とから前記複数の子ノードそれぞれの仮想範囲矩形の位置情報Ｖを計算するとともに、前記問合せ点Ｑと該複数の子ノードそれぞれに対応する複数の位置情報Ｖとの距離をそれぞれ求め、前記複数の子ノードそれぞれに対するノードポインタと共に、該複数の子ノードそれぞれの仮想範囲矩形の位置情報Ｖの計算結果および問合せ点Ｑと前記複数の子ノードに対応する複数の位置情報Ｖとの距離の計算結果を複数の枝リストにそれぞれ設定し、前記複数の枝リストを、該枝リストそれぞれの距離の昇順に整列し、ループ２として、前記複数の枝リストそれぞれの距離の小さい枝リストから順に前記エントリ収集プロシージャを再帰的に実行し、前記複数の枝リストそれぞれの距離に応じた枝刈り処理によりアクセスする必要のない枝リストを削除することを要旨とする。
【００１１】
請求項５記載の本発明は、複数の幾何学的オブジェクトを多次元空間上で表現される多次元ベクトルとして表す多次元空間データのデータ構造を記録したディスクを含む記録媒体であって、前記多次元空間データは、前記多次元空間内の幾何学的オブジェクトが所定のエントリ数分それぞれ包含された複数のリーフノードを該多次元空間内の端点の絶対座標値によりそれぞれ表現される複数の最小範囲矩形により梱包して該複数のリーフノードを該複数の最小範囲矩形に対して連接させ、該複数の最小範囲矩形をさらに新たな最小矩形範囲により梱包して該複数の最小範囲矩形を該新たな最小範囲矩形に対して連接させることにより、前記新たな最小範囲矩形を含む複数の最小範囲矩形を複数のノンリーフノードとし前記複数のリーフノードと共に階層化して構成された木構造における、前記複数のリーフノードそれぞれの前記多次元空間内の絶対値座標と、前記木構造における前記複数のノンリーフノードに対応する複数の最小矩形範囲の端点の絶対値座標とから表現された実部分と、前記木構造における前記複数のノンリーフノードそれぞれに対応する複数の最小範囲矩形に対する相対的位置に基づく複数の仮想範囲矩形を木状に階層化した場合における前記複数の仮想範囲矩形により求められた複数の部分空間符号により表現された仮想部分とを備え、前記仮想部分は、前記各ノンリーフノードに連接される複数のノンリーフノードを複数の子ノードとし、連接元の各ノンリーフノードを各親ノードとした際に、該各親ノードに連接される子ノードの数であるエントリ数と、前記各親ノードに連接される複数の子ノードに対応する複数の仮想範囲矩形の始点および終点それぞれの前記多次元空間内の位置情報により求められた部分空間符号と、前記各親ノードに連接する複数の子ノードそれぞれの前記ディスク上の格納位置を表すノードポインタとから構成された構造を有することを要旨とする。
【００１２】
請求項６記載の本発明は、請求項５記載の発明において、前記多次元空間の次元数をｎとし、前記各親ノードの最小範囲矩形の対角を成す２つの端点ａ、ａ´、および各親ノードに連接される各子ノードの最小範囲矩形の対角を成す２つの端点ｂ、ｂ´とし、ａ、ａ´、ｂ、ｂ´は、それぞれ下式（１）、（２）、（３）、（４）：
ａ＝［φ1 ，φ2 ，…，φn ］              ・・・（１）
ａ′＝［φ1 ′，φ2 ′，…，φn ′］      ・・・（２）
ｂ＝［ψ1 ，ψ2 ，…，ψn ］              ・・・（３）
ｂ′＝[ψ1 ′，ψ2 ′，…，ψn ′］        ・・・（４）
但し、φi ≦φi ′；ｉ∈｛１，２，…，ｎ｝
をそれぞれ満足する場合における前記各子ノードの各仮想範囲矩形の始点および終点それぞれの前記多次元空間内の位置情報をＶ＝ｖ,ｖ´とし、ｖ、ｖ´は、それぞれ下式（５）、（６）：
ｖ＝［ｒ1 ，ｒ2 ，…，ｒn ］              ・・・（５）
ｖ′＝［ｒ1 ′，ｒ2 ′，…，ｒn ′］      ・・・（６）
但し、ｒi ≦ｒi ′、かつ
【数９】
0003542732.tif 000004
ｉ＝１,２,・・・,ｎ
を満足するものとし、ηｉとηｉ´（ηｉ≦ηｉ´）を下式（９）および（１０）：
【数１０】
0003542732.tif 000005
を満足するｉ次元座標上の部分区間を表すｑ元符号とし、Ｆ２（ηｉ,ｌ）を符号長ｌとするηｉの２進表現として下式（１１）：
ｌ＝「ｌｏｇ２ｑ」                            ・・・（１１）
を満足するものとした場合、前記各子ノードに対応する各仮想範囲矩形の始点および終点それぞれの位置情報により求められる前記多次元空間内の部分空間符号は、前記各子ノードの各仮想範囲矩形の位置情報Ｖを圧縮する２進符号Ｓ＝（ｓ,ｓ´）として、下式（１２）および（１３）：
ｓ＝［Ｆ2 （η1 ，ｌ），Ｆ2 （η2 ，ｌ），…，Ｆ2 （ηn ，ｌ）］                                                ・・・（１２）
ｓ′＝［Ｆ2 （η1 ′，ｌ），Ｆ2 （η2 ′，ｌ），
…，Ｆ2 （ηn ′，ｌ）］                        ・・・（１３）
を満足するように設定されていることを要旨とする。
【００１３】
請求項７記載の本発明は、請求項６記載の本発明において、前記複数の子ノードに対応する複数の仮想範囲矩形の始点および終点それぞれの位置情報により求められる前記多次元空間内の部分空間符号は、前記複数の子ノードの始点および終点それぞれに対して設定された１次元目からｎ次元目までの次元毎の部分空間符号として構成されており、前記複数の子ノードそれぞれの前記ディスク上の格納位置を表すノードポインタは、該複数の子ノードそれぞれの前記ディスク上の格納位置をノード毎に表すページアドレスおよびバイト変位により構成されたことを要旨とする。
【００１４】
請求項８記載の本発明は、請求項２記載の多次元空間データ構造に対してエントリ収集プロシージャを実行して問合せ点を中心とした近傍オブジェクトを該多次元空間データ構造から検索する多次元空間データ探索プログラムを記録した記録媒体であって、前記エントリ収集プロシージャを実行することにより、引き継いだパラメータにより前記多次元空間データにおいて指し示されているノードがリーフノードか前記ノンリーフノードであるかを判定し、リーフノードの場合には、該リーフノードに包含されているオブジェクトを候補オブジェクトとして収集バッファに格納し、前記判定の結果ノンリーフノードである場合には、ループ１として、前記ノンリーフノードの最小範囲矩形に連接する複数の子ノードそれぞれの部分空間符号と前記パラメータとして引き継いだ前記ノンリーフノードの最小範囲矩形の位置とから前記複数の子ノードそれぞれの仮想範囲矩形の位置情報Ｖを計算するとともに、前記問合せ点Ｑと該複数の子ノードそれぞれに対応する複数の位置情報Ｖとの距離をそれぞれ求め、前記複数の子ノードそれぞれに対するノードポインタと共に、該複数の子ノードそれぞれの仮想範囲矩形の位置情報Ｖの計算結果および問合せ点Ｑと前記複数の子ノードに対応する複数の位置情報Ｖとの距離の計算結果を複数の枝リストにそれぞれ設定し、前記複数の枝リストを、該枝リストそれぞれの距離の昇順に整列し、ループ２として、前記複数の枝リストそれぞれの距離の小さい枝リストから順に前記エントリ収集プロシージャを再帰的に実行し、前記複数の枝リストそれぞれの距離に応じた枝刈り処理によりアクセスする必要のない枝リストを削除することを要旨とする。
【００１９】
【発明の実施の形態】
以下、図面を用いて本発明の実施の形態について説明する。本発明の一実施形態の多次元空間データ構造、多次元空間データの更新および探索方法においては、上述した従来の木構造Ｒ−ｔｒｅｅにおける最小範囲矩形ＭＢＲに対して相対的位置表現を用いる部分空間符号で表現される仮想範囲矩形ＶＢＲを用いることにより位置表現コスト、すなわちビット長を大幅に削減しようとするものである。具体的には、従来の木構造Ｒ−ｔｒｅｅにおいては親ノードの矩形は子ノードの矩形を包含しているので、親ノードの矩形の位置に基づいて子ノードの矩形の位置を相対的に表現することが可能である。本実施形態は、このような考えに基づき最小範囲矩形ＭＢＲに対して相対的位置表現を用いた仮想範囲矩形ＶＢＲを用いているものである。
【００２０】
まず、仮想範囲矩形ＶＢＲについて説明する。
【００２１】
ｎ次元空間における範囲矩形Ａは、対角をなす２つの端点ａとａ′によって表現することができる。また、範囲矩形Ｂも同様である。すなわち、
Ａ＝（ａ，ａ′），Ｂ＝（ｂ，ｂ′）
ここで、
［数１１］
ａ＝［φ1 ，φ2 ，…，φn ］,ａ′＝［φ1 ′，φ2 ′，…，φn ′］
ｂ＝［ψ1 ，ψ2 ，…，ψn ］,ｂ′＝[ψ1 ′，ψ2 ′，…，ψn ′］
（φi ≦φi ′；ｉ∈｛１，２，…，ｎ｝）
ｎ次元空間内において、範囲矩形ＡとＢが存在し、Ｂ⊆Ａが成り立つものとする（ＢがＡに包含されているものとする）。また、ｑを２以上の整数とする。以下に示される矩形Ｖによって近似的に矩形Ｂを表現することができる。以下、矩形Ｖを仮想範囲矩形、もしくはＶＢＲ（Virtual Bounding Rectangle）と呼ぶ。
【００２２】
Ｖ＝（ｖ，ｖ′）
ここで、
［数１２］
ｖ＝［ｒ1 ，ｒ2 ，…，ｒn ］
ｖ′＝［ｒ1 ′，ｒ2 ′，…，ｒn ′］,ｒi ≦ｒi ′
ただし、
【数１３】
0003542732.tif 000006
（ｉ＝１,２,・・・,ｎ）
例えば、図２のように、Ｂ⊆Ａを満たす矩形ＡとＢが与えられているとする。
点線で示されている矩形が、基数８のＡにおけるＢのＶＢＲである。
【００２３】
次に、符号化法について説明する。
【００２４】
仮想範囲矩形を表現するための一方法として、以下の符号化法がある。
【００２５】
ηｉとηｉ´をｉ次元座標上の部分区間を表すｑ元符号とする（ηｉ≦ηｉ´）。すなわち、
【数１４】
0003542732.tif 000007
また、Ｆ2 （ηi ，ｌ）を符号長ｌとするηi の２進表現とする
［数１５］
（ｌ＝「ｌｏｇ２ｑ」）。
以下の２進符号Ｓ（以下、部分空間符号）によって、仮想範囲矩形Ｖの位置情報を圧縮することが可能である。
【００２６】
Ｓ＝（ｓ，ｓ′）
ここで、
［数１６］
ｓ＝［Ｆ2 （η1 ，ｌ），Ｆ2 （η2 ，ｌ），…，Ｆ2 （ηn ，ｌ）］
ｓ′＝［Ｆ2 （η1 ′，ｌ），Ｆ2 （η2 ′，ｌ），
…，Ｆ2 （ηn ′，ｌ）］
少ない情報量にもかかわらず、部分空間符号は範囲矩形を復元する能力を有する。絶対的位置を用いた元の範囲矩形とは対照的に、本発明における部分空間符号は相対的位置に基づいているために誤差を含んではいるものの、仮想範囲矩形として元の矩形を再生することができる。
【００２７】
図３は、部分空間符号を生成する方法について簡単に例示したものである。ｎ次元空間内のｉ次元座標において、範囲矩形Ａが座標値として（３，１９）を、そして範囲矩形Ｂが同様に座標値として（６，８）を占めている。このとき、長さｌの符号を用いて、Ａのｉ次元座標範囲を２l の部分区間に等分割することにより、Ｂの始点をそれが存在する部分区間によって近似的に表現することができる。これは、Ｂの終点についても同様である。例えば、長さ３の符号を用いて、Ａの領域を８つの部分区間に分割した場合、ＢはＡの始点から数えて前から２番目と３番目の部分区間を占めていることになる。それゆえ、ｉ次元座標におけるＢの領域は８元符号（１，２）、もしくは２進符号では（００１，０１０）のように近似的に表現することが可能である。この場合、２進符号において必要な符号長は、Ｂの始点、終点それぞれに３であるため、次元あたり合計６となる。
【００２８】
次に、データ構造について説明する。
【００２９】
本発明は、ＭＢＲを用いた従来の木構造索引を利用するものであるが、以下の点で従来手法と異なる。
【００３０】
（ａ）本手法を適用する木構造とは別に、部分空間符号で構成される木構造を生成する。２つの木構造を区別するために、絶対的位置表現を用いる元の木構造を実部分（ｒｅａｌ  ｐａｒｔ）、相対的位置表現を用いる部分空間符号により構成される木構造を仮想部分（ｖｉｒｔｕａｌ  ｐａｒｔ）と呼ぶ。図４は、実部分と仮想部分の関係を表したものである。
【００３１】
（ｂ）木構造の実部分における各々のノードに対応して、仮想部分のノードを生成する。ただし、実部分のリーフノードについては仮想部分において生成されない。
【００３２】
（ｃ）実部分の木構造の高さをｓ、根ノードのレベルを１とするとき、仮想部分のｓ−１レベルのノードは、子ノードのポインタとして実部分のｓレベルのノード、つまりリーフノードを指す。
【００３３】
（ｄ）根ノードのＭＢＲの位置、大きさを座標値として保持しておく必要がある。
【００３４】
（ｅ）仮想部分において子ノードのＶＢＲを表現する部分空間符号は、現ノードのＶＢＲと実部分に含まれる子ノードのＭＢＲを基に生成される。ただし、現ノードが根である場合のみ、根のＭＢＲと子ノードのＭＢＲを基に子ノードのＶＢＲが生成される。
【００３５】
本発明では、実部分とは別に仮想部分を生成する。仮想部分のノードは以下のような構造を有する。
【００３６】
［数１７］
Ｎｏｄｅ＝（ε，Ｓ，ｃｈｉｌｄ−ｐｏｉｎｔｅｒi ）（ｉ＝１，…，ε）    ｃｈｉｌｄ−ｐｏｉｎｔｅｒi ＝（ｐａｇｅ−ｎｕｍｂｅｒ，                                    ｂｙｔｅ−ｏｆｆｓｅｔ）
ここで、εはノードに格納されているエントリ数である。Ｓは、ε個の子ノードのＭＢＲを部分空間符号によって表現したものである。図５に示すようにＳ内にはすべての子ノードについて、全次元の始点と終点の符号が格納されている。また、仮想部分においてはｃｈｉｌｄ−ｐｏｉｎｔｅｒi によって子ノードにアクセスすることができる。ｃｈｉｌｄ−ｐｏｉｎｔｅｒi の中にはページ番号の他にｂｙｔｅ−ｏｆｆｓｅｔとしてバイト変位が格納されている。従来手法においては、１ノードが１ページ、もしくはそれ以上を占有するように設計されているが、本手法の仮想部分では１ページに複数のノードが格納される。それゆえ、子ノードを指し示すためにバイト変位が各エントリに必要となる。
【００３７】
更に詳しく、図６を参照して、仮想部分におけるノード構成について説明する。上述したように、本実施形態の多次元空間データ構造は、多次元空間内の幾何学的オブジェクトを最小範囲矩形ＭＢＲに梱包し、該最小範囲矩形ＭＢＲをリーフとして木状に階層化し、最上位をノンリーフノードとし、該ノンリーフノードの下位にリーフノードを順次連接した木構造を構成し、最小範囲矩形ＭＢＲを表現する端点の座標値を座標系における絶対的位置によって表現したものを図４で示したように実部分とし、ノンリーフノードにおける最小範囲矩形ＭＢＲに対して相対的位置に基づく部分空間符号で表現される仮想範囲矩形ＶＢＲを構成し、この仮想範囲矩形ＶＢＲを木構造に階層化して表現したものを仮想部分としている。
【００３８】
そして、このように構成される仮想部分における各ノードを図６（ａ）に示すように各ノードに連接される子ノードの数であるエントリ数、各子ノードの始点および終点を表す多次元の部分空間符号、各子ノードのディスク上の格納位置を表す子ノードポインタから構成している。
【００３９】
各ノードの部分空間符号は、図６（ｂ）に示すように、該ノードに連接する複数の子ノードの数であるエントリ数に相当する子ノード１から子ノードεまでの複数の子ノードのそれぞれに対してその始点と終点をそれぞれ１次元目の部分空間符号からｎ次元目の部分空間符号まで定義している。
【００４０】
また、子ノードポインタは、図６（ｃ）に示すように、子ノード１から子ノードεまでのそれぞれのディスク上の格納位置をページアドレスとバイト変位で定義している。
【００４１】
次に、上述したように構成される多次元空間データの更新アルゴリズムについて説明する。
【００４２】
本発明では、木構造の実部分のみならず仮想部分についても更新する必要がある。実部分の更新は、従来手法で実施している方法と同じである。また、仮想部分におけるノードのオーバフロー処理は実部分の処理と同一であるため、仮想部分におけるノードは実部分の構造と同じ状態を保つように更新操作を模倣する。実部分におけるオブジェクトの挿入、実部分と仮想部分におけるノードのオーバフロー処理がすべて終了した時点で、仮想部分における部分空間符号の更新処理を開始する。以下では、部分空間符号の更新アルゴリズムについて説明する。
【００４３】
実部分でＭＢＲを更新したノードについては、対応する仮想部分のノードとその配下に位置するすべてのノンリーフノードにアクセスし、ノードが保有する部分空間符号を検査する必要がある。そして、必要があれば更新する。つまり、実部分でＭＢＲを更新したノードに対応する仮想部分のノードをＴとするとき、仮想部分において、Ｔをトップノードとする部分木すべてにアクセスする。仮想部分における部分空間符号の修正は、ノードＴから開始し、下向きに伝播する。また、部分空間符号に修正を要しないノードに達しても終了せず、引き続き下位ノードへ処理を伝播させる。
【００４４】
図７は、より詳細に部分空間符号の更新処理について示したものである。この記述において、ｇｅｎＳｕｂｓｐａｃｅＣｏｄｅはＶＢＲと部分空間符号を計算するプロシージャである。具体的には、ｎ次元空間に位置するＢ⊆Ａとなる２つの矩形ＡとＢが与えられているとき、このプロシージャではＢのＶＢＲ  Ｖを計算し、更にＡにおけるＶの部分空間符号を生成し、各々の結果を変数Ｖ，Ｓに設定する。
【００４５】
プロシージャｉｎｓｅｒｔでは部分空間符号を更新するために、挿入パスＩを用いている。ここで、Ｉ．ｃｏｕｎｔは仮想部分の木構造において更新を必要とする部分木の数である。また、Ｉ．ｐａｔｈ［ｉ］．ｌｅｖｅｌ［ｊ］（１≦ｉ≦Ｉ．ｃｏｕｎｔ；１≦ｊ≦Ｉ．ｐａｔｈ［ｉ］．ｌｅｖｅｌ−１）は部分木に関するトップノードのレベルであり、Ｉ．ｐａｔｈ［ｉ］．ｒｏｏｍ［ｊ］は根ノードから部分木のトップノードに達するまでの経路である。部分木のトップノードに対応する実部分のノードは、ＭＢＲに変動が生じたエントリを１つ以上保有している。プロシージャｉｎｓｅｒｔではまず、その実部分のエントリに対応するトップノードのエントリの符号を更新する。そして逐次かつ連続的に下位ノードに向かって符号を更新するために、上述のプロシージャｇｅｎＳｕｂｓｐａｃｅＣｏｄｅによって求めたＶＢＲをパラメータとして、再帰プロシージャａｄｊｕｓｔＳｕｂｓｐａｃｅＣｏｄｅを実行する。ａｄｊｕｓｔＳｕｂｓｐａｃｅＣｏｄｅではｇｅｎＳｕｂｓｐａｃｅＣｏｄｅを用い、上位ノードで生成された現ノードのＶＢＲと現ノードが保有する子ノードのＭＢＲから部分空間符号を計算し、更新する。更に、子ノードの部分空間符号からＶＢＲを求め、求めた矩形をパラメータとして再度ａｄｊｕｓｔＳｕｂｓｐａｃｅＣｏｄｅを実行し、孫ノードの符号を更新する。
【００４６】
例として、図９を用いて説明する。図９において矩形Ａ，Ｂ，Ｃを各々根ノード、子ノード、孫ノードとする。アルゴリズムでは、矩形ＡとＢを用いてＢの仮想範囲矩形Ｖb を生成し、部分空間符号を更新する。更に矩形Ｖb とＣを用いてＣの仮想範囲矩形Ｖc を生成し、部分空間符号を更新することによって、木構造を構築する。
【００４７】
次に、図８に示すフローチャートを参照して、部分空間符号の更新処理、すなわち符号更新アルゴリズムについて更に詳しく説明する。図８において、Ｉｃｏｕｎｔは仮想部分の木構造において更新を必要とする部分木の数である。符号更新アルゴリズムは、更新を必要とする部分木各々に対して実行される。従って、符号更新に関するループ（ループ１）は、Ｉｃｏｕｎｔで示される回数分繰り返すことになる。
【００４８】
次に、ループ２においてノードＴのＶＢＲを求める。子ノードのＶＢＲおよび部分空間符号は、現ノードのＶＢＲと子ノードのＭＢＲを基にして計算される。従って、Ｔに格納されており、かつ更新を必要とする子ノードの符号を計算、修正するためには、まずノードＴのＶＢＲを求める必要がある。ループ２までの処理は、根ノードから順に、下位ノードのＶＢＲ（Ｖとして表現）を求めていき、ノードＴのＶＢＲを求めるものである。
【００４９】
ループ２を終えた後、まずノードＴ内において更新すべきエントリの符号のみを修正する。これは、ＴのＶＢＲとＴの子ノードのＭＢＲを基にして計算されたものである。更に、仮想部分においてノードＴをトップノードとする部分木内に位置するノードの符号を修正するため、すなわちノードＴ配下のノードに格納されている符号を修正するために部分木内符号修正プロシージャを実行する。
【００５０】
部分木内符号修正プロシージャでは、格納されているすべてのエントリの符号を修正する。また、格納されているエントリの子ポインタが指し示すノードが、リーフノードであれば符号を修正して終了する。しかし、リーフノードでなければ、更に子ポインタが指し示すノード内に格納されている符号を修正するために、部分木内符号修正プロシージャを再帰的に実行する。部分木内符号修正プロシージャでは、上位ノードで生成された現ノードのＶＢＲと現ノードが保有する子ノードのＭＢＲから子ノードのＶＢＲを求め、そして子ノードの部分空間符号を計算し、更新する。更に、子ノードのＶＢＲをパラメータとして再度部分木内符号修正プロシージャを実行し、孫ノードのＶＢＲを求め、そして孫ノードの部分空間符号を計算し更新を行う。
【００５１】
次に、多次元空間データの探索アルゴリズムについて説明する。
【００５２】
図１０は、ＶＢＲを用いた近傍探索アルゴリズムを記述したものである。ここでｇｅｎＶｉｒｔｕａｌＢＲは、矩形Ａと部分空間符号ＳからＶＢＲ  Ｖを生成する関数であり、以下のように示される。
【００５３】
Ｖ＝ｇｅｎＶｉｒｔｕａｌＢＲ（Ａ，Ｓ）
このアルゴリズムにより、問い合わせ点Ｑを中心とした近傍オブジェクトをｋ個収集することができる。
【００５４】
プロシージャｓｅａｒｃｈは、図１０においてＲｏｏｔＲｅｃｔａｎｇｌｅとして示されている根ノードのＭＢＲをパラメータとして、再帰プロシージャｃｏｌｌｅｃｔＥｎｔｒｙを実行する。ｃｏｌｌｅｃｔＥｎｔｒｙでは、上記のｇｅｎＶｉｒｔｕａｌＢＲ関数を用いている。経由したノード毎に、パラメータとして引き継いだ範囲矩形と子ノードの部分空間符号に基づいて、各子ノードのＶＢＲ  Ｖを生成し、Ｖによって枝刈り対象の判断を行う。枝刈り処理に関しては、ｕｐｗａｒｄＰｒｕｎｉｎｇがそれを実行するプロシージャである。枝刈り対象にならなかった子ノードについては最近傍オブジェクトを含んでいる可能性があり、子ノードのＶＢＲをパラメータとして再度ｃｏｌｌｅｃｔＥｎｔｒｙを実行することにより、孫ノードを探索する。
【００５５】
例として、図９を用いて説明する。予め基数４によってＢとＣの部分空間符号が作成されているものとする。Ａの矩形位置とＢの部分空間符号によってＶＢＲＶb を生成し、探索における枝刈り戦略に適用する。Ｖb が枝刈り対象にならなかった場合、更にＶb の矩形位置とＣの部分空間符号によってＶＢＲ  Ｖc を生成する。生成したＶＢＲに対して枝刈り戦略を適用する。部分空間符号を用いることにより、矩形位置の表現コストが低い分、厳密な矩形の位置情報を用いるよりも探索コストが低くなる。
【００５６】
次に、図１１に示すフローチャートを参照して、探索アルゴリズムについて更に詳しく説明する。このアルゴリズムでは、エントリ収集プロシージャを実行することにより問い合わせ点を中心とした近傍オブジェクトを木構造から収集し、結果出力する。探索アルゴリズムでは、仮想部分のノンリーフノードと、実部分のリーフノードを用いる。各々のノードでは、現ノードの矩形と子ノードの部分空間符号を基に子ノードの矩形を計算する。この繰り返しを仮想部分の根ノードから順に、子ノード、孫ノードに向かって深さ優先で実施する。そして、リーフノードに到達するとオブジェクトの位置情報を収集し、候補オブジェクトとする。また、枝刈り処理によって不必要なノードのアクセスを避けることができる。具体的には、候補オブジェクトと問い合わせ点との距離に対して、仮想範囲矩形と問い合わせ点との距離が大きければ、その仮想範囲矩形を表すノードにはアクセスしない。このように本アルゴリズムにより、効率的な近傍探索を実施することができる。
【００５７】
エントリ収集プロシージャでは、まずパラメータとして引き継いだＮにより指し示されているノードがリーフノードかノンリーフノードかを判定する。リーフノードであればノードに格納されているエントリを候補オブジェクトとして収集バッファに格納する。
【００５８】
ノンリーフノードである場合、ループ１とループ２を実行する。ループ１では、ノードにおいてエントリとして格納されている部分空間符号とパラメータとして引き継いだ現ノードの矩形位置Ｒから子ノードの仮想範囲矩形Ｖを計算し、また問い合わせ点とＶとの距離を求める。そして、子ポインタとともに、仮想範囲矩形と距離の計算結果を枝リストに設定する。仮想範囲矩形と距離の計算、および枝リストへの設定は、Ｎで示されるノードに格納されている全エントリに対して実施する。全エントリに対する計算が終了後、距離の昇順に枝リストを整列する。
【００５９】
ループ２では、距離値の小さいリストから順にエントリ収集プロシージャを再帰的に実行する。その後、枝刈り処理によってアクセスする必要のない枝リストを削除する。
【００６０】
次に、ディスクアクセス数を調査した実験結果を探索性能として示す。比較対象としてＲ* −ｔｒｅｅを用い、また部分空間符号化法を適用した木構造において、その実験部分についてもＲ* −ｔｒｅｅを用いる。実験条件については、次の通りである。
【００６１】
（１）オブジェクトデータは、ランダム関数による点データを用い、データ集合サイズに関しては、１０Ｋから１００Ｋまで変化させて実験を実施した。
【００６２】
（２）空間次元数は１２である。
【００６３】
（３）探索数は２０である。
【００６４】
このような実験条件でディスクアクセス数を調査した結果、図１２に示すように点線で示す本発明の部分空間符号化法（Ｓｕｂｓｐａｃｅ  Ｃｏｄｉｎｇ）を適用した木構造では実線で示す従来のＲ* −ｔｒｅｅを用いた方法に比較して、ディスクアクセスが１２％低減することがわかった。
【００６５】
【発明の効果】
以上説明したように、本発明によれば、矩形位置を表現する座標位置データを相対的位置に基づく部分空間符号化により圧縮することにより、探索処理において少ないディスクアクセスでオブジェクトを検出することが可能となり、結果として探索性能の向上を実現することができる。
【００６６】
また、本発明は多次元空間データとして表現することができる画像、映像、音声、文書等を対象とする広範囲な情報検索に適用可能である。
【図面の簡単な説明】
【図１】従来のＲ−ｔｒｅｅ構造を説明するための図である。
【図２】本発明において仮想範囲矩形ＶＢＲを用いた空間表現の例を示す図である。
【図３】本発明において部分空間符号の例を示す図である。
【図４】本発明に使用されるデータ構造を示す図である。
【図５】本発明の部分空間符号の構造を説明するための図である。
【図６】本発明のデータ構造の仮想部分におけるノード構成を示す図である。
【図７】本発明における更新アルゴリズムを説明するための図である。
【図８】図７に示す更新アルゴリズムを示すフローチャートである。
【図９】本発明における仮想範囲矩形ＶＢＲと部分空間符号の作成過程の例を説明するための図である。
【図１０】本発明における近傍探索アルゴリズムを説明するための図である。
【図１１】図１０に示す近傍探索アルゴリズムを示すフローチャートである。
【図１２】本発明の探索性能を従来のものと比較して示すグラフである。
【図１】
0003542732.tif 000014
【図２】
0003542732.tif 000015
【図３】
0003542732.tif 000016
【図４】
0003542732.tif 000017
【図５】
0003542732.tif 000018
【図６】
0003542732.tif 000019
【図７】
0003542732.tif 000020
【図８】
0003542732.tif 000021
【図９】
0003542732.tif 000022
【図１０】
0003542732.tif 000023
【図１１】
0003542732.tif 000024
【図１２】
0003542732.tif 000025