JPH11328225A - デ―タ管理装置、デ―タ管理方法及びデ―タ管理プログラムを記録した媒体 - Google Patents

デ―タ管理装置、デ―タ管理方法及びデ―タ管理プログラムを記録した媒体

Info

Publication number
JPH11328225A
JPH11328225A JP11029016A JP2901699A JPH11328225A JP H11328225 A JPH11328225 A JP H11328225A JP 11029016 A JP11029016 A JP 11029016A JP 2901699 A JP2901699 A JP 2901699A JP H11328225 A JPH11328225 A JP H11328225A
Authority
JP
Japan
Prior art keywords
coordinate
index
coordinates
area
data management
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11029016A
Other languages
English (en)
Other versions
JP3607107B2 (ja
Inventor
Mutsumi Fujiwara
睦 藤原
Shuichi Kamimura
秀一 上村
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP02901699A priority Critical patent/JP3607107B2/ja
Priority to DE69939289T priority patent/DE69939289D1/de
Priority to US09/267,165 priority patent/US6687688B1/en
Priority to EP99104003A priority patent/EP0942381B1/en
Publication of JPH11328225A publication Critical patent/JPH11328225A/ja
Application granted granted Critical
Publication of JP3607107B2 publication Critical patent/JP3607107B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

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

Abstract

(57)【要約】 【課題】 データ領域を効率的に使用でき、探索効率を
大幅に向上させることができるデータ管理装置を提供す
る。 【解決手段】 本発明のデータ管理装置は、座標データ
1を格納するインデクス2、座標データからインデクス
を生成するインデクス生成手段3、2次元空間内(平面
上)の所定の範囲、すなわち全領域内に存在する1つ以
上の座標データのうちで、指定した矩形範囲に含まれる
座標データをすべて列挙する範囲探索手段4、及び、指
定した座標データに最も近い座標データを決定する最近
座標探索手段5を備えている。また、インデクスにおけ
る領域群の格納形式は、各次元の座標と元分割の各項を
順次格納した形式とされている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、2次元またはそれ
以上の多次元空間中での位置を表す座標データ等のデー
タの管理に適したデータ管理装置、データ管理方法及び
データ管理プログラムを記録した媒体に関するものであ
る。より具体的には、平面あるいは空間内における座標
データについて、登録、削除、変更、探索(例えば、範
囲探索、最近座標探索)などの処理を、単独で、あるい
は適宜組み合わせて実施することのできるデータ管理装
置、データ管理方法及びデータ管理プログラムを記録し
た媒体に関する。
【0002】
【従来の技術】従来から、複数の属性を有するデータを
コンピュータを用いて管理する手法が数多く提案されて
いる。例えば、画像処理、コンピュータビジョン、図面
管理などの分野においては、ベクトル、点、記号などの
大量の図形要素により表される膨大な図面をコンピュー
タにより管理し、データの登録、削除を行ったり、所望
の図面を探索し、変更する作業が必要とされている。
【0003】このようなデータ管理方法として、従来か
ら知られているものにquad−tree法がある。こ
のquad−tree法では、領域を2次元平面の各軸
に平行な面で4等分割する。分割された1つの空間に含
まれるデータ数がP以下になるまで再帰的に分割を繰り
返し、この過程を4分木として記憶する。このquad
−tree法は、例えば、ACM Computing
Surveys, Vol,20,No.4 Dec
ember 1988に記載されている。
【0004】この分割法では、葉の分割時にそれに対応
する子ノードを新設するだけであるため、木構造の管理
は容易となる。また、領域を等分割するため、分割位置
は簡単に特定でき、個々の分割軸を記憶しておく必要は
ないといった利点がある。一方、quad−tree法
では、データの分布を無視した等面積分割が行われるた
め、データの分布が一様でない場合に、木のバランス性
およびメモリの利用効率が極端に低下するという欠点が
ある。
【0005】ここで、quad−tree法を用いた場
合のデータの格納方法について説明する。すなわち、図
13(A)に示した各領域は、図13(B)に示した木
構造において、それぞれ同一の番号を付したノードに対
応づけられている。従って、図13(A)の斜線で示し
た領域は、図13(B)の黒いノードに対応している。
なお、この図13は、前記の文献第274頁のFigu
re 3を転記したものである。
【0006】しかしながら、このようなデータ構造にお
いて、図13(A)の斜線で示した領域(あるいは、そ
の領域に含まれるデータ)を列挙するには、部分木全体
をtraverseする必要がある。
【0007】
【発明が解決しようとする課題】上述したように、qu
ad−tree法のような従来のデータ管理方法におい
て、データを格納するインデクスとして木構造を用いた
場合、ある部分範囲に含まれる点データを、あるノード
を根とする部分木の内部ノード(internal n
ode)や/または(and/or)外部ノード(ex
ternal node)に登録された点データとして
決定することはできるが、それらを列挙するには、部分
木全体をtraverseする必要がある。
【0008】また、このような木構造のインデクスで
は、含まれている点データが多い部分範囲は大きな部分
木に対応するという傾向は不可避であるから、1つの点
データを列挙するのに要するtravarseの時間的
overheadは、点データの数が多い場合でも軽減
されない。そればかりか、かえって大きな部分木を効率
的にtraverseしようとすれば、スタックやフラ
グ領域(各ノードに設けて、そのノードをtraver
seした状況を表す)のような余分な記憶領域が必要に
なる。
【0009】このように、従来のデータ構造は記憶領域
が余分に必要になるだけでなく、その量がデータの性質
によって左右される。しかも、ある範囲に含まれている
ことが明らかになったデータを列挙するのに、そのデー
タ構造を逐一たどってデータに到達しなければならない
ため、効率が良くないという欠点があった。
【0010】また、多くの場合、変更に容易に対応し得
る反面、変更が生じない、あるいは変更の頻度が低いデ
ータに対しては、効率的なデータ構造とはいえない。さ
らに、従来のデータ構造は、狭い範囲のあまりばらつき
の大きくないデータを扱うのには向いているが、制限の
ゆるい、ダイナミックレンジ(精度のばらつき)が大き
いデータを扱うのには、効率的ではない。例えば、x軸
とy軸で値の精度が違う場合、正規化しなければならな
いが、その基準がないという問題があった。
【0011】また、従来のデータ管理方法においては、
範囲探索に関して、ある範囲に含まれていることが明ら
かになったデータに対する効率的なアクセスの手段が開
示されておらず、最近座標探索手段に関しても、効率的
なものが具体的に開示されていなかった。
【0012】本発明は、上記のような従来技術の問題点
を解決するために提案されたもので、その目的は、デー
タ領域を効率的に使用でき、探索効率を大幅に向上させ
ることができるデータ管理装置、データ管理方法及びデ
ータ管理プログラムを記録した媒体を提供することにあ
る。
【0013】
【課題を解決するための手段】前記の目的を達成するた
め、請求項1に記載のデータ管理装置は、n次元の座標
データを格納したインデクスと、このインデクス中の座
標データを探索する探索手段を備え、前記インデクスの
各座標データは、各次元の座標を前方から特定の長さ分
を取り、これを一定の次元順に連接して成る領域コード
の辞書順にソートされていることを特徴とするものであ
る。
【0014】また、請求項16に記載のデータ管理方法
は、請求項1に記載の発明を方法の観点から捉えたもの
であって、インデクスに格納されたn次元の座標データ
を探索する探索処理を含み、前記インデクスの各座標デ
ータは、各次元の座標を前方から特定の長さ分を取り、
これを一定の次元順に連接して成る領域コードの辞書順
にソートされていることを特徴とするものである。
【0015】請求項31に記載の発明は、インデクスに
格納されたn次元の座標データを管理するデータ管理プ
ログラムを記録した媒体であって、前記プログラムは、
各次元の座標を前方から特定の長さ分を取り、これを一
定の次元順に連接して成る領域コードの辞書順にソート
されたn次元の座標データを探索する探索処理を含むこ
とを特徴とするものである。
【0016】上記のような構成を有する請求項1及び請
求項16に記載の発明によれば、インデクスの各座標デ
ータが、各次元の座標を前方から特定の長さ取り、これ
を一定の次元順に連接して成る領域コードの辞書順にソ
ートされているので、この領域コードに基づいて、座標
データを探索することができるので、探索処理の効率が
大幅に向上する。
【0017】請求項2に記載の発明は、請求項1に記載
のデータ管理装置において、さらに、前記インデクスを
生成するインデクス生成手段を備え、前記インデクス生
成手段は、前記インデクスに含まれる座標のうち、ある
前方列が一致しているものを相続くように並べた上で、
それらの前方列がさらにどこまで一致するかを決定し、
(新たに一致した長さ+1)の値に基づいて領域コード
を生成し、この領域コードの辞書順にソートすることに
より、前記インデクスを生成することを特徴とするもの
である。
【0018】また、請求項17に記載の発明は、請求項
2に記載の発明を方法の観点から捉えたものであって、
請求項16に記載のデータ管理方法において、さらに、
前記インデクスを生成するインデクス生成処理を含み、
前記インデクス生成処理が、前記インデクスに含まれる
座標のうち、ある前方列が一致しているものを相続くよ
うに並べた上で、それらの前方列がさらにどこまで一致
するかを決定し、(新たに一致した長さ+1)の値に基
づいて領域コードを生成し、この領域コードの辞書順に
ソートすることにより、前記インデクスを生成すること
を特徴とするものである。
【0019】請求項32に記載の発明は、請求項31に
記載のデータ管理プログラムを記録した媒体において、
前記プログラムは、前記インデクスに含まれる座標のう
ち、ある前方列が一致しているものを相続くように並べ
た上で、それらの前方列がさらにどこまで一致するかを
決定し、(新たに一致した長さ+1)の値に基づいて領
域コードを生成し、この領域コードの辞書順にソートす
ることにより、前記インデクスを生成するインデクス生
成処理を含むことを特徴とするものである。
【0020】上記のような構成を有する請求項2及び請
求項17に記載の発明によれば、インデクス生成手段に
よって、n次元の座標データのそれぞれについて、所定
のルールに基づいて領域コードを生成し、前記座標デー
タをこの領域コードの辞書順にソートすることにより、
インデクスを生成することができる。
【0021】請求項3に記載の発明は、請求項1に記載
のデータ管理装置において、さらに、前記インデクスへ
の座標の追加及び削除を行うインデクス変更手段を備
え、前記インデクス変更手段は、前記領域コードに基づ
いてインデクスを二分探索し、領域コードによるソート
順に矛盾しない位置に新たな座標を挿入することによ
り、前記インデクスに座標を追加することを特徴とする
ものである。
【0022】また、請求項18に記載の発明は、請求項
3に記載の発明を方法の観点から捉えたものであって、
請求項16に記載のデータ管理方法において、前記イン
デクスへの座標の追加及び削除を行うインデクス変更処
理を含み、前記インデクス変更処理が、前記領域コード
に基づいてインデクスを二分探索し、領域コードによる
ソート順に矛盾しない位置に新たな座標を挿入すること
により、前記インデクスに座標を追加することを特徴と
するものである。
【0023】請求項33に記載の発明は、請求項31に
記載のデータ管理プログラムを記録した媒体において、
前記プログラムは、前記領域コードに基づいてインデク
スを二分探索し、領域コードによるソート順に矛盾しな
い位置に新たな座標を挿入することにより、前記インデ
クスに座標を追加するインデクス変更処理を含むことを
特徴とするものである。
【0024】上記のような構成を有する請求項3及び請
求項18に記載の発明によれば、インデクス変更手段に
より、インデクスへの座標の追加・削除が可能となる。
また、この場合、座標の追加・削除に伴って必要となる
インデクスの修正もなされるので、探索の精度は保持さ
れる。なお、空のインデクスに対して、探索対象となる
座標をインデクス変更手段を用いて逐次追加すれば、イ
ンデクスを生成できるから、インデクス変更手段はイン
デクス生成機能も兼ね備えているということができる。
【0025】請求項4に記載の発明は、請求項1乃至請
求項3のいずれか一に記載のデータ管理装置において、
前記探索手段が、指定された範囲に含まれる座標を探索
する範囲探索手段であることを特徴とするものである。
【0026】また、請求項19に記載の発明は、請求項
4に記載の発明を方法の観点から捉えたものであって、
請求項16乃至請求項18のいずれか一に記載のデータ
管理方法において、前記探索処理が、指定された範囲に
含まれる座標を探索する範囲探索処理であることを特徴
とするものである。
【0027】請求項34に記載の発明は、請求項31乃
至請求項33のいずれか一に記載のデータ管理プログラ
ムを記録した媒体において、前記プログラムに含まれる
探索処理が、指定された範囲に含まれる座標を探索する
範囲探索処理であることを特徴とするものである。
【0028】上記のような構成を有する請求項4及び請
求項19に記載の発明によれば、データ管理装置に範囲
探索手段を備えることにより、左下及び右上の座標を示
すことによって指定された所望の矩形範囲内に含まれる
座標データを、インデクス中より探索することができ
る。
【0029】請求項5に記載の発明は、請求項1乃至請
求項3のいずれか一に記載のデータ管理装置において、
前記探索手段が、指定された座標に最も近い座標を探索
する最近座標探索手段であることを特徴とするものであ
る。
【0030】また、請求項20に記載の発明は、請求項
5に記載の発明を方法の観点から捉えたものであって、
請求項16乃至請求項18のいずれか一に記載のデータ
管理方法において、前記探索処理が、指定された座標に
最も近い座標を探索する最近座標探索処理であることを
特徴とするものである。
【0031】請求項35に記載の発明は、請求項31乃
至請求項33のいずれか一に記載のデータ管理プログラ
ムを記録した媒体において、前記プログラムに含まれる
探索処理が、指定された座標に最も近い座標を探索する
最近座標探索処理であることを特徴とするものである。
【0032】上記のような構成を有する請求項5及び請
求項20に記載の発明によれば、データ管理装置に最近
座標探索手段を備えることにより、所望の指定座標に最
も近い座標データを、インデクス中より探索することが
できる。
【0033】請求項6に記載の発明は、請求項1乃至請
求項5のいずれか一に記載のデータ管理装置において、
前記インデクスが、各次元の座標の前方列が指定され、
それらを前方列とする座標がインデクス中に存在する場
合には、それらのうちの少なくとも一つを決定する機能
を備えていることを特徴とするものである。
【0034】また、請求項21に記載の発明は、請求項
6に記載の発明を方法の観点から捉えたものであって、
請求項16乃至請求項20のいずれか一に記載のデータ
管理方法において、前記インデクスが、各次元の座標の
前方列が指定され、それらを前方列とする座標がインデ
クス中に存在する場合には、それらのうちの少なくとも
一つを決定する機能を備えていることを特徴とするもの
である。
【0035】上記のような構成を有する請求項6及び請
求項21に記載の発明によれば、インデクスが上記機能
を備えることにより、領域コードをキーとして、それを
前方列とする領域コードを持つ領域群を、少なくとも一
つ決定することができるので、特に最近座標探索手段に
よる探索に資する。
【0036】請求項7に記載の発明は、請求項1乃至請
求項5のいずれか一に記載のデータ管理装置において、
前記インデクスが、各次元の座標の前方列が指定され、
それらを前方列とする座標がインデクス中に存在する場
合には、それらをすべて列挙する機能を備えていること
を特徴とするものである。
【0037】また、請求項22に記載の発明は、請求項
7に記載の発明を方法の観点から捉えたものであって、
請求項16乃至請求項20のいずれか一に記載のデータ
管理方法において、前記インデクスが、各次元の座標の
前方列が指定され、それらを前方列とする座標がインデ
クス中に存在する場合には、それらをすべて列挙する機
能を備えていることを特徴とするものである。
【0038】上記のような構成を有する請求項7及び請
求項22に記載の発明によれば、インデクスが上記機能
を備えることにより、各次元の座標の前方列が指定さ
れ、それらを前方列とする座標がインデクス中に存在す
る場合には、それらをすべて列挙することができるの
で、特に範囲探索に資する。
【0039】請求項8に記載の発明は、請求項1乃至請
求項5のいずれか一に記載のデータ管理装置において、
前記インデクスが、各次元の座標の前方列が指定され、
それらを前方列とする座標がインデクス中に存在する場
合には、それらの数を計数する機能を備えていることを
特徴とするものである。
【0040】また、請求項23に記載の発明は、請求項
8に記載の発明を方法の観点から捉えたものであって、
請求項16乃至請求項20のいずれか一に記載のデータ
管理方法において、前記インデクスが、各次元の座標の
前方列が指定され、それらを前方列とする座標がインデ
クス中に存在する場合には、それらの数を計数する機能
を備えていることを特徴とするものである。
【0041】上記のような構成を有する請求項8及び請
求項23に記載の発明によれば、インデクスが上記機能
を備えることにより、各次元の座標の前方列が指定さ
れ、それらを前方列とする座標がインデクス中に存在す
る場合に、それらの数を数えることができるので、特に
範囲探索に資する。
【0042】請求項9に記載の発明は、請求項1乃至請
求項5のいずれか一に記載のデータ管理装置において、
前記インデクスに座標を格納する際、座標または領域コ
ードと、座標から領域コードを生成しあるいは領域コー
ドから座標を復元するための元分割とを格納することを
特徴とするものである。
【0043】また、請求項24に記載の発明は、請求項
9に記載の発明を方法の観点から捉えたものであって、
請求項16乃至請求項20のいずれか一に記載のデータ
管理方法において、前記インデクスに座標を格納する
際、座標または領域コードと、座標から領域コードを生
成しあるいは領域コードから座標を復元するための元分
割とを格納することを特徴とするものである。
【0044】上記のような構成を有する請求項9及び請
求項24に記載の発明によれば、インデクスに座標を格
納する際に、座標と元分割、または領域コードと元分割
を格納すれば良いので、データ領域が大幅に縮小され
る。
【0045】請求項10に記載の発明は、請求項4に記
載のデータ管理装置において、前記範囲探索手段が、イ
ンデクス中のある座標の前方列を前方列とする座標が、
すべて指定範囲に含まれている場合に、インデクス中で
それを前方列とする座標は、一括して指定範囲に含まれ
ていると判定することを特徴とするものである。
【0046】また、請求項25に記載の発明は、請求項
10に記載の発明を方法の観点から捉えたものであっ
て、請求項19に記載のデータ管理方法において、前記
範囲探索処理が、インデクス中のある座標の前方列を前
方列とする座標が、すべて指定範囲に含まれている場合
に、インデクス中でそれを前方列とする座標は、一括し
て指定範囲に含まれていると判定することを特徴とする
ものである。
【0047】上記のような構成を有する請求項10及び
請求項25に記載の発明によれば、上記の判断基準に基
づいて範囲探索を行う結果、インデクス中の各座標に対
して、逐一探索を行う必要がなくなるので、探索効率が
大幅に向上する。
【0048】請求項11に記載の発明は、請求項4に記
載のデータ管理装置において、前記範囲探索手段が、イ
ンデクス中のある座標の前方列を前方列とする座標で、
指定範囲に含まれるものがあり得る場合に、インデクス
中でそれを前方列とする座標の数が所定の数以下なら
ば、それらすべての座標について指定範囲に含まれてい
るか否かの判定を実行することを特徴とするものであ
る。
【0049】また、請求項26に記載の発明は、請求項
11に記載の発明を方法の観点から捉えたものであっ
て、請求項19に記載のデータ管理方法において、前記
範囲探索処理が、インデクス中のある座標の前方列を前
方列とする座標で、指定範囲に含まれるものがあり得る
場合に、インデクス中でそれを前方列とする座標の数が
所定の数以下ならば、それらすべての座標について指定
範囲に含まれているか否かの判定を実行することを特徴
とするものである。
【0050】上記のような構成を有する請求項11及び
請求項26に記載の発明によれば、指定範囲内に含まれ
ている可能性の高い座標の数が所定の数以下の場合に
は、それらのすべてについて判定を行うことにより、そ
れらを含む領域をそれ以上分割せず、最終的な判定操作
を行なうことで、分割に伴うオーバーヘッドを回避する
ことができる。
【0051】請求項12に記載の発明は、請求項5に記
載のデータ管理装置において、前記最近座標探索手段
が、インデクス中のある座標の前方列を前方列とする座
標が、すべて指定座標から最近座標候補との距離以内に
ある場合に、インデクス中でそれを前方列とする座標の
いずれか一つを新たな最近座標候補とすることを特徴と
するものである。
【0052】また、請求項27に記載の発明は、請求項
12に記載の発明を方法の観点から捉えたものであっ
て、請求項20に記載のデータ管理方法において、前記
最近座標探索処理が、インデクス中のある座標の前方列
を前方列とする座標が、すべて指定座標から最近座標候
補との距離以内にある場合に、インデクス中でそれを前
方列とする座標のいずれか一つを新たな最近座標候補と
することを特徴とする。
【0053】上記のような構成を有する請求項12及び
請求項27に記載の発明によれば、インデクス中のある
座標の前方列を前方列とする座標が、すべて指定座標か
ら最近座標候補との距離以内にある場合に、そのうちの
一つを選択して新たな最近座標候補とすることにより、
探索の効率を向上することができる。
【0054】請求項13に記載の発明は、請求項5に記
載のデータ管理装置において、前記最近座標探索手段
が、インデクス中のある座標の前方列を前方列とする座
標で、指定座標から最近座標候補との距離以内のものが
あり得る場合に、インデクス中でそれを前方列とする座
標の数が所定の数以下ならば、それらすべての座標につ
いて新たな最近座標候補になり得るか否かを判定し、判
定の結果、より指定座標に近い座標があれば、最も近い
ものを新たな最近座標候補とすることを特徴とするもの
である。
【0055】また、請求項28に記載の発明は、請求項
13に記載の発明を方法の観点から捉えたものであっ
て、請求項20に記載のデータ管理方法において、前記
最近座標探索処理が、インデクス中のある座標の前方列
を前方列とする座標で、指定座標から最近座標候補との
距離以内のものがあり得る場合に、インデクス中でそれ
を前方列とする座標の数が所定の数以下ならば、それら
すべての座標について新たな最近座標候補になり得るか
否かを判定し、判定の結果、より指定座標に近い座標が
あれば、最も近いものを新たな最近座標候補とすること
を特徴とするものである。
【0056】上記のような構成を有する請求項13及び
請求項28に記載の発明によれば、インデクス中のある
座標の前方列を前方列とする座標で、指定座標から最近
座標候補との距離以内のものが複数あり得る場合に、イ
ンデクス中でそれを前方列とする座標の数が所定の数以
下ならば、それらのすべてについて判定を行うことによ
り、それらを含む領域をそれ以上分割せず、最終的な判
定操作を行なうことで、分割に伴うオーバーヘッドを回
避することができる。
【0057】請求項14に記載の発明は、請求項5に記
載のデータ管理装置において、前記最近座標探索手段
が、インデクス中の座標の前方列を最近座標候補を探索
すべき領域を表すものとしてスタックに格納しておき、
スタックから取り出した前方列に関して、それを前方列
とする座標で、指定座標から最近座標候補との距離より
近いものがあり得ない場合には、それらを探索の対象と
しないことを特徴とするものである。
【0058】また、請求項29に記載の発明は、請求項
14に記載の発明を方法の観点から捉えたものであっ
て、請求項20に記請求項20に記載のデータ管理方法
において、前記最近座標探索処理が、インデクス中の座
標の前方列を最近座標候補を探索すべき領域を表すもの
としてスタックに格納しておき、スタックから取り出し
た前方列に関して、それを前方列とする座標で、指定座
標から最近座標候補との距離より近いものがあり得ない
場合には、それらを探索の対象としないことを特徴とす
るものである。
【0059】上記のような構成を有する請求項14及び
請求項29に記載の発明によれば、要調査とされた領域
をスタックに保持するとともに、処理の当初から最近座
標候補を設定し、新たな最近座標候補が見い出された場
合、直ちに最近座標候補を更新するので、新たに最近座
標候補となる座標に関して、それが最近座標候補となり
得るか否かを判定する手続を要しない。また、インデク
スの特徴的な作用によって、新たな最近座標候補にし得
る座標データは、すでに少なくとも一つは得られてお
り、改めてそれを選択・探索する手続を要しない。従っ
て、極めて迅速に“r”を減少させることができるの
で、スタックから取り出される領域に関して、処理不要
と判定する割合が向上し、無駄な探索を減少させて、効
率よく最近座標を決定することができる。
【0060】請求項15に記載の発明は、請求項5に記
載のデータ管理装置において、前記最近座標探索手段
が、インデクス中の座標の前方列を最近座標候補を探索
すべき領域を表すものとして、それを前方列とする座標
で指定座標から最も近い座標との距離と共に格納してお
き、その距離が最小の前方列を最近座標候補を探索すべ
き対象として選択し、その距離が指定座標と最近座標候
補との距離以上の場合には探索を終了することを特徴と
するものである。
【0061】また、請求項30に記載の発明は、請求項
15に記載の発明を方法の観点から捉えたものであっ
て、請求項20に記載のデータ管理方法において、前記
最近座標探索処理が、インデクス中の座標の前方列を最
近座標候補を探索すべき領域を表すものとして、それを
前方列とする座標で指定座標から最も近い座標との距離
と共に格納しておき、その距離が最小の前方列を最近座
標候補を探索すべき対象として選択し、その距離が指定
座標と最近座標候補との距離以上の場合には探索を終了
することを特徴とするものである。
【0062】上記のような構成を有する請求項15及び
請求項30に記載の発明によれば、指定座標との距離が
最小であることが保証されている座標を探索対象とし、
この距離が指定座標と最近座標候補との距離以上の場合
には、直ちに探索処理を終了するので、さらに効率的に
最近座標を決定することができる。
【0063】
【発明の実施の形態】以下、本発明の実施形態につい
て、図面を参照して具体的に説明する。
【0064】[1.用語の説明]各実施形態について説
明する前に、本明細書中で用いられる種々の用語につい
て説明する。
【0065】(a)座標データの管理 「座標データの管理」とは、座標データの登録、削除、
変更、探索(例えば、範囲探索、最近座標探索)など
の、座標データを処理する1つあるいは複数の手続きを
いう。
【0066】(b)座標データ 以下の実施形態においては、有限で離散的な2次元部分
空間内(部分平面上)の点または領域を表す座標データ
として、そのx座標、y座標をそれぞれ固定小数点2進
表示した固定長ビット列を扱う。
【0067】(c)座標データの固定小数点表示の前方
列(上位桁)による領域の表現 座標の固定小数点表示の桁数が定まっている場合に、各
次元の座標の固定小数点表示の上位桁(前方列)から成
る数字列によって、それと同一の上位桁を有する多次元
座標データを全て含み、かつ、上位桁が異なる座標デー
タは全く含まない多次元部分空間内の部分集合に対応づ
ける。このような部分集合及びその表現を「領域」と呼
ぶ。また、各次元の桁数字列を「領域座標」と呼ぶ。ま
た、以下で「各(領域)座標」と言えば「各次元の(領
域)座標」のことである。
【0068】扱うデータが2次元の座標データで、その
x座標、y座標が共に12ビットの固定小数点表示であ
る場合、図14に示したように、領域(T−1)は、
(T−2)の座標データの集合を表す。なお、この座標
によって表される領域は、10進法で示すと、x座標が
256以上511以下、y座標が64以上127以下の
領域である。
【0069】また、各領域座標がより長いビット列から
成る領域(T−3)は、(T−4)の座標データの集合
を表す。なお、この座標によって表される領域は、10
進法で示すと、x座標が288以上319以下、y座標
が64以上79以下の領域である。
【0070】このように、後者の座標データが全て前者
に含まれていることは、前者の各領域座標のビット列
“0001”,“000001”が、それぞれ後者の各
領域座標のビット列“0001001”,“00000
00”の前方列(上位桁)になっていることに対応し
ている。
【0071】なお、定められた長さのビット列から成る
座標データ自体も、その座標データのみを含む領域とみ
なすことができ、その上位桁(前方列)から成る領域座
標となんら本質的な差異はない。それゆえ、以下では、
特に断らない限り、座標データの座標も含めた領域座標
を「座標」という。座標データ(座標)が点を表すか領
域を表すかは、本発明を応用する際の解釈に依存し、本
発明の主旨には影響しない。
【0072】(d)全領域 定まった座標データの表現形式(方法)に関して、座標
データとして表現され得るすべての座標(データ)の集
合を「全領域」と呼ぶ。これは、座標データとして表現
され得るすべての点または領域を含む部分空間(部分平
面)に対応する。「全領域」は、各座標が一定長以下の
ビット列で表される場合、それらがすべて空(長さ0)
のビット列である座標によって表される。2次元の場合
は、(, )である。
【0073】(e)分割と領域コード 各領域座標またはその部分列を、一定の次元の順に交互
に連接した桁数字列を「領域コード」と呼ぶ。与えられ
た座標に対して、各次元について座標から取るべき部分
列の長さ(0以上の整数値)を上位桁(前方)に関する
ものから順に並べた数列の組を指定すれば、「領域コー
ド」は一意に生成される。この数列の組を「分割」と呼
ぶ。各次元の個々の数列に言及する際にも、「分割」と
いう言葉をそのまま用いる。また、x座標、y座標と言
うのと同様に、x分割、y分割という呼び方も用いる。
【0074】なお、各分割はその和が各座標の長さ(桁
数)以下である。但し、数列の項数は各分割で共通とす
る。数列の項は0でもよいので、この条件は任意の分割
を表すのを妨げない。
【0075】上述したように、「領域コード」は、各分
割の初項から順次その長さの部分列を各座標の前方から
とっては、一定の順序(例えば、x、yの順)で交互に
連接して生成される。2次元の場合にこの手続を一般的
な形で述べれば次のようになる。すなわち、座標(x,
y) x=x1 …x1x,y=y1 …y1yと、分割(i,
j) i=i1 …im ,j=j1 …jm ,i1 +…+i
m =li ,j1 +…+jm =lj から、次の手続によっ
て、領域コードc=c1 2 …c1i+1j を生成する。
(但し、m=0の場合も含む)。
【0076】(1)p=0,q=0,k=1,cを空
(長さ0)の桁数字列とする。 (2)k>mなら終了。 (3)k≦mなら、 (3−1) xp+1 …xp+ikをcp+q+1 …cp+q+ik
し、p=p+ik とする。 (3−2) yq+1 …yq+jkをcp+q+1 …cp+q+jk
し、q=q+jk とする。 (4)k=k+1とし(2)へ戻る。
【0077】この手続は、分割(i,j)が与えられれ
ば、座標(x,y)から一意に領域コードcを生成でき
ることを示している。ここで、上記(0001001 , 000
00100 )について、(x分割,y分割)が(43,6
2)である場合に、領域コードを生成する手順を具体的
に示す。すなわち、まず、x分割の“4”により、x座
標の前方から4ビット(0001)をとり、続いて、y分割の
“6”により、y座標の前方から6ビット(000001)をと
って、先の4ビットに連接する。この段階で、領域コー
ドは(0001000001)となっている。続いて、x分割の
“3”により、x座標の次の3ビット(001) をとって、
先の10ビットに連接し、続いて、y分割の“2”によ
り、y座標の次の2ビット(00)をとって、先の13ビッ
トに連接する。その結果、図15に示したように、領域
コードは(T−5)となる。
【0078】また、図15の(T−6)は、上記(0001
,000001 ) 及び(0001001,00000100 )につい
て、(x分割,y分割)と生成される領域コードの例を
示したものである。
【0079】なお、部分列を連接する「一定の順序」と
は、上記のように常にx,yの順に限られるものではな
く、例えば、分割の第1項によって取られた部分列は
x,yの順、第2項によって取られた部分列はy,xの
順…というものでも良い。さらには、分割の第1項によ
って取られた部分列はx,yの順で連接し、第1項によ
って取られた部分列がそれぞれ“0000”,“000
001”の場合は、第2項によって取られた部分列を
y,xの順で連接し、また、第1項によって取られた部
分列がそれぞれ“0001”,“000001”の場合
は、第2項によって取られた部分列をx,yの順で連接
するというように、曖昧になることなく順序が決定でき
れば、いかなる順序を用いても良い。
【0080】また、2組の分割と領域コードについて、
一方の各分割が他方の各分割の前方列になっている場
合、前者の領域コードが後者の領域コードの前方列にな
っていれば、またその場合に限り、後者を生成した領域
は前者を生成した領域に含まれていると判定できる。す
なわち、領域コードを用いれば、各座標毎に前者が後者
の前方列になっているか否かを調べる代わりに、領域コ
ードのみを比較するだけで、各座標毎に、後者を生成し
た領域が前者を生成した領域に含まれるか否かを判定す
ることができる。
【0081】上記の例で、図15の(T−7)及び図1
6の(T−8)にみるように、前者の各座標は後者の各
座標の前方列になるからである。なお、前者が後者の前
方列となっている部分にアンダーラインを付して示し
た。同様に、図16の(T−9)は(T−10)を含
み、さらに、全領域(, )( , )は全て
の領域を含んでいる。
【0082】このように、領域コードは座標と分割から
一意に計算できるが、以下では、わかりやすさのために
座標と分割で表現された領域には、領域コードを付けて
表示する。
【0083】(f)座標と分割による一連の領域(領域
群)の表現 「領域コード」は、座標の前方から「分割」に従って部
分列をとって生成されるから、各座標が各分割の和より
長くても、領域コードの生成には支障がない。また、表
すべき領域の各座標の長さは各分割の和として入手でき
るから、各座標が、表すべき領域の各座標を前方列とし
てそれより長くても、座標と分割の組がどの領域を表す
かは一意に定まる。例えば、図17の(T−11)と同
じ座標を用いて、その領域を含む領域(T−12)を
(T−13)と表現することができる。さらには、全領
域を(T−14)で表してもよい。
【0084】このように、同一の座標に対して、一方の
各分割が他方の各分割の前方列である複数の分割を組み
合わせて、後者が前者を含む関係にある複数の領域を表
すことができる。これらの分割は、最も長い分割(元分
割)とその前方列の長さ(項数)を組み合わせれば表現
できる。例えば、図17の(T−15)で表す。また、
これを座標と組み合わせて、図18の(T−16)の4
つの領域が表される。
【0085】このように、座標と、各分割の和が各座標
の長さ以下のn項から成る元分割と項数によって表され
た分割を組み合わせ、この項数を変化させることによっ
て、全領域も含めてn+1個の領域を表すことができ
る。それゆえ、このような座標と元分割の組を「領域
群」と呼ぶ。この領域群に対して0以上n以下の項数m
を指定することによって、n+1個の領域のうちの一つ
を表すことができる。これを、その領域群の「項数mの
領域」と呼ぶ。また、項数が小さいもので表される領域
は、項数が大きいもので表される領域を含んでいる。さ
らに、元分割の和よりも座標が長い場合は、その座標自
体が表す領域は、上記n+1個の領域のいずれにも含ま
れている、さらに小さいもうひとつの領域である。
【0086】また、前記「項数mの領域」の各座標を、
分割の第m項が0でない次元について、1桁だけ短い前
方列で置き換えた座標によって表される領域を、「項数
mの共有領域」と呼ぶ。各座標が2進表現のk次元デー
タで、分割の第m項がいずれも0でない場合、「項数m
の領域」は「項数mの共有領域」の各座標に1ビットづ
つ追加した座標で表される2のk乗個の領域の1つであ
る。なお、以下においては、分割とは項数も含めた表現
を用いる。
【0087】(g)座標データの所属領域群の表現 上述したように、座標データにn項からなる元分割を組
合せて、その座標データを含むn+1個の領域を表すこ
とができる。また、上述したように、より小さい項数で
表現された領域は、より大きな項数で表現された領域を
必ず含んでいる。例えば、図18の(T−17)は、座
標データと項数2の元分割の組が表す、全領域を含む3
つの領域を、項数を指定して列挙したものである。な
お、後述するように、本発明のインデクスは、座標デー
タを元分割と組み合わせて、その所属領域群として格納
する。
【0088】(h)領域群の格納番地と項数による領域
の表現 以下で説明する探索手段においては、探索操作の途上で
種々の領域を扱う必要があるが、それらの領域は、イン
デクス中の領域群の「項数mの領域」及び「共有領域」
として表し得る。そこで、これらの領域を記憶したり、
参照したりするのに、その領域群が格納されている番地
及び項数の組を用いる。すなわち、[番地,項数]でも
って、指定番地に格納された領域群の指定項数の領域及
び共有領域を表す。例えば、「領域[番地,項数]」と
言えばその領域を、「共有領域[番地,項数]」と言え
ばその共有領域を指す。
【0089】また、各探索手段においては、その処理ス
テップの対象となる複数の領域を一時的に記憶しておく
ために、領域を要素とするキューまたはスタックを使用
する。これらのキューまたはスタックの要素の具体的な
表現としては、上記の[番地,項数]の対を用いる。
【0090】なお、各探索手段による探索結果は、イン
デクス中の座標データであるから、これもその格納番地
によって表すこととする。また、インデクスは0番地か
ら格納されており、各番地には少なくとも1つの領域群
を含んでいるものとする。また、以下の実施形態におい
ては、簡明のために、これまで用いてきた2次元部分空
間内(部分平面上)の座標を2進表現した座標データを
扱う場合に即して説明する。
【0091】[2.各実施形態とコンピュータ]本発明
の各実施形態はコンピュータ上に実現され、実施形態の
各機能は、所定の手順(プログラム)がこのコンピュー
タを制御することで実現される。本明細書における各
「手段」は、実施形態の各機能に対応する概念的なもの
で、必ずしも特定のハードウェアやソフトウェア・ルー
チンに1対1には対応しない。同一のハードウェア要素
が、場合によって異なった手段を構成する。例えば、コ
ンピュータは、ある命令を実行するときにある手段とな
り、別の命令を実行するときは別の手段となりうる。ま
た、一つの手段が、わずか1命令によって実現される場
合もあれば、多数の命令によって実現される場合もあ
る。したがって、本明細書では、以下、実施形態の各機
能を有する仮想的回路ブロック(手段)を想定して実施
形態を説明する。また、本実施形態における各手順の各
ステップは、その性質に反しない限り、実行順序を変更
し、複数同時に実行し、また、実行ごとに異なった順序
で実行してもよい。このような順序の変更は、例えば、
ユーザが実行可能な処理を選択するなどメニュー形式の
インターフェース手法によって実現することができる。
【0092】[3.第1実施形態] [3−1.第1実施形態の全体構成]図1は、第1実施
形態の構成を示す機能ブロック図である。すなわち、本
実施形態のデータ管理装置は、座標データ1を格納する
インデクス2、座標データからインデクスを生成するイ
ンデクス生成手段3、2次元空間内(平面上)の所定の
範囲、すなわち全領域内に存在する1つ以上の座標デー
タのうちで、指定した矩形範囲に含まれる座標データを
すべて列挙する範囲探索手段4、及び、指定した座標デ
ータに最も近い座標データを決定する最近座標探索手段
5を備えている。なお、前記インデクス、インデクス生
成手段、範囲探索手段及び最近座標探索手段のそれぞれ
の構成については、以下に詳述する。また、前記インデ
クスは、上記の2つの探索手段を構成するのに共通に用
いられる。
【0093】[3−1−1.インデクスの構成]本実施
形態におけるインデクスとしては、探索対象である各座
標データに元分割を付与したものを、この座標と元分割
から生成される領域コードの辞書順(昇順)に並べ、こ
れを記憶装置の連続する番地に格納したものを用いる。
図2は、本実施形態のインデクスにおける領域群の格納
形式の一例を示したものである。なお、前記[1.用語
の説明]で述べたように、座標と元分割の組を「領域
群」と呼ぶ。また、この領域群は、さらに項数との組み
合わせにより、その座標を含む複数の「領域」を表す。
【0094】(元分割)ここで、元分割について説明す
る。各座標データに付与する元分割は、次の条件を満た
すように設定されている。すなわち、「項数mの領域が
一致する領域群が複数存在するとき、それらの項数m+
1の共有領域は一致し、かつ、それらの項数m+1の領
域には少なくとも2つ以上の異なる領域がある。」とい
う条件である。
【0095】但し、これらの領域群に関しては、元分割
のm+1項までは一致している。また、すべての領域群
について、項数m=0の領域は「全領域」で一致するか
ら、各元分割のm+1=1項目は同一である。さらに、
すべての領域群について、「項数1の共有領域」は同一
である。
【0096】図19に示した(T−18)は、x座標,
y座標が共に12ビットの固定小数点表示から成る10
個の座標データ及び元分割を格納したインデクスの例で
ある。右に座標と元分割から生成される「領域コード」
を示してあるが、これは各領域群から計算によって求め
ることができるものである。
【0097】上述したように、このインデクス中におい
ては、各領域群は座標と元分割から生成される領域コー
ドの辞書順(昇順)にソートされている。また、上記
[1.用語の説明]の(f)で述べたように、各領域群
の「項数1の共有領域」は、「項数1の領域」の各座標
より1桁だけ短い前方列で置き換えた座標によって表さ
れるから、そのx分割は(4−1=)3、y分割は(6
−1=)5となる。
【0098】従って、各領域群の「項数1の共有領域」
は、図19の(T−19)ですべて一致しており、か
つ、項数1の領域は、0番地から5番地までが図19の
(T−20)、6番地が図20の(T−21)、7番地
から9番地までが(T−22)と、3つの異なる領域に
分かれている。
【0099】さらに、例えば「項数1の領域」が一致す
る7番地から9番地の3つの領域群について、「項数2
の共有領域」は、そのx分割が(43−1=)42、y
分割が(62−1=)61となり、図20の(T−2
3)と互いに一致するが、「項数2の領域」は、図20
の(T−24)とそれぞれ異なっている。
【0100】これを図示すると、図3に示すようにな
る。すなわち、上記[1.用語の説明]の(c)で述べ
たように、座標データの固定小数点表示の前方列(上位
桁)によってある領域が表される。例えば、上記「項数
2の共有領域」が、図21の(T−25)である場合、
このx座標及びy座標によって表される領域は、図21
の(T−26)の座標データの集合を表す。なお、この
座標によって表される領域は、10進法で示すと、x座
標が256以上319以下、y座標が64以上95以下
の領域である。
【0101】一方、7番地の座標によって表される領域
は、図21の(T−27)の座標データの集合を表す。
なお、この7番地の座標によって表される領域は、10
進法で示すと、x座標が256以上287以下、y座標
が64以上79以下の領域である。
【0102】同様に、8番地の座標によって表される領
域は、図21の(T−28)の座標データの集合を表
す。なお、この8番地の座標によって表される領域は、
10進法で示すと、x座標が288以上319以下、y
座標が64以上79以下の領域である。
【0103】同様に、9番地の座標によって表される領
域は、図21の(T−29)の座標データの集合を表
す。なお、この9番地の座標によって表される領域は、
10進法で示すと、x座標が288以上319以下、y
座標が80以上95以下の領域である。従って、これを
図示すると、図3に示すようになる。
【0104】すなわち、本例の場合、「項数1の領域が
一致する領域群が複数存在するとき(7番地〜9番地の
3つ)、それらの項数2の共有領域は一致し、かつ、そ
れらの項数2の領域には、少なくとも2つ以上の異なる
領域がある。」ので、上記「項数mの領域が一致する領
域群が複数存在するとき、それらの項数m+1の共有領
域は一致し、かつ、それらの項数m+1の領域には、少
なくとも2つ以上の異なる領域がある。」という条件が
満たされている。
【0105】[3−1−2.インデクス生成手段の構
成]本実施形態におけるインデクス生成手段は、主記憶
上のA番地からB番地までに格納された座標データに対
して元分割を設定するとともに、それらの領域群を領域
コードの昇順(辞書順)に並べ替えてインデクスとする
手続きから成っている。なお、上述したように、1つの
番地には座標だけでなく(元)分割も同時に格納できる
ものとする。また、初期状態においては、これらの分割
は( , )に設定されている。また、B>A(領域群
は少なくとも2個以上)とする。
【0106】以下の手続きでは、番地の対{a,b}を
可変個数記憶できるキューを使用する。 (1)キューを初期化し、{A,B}を追加する。 (2)キューが空なら終了、空でなければ、その先頭を
{a,b}として取り出し、キューから削除する。 (3)番地a以上b以下に格納された座標について、各
座標の最大値、最小値を求め、両者が一致している上位
桁の数(一致前方列長)を次元毎に決定する。 (4)全ての次元において、一致前方列長=座標長(座
標の桁数)ならば、(2)に戻る。 (5)番地a以上b以下に格納された同一の元分割の各
次元について、(各一致前方列長+1)と(各分割の
和)との差を新たな項として、各分割の末尾に追加す
る。但し、一致前方列長が座標長に等しい次元について
は、分割の末尾には0を追加する。 (6)番地a以上b以下に格納された領域群を、上記
(5)で更新された元分割に従って生成される領域コー
ドの順に並べ替える。 (7)(7−1)p=aとする。 (7−2)番地pの領域コードと同一の領域コードを持
つ連続する番地の最大のものを求めて“q”とする。 (7−3)p<qならば{p,q}をキューに追加す
る。 (7−4)p=q+1とする。 (7−5)p<bならば(7−2)に戻る。p>=bな
らば(2)に戻る。
【0107】ステップ(3)で求めた各一致前方列長
は、番地a以上b以下に格納された全ての各座標の一致
前方列長になっている。各座標の最大値及び最小値から
これを決定するのは、その具体的な方法の一つにすぎな
い。また、(7−2)においては、同一の領域コードを
有する領域群を格納した連続する番地の最大のものを求
める方法について具体的に述べていないが、この方法と
しては、領域コードが一致しなくなるまで逐次番地を増
加させても良いし、二分探索によって求める等、種々の
方法をとりうる。このようにして生成したインデクスの
例を、図22の(T−30)に示す。
【0108】[3−1−3.範囲探索手段の構成]本実
施形態における範囲探索手段は、次のようなステップか
ら成っている。 (1)結果リストを初期化する。 (2)領域キューを初期化する。 (3)インデクスの任意のデータ、例えば0番地を選
び、項数0と組み合わせて[0,0]を処理対象とす
る。 (3−1)共有領域[0,1]が計算できない場合(元
分割の項が0個)、0番地の座標が指定範囲に含まれて
いれば、結果リストに加える。 (3−2)共有領域[0,1]が指定範囲に含まれてい
る場合、インデクス中の全データ(番地)を結果リスト
に加える。 (3−3)共有領域[0,1]が指定範囲に含まれては
いないが、指定範囲と共通部分を有する場合、[0,
1]を領域キューに追加する。 (4)領域キューが空なら終了。空でなければ先頭要素
を処理対象[a,m]として取り出し、領域キューから
削除する。 (5)共有領域[a,m]の各座標の末尾に、桁数字
0、1をそれぞれ追加して生成される2の2乗=4つの
領域のそれぞれについて、次の(6)を行う。 (6)その領域を項数mの領域とする領域群がインデク
ス中に存在する場合に限り、その1つの番地を“b”と
して次の条件付きステップのいずれかを行なう。 (6−1)共有領域[b,m+1]が計算できない場合
(元分割の項がm個)、b番地の座標が指定範囲に含ま
れていれば、結果リストに加える。 (6−2)共有領域[b,m+1]が指定範囲に含まれ
ている場合、b番地と同じく、領域[b,m]を項数m
の領域とする領域群を格納した番地を全て結果リストに
加える。 (6−3)共有領域[b,m+1]が指定範囲に含まれ
てはいないが、指定範囲と共通部分を有する場合、
[b,m+1]を領域キューに追加する。 (6−4)共有領域[b,m+1]が指定範囲と共通部
分を有しない場合は、その領域に関して行うべき処理は
ない。 (7)(4)へ戻る。
【0109】[3−1−4.最近座標探索手段の構成]
本実施形態における最近座標探索手段は、次のようなス
テップから成っている。 (1)インデクス中の任意のデータ、例えば、0番地を
最近座標候補pとし、その座標データと指定点との距離
をrとする。 (2)領域スタックを初期化する。 (3)0番地を項数0と組み合わせて[0,0]を処理
対象とする。共有領域[0,1]が計算できる場合(元
分割の項が1個以上)、[0,1]を領域スタックに追
加する。 (4)領域スタックが空なら終了。空でなければ先頭要
素を処理対象[a,m]として取り出し、領域スタック
から削除する。 (5)共有領域[a,m]と指定座標との距離がr以上
の場合、(4)に戻る。一方、r未満の場合には、共有
領域[a,m]の各座標の末尾に、桁数字0、1をそれ
ぞれ追加して生成される2の2乗=4つの領域のそれぞ
れについて、次の(6)を行う。 (6)その領域を項数mの領域とする領域群がインデク
ス中に存在する場合に限り、その1つの番地を“b”と
して、次の条件付きステップのいずれかを行なう。 (6−1)共有領域[b,m+1]が計算できない場合
(元分割の項がm個)、b番地の座標データと指定座標
との距離がr未満であれば、“b”を新たな最近座標候
補pとし、その距離を新たなrとする。このとき、さら
にr=0なら処理を終了する。 (6−2)共有領域[b,m+1]が指定座標から距離
r未満(以内)の範囲に含まれている場合、“b”を新
たな最近座標候補pとし、b番地の座標データと指定座
標との距離を新たなrとする。さらに、共有領域[b,
m+1]を領域スタックに追加する。 (6−3)共有領域[b,m+1]が指定座標から距離
r未満(以内)の範囲に含まれてはいないが、指定座標
との距離はr未満である場合、[b,m+1]を領域ス
タックに追加する。 (6−4)共有領域[b,m+1]と指定座標との距離
がr以上である場合は、その領域に関して行うべき処理
はない。 (7)(4)へ戻る。
【0110】[3−2.第1実施形態の作用・効果] [3−2−1.インデクス生成手段の作用・効果]イン
デクス生成手段が、図23に示した(T−31)のよう
に0番地から9番地までに格納された2次元座標及び空
列に初期設定された2次元分割に作用してインデクスを
生成する過程を、図4及び図5に示したフローチャート
に従って説明する。なお、分かりやすくするために、当
初、0〜9番地に格納された座標にa〜jの符号を付
し、これらの座標がどのように並べ替えられるかを追跡
できるようにした。
【0111】まず、ステップ401において初期化した
キューに{0,9}を追加する。これは直ちにステップ
403で{a,b}として取り出され、キューから削除
される。続いて、ステップ404において、0番地以上
9番地以下に格納された座標について、x座標及びy座
標の最大値・最小値を求めると、x座標の最大値・最小
値は 000 111010000・000 000010001 で一致前方列長は
“3”、y座標の最大値・最小値は 00000 1100110・00
000 0000111 で一致前方列長は“5”と決定される(ス
テップ405)。これらはいずれも座標長“12”より
短いから、ステップ407に進む。このとき、各分割は
空列で、その和は0だから、各分割の第1項として、
「上記各一致前方列長+1」が設定される。すなわち、
本例では、x分割は“4”、y分割は“6”と設定され
る。
【0112】ステップ408において、この元分割
(4,6)に従って領域コードを生成すると、図24の
(T−32)のようになる。続いて、ステップ409に
おいて、これらの領域群を領域コードの順に並べ替える
と、図25の(T−33)のようになる。
【0113】ステップ410に進み、まず、p=a=0
番地とする。続いて、ステップ411において、番地0
の領域コード0000000001と同一の領域コードを有する領
域群を調べると、番地5まで続いているからq=5とす
る。また、ステップ412において、p<qか否かが調
べられ、p<qだから、{0,5}をキューに追加する
(ステップ413)。次に、p=5+1=6とし(ステ
ップ414)、p<9なのでステップ411に戻る(ス
テップ415)。
【0114】続いて、ステップ411において、番地6
の領域コードを調べると、これと等しい領域コードは他
にないから、q=p=6となり、ステップ413を通過
してステップ414でp=6+1=7とし、p<9なの
で再びステップ411に戻る(ステップ415)。
【0115】次に、番地7の領域コード0001000001と同
一の領域コードを有する領域群を調べると、9番地まで
続いているからq=9とする(ステップ411)。ま
た、p<qなので{7,9}をキューに追加する(ステ
ップ412,ステップ413)。ステップ414におい
て、p=9+1=10>9なので、ステップ402に戻
る(ステップ415)。この結果、キューの内容(左が
先頭)は、図25の(T−34)のようになっている。
【0116】続いて、ステップ403で、この先頭要素
{0,5}を{a,b}として取り出し、キューから削
除する。続くステップ404において、0番地から5番
地までの座標について、x座標及びy座標の最大値・最
小値を求めると、x座標の最大値・最小値は 00000010
1110・ 000000010001で一致前方列長は“6”、y座標の
最大値・最小値は 000001100100・ 000001000000で一致
前方列長は“6”と決定される(ステップ405)。こ
れらは座標長“12”より短いからステップ407に進
み、x分割の第2項として(6+1)−4=3を、ま
た、y分割の第2項として(6+1)−6=1を、0番
地から5番地までの各分割に追加する。
【0117】ステップ408において、この元分割(4
3,61)に従って領域コードを生成すると、図26の
(T−35)のようになる。続いて、ステップ409に
おいて、0番地から5番地までの領域群を領域コードの
順に並べ替えると、図27の(T−36)のようにな
る。
【0118】ステップ410〜ステップ413におい
て、0番地の領域コード00000000010001は2番地まで、
3番地の領域コード00000000010010は5番地まで同一で
あると判定され、{0,2}及び{3,5}がキューに
追加される。この結果、再びステップ402に戻ったと
き、キューの内容は、図27の(T−37)のようにな
っている。
【0119】続いて、ステップ403で、この先頭要素
{7,9}を{a,b}として取り出し、キューから削
除する。続くステップ404では、同様にして、7番地
から9番地までの各座標の一致前方列長は、x次元が
“6”、y次元が“7”と決定される(ステップ40
5)。これらは座標長“12”より短いからステップ4
07に進み、x分割の第2項として(6+1)−4=3
を、また、y分割の第2項として(7+1)−6=2を
7番地から9番地までの各分割に追加する。
【0120】ステップ408において、7番地から9番
地までに格納された座標について、この元分割(43,
62)に従って領域コードを生成すると、図28の(T
−38)のようになる。続いて、ステップ409におい
て、7番地から9番地までの領域群を領域コードの順に
並べ替えると、図29の(T−39)のようになる。
7、8、9番地の領域群はいずれも領域コードが異なる
から、番地の対をキューに追加することなくステップ4
02に戻る。このとき、キューの内容は図29の(T−
40)のようになっている。
【0121】続いて、ステップ403で、この先頭要素
{0,2}を{a,b}として取り出し、キューから削
除する。続くステップ404では、同様にして、0番地
から2番地までの各座標の一致前方列長は、x次元が
“8”、y次元が“9”と決定される(ステップ40
5)。これらは座標長“12”より短いからステップ4
07に進み、x分割の第3項として(8+1)−(4+
3)=2を、y分割の第3項として(9+1)−(6+
1)=3を0番地から2番地までの各分割に追加する。
【0122】ステップ408において、0番地から2番
地までに格納された座標について、この元分割(43
2,613)に従って領域コードを生成すると、図30
の(T−41)のようになる。続いて、ステップ409
において、0番地から2番地までの領域群を領域コード
の順に並べ替えると、図31の(T−42)のようにな
る。0、1、2番地の領域群はいずれも領域コードが異
なるから、番地の対をキューに追加することなく、ステ
ップ402に戻る。このとき、キューの内容は図31の
(T−43)のようになっている。
【0123】続いて、ステップ403で、この先頭要素
{3,5}を{a,b}として取り出し、キューから削
除する。続くステップ404では、3番地から5番地ま
での各座標の一致前方列長は、x次元が“10”、y次
元が“8”と決定される(ステップ405)。これらは
座標長“12”より短いからステップ407に進み、x
分割の第3項として(10+1)−(4+3)=4を、
y分割の第3項として(8+1)−(6+1)=2を3
番地から5番地までの各分割に追加する。
【0124】ステップ408において、3番地から5番
地までに格納された座標について、この元分割(43
4,612)に従って領域コードを生成すると、図32
の(T−44)のようになる。続いて、ステップ409
において、3番地から5番地までの領域群を領域コード
の順に並べ替えると、図33の(T−45)のようにな
る。3、4、5番地の領域群はいずれも領域コードが異
なるから、番地の対をキューに追加することなく、ステ
ップ402に戻る。このとき、キューは既に空になって
いるので、それを検出して処理を終了する。このように
して、インデクスが生成される。
【0125】[3−2−2.探索手段に対するインデク
スの作用]探索手段は次の3通りの方法でインデクスを
使用する。すなわち、 (1)番地aを指定してそこに格納された領域群のデー
タ(点の座標and/or分割)を得る。 (2)ある番地aの領域群のある項数mの共有領域の各
座標の末尾に、任意の桁数字を追加した領域を、同じ項
数mの領域とする領域群を探し、もし存在すればその1
つの番地を得る。 (3)ある番地aの領域群のある項数mの領域を、同じ
項数mの領域とする領域群を探し、それらすべての番地
(aを含む)を得る。
【0126】これらのうち、(1)は通常の記憶装置の
作用を用いて実現される。また、(2)は、まず指定番
地に格納されている元分割と指定項数を組合せて定まる
各分割の和の長さだけ、格納されている点の各座標の前
方列をとり、その各座標の末尾1桁を追加すべき桁数字
に変更した座標と前記分割とを用いて領域コードを作成
する。この領域コードと前方列が一致する領域コードを
持つ領域群が格納された番地を、インデクスを二分探索
することによって決定する。
【0127】さらに、インデクスの各領域群は、元分割
の項数以下の任意のmについて、項数m−1の領域が一
致するすべての領域、すなわち各座標の、元分割のm−
1項までの和を長さとする前方列が一致するものは、項
数mの共有領域、すなわち各座標の元分割のm項までの
和−1を長さとする前方列が一致し、かつ、項数mの領
域、すなわち各座標の元分割のm項までの和の位置の桁
数字の組に相異なるものがあって、それらが一定の次元
の順(例えば、x座標、y座標の順)で比較して、昇順
に並ぶように構成されている。
【0128】この配列順序は、それぞれの領域コードを
1つの桁数字(ビット)列として先頭から比較した辞書
順(昇順)に一致する。したがって、インデクス中の領
域群の元分割の項数mの分割と任意の座標とによって表
される領域を、同じ項数mの領域とする領域群の有無を
決定する手続、および、このような領域群が存在する場
合、その1つを決定する手続は、前記分割と座標から生
成される領域コードをキーとして、それを前方列とする
領域コードを持つ領域群を二分探索することによって実
現できる。
【0129】例えば、上記のインデクス例において、共
有領域[4,2]の各座標の末尾に“0”または“1”
を追加した座標と、4番地の元分割(434,612)
の項数2の分割(43,61)によって表される4つの
領域、すなわち、図33の(T−46)の4つの領域の
うち、(T−47)を項数2の領域とする領域群をイン
デクス中で探す場合について説明する。
【0130】二分探索の手続により、まずインデクスの
ほぼ中央、すなわち(0+9)÷2=4番地の領域群、
すなわち、図34の(T−48)の領域コードと、上記
探索対象領域#1の領域コードをキーとして比較する。
なお、この領域コードを「キーとなる領域コード」とい
う。
【0131】この比較においては、2つの数字列を先頭
から逐次比較して、最初に異なるビットが現れたとき、
“0”の方を“1”の方より小さいとする比較結果が得
られれば、実際にどのような比較手続をとってもよい。
また、一方が尽きるまで両者の領域コードが一致してい
れば、一方が他方の前方列になっていると判定する。
【0132】本例の場合、キーとなる領域コード(00000
000010000)を4番地の領域コード(0000000001001001100
1)と比較すると、キーとなる領域コードの13ビット目
が“0”で、4番地の領域コードの13ビット目の
“1”と異なるから、探索はさらに、3番地以前のイン
デクスのほぼ中央(0+3)÷2=1番地の領域群(T
−49)の領域コードと、キーとなる領域コード(00000
000010000)を比較する。
【0133】この場合もキーとなる領域コードの方が小
さいので、さらに0番地以下のインデクスの唯一の領域
群(T−50)の領域コードと、キーとなる領域コード
(00000000010000)を比較する。この場合もキーとなる領
域コードの方が小さいので、二分探索は終了して、キー
となる領域コードを前方列とする領域コードを持つ領域
群、すなわち、前記領域を項数2の領域とする領域群は
インデクス中には存在しないと判定される。
【0134】一方、もう1つの領域#2、すなわち、図
34の(T−51)の領域コードをキーとして、インデ
クスを二分探索すると、(T−52)との比較において
は、最初の領域の場合と同様に、キーとなる領域コード
(00000000010001)の方が小さいと判定される。しかし、
(T−53)との比較においては、キーとなる領域コー
ド(00000000010001)が1番地の領域群の領域コードの前
方列になっている。すなわち、上記領域を項数2の領域
とする領域群がインデクス中に存在し、その1つが番地
1に格納されていると判定される。
【0135】本実施形態におけるインデクスの構成上の
特徴的な利点は、以下の通りである。すなわち、上記の
ような二分探索の過程で用いられる領域コードの比較に
おいて、比較対象となる領域コード同士の大小比較の判
定に必要な長さの前方列の比較が行なえれば十分であ
り、必ずしも分割あるいは元分割を参照しなくてもよい
点である。
【0136】すなわち、例えば、事前にインデクスの各
領域群に領域コードも含めて格納してあれば、キーとな
る領域コードと各番地に格納された領域コードのみを、
分割及び元分割を参照することなく、単なるビット列と
して比較すればよい。このように、ある程度の長さのビ
ット列をまとめて比較する機能は、通常の計算機によっ
て提供されるから、これを利用して効率的な比較を実現
することができる。一方、事前にインデクスに領域コー
ドを格納しない場合でも、一括して比較可能なビット長
(以内)毎に領域コードを計算し、これらをまとめて比
較することで、効率を向上しうる。
【0137】(3)については、a番地の領域群の「項
数mの領域」を、同じく「項数mの領域」とする領域群
がその他にも存在するとすれば、それらは必ずa番地の
前後の相続く番地に格納されているはずである。したが
って、a番地より前の番地を逐次調べ、インデクスに格
納された領域群がキーとなる領域コードを前方列とする
領域コードを持つ限り列挙する手続、及び、a番地より
後の番地を逐次調べ、インデクスに格納された領域群が
キーとなる領域コードを前方列とする領域コードを持つ
限り列挙する手続の結果得られた番地と“a”を合わせ
れば、(3)の結果を得ることができる。
【0138】例えば、領域[1,2]を項数2の領域と
する領域群の格納番地は、1番地の前後の相続く番地に
格納されているはずであり、本例のインデクスにおいて
は、0番地及び2番地に格納されている。すなわち、1
番地より小さい0番地をまず調べて、図35の(T−5
4)に示した領域[1,2]の領域コードが、(T−5
5)の領域コードの前方列になっていると確認できる。
なお、一致前方列にアンダーラインを付した。それより
前の番地は、このインデクス中にはないから、1番地よ
り前の番地の列挙はここで終了する。
【0139】一方、1番地より後の2番地についても、
図35の(T−56)に示したように、その領域コード
が、領域[1,2]の領域コードを前方列としているこ
とが確認されるが、次の3番地については、図35の
(T−57)に示したように、その領域コードが、領域
[1,2]の領域コードを前方列としていないことが判
明する。したがって1番地より後の番地の列挙は2番地
までで終了する。以上の列挙の結果にもとの2番地を加
えて、領域[1,2]を項数2の領域とする領域群を格
納した番地は、0,1,2番地であるという結果を得
る。
【0140】以上説明したように、本実施形態における
インデクスは、その構成上の特徴に基づいて、探索手段
が使用する(1),(2),(3)の作用を効率的に提
供することができる。すなわち、(1)に関しては、領
域コードを格納した場合には、(2),(3)における
領域コードの比較が高速に行なえるという利点があり、
領域コードを格納せずに座標と元分割のみを格納する場
合には、長大な桁数字(ビット)列を格納する記憶領域
を節約できるという利点がある。
【0141】さらには、座標と元分割から領域コードを
生成するのと逆の手順によって、領域コードから元分割
を使用して各座標の前方列を復元できるので、各座標の
残余の後方列を一定の次元順に領域コードの末尾に追加
したもの(拡張領域コード)と元分割を使用すれば、座
標を復元することができる。この場合、もちろん、各座
標の長さ(桁数)は所与である。
【0142】したがって、座標の方を必要な都度計算し
て復元することにして、インデクスとしては拡張領域コ
ードと元分割のみを格納するという構成も可能である。
これに要する記憶容量は座標と元分割を格納する場合と
同等で済む。
【0143】[3−2−3.範囲探索手段の作用・効
果]次に、上述のインデクスの例を用いて、指定範囲の
左下、右上の座標がそれぞれ図36の(T−58)と与
えられた場合の範囲探索手段の動作を、図6及び図7に
示したフローチャートに従って説明する。
【0144】まず、ステップ603,604において、
共有領域[0,1]は(T−59)と計算される。続い
て、ステップ605において、この共有領域が上記指定
範囲に含まれているか否かが判断され、指定範囲に含ま
れてはいないが共通部分を有するので(ステップ60
9)、共有領域[0,1]はステップ602で初期化さ
れた空の領域キューに追加される(ステップ610)。
【0145】続いて、領域キューが空か否かが判断され
(ステップ611)、ステップ610で追加された共有
領域[0,1]が、直ちに先頭要素[a,m]=[0,
1]として領域キューから取り出される(ステップ61
2)。
【0146】ステップ613において、共有領域[0,
1]の各座標の末尾に“0”または“1”を追加するこ
とにより、図36の(T−60)の4つの領域が生成さ
れる。ステップ615において、これら4つの領域のう
ち、第1の領域である#1(T−61)が取り出され、
この領域を項数1の領域とする領域群がインデクス中に
存在するか否かが判断される(ステップ616)。この
領域を項数1の領域とする領域群はインデクス中に存在
しないから、この領域は本範囲探索の対象にならず、ス
テップ614に戻る。
【0147】次に、ステップ615において、第2の領
域である#2(T−62)が取り出され、同様に、この
領域を項数1の領域とする領域群がインデクス中に存在
するか否かが判断される(ステップ616)。この領域
を項数1の領域とする領域群は、番地0,1,2,3,
4,5に存在するので、ステップ617に進む。そこ
で、b=4として共有領域[4,2]は、図37の(T
−63)と計算され、ステップ618において、この共
有領域が上記指定範囲に含まれているか否かが判断さ
れ、指定範囲に含まれてはいないが共通部分を有するの
で(ステップ622)、共有領域[4,2]を領域キュ
ーに追加し(ステップ623)、ステップ614に戻
る。
【0148】次に、ステップ615において、第3の領
域である#3(T−64)が取り出され、同様に、この
領域を項数1の領域とする領域群がインデクス中に存在
するか否かが判断される(ステップ616)。この領域
を項数1の領域とする領域群は、番地6に存在する。そ
こで、b=6として共有領域[6,2]は計算できない
から、ステップ620に進み、6番地の座標が指定範囲
に含まれているか否かを調べると、含まれていないと判
定され、ステップ614に戻る。
【0149】続いて、ステップ615において、第4の
領域である#4(T−65)が取り出され、同様に、こ
の領域を項数1の領域とする領域群がインデクス中に存
在するか否かが判断される(ステップ616)。この領
域を項数1の領域とする領域群は、番地7,8,9に存
在する。そこで、b=7として共有領域[7,2]は
(T−66)と計算され、ステップ618において、こ
の共有領域が上記指定範囲に含まれているか否かが判断
され、指定範囲に含まれてはいないが共通部分を有する
ので(ステップ622)、共有領域[7,2]を領域キ
ューに追加し(ステップ623)、ステップ614に戻
る。ステップ614において、4つの探索対象領域はす
べて処理済みなので、ステップ611に戻る。以上の結
果、領域キューの内容は、(T−67)となっている。
【0150】次に、ステップ612において、この先頭
要素[4,2]が[a,m]として取り出される。ステ
ップ613において、共有領域[4,2]の各座標の末
尾に“0”または“1”を追加して生成されるのは、図
38の(T−68)の4つの領域である。ステップ61
5以下の処理によって、これら4つの領域のうち、第1
の領域である#5と第4の領域である#8(T−69)
を項数2の領域とする領域群はインデクス中に存在しな
いから、これらの領域は本範囲探索の対象にならず、ス
テップ614に戻る。
【0151】次に、第2の領域である#6(T−70)
を項数2の領域とする領域群は、番地0,1,2に存在
する(ステップ616)。そこで、b=1として共有領
域[1,3]は、(T−71)と計算され、これは指定
範囲に含まれているので(ステップ618)、ステップ
619に進み、領域[1,2]を項数2の領域とする領
域群を格納している番地0,1,2を、全て結果リスト
に加える。
【0152】続いて、第3の領域である#7(T−7
2)を項数2の領域とする領域群は、番地3,4,5に
存在する(ステップ616)。そこで、b=4として共
有領域[4,3]は、図39の(T−73)と計算さ
れ、これは指定範囲に含まれてはいないが共通部分を有
する(ステップ622)。したがって、共有領域[4,
3]を領域キューに追加し(ステップ623)、ステッ
プ614に戻る。ステップ614において、4つの探索
対象領域はすべて処理済みなので、ステップ611に戻
る。以上の結果、領域キューの内容及び結果リストの内
容は、左を先頭として(T−74)となっている。
【0153】続いて、ステップ612において、この先
頭要素[7,2]が[a,m]として取り出される。ス
テップ613において、共有領域[7,2]の各座標の
末尾に“0”または“1”を追加して生成されるのは、
図39の(T−75)の4つの領域である。ステップ6
15以下の処理によって、これら4つの領域のうち、第
2の領域である#10(T−76)を項数2の領域とす
る領域群はインデクス中に存在しないから、この領域は
本範囲探索の対象にならず、ステップ614に戻る。
【0154】次に、第1の領域である#9、第3の領域
である#11、第4の領域である#12(T−77)を
項数2の領域とする領域群は、それぞれ番地7、番地
8、番地9に存在する(ステップ616)。しかし、共
有領域[7,3]、共有領域[8,3]、共有領域
[9,3]はいずれも計算できないので、これらの番地
の座標が指定範囲に含まれているか否かが調べられる
(ステップ620)。
【0155】その結果、7番地の座標は指定範囲に含ま
れているが、8番地及び9番地の座標は指定範囲に含ま
れていないと判定されるから、7番地を結果リストに加
え(ステップ621)、ステップ614に戻る。ステッ
プ614において、4つの探索対象領域はすべて処理済
みなので、ステップ611に戻る。以上の結果、領域キ
ューの内容及び結果リストの内容は、左を先頭として、
図40の(T−78)となっている。
【0156】続いて、ステップ612において、この先
頭要素[4,3]が[a,m]として取り出される。ス
テップ613において、共有領域[4,3]の各座標の
末尾に“0”または“1”を追加して生成されるのは、
図40の(T−79)の4つの領域である。ステップ6
15以下の処理によって、これら4つの領域のうち、第
4の領域である#16(T−80)を項数3の領域とす
る領域群はインデクス中に存在しないから、この領域は
本範囲探索の対象にならず、ステップ614に戻る。
【0157】次に、第1の領域である#13、第2の領
域である#14、第3の領域である#15(T−81)
を項数3の領域とする領域群は、それぞれ番地3、番地
4、番地5に存在する(ステップ616)。しかし、共
有領域[3,4]、共有領域[4,4]、共有領域
[5,4]はいずれも計算できないので、これらの番地
の座標が指定範囲に含まれているか否かが調べられる
(ステップ620)。
【0158】その結果、3番地及び4番地の座標は指定
範囲に含まれているが、5番地の座標は指定範囲に含ま
れていないと判定されるから、3番地及び4番地を結果
リストに加え(ステップ621)、ステップ614に戻
る。ステップ614において、4つの探索対象領域はす
べて処理済みなので、ステップ611に戻る。ステップ
611に戻り、領域キューが空であるか否かを判断し、
領域キューが空であることを検出して、本範囲探索処理
を終了する。以上の結果、結果リストの内容は(T−8
2)となっており、インデクス中に格納された0〜9番
地の座標のうち、指定範囲に含まれる座標は、0番地,
1番地,2番地,3番地,4番地及び7番地の座標であ
ると決定される。
【0159】このように、本実施形態の範囲探索手段
は、上記の手続によって、指定範囲に含まれる点をもれ
なく列挙することができる。また、本実施形態のインデ
クスを使用すれば、座標データが領域コードに従ってソ
ートされた順に主記憶上に連続して配置されていること
によって、各種提案されている木構造等とは異なって、
余分なポインタ領域を使うことなく、かつ迅速に、その
指定範囲に含まれている座標データをもれなく列挙する
ことができる。
【0160】なお、上述の説明においては、左下及び右
上の座標で指定される矩形範囲に含まれる座標の探索に
ついて、その作用を述べたが、範囲と座標及び領域の包
含関係、共通部分の有無が判定できれば、指定範囲は矩
形に限られるものではない。
【0161】[3−2−4.最近座標探索手段の作用]
次に、上述のインデクスの例を用いて、指定座標が図4
1の(T−83)と与えられた場合の最近座標探索手段
の動作を、図8及び図9に示したフローチャートに従っ
て説明する。
【0162】まず、ステップ801において、最近座標
候補pを0番地の座標とする。pには座標データそのも
のの代りに番地0を設定しておく。座標p=(17,9
6)と指定座標(100,50)との距離は、r=sq
rt((100−17)2 +(50−96)2 )=sq
rt(9005)に設定される(ステップ802)。
【0163】ステップ805において、共有領域[0,
1]は、図41の(T−84)と計算できるので、
[0,1]はステップ803で初期化された空の領域ス
タックに追加される(ステップ806)。
【0164】続いて、領域スタックが空か否かが判断さ
れ(ステップ807)、ステップ806で追加された共
有領域[0,1]が、直ちに先頭要素[a,m]=
[0,1]として領域スタックから取り出される(ステ
ップ808)。
【0165】ステップ809において、共有領域[0,
1]と指定座標との距離が“r”以上であるか否かが判
断されるが、本例の場合、指定座標は共有領域[0,
1]に含まれているので、それらの間の距離は“0”
で、上記“r”より小さい。従って、ステップ810に
進み、共有領域[0,1]の各座標の末尾に“0”また
は“1”を追加することにより、図41の(T−85)
の4つの領域が生成される。ステップ812において、
これら4つの領域のうち、第1の領域である#1(T−
86)が取り出され、この領域を項数1の領域とする領
域群がインデクス中に存在するか否かが判断される(ス
テップ813)。この領域を項数1の領域とする領域群
はインデクス中に存在しないから、この領域は本探索の
対象にならず、ステップ811に戻る。
【0166】次に、ステップ812において、第2の領
域である#2(T−87)が取り出され、同様に、この
領域を項数1の領域とする領域群がインデクス中に存在
するか否かが判断される(ステップ813)。この領域
を項数1の領域とする領域群は、0番地から5番地まで
存在するので、ステップ814に進む。そこで、b=4
として共有領域[4,2]は、図42の(T−88)と
計算される(ステップ815)。
【0167】続いて、ステップ816において、この共
有領域が上記指定座標から“r”未満(以内)の範囲に
含まれているか否かが判断される。すなわち、この共有
領域[4,2]と指定座標との距離のうち、その共有領
域中で指定座標から最も近い右下の座標(63,64)
と指定座標との距離は、sqrt((63−100)2
+(64−50)2 )=sqrt(1565)で上記
“r”より小さく、また、領域中で指定座標から最も遠
い左上の座標(0,127)と指定座標との距離は、s
qrt((0−100)2 +(127−50)2 )=s
qrt(15929)で上記“r”より大きいから、こ
の領域は指定座標から距離r未満(以内)の部分を有す
るが含まれてはいないと判断される(ステップ816、
ステップ821)。そして、ステップ822に進み、共
有領域[4,2]を領域スタックに追加し、ステップ8
11に戻る。
【0168】次に、ステップ812において、第3の領
域である#3(T−89)が取り出され、同様に、この
領域を項数1の領域とする領域群がインデクス中に存在
するか否かが判断される(ステップ813)。この領域
を項数1の領域とする領域群は、6番地に存在するの
で、ステップ814に進む。
【0169】そこで、b=6として共有領域[6,2]
は計算できないから、ステップ819に進み、6番地の
座標(464,7)と指定座標との距離を計算する。こ
れはsqrt((464−100)2 +(7−5
0)2 )=sqrt(134345)で“r”より大き
いから、最近座標候補pの更新は行われず、ステップ8
11に戻る。
【0170】続いて、ステップ812において、第4の
領域である#4(T−90)が取り出され、同様に、こ
の領域を項数1の領域とする領域群がインデクス中に存
在するか否かが判断される(ステップ813)。この領
域を項数1の領域とする領域群は、7番地から9番地ま
で存在するので、ステップ814に進む。そこで、b=
7として共有領域[7,2]は、(T−91)と計算さ
れる(ステップ815)。
【0171】続いて、ステップ816において、この共
有領域が上記指定座標から“r”未満(以内)の範囲に
含まれているか否かが判断される。すなわち、指定座標
との距離は、領域中で指定座標から最も近い左下の座標
(256,64)と指定座標との距離sqrt((25
6−100)2 +(64−50)2 )=sqrt(24
532)で“r”より大きいから、この領域に対しては
何も処理を行わず、ステップ821を経てステップ81
1に戻る。ステップ811において、4つの探索対象領
域はすべて処理済みなので、ステップ807に戻る。以
上の結果、領域スタックの内容(右を先頭として)、及
びp、rの値は、図42の(T−92)のようになって
いる。
【0172】次に、ステップ808において、この先頭
要素[4,2]が[a,m]として取り出される。続い
て、ステップ809において、共有領域[4,2]と指
定座標との距離が“r”以上であるか否かが判断され
る。本例の場合、共有領域[4,2]と指定座標との距
離はsqrt(1565)で“r”より小さいから、ス
テップ810に進み、共有領域[4,2]の各座標の末
尾に“0”または“1”を追加して、図43の(T−9
3)の4つの領域が生成される。
【0173】ステップ812以下の処理によって、これ
ら4つの領域のうち、第1の領域である#5と第4の領
域である#8(T−94)を項数2の領域とする領域群
はインデクス中に存在しないから、これらの領域は本探
索の対象にならず、ステップ811に戻る。
【0174】次に、第2の領域である#6(T−95)
を項数2の領域とする領域群は、番地0,1,2に存在
する(ステップ813)。そこで、b=1として共有領
域[1,3]は、(T−96)と計算される(ステップ
815)。
【0175】続いて、ステップ816において、この共
有領域が上記指定座標から“r”未満(以内)の範囲に
含まれているか否かが判断される。すなわち、指定座標
との距離は、領域中で指定座標から最も近い右下の座標
(31,96)と指定座標との距離がsqrt((31
−100)2 +(96−50)2 )=sqrt(687
7)で“r”より小さく、また領域中で指定座標から最
も遠い左上の座標(0,127)と指定座標との距離が
sqrt((0−100)2 +(127−50)2 )=
sqrt(15929)で“r”より大きいから、この
領域は指定座標から距離r未満(以内)の部分を有する
が含まれてはいないと判断される(ステップ816、ス
テップ821)。そして、ステップ822に進み、共有
領域[1,3]を領域スタックに追加し、ステップ81
1に戻る。
【0176】次に、第3の領域である#7、すなわち、
図44の(T−97)を項数2の領域とする領域群は番
地3,4,5に存在する。そこで、b=4として共有領
域[4,3]は、(T−98)と計算される(ステップ
815)。
【0177】続いて、ステップ816において、この共
有領域が上記指定座標から“r”未満(以内)の範囲に
含まれているか否かが判断される。すなわち、領域中で
指定座標から最も遠い左上の座標(32,95)と指定
座標との距離がsqrt((32−100)2 +(95
−50)2 )=sqrt(6649)で“r”より小さ
いから、この領域は指定座標から距離r未満(以内)の
範囲に含まれている。
【0178】従って、ステップ817に進み、b=4番
地を新たな“p”とし、4番地の座標(44,76)と
指定座標との距離sqrt((44−100)2 +(7
6−50)2 )=sqrt(3812)を新たな“r”
とする。さらに[4,3]を領域スタックに追加し(ス
テップ818)、ステップ811に戻る。ステップ81
1において、4つの探索対象領域はすべて処理済みなの
で、ステップ807に戻る。以上の結果、領域スタック
の内容(右を先頭として)、及びp、rの値は、図44
の(T−99)のようになっている。
【0179】次に、ステップ808において、この先頭
要素[4,3]が[a,m]として取り出される。続い
て、ステップ809において、共有領域[4,3]と指
定座標との距離が“r”以上であるか否かが判断され
る。すなわち、共有領域[4,3]と指定座標との距離
はsqrt(1565)で、新たな“r”より小さいか
ら、ステップ810に進み、共有領域[4,3]の各座
標の末尾に“0”または“1”を追加して、図44の
(T−100)の4つの領域が生成される。ステップ8
12以下の処理によって、これら4つの領域のうち、第
4の領域である#12、すなわち、図45の(T−10
1)を項数3の領域とする領域群はインデクス中に存在
しないから、この領域は本探索の対象にならず、ステッ
プ811に戻る。
【0180】一方、図45の(T−102)を項数3の
領域とする領域群は、それぞれ番地3、番地4、番地5
に存在する(ステップ813)。しかし、共有領域
[3,4]、共有領域[4,4]、共有領域[5,4]
はいずれも計算できないので(ステップ815)、ステ
ップ819に進み、これらの各番地の座標と指定座標と
の距離が“r”未満か否かが判断される。
【0181】まず、番地3の座標(44,64)と指定
座標との距離は、sqrt((44−100)2 +(6
4−50)2 )=sqrt(3332)で“r”より小
さいから、ステップ820に進み、最近座標候補をこれ
に更新し、p=3、r=sqrt(3332)とする。
【0182】次に、番地4の座標(44,76)と指定
座標との距離は、sqrt((44−100)2 +(7
6−50)2 )=sqrt(3812)で“r”より大
きいから、最近座標候補の更新は行われない。
【0183】さらに、番地5の座標(46,68)と指
定座標との距離は、sqrt((46−100)2
(68−50)2 )=sqrt(3240)で“r”よ
り小さいから、最近座標候補をこれに更新し、p=5、
r=sqrt(3240)としてステップ811に戻
る。ステップ811において、4つの探索対象領域はす
べて処理済みなので、ステップ807に戻る。以上の結
果、領域スタックの内容(右を先頭として)及びp、r
の値は、図45の(T−103)のようになっている。
【0184】次に、ステップ808において、この先頭
要素[1,3]が[a,m]として取り出される。続い
て、ステップ809において、共有領域[1,3]と指
定座標との距離が“r”以上であるか否かが判断され
る。すなわち、共有領域[1,3]と指定座標との距離
はsqrt(6877)で“r”より大きいから、その
領域には処理を加えず、ステップ807に戻る。ステッ
プ807において、領域スタックが空であることを検出
して、本最近座標探索処理を終了する。
【0185】以上の結果、最近座標候補p及びその指定
座標との距離rの値は、図45の(T−104)となっ
ており、インデクス中に格納された0〜9番地の座標の
うち、指定座標に最も近い座標は5番地の座標(46,
68)であり、その距離r=sqrt(3240)であ
ると決定される。
【0186】上述したように、本実施形態の最近座標探
索手段は、所定の座標データによって表される領域を再
帰的に分割しながら、最近座標候補および指定座標との
距離を更新していくので、上記の手続を実行するだけ
で、確実に指定座標に最も近い座標データを決定するこ
とができる。
【0187】これに対して、従来は、まず最近座標の候
補として妥当なものを1つ決定し、しかる後に、上述の
範囲探索と類似の方法で、指定座標から距離r未満の範
囲にある座標データを列挙し、もしそのような点が存在
すればそれらのうちで指定座標に最も近いものを結果と
し、なければ候補として決定したものを結果とするとい
う2段階の方法を用いていた。
【0188】しかし、本実施形態の最近座標探索手段の
特徴は、要調査とされた領域をスタックに保持するとと
もに、処理の当初から最近座標候補を設定し、新たな最
近座標候補が見い出された場合、直ちに最近座標候補を
更新することである。この際、新たに最近座標候補とな
る座標に関して、それが最近座標候補となり得るか否か
を判定する手続を要しない。また、インデクスの特徴的
な作用によって、新たな最近座標候補にし得る座標デー
タは、すでに少なくとも一つは得られており、改めてそ
れを選択・探索する手続を要しない。このようにして、
極めて迅速に“r”を減少させることができるので、ス
タックから取り出される領域に関して、処理不要と判定
する割合が向上し、無駄な探索を減少させて、効率よく
最近座標を決定することができる。
【0189】[3−3.第1実施形態の変形例] [3−3−1.座標の浮動小数点表示]第1実施形態に
おいては、固定小数点表示された座標を扱ったが、浮動
小数点表示の座標も、固定小数点表示に変換する手段を
付加することによって、同様に扱うことができる。例え
ば、上記インデクスの具体例で扱った10個の座標は、
いずれも仮数部5ビット、指数部3ビットの非正規浮動
小数点表現で格納することができる。すなわち、上記各
座標を上位3ビットの指数部、下位5ビットの仮数部か
ら成る8ビットで表したインデクスは、図46に示した
(T−105)のように構成できる。また、上記インデ
クス生成手段、範囲探索手段及び最近座標探索手段は、
各座標に関して、固定小数点表示された場合の (1)上位k桁(長さkの前方列) (2)上位p+1桁目からp+k桁目までのk桁(先頭
からp+1文字目から始まる長さkの部分列) を得る操作を使用する。なお、(1)は、(2)におい
てp=0とした場合に当たるから、(2)の機能が実現
できれば、浮動小数点表示された座標に対しても上記各
手段を適用できる。
【0190】上述したように、浮動小数点表示された座
標から、固定小数点表示した場合の上位p+1桁目から
p+k桁目までのk桁(c1 2 …ck とする)は、次
のように決定できる(但し、k>0)。 (1)h={7(指数部の最大値)−指数部}がp+k
以下ならば、c1 ,c2,…,ck はすべて0とする。 (2)t={12(固定小数点表示の桁数)−指数部}
がp以下ならば、c1 ,c2 ,…,ck はすべて0とす
る。 (3)(1)、(2)以外の場合、p<hならば、
1 ,c2 ,…,ch-p はすべて0とする。さらに、t
<p+kならば、ch-p+1 ,…,ch-p+5 は仮数部のビ
ット列とし、ch-p+6 ,ch-p+7 ,…,ck はすべて0
とする。p+k≦tならば、ch-p+1 ,…,ck は仮数
部の先頭k−(h−p)ビットとする。p≧hで、さら
にt<p+kならば、c1 ,…,ct-p は仮数部の末尾
t−pビットとし、ct-p+1 ,…,ck はすべて0とす
る。p+k≦tならば、c1 ,…,ck は仮数部の末尾
kビットとする。
【0191】このようにして、浮動小数点表示された座
標に対しても、上記第1実施形態と同様の装置を構成す
ることができる。
【0192】[3−3−2.分割の格納方法]分割は桁
数の列であるから、1項の最大値は座標の桁数であり、
また、項数の最大値もやはり座標の桁数になる。この表
現に必要な記憶領域をインデクス中の各座標に固定的に
割り当てると、多量の記憶領域を要する。例えば、上述
したように各座標が12ビット固定小数点表示の場合、
各次元の分割は4ビット×12項=48ビットを要す
る。
【0193】しかしながら、これらの前方列の多くは一
致しているから、多数の分割で一致している前方列の組
を表す記号と、それらを除いた後方列の部分との組合せ
として格納することにより、記憶領域を節約できる。こ
れには、桁数列を格納する表を用意して、インデクスに
は、分割となる桁数列が格納されている表中の位置(桁
数列へのポインタ)を格納するとともに、表として前方
列が一致する多数の桁数列を効率よく格納するものを採
用する。
【0194】桁数列を格納する表としては、例えば、次
のように構成されたものを用いる。 (1)2項以下の桁数列はそのまま格納する。 (2)3項以上の桁数列は、それより1項少ない前方列
が同じ表中で格納されている位置(前方列へのポイン
タ)と末尾の1項との組合せとして格納する。表中の
(先頭からの)位置を記号[]を付けて図示すると、本
例のインデクスは桁数列表とともに、図47に示した
(T−106)のような形で格納できる。
【0195】また、桁数列表の別の構成として、図48
に示した(T−107)のようなものでもよい。 (1)2項以下の桁数列はそのまま格納する。また
(2)に必要な2項以下の後方列も格納する。 (2)2k +1項以上、2k+1 項以下の桁数列は、前方
k 項の数列を格納した位置と、前方2k 項を除いた後
方列を格納した位置との組として格納する。
【0196】要するに、桁数列表としては、前方列が一
致する多数の数列を効率よく格納するものならばどのよ
うなものでも良く、表中の位置を桁数列の代りに格納す
ることによって、インデクスに要する記憶容量が節約で
きる。
【0197】[3−3−3.領域コードの短縮]さら
に、上記[3−2−2.探索手段に対するインデクスの
作用]において説明したように、インデクスの探索の際
にキーとして用いられる領域コードは、[a,m]の領
域コード、あるいは[a,m]の領域の各座標の末尾の
桁のみを変えた座標から、その項数mの分割によって生
成される領域コードに限られるから、分割に従って各座
標から取られる部分列の最後の桁のみを部分列の代りに
連接したものを領域コードとして使用しても、インデク
ス中の領域群の並び順、及び二分探索の結果として全く
同じ作用を得ることができる。
【0198】すなわち、上述した本例のインデクスに関
する領域コードとして、図49に示した(T−108)
のような短いコードで同様の効果を得ることができる。
この変形によって、インデクス中に、領域コードを領域
群とともに格納する場合の記憶容量が節約されるととも
に、二分探索等において領域コードを比較する際の効率
が向上する。
【0199】以上説明したように、第1実施形態は座
標、分割、領域コードそれぞれの表現に関して種々変形
して実施することができる。
【0200】[4.第2実施形態] [4−1.第2実施形態の全体構成]図10は、第2実
施形態の構成を示す機能ブロック図である。すなわち、
第2実施形態は、第1実施形態と同様に、座標データ1
を格納するインデクス2及び範囲探索手段4、最近座標
探索手段5を備えている。さらに、第1実施形態におけ
るインデクス生成手段の代りに、インデクスへの座標の
追加・削除を行うインデクス変更手段10を備えてい
る。但し、空のインデクスに対して、探索対象となる座
標をインデクス変更手段を用いて逐次追加すれば、イン
デクスを生成できるから、第2実施形態はインデクス生
成機能も兼ね備えているといえる。
【0201】また、第2実施形態においては、インデク
スの各座標に付与される元分割の各項はすべて“1”と
する。したがって、領域コードは、単に各次元の座標を
上位桁から1桁づつ取り、一定の次元順に連接したもの
になる。このように、元分割の各項はすべて“1”と決
められているから、座標と対になる元分割を表すには、
その項数をもってすれば足りる。
【0202】一方、元分割にこのような制約を設けたこ
とによって、第1実施形態のインデクスにおける各領域
群が満たしていた次の条件、すなわち、「項数mの領域
が一致する領域群が複数存在するとき、それらの項数m
+1の共有領域は一致し、かつ、それらの項数m+1の
領域には少なくとも2つ以上の異なる領域がある。」は
必ずしも満たされない。
【0203】但し、第2実施形態では、「項数m+1の
共有領域」は常に「項数mの領域」になることから、こ
れら2つの条件のうち第1の条件は満たされており、第
2の条件、すなわち、「項数m+1の領域には少なくと
も2つ以上の異なる領域がある」ことが保証されないだ
けである。
【0204】しかし、前記第1の条件は満たされている
ので、第2実施形態のインデクスに対して第1実施形態
の範囲探索手段、最近座標探索手段をそのまま使用して
も、常に正しい探索結果を得ることができる。その理由
は、前記第1の条件は、探索手続の正当性の必要条件で
あり、第2の条件は、探索の効率を左右する条件である
からである。
【0205】このような理由で、第2実施形態において
も、第1実施形態と同じ範囲探索手段及び最近座標探索
手段を使用する。従って、以下では、第2実施形態に特
徴的なインデクス及びインデクス変更手段に関してのみ
説明する。
【0206】[4−1−1.インデクスの構成]本実施
形態におけるインデクスを用いて、上記第1実施形態の
説明で用いた10個の座標を格納すると、例えば、図5
0に示した(T−109)のような構成になる。
【0207】第2実施形態のインデクスにおいては、イ
ンデクス変更手段が追加・削除を効率的に行なえるよう
に、座標及び元分割の項数すなわち領域群を記憶装置の
連続する番地に格納するのではなく、各領域群に加えて
二分探索木を構成するためのポインタを格納した二分探
索木として実現する。これには、1組の領域群を格納す
るためのノード領域として、例えば、図11に示したよ
うな構成を採用する。
【0208】なお、二分探索木の実現方法としては、領
域群を領域コードの辞書順にソートしたものとして、
「領域コード」あるいは「領域コードの前方列」で探索
でき、かつ領域群の追加・削除が容易な構成であれば、
これに限らず、どのような構成を用いてもよい。また、
探索や変更の効率を向上させるために、hight-balanced
binary searchtree やself-adjusting binary search
tree のような構成を採用してもよい。
【0209】図12は、本例のインデクスを二分探索木
として構成した一例を示したものである。このように、
二分探索木で実現された、領域コード順にソートされた
領域群から成るインデクスは、第1実施形態においてそ
れらの領域群を記憶領域上の連続する番地に格納したイ
ンデクスと同じ機能・作用が提供できるだけでなく、イ
ンデクスへの領域群の追加・削除が、二分探索木へのノ
ードの追加・削除として効率的に実行できるという特徴
がある。
【0210】[座標の削除]本実施形態におけるインデ
クス変更手段は、上記の特徴を利用するとともに、領域
群の元分割の項数に対して適切な設定・修正を行なう。
例えば、上記インデクス例において、末尾から3番目の
領域群(座標)h、すなわち、図50の(T−110)
を削除する場合、これを格納しているノードを二分探索
木から削除して、図51に示した(T−111)のよう
なインデクスを表す二分探索木に変更する。なお、この
際、変更前のインデクスにおいて削除した領域群の直前
及び直後に位置した領域群A,Bに関して、次の条件を
チェックして元分割の項数の修正を行なう。
【0211】ここで、AとBの領域コードが、先頭から
長さ2単位で一致する長さを2nABとする。また、Aと
その直前の領域群Cの領域コードが、同様に一致する長
さを2nACとする。さらに、Bとその直後の領域群Dの
領域コードが、同様に一致する長さを2nBDとする。 但し、Aがないとき nAB=nAC=0、 Bがないとき nAB=nBD=0、 Cがないとき nAC=0、 Dがないとき nBD=0nAB<nACならば、Aの元分割
の項数をnAC+1とする。nAB≧nACならば、Aの元分
割の項数をnAB+1とする。nAB≧nBDならば、Bの元
分割の項数をnAB+1とする。nAB<nBDならば、Bの
元分割の項数をnBD+1とする。上記の場合、nAB
6、nAC=3、nBD=4だから、A及びBの元分割の項
数はともに7に設定される。すなわち、Aに関しては変
化しなかったことになる。
【0212】[座標の追加]インデクスに座標(領域
群)を追加する場合には、まず、追加する座標を、分割
の項数が最大の領域群とした場合の領域コードでインデ
クスを二分探索し、追加位置を決定する。例えば、上で
削除した座標を再び追加する場合、まず、領域群(T−
112)としてインデクスに追加する。この状態で二分
探索を行なうと、この領域群を追加すべき位置は、上記
A、Bの間であると決定される。なお、図52に示した
(T−113)は、この領域群を追加した後のインデク
スを示したものであり、追加された領域群をXとする。
【0213】追加する際に次のチェックを行なって、
X、A、Bの元分割の項数の修正を行なう。すなわち、
XとAの領域コードが先頭から長さ2単位で一致する長
さを2nXAとする。また、Aの元分割の項数をmA とす
る。XとBの領域コードが先頭から長さ2単位で一致す
る長さを2nXBとする。また、Bの元分割の項数をmB
とする。但し、AがないときnXA=0、Bがないときn
XB=0。nXA>nXBのとき、nXA=mA ならば、(Aと
Xのx座標同士、y座標同士の一致前方列長のうち小さ
い方)+1を、A,Xの元分割の項数とする。nXA<m
A ならば、nXA+1をXの元分割の項数とする。nXA
XBのとき、(必ずmA 、mB より小さい)Xの元分割
の項数をnXA+1=nXB+1とする。nXA<nXBのと
き、nXB=mB ならば、(BとXのx座標同士、y座標
同士の一致前方列長のうち小さい方)+1を、B,Xの
元分割の項数とする。nXB<mB ならば、nXB+1をX
の元分割の項数とする。
【0214】この場合、nXA=6、nXB=7、mA
7、mB =7で、BとXのx座標同士の一致前方列長は
12、y座標同士の一致前方列長は7だから、B、Xの
元分割の項数は7+1=8に設定される。その結果、イ
ンデクスは、図53に示した(T−114)のようにな
る。
【0215】[元分割の項数の省略]第2実施形態にお
いては、元分割の各項はすべて“1”とし、その項数の
みを格納したが、範囲探索手段及び最近座標探索手段に
おいてこの項数が使用されるのは、それぞれ[3−1−
3.範囲探索手段の構成]及び[3−1−4.最近座標
探索手段の構成]に示したステップ(6−1)において
のみである。このステップ(6−1)において、「元分
割の項数がmか否か」で判定している条件(意味)は、
領域[b,m]を含む領域群がb番地(のノード)に格
納されたもの1つだけか否かということである。
【0216】しかし、この判定は、各領域群に元分割の
項数を予め格納しておかなくても、インデクス上でその
領域群(座標)と直前及び直後の領域群(座標)との各
次元の一致前方列長を調べれば判定できる。すなわち、
直前の座標との各次元の一致前方列長のうち最小のも
の、及び直後の座標との各次元の一致前方列長のうち最
小のもののうち大きい方(=n)がmより小さいか否か
で判定できる。なお、上述のインデクス更新手段の手続
からもわかるように、n+1がその領域群(座標)の元
分割の項数に一致する。
【0217】[4−2.第2実施形態の効果]このよう
に、第2実施形態においては、領域コードが必要となる
たびに、各次元の座標を先頭から1桁または一定の桁数
づつ取り、定められた順序で連接して領域コードを生成
(計算)することによって、インデクスの各ノードには
座標のみを格納するという効率的な構成をとることが可
能である。
【0218】また、この構成においては、上記インデク
ス変更手段における元分割の項数の修正は省略でき、イ
ンデクスは単なる領域コードをキーとしてソートされた
座標から成る二分探索木として追加・削除・探索を行な
えばよい。なお、領域コードの比較は、先頭から順次必
要な長さだけ計算(生成)して行なうことができるの
で、元分割の項数を省略しても何ら効率の劣化を招くこ
とはない。
【0219】また、対象となる座標が固定的な場合、第
2実施形態のインデクスを所定の座標に対して生成した
後、二分探索木から第1実施形態で用いた記憶領域上の
連続番地に移して格納し、探索時のインデクスのサイズ
をコンパクトにすることもできる。もちろん、最初から
第1実施形態のように連続番地上でソーティングを行な
ってインデクスを生成してもよい。
【0220】[5.第3実施形態] [5−1.第3実施形態の構成] [5−1−1.インデクスの構成]第3実施形態のイン
デクスは、第1実施形態と同様の構成を有している。そ
れゆえ同一のインデクス生成手段を備えているが、イン
デクスが探索手段に提供する作用として新たに次の作用
を備えている。すなわち、 (4)ある番地aの領域群のある項数mの領域を、同じ
く項数mの領域とする領域群の数を得る。これは、第1
実施形態におけるインデクスの作用(3)を実行しなが
ら、数をカウントすれば得られるが、そのような実現方
法では探索手段の効率化に寄与する可能性は小さい。
【0221】そこで、本実施形態においては、次のよう
なより効率的な実現方法によってその作用を提供する。
すなわち、番地aより前の番地で、その番地以前には領
域[a,m]を項数mの領域とする領域群は存在しない
ことが保証されている番地を“p”、番地aより後の番
地で、その番地以後には領域[a,m]を項数mの領域
とする領域群は存在しないことが保証されている番地を
“q”とする。
【0222】そして、番地a以前で領域[a,m]を項
数mの領域とする領域群が格納されている最小の番地
“s”を、次のようにして二分探索によって決定する。 (1)r←p、s←aとする。 (2)番地t←(r+u)/2(小数点以下切捨)とす
る。 (3)t=sなら終了。 t<sで、領域[t,m]=領域[a,m]ならば、s
←t 領域[t,m]≠領域[a,m]ならば、r←t (4)(2)へ戻る。
【0223】同様に、番地a以後で領域[a,m]を項
数mの領域とする領域群が格納されている最大の番地
“u”を、次のようにして決定する。 (1)u←a、r←qとする。 (2)番地t←(u+r)/2(小数点以下切捨)とす
る。 (3)u=tなら終了。 u<tで、領域[t,m]=領域[a,m]ならば、u
←t 領域[t,m]≠領域[a,m]ならば、r←t (4)(2)へ戻る。
【0224】このようにして決定された“s”以後かつ
“u”以前の番地に格納された領域群は、すべて領域
[a,m]を項数mの領域としている。したがって、そ
れらの個数は、u−s+1個と計算される。
【0225】以上の手続によれば、第1実施形態に述べ
たインデクスの作用(3)の実現方法のように、該当す
る番地を逐一列挙することなく、二分探索によって効率
的に最小、最大の番地を決定することができる。さら
に、この決定にもとづいて、最小の番地“s”から最大
の番地“u”までの領域群(座標)を単に列挙すれば、
上記インデクスの作用(3)が、第1実施形態に述べた
実現方法よりもずっと効率的に実現できる。
【0226】このように、インデクスが、領域群[a,
m]を項数mの領域とする領域群の数およびその最小、
最大の番地を得る機能を備えていることを前提にして、
第3実施形態の範囲探索手段及び最近座標探索手段は次
のような手続によって構成される。
【0227】[5−1−2.範囲探索手段の構成]本実
施形態における範囲探索手段は、次のようなステップか
ら成っている。 (1)結果リストを初期化する。 (2)領域キューを初期化する。 (3)インデクスの任意のデータ(例えば、0番地)を
選び、項数0と組み合わせて[0,0]を処理対象とす
る。 (3−1)共有領域[0,1]が計算できない場合(元
分割の項が0個)、0番地の座標が指定範囲に含まれて
いれば、結果リストに加える。 (3−2)共有領域[0,1]が指定範囲に含まれてい
る場合、インデクス中の全データ(番地)を結果リスト
に加える。 (3−3)共有領域[0,1]が指定範囲に含まれては
いないが、指定範囲と共通部分を有する場合、[0,
1]を領域キューに追加する。 (4)領域キューが空なら終了。空でなければ先頭要素
を処理対象[a,m]として取り出し、領域キューから
削除する。 (5)共有領域[a,m]の各座標の末尾に、桁数字
0、1をそれぞれ追加して生成される2の2乗=4つの
領域のそれぞれについて、次の(6)を行なう。 (6)その領域を項数mの領域とする領域群がインデク
ス中に存在する場合に限り、その1つの番地を“b”と
して、次の条件付きステップのいずれかを行なう。な
お、インデクスを二分探索して“b”を得る過程で、b
より小さい番地のうち最後に領域コードの比較を行なっ
た番地を“p”、bより大きい番地のうち最後に領域コ
ードの比較を行なった番地を“q”とする。また、二分
探索を開始する前の“p”、“q”の初期値は、それぞ
れインデクスの(最小番地−1)及び(最大の番地+
1)に設定しておく。さらに、(p+q)/2番地の領
域コードが、ステップ(5)で作成された領域の領域コ
ードを前方列としていれば探索を終了し、その番地を
“b”とする。それ以外で前者が後者より小さければ、
(p+q)/2を新たな“p”とし、前者が後者より大
きければ、(p+q)/2を新たな“q”とする。 (6−1)共有領域[b,m+1]が計算できない場合
(元分割の項がm個)、b番地の座標が指定範囲に含ま
れていれば、結果リストに加える。 (6−4)共有領域[b,m+1]が指定範囲と共通部
分を有しない場合は、その領域に関して行なうべき処理
はない。 (6−1)、(6−4)に該当しない場合、p,qを用
いて、上述のような手続で領域[b,m]を項数mの領
域とする領域群が格納されている最小の番地“s”と最
大の番地“u”を決定してから、次の条件をチェックす
る。 (6−2)共有領域[b,m+1]が指定範囲に含まれ
ている場合、b番地と同じく領域[b,m]を項数mの
領域とする領域群を格納した番地を全て結果リストに加
える。これには、s以上u以下の番地を全て加えればよ
い。 (6−3)共有領域[b,m+1]が指定範囲に含まれ
てはいないが、指定範囲と共通部分を有する場合、u−
s<kすなわち、領域[b,m]を項数mの領域とする
領域群がk個以下ならば、それらの座標を全てチェック
して、指定範囲に含まれているものを結果リストに加え
る。一方、u−s≧kすなわち、領域[b,m]を項数
mの領域とする領域群がk個より多いならば、[b,m
+1]を領域キューに追加する。 (7)(4)へ戻る。
【0228】[5−1−3.最近座標探索手段の構成]
本実施形態における最近座標探索手段は、次のようなス
テップから成っている。 (1)インデクス中の任意のデータ(例えば、0番地)
を最近座標候補“p”とし、指定座標との距離を“r”
とする。 (2)領域スタックを初期化する。 (3)0番地を項数0と組み合わせて[0,0]を処理
対象とする。共有領域[0,1]が計算できる場合(元
分割の項が1個以上)には、[0,1]を領域スタック
に追加する。 (4)領域スタックが空なら終了。空でなければ先頭要
素を処理対象[a,m]として取り出し、領域スタック
から削除する。 (5)共有領域[a,m]と指定座標との距離がr以上
の場合、(4)に戻る。一方、r未満の場合には、共有
領域[a,m]の各座標の末尾に、桁数字0、1をそれ
ぞれ追加して生成される2の2乗=4つの領域のそれぞ
れについて、次の(6)を行なう。 (6)その領域を項数mの領域とする領域群がインデク
ス中に存在する場合に限り、その1つの番地を“b”と
して、次の条件付きステップのいずれかを行なう。な
お、インデクスを二分探索してbを得る過程で、bより
小さい番地のうち最後に領域コードの比較を行なった番
地を“p”、bより大きい番地のうち最後に領域コード
の比較を行なった番地を“q”とする。また、二分探索
を開始する前の“p”、“q”の初期値は、それぞれイ
ンデクスの(最小番地−1)及び(最大の番地+1)に
設定しておく。さらに、(p+q)/2番地の領域コー
ドが、ステップ(5)で作成された領域の領域コードを
前方列としていれば探索を終了し、その番地を“b”と
する。それ以外で前者が後者より小さければ、(p+
q)/2を新たな“p”とし、前者が後者より大きけれ
ば、(p+q)/2を新たな“q”とする。 (6−1)共有領域[b,m+1]が計算できない場合
(元分割の項がm個)、b番地の点と指定座標との距離
がr未満であれば、bを新たな最近座標候補“p”と
し、その距離を新たな“r”とする。このとき、さらに
r=0なら処理を終了する。 (6−4)共有領域[b,m+1]と指定座標との距離
がr以上である場合は、その領域に関して行なうべき処
理はない。(6−1)、(6−4)に該当しない場合、
p、qを用いて、上述のような手段で、領域[b,m]
を項数mの領域とする領域群が格納されている最小の番
地“s”と最大の番地“u”を決定する。 (6−5)u−s<kすなわち領域[b,m]を項数m
の領域とする領域群がk個以下ならば、それらの座標を
すべてチェックして、指定座標pとの距離が最小のもの
を選び、その距離がrより小さければその座標を新たな
最近座標候補“p”とし、その距離を新たな“r”とす
る。(6−5)に該当しない場合、次の条件をチェック
する。なお、この場合、(6−2)、(6−3)のいず
れかには必ず該当する。 (6−2)共有領域[b,m+1]が指定座標から距離
r以内(未満)の範囲に含まれている場合、bを新たな
最近座標候補“p”とし、b番地の点と指定座標との距
離を新たな“r”とする。さらに、[b,m+1]を領
域スタックに追加する。 (6−3)共有領域[b,m+1]が指定座標から距離
r以内(未満)の範囲に含まれてはいないが、指定座標
との距離はr未満である場合、[b,m+1]を領域ス
タックに追加する。 (7)(4)へ戻る。
【0229】[5−2.インデクスの新たな作用を利用
した探索手段の効果]上記各探索手段において、第3実
施形態のインデクスが新たに提供する作用(4)は、ス
テップ(6)において、領域[b,m]を項数mの領域
とする領域群の数が所定数k以下であるか否かを判定
し、k以下である場合には、それらの座標が探索結果あ
るいはその新たな候補となるか否かをチェックするとい
う手続に使用されている。
【0230】この場合、領域[b,m]を項数mの領域
とする領域群、すなわち共有領域[b,m+1]が同一
である領域群の座標は、探索結果あるいはその新たな候
補となる可能性があるので、第1実施形態では、範囲探
索手段のステップ(6−3)、最近座標探索手段のステ
ップ(6−2)、(6−3)において[b,m+1]を
領域キューまたは領域スタックに追加し、後にそれを取
り出して再びステップ(5)において複数のより細分化
された領域を生成するようになっていた。
【0231】これに対して、本実施形態においては、所
定数kを適切に設定すれば、領域[b,m]に含まれる
探索結果あるいはその新たな候補となる可能性のある座
標が少数の場合には、それらの座標についてその判定を
その場で行ない、領域[b,m]を更に複数の領域に分
割することを避けることができる。
【0232】また、上記の各探索手段においては、領域
あるいは共有領域に関しても、探索の過程で座標と同様
の操作(包含の判定、距離の計算等)が実行されるか
ら、対象となる座標の数がある程度少なくなったら、そ
れらを含む領域をそれ以上分割せず、最終的な判定操作
を行なうことで、分割に伴うオーバーヘッドを回避する
ことができる。
【0233】[5−3.第2実施形態への適用]本実施
形態は、上記第2実施形態のようにインデクスが二分探
索木で構成されている場合でも、上記(4)の作用を次
のようにして提供することができる。すなわち、二分探
索木の各ノードに部分区間長のフィールドを設け、各ノ
ードに対応する区間の長さをすべて“1”として、「区
間管理方法」によって部分区間長フィールドを設定・管
理する。
【0234】このとき、各ノードに対応づけられた区間
の両端(同一)は、そのノードに格納された領域群に対
応する領域コードを辞書順にソートしたインデクス中で
のそのノード(領域コード)の順位を表している。従っ
て、この順位を上述の手続における番地の代りに用いれ
ば、第2実施形態と同様のインデクスに対して、本実施
形態の範囲探索手段及び最近座標探索手段を適用するこ
とができる。
【0235】なお、前記「区間管理方法」については、
本出願人が別途特許出願した明細書に詳述されているの
で、説明は省略する。
【0236】[6.第4実施形態] [6−1.第4実施形態の構成] [6−1−1.インデクスの構成]第4実施形態のイン
デクスは、以下に述べるように構成されている。すなわ
ち、インデクスの各領域群の元分割のうち、先頭n項
は、上記第1実施形態におけるインデクスの元分割の条
件、「項数mの領域が一致する領域群が複数存在すると
き、それらの項数m+1の共有領域は一致し、かつ、そ
れらの項数m+1の領域には少なくとも2つ以上の異な
る領域がある」を満たしており、n+1項以降は、上記
第2実施形態におけるインデクスと同様に、すべて
“1”である。但し、nは領域群毎に異なってもよい。
【0237】第2実施形態で述べたように、各項が
“1”の部分については元分割にそれを表現する必要は
なく、領域コードは、n+1項以降はn項までの和だけ
の長さ(桁数)を先頭から取り去った各次元の座標から
一定の次元順に1桁づつ採って、n項までの分割に基づ
いて生成された領域コードに追加すればよい。なお、全
ての桁を取り尽くした次元からは、それ以降追加しな
い。
【0238】本実施形態におけるインデクスを用いて、
上記第1実施形態の説明で用いた10個の座標を格納す
ると、例えば、図54に示した(T−115)のような
構成になる。
【0239】また、本実施形態は、第2実施形態と同様
にインデクス変更手段を備えており、インデクスは効率
良く変更できるように二分探索木で実現される。第3実
施形態で述べたように、各ノードに部分区間長フィール
ドを設けて区間管理方法を適用することにより各領域群
に順位を付与し、これを用いて、項数mの領域が同一の
領域群の数を、それに対応する領域コードを前方列とす
る領域コードを持つ領域群の数として計算できる構成を
採っている。
【0240】したがって、範囲探索手段及び最近座標探
索手段に関しては、第1実施形態及び第3実施形態に示
した手続をそのまま用いることができる。また、インデ
クス変更手段は、インデクスへの座標の追加及びインデ
クスからの領域群(座標)の削除を扱う。以下、それぞ
れの場合の手続について、説明する。
【0241】[インデクスへの座標の追加] (1)新たな座標を挿入すべき位置を決定するため、イ
ンデクスを二分探索する。二分探索の際の領域コードの
比較は、新たな座標から比較すべきインデクス中の領域
群の元分割を使用して領域コードの前方列を順次生成
し、領域群の座標から生成される領域コードの前方列と
比較する。そして、インデクス中の領域群で元分割に表
示された項数nまでの領域コードが一致するものがみつ
かったら探索を中止する。
【0242】(2)(1)の結果、元分割に表示された
項数nまでの領域コードが一致する領域群(座標)がみ
つかった場合、その元分割のn+1項以降をすべて
“1”とした分割に基づいて新たな座標から生成した領
域コードをキーとして二分探索を継続し、その結果決定
された位置に、新たな座標と上記の項数nの元分割から
成る領域群を挿入する。但し、各次元において分割の和
が座標の桁数を超える場合は、元分割のn+1項以降を
すべて“0”とする。
【0243】(3)(2)で挿入した領域群と項数nの
領域を同じくする領域群の数を調べ、所定数“c”より
大きければ、それらの領域群の元分割にn+1項目を加
えて、元分割を分割として生成される領域コードを同じ
くする領域群の数がcより多くならないようにする。ま
た、n項の元分割を分割として生成される領域コードを
同じくする領域群の元分割にn+1項目を追加して(n
+2項目以降はすべて1として)、それに対応する領域
コードによってそれらの領域群を並べ替える手順は、第
1実施形態のインデクス生成手段におけるステップ
(3)〜(6)と同様である。
【0244】(4)(1)の結果、元分割に表示された
項数nよりも小さい“k”について、項数kまでの領域
コードは一致するが、項数k+1の領域コードは一致し
ない領域群のうち、最大の“k”を持つものが決定され
た場合((2)以外の場合は、すべてkが決定でき
る)、二分探索によって決定された位置に、新たな座標
と上記領域群の元分割のk項までを元分割として組合せ
た領域群を追加する。
【0245】さらに、その領域群を含む、項数kまでの
領域コードが一致する領域群の元分割を一旦項数kまで
短縮したうえで、それらの領域群に関して、第1実施形
態のインデクス生成手段と同様の手順でk+1項以降の
元分割を追加する。
【0246】その際、伸長した元分割を分割とする領域
コードが一致する領域群の数が、所定数c以下になった
ら元分割の追加を停止する。すなわち、第1実施形態の
インデクス生成手段のステップ(7−3)における条
件、p<qをq−p+1≦c(q−p<c)に変更した
手順を用いる。
【0247】[インデクスからの座標の削除] (1)指定した座標の削除は、対応する領域群を表すノ
ードをインデクスの二分探索木から削除すればよい。 (2)削除後のインデクスにおいて、その領域群の元分
割を分割としてその座標から生成した領域コードを、同
じく元分割を分割とする領域コードとする領域群の数
が、一定数dより小さければ、それらの元分割の末尾の
1項を削除して、以降の項がすべて“1”だとした場合
の領域コードに基づいて、それらの領域群を並べ替え
る。
【0248】このように、追加のステップ(2)に該当
する場合、及び削除のステップ(2)に該当しない場合
は、二分探索木への単なる追加、削除以外の手間は発生
しないので、インデクスの変更はきわめて効率的であ
る。一方、インデクスは元分割の項数より少ない項数m
に関しては、「項数mの領域が一致する領域群が複数存
在するとき、それらの項数m+1の共有領域は一致し、
かつ、それらの項数m+1の領域には少なくとも2つ以
上の異なる領域がある」という条件が満たされるので、
探索が効率的に実行できる。
【0249】[7.第5実施形態]第5実施形態は、第
1実施形態と同じインデクスを用いて、より効率的な最
近座標探索手段を提供するものである。すなわち、第1
実施形態の最近座標探索手段においては、領域を記憶す
るのに単なるスタックを使用していた。これに対して、
本実施形態では、このスタックに代えて、各領域に指定
座標との距離を付与し、この距離が最小のものが根とな
るように構成されたヒープ(整列二分木)を用いる。な
お、ヒープ(整列二分木)については、Aho, Hopcroft,
Ullman " The Design and Analysis of Computer Algo
rithms " (Addison Wesley, 1974) pp87-92.に詳述され
ている。
【0250】すなわち、指定座標との距離をキーとする
「領域ヒープ」を使用した最近座標探索手段は、次のよ
うなステップから成っている。 (1)インデクスの任意のデータ(例えば、0番地)を
最近座標候補“p”とし、指定座標との距離を“r”と
する。 (2)領域ヒープを初期化する。 (3)0番地を項数0と組み合わせて[0,0]を処理
対象とする。共有領域[0,1]が計算できる場合(元
分割の項が1個以上)、共有領域[0,1]を指定座標
との距離Rをキーとして領域ヒープに追加する。 (4)領域ヒープが空なら終了。空でなければ先頭要素
及びその指定座標との距離を、処理対象[a,m]及び
Rとして取り出し、領域ヒープから削除する。 (5)共有領域[a,m]と指定座標との距離Rがr以
上の場合は終了する。一方、r未満の場合、共有領域
[a,m]の各座標の末尾に、桁数字0、1をそれぞれ
追加して生成される2の2乗=4つの領域のそれぞれに
ついて、次の(6)を行う。 (6)その領域を項数mの領域とする領域群がインデク
ス中に存在する場合に限り、その1つの番地をbとし
て、次の条件付きステップのいずれかを行なう。 (6−1)共有領域[b,m+1]が計算できない場合
(元分割の項がm個)、b番地の座標と指定座標との距
離がr未満であれば、bを新たな“p”とし、その距離
を新たな“r”とする。このとき、さらにr=0なら処
理を終了する。 (6−2)共有領域[b,m+1]が指定座標から距離
r以内(未満)の範囲に含まれている場合、bを新たな
“p”とし、b番地の座標と指定座標との距離を新たな
“r”とする。さらに、共有領域[b,m+1]を指定
座標との距離Rをキーとして領域ヒープに追加する。 (6−3)共有領域[b,m+1]が指定座標から距離
r以内(未満)の範囲に含まれてはいないが、指定座標
との距離はr未満である場合、共有領域[b,m+1]
を指定座標との距離Rをキーとして領域ヒープに追加す
る。 (6−4)共有領域[b,m+1]と指定座標との距離
がr以上である場合は、その領域に関して行うべき処理
はない。 (7)(4)へ戻る。
【0251】本実施形態における最近座標探索手段と第
1実施形態における最近座標探索手段との主な違いは、
上記ステップ(5)に特徴的に現われている。すなわ
ち、第1実施形態の最近座標探索手段で用いられた領域
スタックにおいては、第1実施形態のステップ(4)
(5)において取り出したスタックの先頭の領域が指定
座標からr以遠にあったとしても、スタックの残りの領
域がすべてr以遠であるとは必ずしもいえない。したが
って、スタックの残りの領域をすべて取り出してチェッ
クする必要があった。
【0252】これに対して、本実施形態の最近座標探索
手段においては、ヒープの根となった領域は、指定座標
との距離がヒープ中の領域のうちで最小であることが保
証されているから、この距離がr以上であれば、これら
すべての領域に含まれる座標を調べてもrより近いもの
は見い出されない。したがって、ステップ(5)の判定
によって、「共有領域[a,m]と指定座標との距離R
がr以上である」と判定された場合には、その時点で探
索処理を終了してよい。
【0253】このように、本実施形態の最近座標探索手
段によれば、第1実施形態の最近座標探索手段と比較し
ても、さらに効率的に最近座標を決定することができ
る。
【0254】なお、本実施形態で用いたヒープの代り
に、領域を指定座標との距離をキーとして格納し、指定
座標との距離が最小の領域を決定・削除できるデータ構
造であれば何を用いてもよい。そのような機能を提供す
るデータ構造は、priority queueを実現するデータ構造
として多数知られている。このpriority queueについて
はJones, D.W. An Empirical Comparison of Priority-
Queue and Event-Set Implementations. Commun. ACM 2
9, 4 (April 1986), 300-311. に詳述されている。
【0255】なお、第3実施形態の最近座標探索手段に
おいても、同様に、領域スタックの代わりに指定座標と
の距離をキーとする領域ヒープを用いて、共有領域を追
加する際に指定座標との距離をキーとして追加し、ステ
ップ(4)において、ヒープ中で指定座標との距離が最
小の領域を処理対象として取り出し、ステップ(5)に
おいて、その距離がr以上と判定された場合には、即座
に探索を終了してよい。
【0256】このように、まだ処理を要するかもしれな
い領域を、指定座標との距離をキーとしてpriority que
ueに格納することによって、処理が不要な多数の領域に
対して、「処理が不要である」という判断を一括して行
うことができるので、それらに対する処理を効率的に省
略でき、探索時間を大幅に短縮することができる。
【0257】[8.第6実施形態]第6実施形態は、本
発明を浮動小数点表示の座標に適用したものである。
【0258】[8−1.インデクスの構成]本実施形態
におけるインデクスとしては、探索対象である各座標デ
ータを、指数部3ビット、仮数部5ビットの浮動小数点
(指数部“000”の場合のみ、非正規表現を許す)で
表した座標データを、後述する指数部領域コード及び仮
数部領域コードの辞書順(昇順)に並べたものを用い
る。
【0259】すなわち、本実施形態においては、図55
の(T−116)に示したように、指数部3ビット、仮
数部5ビットの浮動小数点で表された各座標データにつ
いて、まず、指数部の桁数字(ビット)列に関する元分
割及び指数部領域コードを計算し、次に、仮数部に関す
る元分割及び仮数部領域コードを計算する。そして、指
数部領域コードを第1キーとし、仮数部領域コードを第
2キーとして、第1キー及び第2キーをこの順に比較
し、第1キーが等しい場合のみ、第2キーを比較するこ
とによって座標データの大小を決定し、各座標データを
その順にソートしたものをインデクスとする。
【0260】なお、図55の(T−116)に示した座
標データは、第2実施形態で用いた図50の(T−10
9)に示した座標データa〜jを、上位3ビットの指数
部、下位5ビットの仮数部からなる8ビットで表したも
のである。また、本実施形態においては、指数部及び仮
数部の元分割及び領域コードとして、元分割の各項をす
べて“1”とし、元分割の項数も省略したものを使用す
る。但し、(T−116)に示したインデクスにおいて
は、参考のために、元分割の項数を()で示した。ま
た、指数部の座標は同一のものが複数存在するが、その
場合の指数部領域コードは座標桁数字をすべて使用し、
元分割の項数は各座標の桁数とする。
【0261】続いて、図55の(T−116)に示した
インデクスについて、より詳細に説明する。すなわち、
図50の(T−109)に示した座標データaは、x座
標が“000000010001”、y座標が“000001100000”であ
り、これを上位3ビットの指数部、下位5ビットの仮数
部からなる8ビットで表すと、x座標の指数部が “00
0 ”、仮数部が“10001 ”、y座標の指数部が“010
”、仮数部が“11000 ”となる。 また、本実施形態
においては、元分割の各項はすべて“1”とされている
ので、指数部領域コードは、x座標の指数部及びy座標
の指数部から1桁ずつとって連接することによって得ら
れ、本例においては“000100”となる。一方、仮数部領
域コードは、x座標の仮数部及びy座標の仮数部から1
桁ずつとって連接することによって得られ、本例におい
ては“1101000010”となる。同様にして、図50の(T
−109)に示した座標データb〜jについて、指数部
領域コード及び仮数部領域コードを求めると、図55の
(T−116)のようになる。
【0262】この場合、座標データa〜cについては、
第1キーである指数部領域コードはいずれも“000100”
で、互いに等しいので、第2キーである仮数部領域コー
ドを比較し、a→b→cの順に並ぶと決定される。ま
た、座標データd〜fについても、第1キーである指数
部領域コードはいずれも“000110”で、互いに等しいの
で、第2キーである仮数部領域コードを比較し、d→e
→fの順に並ぶと決定される。
【0263】次に、座標データg〜iについてみると、
第1キーである指数部領域コードはいずれも“100100”
で、互いに等しいので、第2キーである仮数部領域コー
ドを比較し、g→h→iの順に並ぶと決定される。とこ
ろが、座標データjの指数部領域コードは“100000”と
なり、座標データg〜iの指数部領域コード“100100”
より小さいので、座標データjは、座標データg〜iよ
り前に並ぶことになる。
【0264】なお、図55の(T−116)において、
参考のために示した元分割の項数は、本実施形態におい
て、浮動小数点表示された座標データを辞書順に並べる
ために参照する元分割の項数を示したものである。例え
ば、座標データa〜cについては、指数部領域コードは
互いに等しいので、その元分割の項数は各座標の桁数で
ある“3”となる。また、第2キーである仮数部領域コ
ードを比較すると、座標データaと座標データbとは7
桁目で異なっているので、元分割の項数は“4”とな
る。したがって、座標データa及び座標データbについ
ては、参照する元分割の項数の和はそれぞれ“7”とな
る。
【0265】これに対して、座標データcについては、
指数部領域コードは座標データa、bと等しいので、そ
の元分割の項数は“3”となるが、仮数部領域コードを
比較すると、座標データbと座標データcとは3桁目で
異なっているので、元分割の項数は“2”となる。した
がって、座標データcについては、参照する元分割の項
数の和は“5”となる。
【0266】さらに、座標データjについてみると、そ
の指数部領域コードは他の座標データの指数部領域コー
ドと異なっており、座標データg〜iと比較すると、4
桁目で異なっているので、その元分割の項数は“2”と
なる。また、座標データjの場合、仮数部領域コードを
比較する必要はないので、参照する元分割の項数の和は
“2”となる。
【0267】このように、本実施形態のインデクスを用
いた場合、元分割の項数は、図50の(T−109)に
示した元分割の項数より小さくなるので、領域コード
(指数部領域コード+仮数部領域コード)の桁数を低減
することができ、インデクスの生成や探索の効率が大幅
に向上する。
【0268】なお、図55の(T−116)に示したイ
ンデクスに用いられている領域コードは、座標コードの
表現方法の違いを反映して、図50の(T−109)に
示したインデクスに用いられている領域コードとは異な
る。それゆえ、同じ座標データa〜jの並び順に一部異
なるところがあるが、この違いはインデクスの生成や探
索の手続の構成にはなんら影響しない。この点につい
て、さらに詳しく説明する。
【0269】[8−2.浮動小数点表示された座標デー
タとその座標データが示す範囲]浮動小数点表示された
座標データは、その指数部nのコードが、 n=000の場合、0以上25 未満 n≠000の場合、2n ×25 以上2n+1 ×25 未満 の区間(範囲)に対応づけることができる。すなわち、
仮数部のコードがどのようなものであっても、その座標
値は上記nに対応づけられた区間に含まれているる。
【0270】それゆえ、元分割の項数が“3”の指数部
領域コードは、図56又は図57に示した格子(マス
目)の1つに対応づけられる。例えば、図55の(T−
116)に示したインデクス中の座標データgの指数部
領域コード“100100”は、x座標が“100”、y座標
が“010”であるので、図56又は図57の“100
100”の格子に対応づけられる。また、指数部領域コ
ード“1000”は、x座標が“10”、y座標が“00”
であるので、これに対応する領域は、図56又は図57
の斜線部で示した4つの格子からなる。
【0271】このように、指数部のみを座標(の上位
桁)とみたてた場合、単に座標軸のスケールが対数にな
ったのと同じである。但し、非正規表現を許すn=00
0の扱いが例外的になる。したがって、上記第1実施形
態〜第5実施形態における座標データの取扱いを、すべ
て座標データの指数部に適用することができる。
【0272】また、上述したように、指数部領域コード
“1000”に対応する領域は、図56又は図57の斜線部
で示した4つの格子からなるが、これは、各座標軸のス
ケールが異なるだけで、座標コードの順序及び領域の配
置は、同じ座標コードを3桁(ビット)固定小数点表示
の2進整数と解釈した場合、図58となんら変わらな
い。
【0273】さらに、仮数部は、上記指数部が表す区間
を、25 =32等分した区間の始点(左端)を表すか
ら、各座標の指数部を上位桁とし、仮数部を下位桁とす
る8桁(ビット)の座標コードとし、指数部領域コード
の末尾に、もしあれば、仮数部領域コードを連接して領
域コードとした場合、座標コードの順序及び領域コード
に対応する領域の配置は、同じ座標コードを8桁(ビッ
ト)の固定小数点表示の整数と解釈した場合となんら変
わらない。
【0274】したがって、本発明を浮動小数点表示の座
標に適用した本実施形態においても、上記第2実施形態
と同様に、インデクス生成手段、範囲探索手段、最近座
標探索手段を構成することができる。第2実施形態との
相違は、最近座標探索手段において、座標コードから距
離を計算する手続であるが、これは、最近座標探索手段
の構成(第1実施形態[3−1−4]のステップ(1)
〜(7))には、なんら影響しない。もちろん、最近座
標探索手段として、上記第5実施形態のステップ(1)
〜(7)を用いても良い。
【0275】[8−3.浮動小数点表示を座標コードと
して使用する効果]一般に浮動小数点表示を使用するこ
との利点は、少ない桁数で広い範囲の値を表し得ること
であるが、本実施形態においても、上記の各実施形態で
各座標を12ビットの固定小数点表示していたのに対し
て、座標データを表すのに必要な桁数は8ビットに減少
している。
【0276】また、本実施形態に固有の効果は、単に浮
動小数点表示したことによって座標データの桁数が減少
しただけではなく、領域コード(指数部領域コード+仮
数部領域コード)の桁数が減少し、インデクスの生成や
探索の効率が向上することにある。説明に用いた座標デ
ータについて見ると、a〜jのすべてのデータにおい
て、領域コードの長さ(元分割の項数)が減少してい
る。
【0277】[9.他の実施形態]本発明は、浮動小数
点表示のみならず、次の条件を満たす座標コードであれ
ば、いかなる座標コードにも適用することができる。す
なわち、座標コードの辞書順と、その座標コードが表す
値のソート順(座標軸上での並び順)が一致しているこ
とが必要である。なお、上記第1実施形態〜第5実施形
態に示した固定小数点表示や、第6実施形態に示した浮
動小数点表示は、この条件を満たす座標コードの例であ
る。
【0278】したがって、第6実施形態に示した浮動小
数点表示の座標において、指数部がさらに浮動小数点表
示されているものや、仮数部の先頭の1を除く部分がさ
らに浮動小数点表示されているものも同様に扱うことが
できる。但し、この場合も、第6実施形態で述べたよう
に、座標(領域)コードから距離を計算する手続は、適
宜変更する必要がある。
【0279】また、負数の扱いに関しては、座標コード
の辞書順の定義及び比較手続を負数の表現方法に合わせ
て修正するか、正数に変換した後の座標コードによって
インデクスを生成する等によって、本発明を適用するこ
とができる。さらに、上記条件が満たされていれば、扱
う座標コードが表す値の組が直交座標系でなくてもかま
わない。例えば、極座標系に対しても、(1)指定範囲
と領域の包含関係及び共通部分の有無を判定する手続、
(2)座標コード及び領域コードから距離を計算する手
続、を変更すれば、上記各実施形態のインデクス構成、
インデクス生成手段、インデクス変更手段、範囲探索手
段、最近座標探索手段を適用することができる。
【0280】
【発明の効果】以上述べた様に、本発明によれば、デー
タ領域の削減が可能で、しかも矩形探索及び最近傍図形
探索の高速化を可能としたデータ管理装置及びデータ管
理方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態の構成を表す機能ブロッ
ク図
【図2】本発明のインデクスにおける領域群の格納形式
を示す図
【図3】第1実施形態における「項数2の共有領域」と
「項数2の領域」を示す図
【図4】第1実施形態のインデクス生成手段における処
理の流れの前半部を示すフローチャート
【図5】第1実施形態のインデクス生成手段における処
理の流れの後半部を示すフローチャート
【図6】第1実施形態の範囲探索手段における処理の流
れの前半部を示すフローチャート
【図7】第1実施形態の範囲探索手段における処理の流
れの後半部を示すフローチャート
【図8】第1実施形態の最近座標探索手段における処理
の流れの前半部を示すフローチャート
【図9】第1実施形態の最近座標探索手段における処理
の流れの後半部を示すフローチャート
【図10】本発明の第2実施形態の構成を表す機能ブロ
ック図
【図11】第2実施形態において、1組の領域群を格納
するためのノード領域の構成を示す図
【図12】第2実施形態におけるインデクスを二分探索
木として構成した一例を示す図
【図13】quad−tree法によるデータ管理方法
の一例を示す図であって、(A)は、全範囲中の分割さ
れた各範囲を示す図、(B)は、(A)に示した各範囲
を木構造のノードに対応付けた図
【図14】(T−1)〜(T−4)を示す図
【図15】(T−5)〜(T−7)を示す図
【図16】(T−8)〜(T−10)を示す図
【図17】(T−11)〜(T−15)を示す図
【図18】(T−16)〜(T−17)を示す図
【図19】(T−18)〜(T−20)を示す図
【図20】(T−21)〜(T−24)を示す図
【図21】(T−25)〜(T−29)を示す図
【図22】(T−30)を示す図
【図23】(T−31)を示す図
【図24】(T−32)を示す図
【図25】(T−33)〜(T−34)を示す図
【図26】(T−35)を示す図
【図27】(T−36)〜(T−37)を示す図
【図28】(T−38)を示す図
【図29】(T−39)〜(T−40)を示す図
【図30】(T−41)を示す図
【図31】(T−42)〜(T−43)を示す図
【図32】(T−44)を示す図
【図33】(T−45)〜(T−47)を示す図
【図34】(T−48)〜(T−53)を示す図
【図35】(T−54)〜(T−57)を示す図
【図36】(T−58)〜(T−62)を示す図
【図37】(T−63)〜(T−67)を示す図
【図38】(T−68)〜(T−72)を示す図
【図39】(T−73)〜(T−77)を示す図
【図40】(T−78)〜(T−82)を示す図
【図41】(T−83)〜(T−87)を示す図
【図42】(T−88)〜(T−92)を示す図
【図43】(T−93)〜(T−96)を示す図
【図44】(T−97)〜(T−100)を示す図
【図45】(T−101)〜(T−104)を示す図
【図46】(T−105)を示す図
【図47】(T−106)を示す図
【図48】(T−107)を示す図
【図49】(T−108)を示す図
【図50】(T−109)〜(T−110)を示す図
【図51】(T−111)〜(T−112)を示す図
【図52】(T−113)を示す図
【図53】(T−114)を示す図
【図54】(T−115)を示す図
【図55】(T−116)を示す図
【図56】第6実施形態のインデクス中のある指数部領
域コードに対応する範囲を示す図
【図57】第6実施形態のインデクス中のある指数部領
域コードに対応する範囲を示す図
【図58】図56又は図57に示した範囲を、3桁の固
定小数点表示の2進整数と解釈した場合を示す図
【符号の説明】
1…座標データ 2…インデクス 3…インデクス生成手段 4…範囲探索手段 5…最近座標探索手段 10…インデクス変更手段

Claims (35)

    【特許請求の範囲】
  1. 【請求項1】 n次元の座標データを格納したインデク
    スと、 このインデクス中の座標データを探索する探索手段を備
    え、 前記インデクスの各座標データは、各次元の座標を前方
    から特定の長さ分を取り、これを一定の次元順に連接し
    て成る領域コードの辞書順にソートされていることを特
    徴とするデータ管理装置。
  2. 【請求項2】 前記インデクスを生成するインデクス生
    成手段を備え、 前記インデクス生成手段は、前記インデクスに含まれる
    座標のうち、ある前方列が一致しているものを相続くよ
    うに並べた上で、それらの前方列がさらにどこまで一致
    するかを決定し、(新たに一致した長さ+1)の値に基
    づいて領域コードを生成し、この領域コードの辞書順に
    ソートすることにより、前記インデクスを生成すること
    を特徴とする請求項1に記載のデータ管理装置。
  3. 【請求項3】 前記インデクスへの座標の追加及び削除
    を行うインデクス変更手段を備え、 前記インデクス変更手段は、前記領域コードに基づいて
    インデクスを二分探索し、領域コードによるソート順に
    矛盾しない位置に新たな座標を挿入することにより、前
    記インデクスに座標を追加することを特徴とする請求項
    1に記載のデータ管理装置。
  4. 【請求項4】 前記探索手段が、指定された範囲に含ま
    れる座標を探索する範囲探索手段である請求項1乃至請
    求項3のいずれか一に記載のデータ管理装置。
  5. 【請求項5】 前記探索手段が、指定された座標に最も
    近い座標を探索する最近座標探索手段である請求項1乃
    至請求項3のいずれか一に記載のデータ管理装置。
  6. 【請求項6】 前記インデクスが、各次元の座標の前方
    列が指定され、それらを前方列とする座標がインデクス
    中に存在する場合には、それらのうちの少なくとも一つ
    を決定する機能を備えていることを特徴とする請求項1
    乃至請求項5のいずれか一に記載のデータ管理装置。
  7. 【請求項7】 前記インデクスが、各次元の座標の前方
    列が指定され、それらを前方列とする座標がインデクス
    中に存在する場合には、それらをすべて列挙する機能を
    備えていることを特徴とする請求項1乃至請求項5のい
    ずれか一に記載のデータ管理装置。
  8. 【請求項8】 前記インデクスが、各次元の座標の前方
    列が指定され、それらを前方列とする座標がインデクス
    中に存在する場合には、それらの数を計数する機能を備
    えていることを特徴とする請求項1乃至請求項5のいず
    れか一に記載のデータ管理装置。
  9. 【請求項9】 前記インデクスに座標を格納する際、座
    標または領域コードと、座標から領域コードを生成しあ
    るいは領域コードから座標を復元するための元分割とを
    格納することを特徴とする請求項1乃至請求項5のいず
    れか一に記載のデータ管理装置。
  10. 【請求項10】 前記範囲探索手段が、インデクス中の
    ある座標の前方列を前方列とする座標が、すべて指定範
    囲に含まれている場合に、インデクス中でそれを前方列
    とする座標は、一括して指定範囲に含まれていると判定
    することを特徴とする請求項4に記載のデータ管理装
    置。
  11. 【請求項11】 前記範囲探索手段が、インデクス中の
    ある座標の前方列を前方列とする座標で、指定範囲に含
    まれるものがあり得る場合に、インデクス中でそれを前
    方列とする座標の数が所定の数以下ならば、それらすべ
    ての座標について指定範囲に含まれているか否かの判定
    を実行することを特徴とする請求項4に記載のデータ管
    理装置。
  12. 【請求項12】 前記最近座標探索手段が、インデクス
    中のある座標の前方列を前方列とする座標が、すべて指
    定座標から最近座標候補との距離以内にある場合に、イ
    ンデクス中でそれを前方列とする座標のいずれか一つを
    新たな最近座標候補とすることを特徴とする請求項5に
    記載のデータ管理装置。
  13. 【請求項13】 前記最近座標探索手段が、インデクス
    中のある座標の前方列を前方列とする座標で、指定座標
    から最近座標候補との距離以内のものがあり得る場合
    に、インデクス中でそれを前方列とする座標の数が所定
    の数以下ならば、それらすべての座標について新たな最
    近座標候補になり得るか否かを判定し、判定の結果、よ
    り指定座標に近い座標があれば、最も近いものを新たな
    最近座標候補とすることを特徴とする請求項5に記載の
    データ管理装置。
  14. 【請求項14】 前記最近座標探索手段が、インデクス
    中の座標の前方列を最近座標候補を探索すべき領域を表
    すものとしてスタックに格納しておき、スタックから取
    り出した前方列に関して、それを前方列とする座標で、
    指定座標から最近座標候補との距離より近いものがあり
    得ない場合には、それらを探索の対象としないことを特
    徴とする請求項5に記載のデータ管理装置。
  15. 【請求項15】 前記最近座標探索手段が、インデクス
    中の座標の前方列を最近座標候補を探索すべき領域を表
    すものとして、それを前方列とする座標で指定座標から
    最も近い座標との距離と共に格納しておき、その距離が
    最小の前方列を最近座標候補を探索すべき対象として選
    択し、その距離が指定座標と最近座標候補との距離以上
    の場合には探索を終了することを特徴とする請求項5に
    記載のデータ管理装置。
  16. 【請求項16】 インデクスに格納されたn次元の座標
    データを探索する探索処理を含み、 前記インデクスの各座標データは、各次元の座標を前方
    から特定の長さ分を取り、これを一定の次元順に連接し
    て成る領域コードの辞書順にソートされていることを特
    徴とするデータ管理方法。
  17. 【請求項17】 前記インデクスを生成するインデクス
    生成処理を含み、 前記インデクス生成処理が、前記インデクスに含まれる
    座標のうち、ある前方列が一致しているものを相続くよ
    うに並べた上で、それらの前方列がさらにどこまで一致
    するかを決定し、(新たに一致した長さ+1)の値に基
    づいて領域コードを生成し、この領域コードの辞書順に
    ソートすることにより、前記インデクスを生成すること
    を特徴とする請求項16に記載のデータ管理方法。
  18. 【請求項18】 前記インデクスへの座標の追加及び削
    除を行うインデクス変更処理を含み、 前記インデクス変更処理が、前記領域コードに基づいて
    インデクスを二分探索し、領域コードによるソート順に
    矛盾しない位置に新たな座標を挿入することにより、前
    記インデクスに座標を追加することを特徴とする請求項
    16に記載のデータ管理方法。
  19. 【請求項19】 前記探索処理が、指定された範囲に含
    まれる座標を探索する範囲探索処理である請求項16乃
    至請求項18のいずれか一に記載のデータ管理方法。
  20. 【請求項20】 前記探索処理が、指定された座標に最
    も近い座標を探索する最近座標探索処理である請求項1
    6乃至請求項18のいずれか一に記載のデータ管理方
    法。
  21. 【請求項21】 前記インデクスが、各次元の座標の前
    方列が指定され、それらを前方列とする座標がインデク
    ス中に存在する場合には、それらのうちの少なくとも一
    つを決定する機能を備えていることを特徴とする請求項
    16乃至請求項20のいずれか一に記載のデータ管理方
    法。
  22. 【請求項22】 前記インデクスが、各次元の座標の前
    方列が指定され、それらを前方列とする座標がインデク
    ス中に存在する場合には、それらをすべて列挙する機能
    を備えていることを特徴とする請求項16乃至請求項2
    0のいずれか一に記載のデータ管理方法。
  23. 【請求項23】 前記インデクスが、各次元の座標の前
    方列が指定され、それらを前方列とする座標がインデク
    ス中に存在する場合には、それらの数を計数する機能を
    備えていることを特徴とする請求項16乃至請求項20
    のいずれか一に記載のデータ管理方法。
  24. 【請求項24】 前記インデクスに座標を格納する際、
    座標または領域コードと、座標から領域コードを生成し
    あるいは領域コードから座標を復元するための元分割と
    を格納することを特徴とする請求項16乃至請求項20
    のいずれか一に記載のデータ管理方法。
  25. 【請求項25】 前記範囲探索処理が、インデクス中の
    ある座標の前方列を前方列とする座標が、すべて指定範
    囲に含まれている場合に、インデクス中でそれを前方列
    とする座標は、一括して指定範囲に含まれていると判定
    することを特徴とする請求項19に記載のデータ管理方
    法。
  26. 【請求項26】 前記範囲探索処理が、インデクス中の
    ある座標の前方列を前方列とする座標で、指定範囲に含
    まれるものがあり得る場合に、インデクス中でそれを前
    方列とする座標の数が所定の数以下ならば、それらすべ
    ての座標について指定範囲に含まれているか否かの判定
    を実行することを特徴とする請求項19に記載のデータ
    管理方法。
  27. 【請求項27】 前記最近座標探索処理が、インデクス
    中のある座標の前方列を前方列とする座標が、すべて指
    定座標から最近座標候補との距離以内にある場合に、イ
    ンデクス中でそれを前方列とする座標のいずれか一つを
    新たな最近座標候補とすることを特徴とする請求項20
    に記載のデータ管理方法。
  28. 【請求項28】 前記最近座標探索処理が、インデクス
    中のある座標の前方列を前方列とする座標で、指定座標
    から最近座標候補との距離以内のものがあり得る場合
    に、インデクス中でそれを前方列とする座標の数が所定
    の数以下ならば、それらすべての座標について新たな最
    近座標候補になり得るか否かを判定し、判定の結果、よ
    り指定座標に近い座標があれば、最も近いものを新たな
    最近座標候補とすることを特徴とする請求項20に記載
    のデータ管理方法。
  29. 【請求項29】 前記最近座標探索処理が、インデクス
    中の座標の前方列を最近座標候補を探索すべき領域を表
    すものとしてスタックに格納しておき、スタックから取
    り出した前方列に関して、それを前方列とする座標で、
    指定座標から最近座標候補との距離より近いものがあり
    得ない場合には、それらを探索の対象としないことを特
    徴とする請求項20に記載のデータ管理方法。
  30. 【請求項30】 前記最近座標探索処理が、インデクス
    中の座標の前方列を最近座標候補を探索すべき領域を表
    すものとして、それを前方列とする座標で指定座標から
    最も近い座標との距離と共に格納しておき、その距離が
    最小の前方列を最近座標候補を探索すべき対象として選
    択し、その距離が指定座標と最近座標候補との距離以上
    の場合には探索を終了することを特徴とする請求項20
    に記載のデータ管理方法。
  31. 【請求項31】 インデクスに格納されたn次元の座標
    データを管理するデータ管理プログラムを記録した媒体
    であって、 前記プログラムは、 各次元の座標を前方から特定の長さ分を取り、これを一
    定の次元順に連接して成る領域コードの辞書順にソート
    されたn次元の座標データを探索する探索処理を含むこ
    とを特徴とするデータ管理プログラムを記録した媒体。
  32. 【請求項32】 前記プログラムは、 前記インデクスに含まれる座標のうち、ある前方列が一
    致しているものを相続くように並べた上で、それらの前
    方列がさらにどこまで一致するかを決定し、(新たに一
    致した長さ+1)の値に基づいて領域コードを生成し、
    この領域コードの辞書順にソートすることにより、前記
    インデクスを生成するインデクス生成処理を含むことを
    特徴とする請求項31に記載のデータ管理プログラムを
    記録した媒体。
  33. 【請求項33】 前記プログラムは、 前記領域コードに基づいてインデクスを二分探索し、領
    域コードによるソート順に矛盾しない位置に新たな座標
    を挿入することにより、前記インデクスに座標を追加す
    るインデクス変更処理を含むことを特徴とする請求項3
    1に記載のデータ管理プログラムを記録した媒体。
  34. 【請求項34】 前記プログラムに含まれる探索処理
    が、指定された範囲に含まれる座標を探索する範囲探索
    処理である請求項31乃至請求項33のいずれか一に記
    載のデータ管理プログラムを記録した媒体。
  35. 【請求項35】 前記プログラムに含まれる探索処理
    が、指定された座標に最も近い座標を探索する最近座標
    探索処理である請求項31乃至請求項33のいずれか一
    に記載のデータ管理プログラムを記録した媒体。
JP02901699A 1998-03-13 1999-02-05 データ管理装置 Expired - Fee Related JP3607107B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP02901699A JP3607107B2 (ja) 1998-03-13 1999-02-05 データ管理装置
DE69939289T DE69939289D1 (de) 1998-03-13 1999-03-12 System und Verfahren zur Datenverwaltung
US09/267,165 US6687688B1 (en) 1998-03-13 1999-03-12 System and method for data management
EP99104003A EP0942381B1 (en) 1998-03-13 1999-03-12 System and method for data management

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP10-63701 1998-03-13
JP6370198 1998-03-13
JP02901699A JP3607107B2 (ja) 1998-03-13 1999-02-05 データ管理装置

Publications (2)

Publication Number Publication Date
JPH11328225A true JPH11328225A (ja) 1999-11-30
JP3607107B2 JP3607107B2 (ja) 2005-01-05

Family

ID=26367163

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02901699A Expired - Fee Related JP3607107B2 (ja) 1998-03-13 1999-02-05 データ管理装置

Country Status (4)

Country Link
US (1) US6687688B1 (ja)
EP (1) EP0942381B1 (ja)
JP (1) JP3607107B2 (ja)
DE (1) DE69939289D1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006059629A1 (ja) * 2004-11-30 2006-06-08 Hewlett-Packard Development Company, L.P. エリア情報の管理装置・方法・プログラム
JP2009134717A (ja) * 2007-11-30 2009-06-18 Palo Alto Research Center Inc 座標データ構造におけるデータの格納またはアクセス方法、及びその方法を用いて印刷ジョブに関する解の識別を実行するシステム
JP2010160591A (ja) * 2009-01-07 2010-07-22 Hitachi Ltd 空間データ管理装置、空間データ管理方法、および、空間データ管理プログラム
WO2013018683A1 (ja) 2011-07-29 2013-02-07 日本電気株式会社 情報漏えいに耐性を持つインデックス生成システム及びインデックス生成装置並びにその方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721759B1 (en) * 1998-12-24 2004-04-13 Sony Corporation Techniques for spatial representation of data and browsing based on similarity
US7197498B2 (en) * 2003-06-30 2007-03-27 Intel Corporation Apparatus, system and method for updating a sorted list
US7653643B2 (en) * 2005-03-24 2010-01-26 Microsoft Corporation Method and apparatus for compressing a data set
US7293022B2 (en) * 2005-04-14 2007-11-06 International Business Machines Corporation List update employing neutral sort keys
WO2008085989A1 (en) * 2007-01-10 2008-07-17 Richard Garfinkle A software method for data storage and retrieval
US20090150355A1 (en) * 2007-11-28 2009-06-11 Norton Garfinkle Software method for data storage and retrieval
WO2010075309A2 (en) * 2008-12-23 2010-07-01 Zhijing George Mou Method and system for multi-dimensional and geographic search
US20100185672A1 (en) * 2009-01-21 2010-07-22 Rising Iii Hawley K Techniques for spatial representation of data and browsing based on similarity
EP2954439A4 (en) 2013-02-08 2016-12-07 Eko Futura Näringslivsutveckling Ab METHOD AND DEVICE FOR PROCESSING DATA CONTAINERS
US10049164B2 (en) * 2013-07-12 2018-08-14 Nec Corporation Multidimensional-range search apparatus and multidimensional-range search method
US10002146B1 (en) 2017-02-13 2018-06-19 Sas Institute Inc. Distributed data set indexing
JP6550448B2 (ja) * 2017-12-18 2019-07-24 ヤフー株式会社 データ管理装置、データ管理方法、およびプログラム
CN108182242A (zh) * 2017-12-28 2018-06-19 湖南大学 一种用于海量多维数值数据范围查询的索引方法
CN111241090B (zh) * 2019-12-23 2023-11-10 华为技术有限公司 存储系统中管理数据索引的方法和装置
CN111796798B (zh) * 2020-09-08 2020-12-22 腾讯科技(深圳)有限公司 一种定点与浮点转换器、处理器、方法以及存储介质
CN115169276B (zh) * 2022-07-22 2023-04-07 北京云枢创新软件技术有限公司 一种基于叠放模块的引脚区域匹配方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62145369A (ja) * 1985-12-20 1987-06-29 Hitachi Ltd 図形デ−タの検索方法
JPS62226225A (ja) * 1986-03-27 1987-10-05 Nec Corp 関係認定装置
JPS63157279A (ja) * 1986-12-22 1988-06-30 Ricoh Co Ltd パタ−ン情報の処理方式および演繹方式
JPS63221486A (ja) * 1987-03-11 1988-09-14 Toshiba Corp 図形の接合装置
US4944023A (en) * 1987-05-19 1990-07-24 Ricoh Company, Ltd. Method of describing image information
US5202986A (en) * 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
US5345516A (en) * 1991-04-19 1994-09-06 International Business Machines Corporation Apparatus and method for parsing a chemical string
US5953006A (en) * 1992-03-18 1999-09-14 Lucent Technologies Inc. Methods and apparatus for detecting and displaying similarities in large data sets
US5836003A (en) * 1993-08-26 1998-11-10 Visnet Ltd. Methods and means for image and voice compression
JP3433803B2 (ja) * 1993-07-07 2003-08-04 ヨーロピアン コンピューター − インダストリー リサーチ センター ゲーエムベーハー データベースの構造
US5446806A (en) * 1993-11-15 1995-08-29 National Semiconductor Corporation Quadtree-structured Walsh transform video/image coding
US5615299A (en) * 1994-06-20 1997-03-25 International Business Machines Corporation Speech recognition using dynamic features
EP0702311A1 (en) * 1994-09-14 1996-03-20 Kabushiki Kaisha Toshiba Data processing system,data retrieval system,data processing method and data retrieval method
US5551024A (en) * 1994-10-13 1996-08-27 Microsoft Corporation System for identifying data records in a database using a data structure with linked parameters in a search range
US5842004A (en) * 1995-08-04 1998-11-24 Sun Microsystems, Inc. Method and apparatus for decompression of compressed geometric three-dimensional graphics data
JP3020851B2 (ja) * 1995-10-23 2000-03-15 シャープ株式会社 情報検索装置および情報検索制御方法
US5819286A (en) * 1995-12-11 1998-10-06 Industrial Technology Research Institute Video database indexing and query method and system
JP3598183B2 (ja) * 1996-10-16 2004-12-08 株式会社東芝 多次元データ管理方法、多次元データ管理装置、多次元データ管理プログラムを記録した媒体
US5852822A (en) * 1996-12-09 1998-12-22 Oracle Corporation Index-only tables with nested group keys
US5963642A (en) * 1996-12-30 1999-10-05 Goldstein; Benjamin D. Method and apparatus for secure storage of data
US6070159A (en) * 1997-12-05 2000-05-30 Authentec, Inc. Method and apparatus for expandable biometric searching

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006059629A1 (ja) * 2004-11-30 2006-06-08 Hewlett-Packard Development Company, L.P. エリア情報の管理装置・方法・プログラム
US7619913B2 (en) 2004-11-30 2009-11-17 Hewlett-Packard Development Company, L.P. Device, method and program for managing area information
JP2009134717A (ja) * 2007-11-30 2009-06-18 Palo Alto Research Center Inc 座標データ構造におけるデータの格納またはアクセス方法、及びその方法を用いて印刷ジョブに関する解の識別を実行するシステム
JP2010160591A (ja) * 2009-01-07 2010-07-22 Hitachi Ltd 空間データ管理装置、空間データ管理方法、および、空間データ管理プログラム
WO2013018683A1 (ja) 2011-07-29 2013-02-07 日本電気株式会社 情報漏えいに耐性を持つインデックス生成システム及びインデックス生成装置並びにその方法
US9690845B2 (en) 2011-07-29 2017-06-27 Nec Corporation System for generating index resistant against divulging of information, index generation device, and method therefor

Also Published As

Publication number Publication date
EP0942381A3 (en) 2004-08-18
EP0942381B1 (en) 2008-08-13
US6687688B1 (en) 2004-02-03
JP3607107B2 (ja) 2005-01-05
DE69939289D1 (de) 2008-09-25
EP0942381A2 (en) 1999-09-15

Similar Documents

Publication Publication Date Title
JP3607107B2 (ja) データ管理装置
US5737732A (en) Enhanced metatree data structure for storage indexing and retrieval of information
US7788287B2 (en) System and method for storing and accessing data in an interlocking trees datastore
US9727308B2 (en) Sorting multiple records of data using ranges of key values
JPH11212980A (ja) インデクス作成方法および検索方法
JP2006503357A (ja) オンライン分析処理(olap)のための方法およびシステム
WO2023160137A1 (zh) 图数据存储方法、系统及计算机设备
CN112395288B (zh) 基于希尔伯特曲线的r树索引合并更新方法、装置及介质
SE513248C2 (sv) Metod för hantering av datastrukturer
US20040044683A1 (en) Data compiling method
CN111666302A (zh) 用户排名的查询方法、装置、设备及存储介质
CN112214494B (zh) 检索方法及装置
JP2001092841A (ja) クラスター分析処理方法およびクラスター分析プログラムを記録した記録媒体
CN1326073C (zh) 用于建立计算机文字信息的索引和进行检索的方法和系统
JP2001022766A (ja) 多次元データベースの高速処理方法および装置
CN110941730A (zh) 基于人脸特征数据偏移的检索方法与装置
JP3019286B2 (ja) 文書検索装置
CN115408491B (zh) 一种历史数据的文本检索方法及系统
CN113626446B (zh) 数据存储和查找方法、装置、电子设备及介质
JP3529658B2 (ja) トライ構造の文字列検索方法、装置、および文字列検索プログラムを記録した記録媒体
CN116244424B (zh) 一种图书管理方法和装置
JPH07302347A (ja) グラフ生成装置
JPH10275160A (ja) 情報フィルタ装置及び情報フィルタリング方法並びに情報フィルタリングプログラムを記録した記録媒体
CN114296801A (zh) 一种点云文本格式快速读取与写入方法
JP3374946B2 (ja) 検索装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040830

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041006

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081015

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081015

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091015

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101015

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111015

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111015

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121015

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131015

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees