JP2010146472A - ビット列データソート装置、方法及びプログラム - Google Patents

ビット列データソート装置、方法及びプログラム Download PDF

Info

Publication number
JP2010146472A
JP2010146472A JP2008325692A JP2008325692A JP2010146472A JP 2010146472 A JP2010146472 A JP 2010146472A JP 2008325692 A JP2008325692 A JP 2008325692A JP 2008325692 A JP2008325692 A JP 2008325692A JP 2010146472 A JP2010146472 A JP 2010146472A
Authority
JP
Japan
Prior art keywords
key
bit position
difference bit
difference
link
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
JP2008325692A
Other languages
English (en)
Other versions
JP2010146472A5 (ja
JP4921453B2 (ja
Inventor
Toshio Shinjo
敏男 新庄
Mitsuhiro Kokubu
光裕 國分
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.)
S Grants Co Ltd
Original Assignee
S Grants Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by S Grants Co Ltd filed Critical S Grants Co Ltd
Priority to JP2008325692A priority Critical patent/JP4921453B2/ja
Priority to PCT/JP2009/006001 priority patent/WO2010073471A1/ja
Publication of JP2010146472A publication Critical patent/JP2010146472A/ja
Priority to US13/067,722 priority patent/US8515976B2/en
Publication of JP2010146472A5 publication Critical patent/JP2010146472A5/ja
Application granted granted Critical
Publication of JP4921453B2 publication Critical patent/JP4921453B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ビット列データのソート処理において、無効となる処理が発生しない、効率的なソート手法を提供する。
【解決手段】基準となるキーとソート対象であるビット列からなるキーのビット列比較を行い、最初に異なるビット値となるビット位置である差分ビット位置を求め、ソート対象のキーの差分ビット位置による分類を行い、同一の差分ビット位置に分類された複数のキーのうちの基準となるキーについての差分ビット位置による分類をさらに繰り返すことにより、ソート済みキー列を取得する。
【選択図】図1B

Description

本発明は、ビット列で表されるキーデータのソート装置、方法及びプログラムに関する。
近年、社会の情報化が進展し、大規模なデータベースが各所で利用されるようになってきている。このような大規模なデータベースからレコードを検索するには、各レコードの記憶されたアドレスと対応づけられたレコード内の項目をインデックスキーとして検索をし、所望のレコードを探し出すことが通例である。また、全文検索における文字列も、文書のインデックスキーと見なすことができる。
そして、それらのインデックスキーはビット列で表現されることから、データベースの検索はビット列の検索に帰着されるということができる。
一方、データベースに関連した処理として、データベース中のレコードのインデックスキーによるソート処理が行われている。このソート処理もビット列のソート処理に帰着される。
ソートの手法は各種のものが開発されており、下記特許文献1には、クイックソート、ラディックソート(基数ソート)等が紹介されている。また、特許文献2にも基数ソートが記載されている。
図1Aに示すのは、従来の基数ソートの概念を説明する図である。基数ソートによれば、図1Aに例示するソート対象である4ビットのビット列であるキーは、0ビット目から3ビット目に至る各ビット位置におけるビット値による分類を繰り返すことにより、ソートが実行される。以下、図1Aの例示により、基数ソートの概念を説明する。
図1Aには、ソート対象であるキーからなるキー列100が示されている。図1Aの例示では、キー列100に含まれるキーの存在するキーの位置であるキー位置101が100a(以下、キー位置100aのように表記する。)である記憶領域にはキー“1111”が存在する。また、キー位置100b、100c100d、100eには、それぞれキー“0011”、“1010”、“0001”、“1110”が存在する。
図に示すように、まずビット位置毎の分類(0ビット目)110aによりキー列100に含まれるキーの0ビット目による分類が行われる。その結果、キー“0001”とキー“0011”からなる0ビット目の値0の組120aと、キー“1111”、キー“1010”、キー“1110”からなる値1の組121aが得られる。次に値0の組120aはビット位置毎の分類(1ビット目)110bにより、次に値1の組121aはビット位置毎の分類(1ビット目)110eによりそれぞれ1ビット目の値による分類が行われる。
ビット位置毎の分類(1ビット目)110bでは、キー“0001”とキー“0011”の1ビット目が共に0であることから、1ビット目の値0の組120bしか得られず、0ビット目の値0の組120aと同じキーが2ビット目による分類の対象となり、ビット位置毎の分類(2ビット目)110cにより2ビット目による分類が行われる。ビット位置毎の分類(2ビット目)110cでは、2ビット目の値0の組120dとして1つのキー“0001”が得られるので、最小値であるキーを格納する、ソート済みキー列130のキーを格納する位置であるキー位置131が130a(以下、キー位置130aのように表記する。)である記憶領域に格納される。同様に、2ビット目の値1の組121dとして1つのキー“0011”が得られるので、ソート済みキー列130の最小値の次の値のキーを格納するキー位置130bに格納される。なお、ソート済みキー列には、キー位置の符号順に小さいほうのキーから格納されるものとする。
一方、ビット位置毎の分類(1ビット目)110eの分類では、1ビット目の値0の組120eとして1つのキー“1010”が得られるので、ソート済みキー列130の次の格納位置であるキー位置130cに格納される。また、1ビット目の値1の組121eとして、キー“1111”とキー“1110”の組が得られ、ビット位置毎の分類(2ビット目)110fの分類で、2ビット目の値に基づく分類が行われる。
ビット位置毎の分類(2ビット目)110fでは、キー“1111”とキー“1110”の2ビット目が共に1であることから、1ビット目の値1の組121fしか得られず、1ビット目の値1の組121eと同じキーが3ビット目による分類の対象となり、ビット位置毎の分類(3ビット目)110gにより3ビット目の値による分類が行われる。ビット位置毎の分類(3ビット目)110gでは、3ビット目の値0の組120gとして1つのキー“1110”が得られるので、ソート済みキー列130の次の格納位置であるキー位置130dに格納される。同様に、3ビット目の値1の組121gとして1つのキー“1111”が得られるので、ソート済みキー列130の次の格納位置であるキー位置130eに格納される。
以上の処理により、キー列100のキーは、ソート済みキー列130のキー位置130a〜130eにソートされて格納される。しかし、上述の基数ソート方法によりソートを実行する場合には、図1Aに示すビット位置毎の分類(1ビット目)110bやビット位置毎の分類(2ビット目)110fにみられるように、分類が行われない無効な処理が発生する。

特開2002−116907号公報 特開2005−316663号公報
そこで本発明の解決しようとする課題は、ビット列データのソート処理において、無効となる処理が発生しない、効率的なソート手法を提供することである。
本発明のソート処理によれば、基準となるキーとソート対象であるビット列からなるキーのビット列比較を行い、最初に異なるビット値となるビット位置である差分ビット位置を求め、差分ビット位置によるソート対象のキーの分類を行い、同一の差分ビット位置に分類された複数のキーのうちの基準となるキーについての差分ビット位置による分類をさらに繰り返すことにより、ソート済みキー列を取得する。
本発明によれば、差分ビット位置によりキーのソートを行うため、分類が行われない無効な処理は発生しない。したがって、効率的なソート処理を実現することができる。
以下、本発明を実施するための最良の形態を、図1Aに示したキー列100に含まれるキーと同一のキーをソート対象のキーとして例示して説明する。
図1Bに示すのは、本発明の一実施の形態における差分ビット位置によるソート処理の概念を説明する図である。ソート対象のキー列100及びソート済みキー列130は、図1Aに示すものと同じである。
キー列100を構成する各キーは、差分ビット位置による分類149aにおいて、最小値キー148a、最小値キーとの差分ビット位置が2であるキー群142a及び最小値キー148aとの差分ビット位置が0であるキー群140aに分類される。図の例では、最小値キー142aは“0001”である。キー群142aには、キー“0011”のみが含まれており、キー群140aにはキー“1010”、“1111”及び“1110”が含まれている。最小値キー148aは、キー列100からキーを差分ビット位置によるソート処理のための入力バッファに読み込むときに求めることができる。
最小値キー148aは、図の点線の矢印158aに示すように、ソート済みキー列130のキー位置130aに格納される。また、キー群142aのキーは1つのみであるので、図の点線の矢印152aに示すように、ソート済みキー列130のキー位置130bに格納される。
最小値キー148aとの差分ビット位置が0であるキー群140aにはキーが複数含まれているので、図の点線の矢印の組150aに示すように、差分ビット位置による分類149bにおいて、キー群140a内の最小値キー148bと、最小値キー148bとの差分ビット位置が1であるキー群141b、に分類される。図の例では、最小値キー148bは“1010”である。キー群141bには、キー
“1111”とキー“1110”が含まれている。
最小値キー148bは、図の点線の矢印158bに示すように、ソート済みキー列130のキー位置130cに格納される。
一方、最小値キー148aとの差分ビット位置が1であるキー群141bにはキーが複数含まれているので、図の点線の矢印の組151bに示すように、差分ビット位置による分類149cにおいて、キー群141b内の最小値キー148cと、最小値キー148cとの差分ビット位置が3であるキー群143c、に分類される。図の例では、最小値キー148cは“1110”である。キー群143cにはキー
“1111”のみが含まれている。
最小値キー148cは、図の点線の矢印158cに示すように、ソート済みキー列130のキー位置130dに格納される。また、キー群143cのキーは1つのみであるので、図の点線の矢印153cに示すように、ソート済みキー列130のキー位置130eに格納される。
以上の処理により、キー列100のキーは、ソート済みキー列130のキー位置130a〜130eに昇順で格納され、ソート処理が完了する。そして、本実施の態様によるソート処理は、差分ビット位置に基づいて分類を繰り返すので、分類処理毎に必ずキーの分類が実行される。なお、上述の例では、最小値キーを、差分ビット位置を計算する基準のキーとしているが、最大値キーを、差分ビット位置を計算する基準のキーとすることも可能である。この場合には、図1Bのソート対象キーの例では、最大値キーがキー“1111”であり、最初の差分ビット位置による分類処理の結果として、最大値キー、差分ビット位置が3のキー“1110”、差分ビット位置が1のキー“1010”及び差分ビット位置のキー“0011”と“0001”の組が得られる。
次に、図1Bを参照してその概念を説明した本実施の形態における差分ビット位置によるソート処理を実現するための機能ブロック構成例について説明する。本実施の形態における差分ビット位置によるソート処理は、図1Bに例示した差分ビット位置による分類149a、149b、149c等の処理を実行する機能ブロックを、ソート対象のあらゆるキーの組み合わせに対して用意すれば実現可能であることは明らかである。しかしそれでは資源の無駄遣いであり、その実現手法は現実的でない。そこで本実施の形態においては、以下に説明する工夫を行っている。
図2Aは、本発明の一実施の形態における差分ビット位置によるソート処理で用いるデータ構造を説明するものである。図2Aに示すように、キー表309、差分ビット位置表310、リンク表311、ソート済みキー表313が用いられる。
キー表309はソート要求があったときにソート対象のキー602が読み込まれて設定されるものである。図2Aの例示では、ソート対象の5つのキー602は、図1A及び図1B示すキー列100に含まれるものが読み込まれている。キー表309の読出位置601の先頭はP0であり、以下、P1、P2、P3、P4と続いている。読出位置P0には、最小値キー“0001”が設定されているが、別領域に設定しておくことも可能である。点線の矢印689cで示すように、最小値キーはソート済みキー表313の所定の位置に格納される。
差分ビット位置表310は、最小値キーに対する同一の差分ビット位置を有するキーのうち、最小のキーの読出位置601を親リンク612として差分ビット位置611毎に格納するものである。図2Aの例示では、点線の矢印660aで示すように、最小値キー“0001”との差分ビット位置が0であるキー“1111”、“1010”、“1110”のうち最小のキー“1010”の読出位置P3が差分ビット位置表310の差分ビット位置611が0である位置に格納されている。また、点線の矢印662aで示すように、最小値キー“0001”との差分ビット位置が2であるキーはキー“0011”だけであるので、キー“0011”
の読出位置P2が差分ビット位置表310の差分ビット位置611が2である位置に格納されている。
リンク表311は、最小値キーに対する同一の差分ビット位置を有するキーにアクセスするためのものである。図に示すように、キーの読出位置621に対して、同一の差分ビット位置を有するキーの読出位置を示すリンク622が格納されている。
差分ビット位置表310からリンク表311への点線の矢印673bで示すように、同一の差分ビット位置0を有するキーの最小値キーの読出位置P3に対して、その読出位置P3を読出位置621とするリンク表311の読出位置(以下、リンク表311の読出位置P3のようにいう。)に、最小値キー“0001”に対して差分ビット位置0を有するキーの最小値キー“1010”と同一の差分ビット位置0を有するキー“1110”のキー表309の読出位置P4が格納されている。
そして、図の点線の矢印674cで示すように、リンク表311の読出位置P4に同一の差分ビット位置0を有するキー“1111”のキー表309の読出位置P1が格納されている。また、図の点線の矢印671cで示すように、リンク表311の読出位置P1には、同一の値のキー表309の読出位置P1が格納されている。これにより、それ以上同一の差分ビット位置0を有するキーは存在しないことを表している。
また、差分ビット位置表310からリンク表311への点線の矢印672bで示すように、同一の差分ビット位置2を有するキーの最小値キーの読出位置P2に対して、リンク表311の読出位置P2には、リンク表311の読出位置P2と同一の値のキー表309の読出位置P2が格納されている。これは、キー表309の読出位置P2のキー“0011”が最小値キー“0001”との差分ビット位置が2であるキーの最小のキーであるとともに、最後のものでもあることを示している。
上述の図2Aに示す差分ビット位置表310とリンク表311の状態は、図1Bに示す差分ビット位置による分類149aが実行されて得られるものである。
以上の説明から明らかなとおり、上述のキー表309は請求項1に係る発明のソート対象キー記憶手段の一実施例である。また、差分ビット位置表310とリンク表311で分類対象キー差分ビット位置記憶手段の一実施例を構成しており、キー表309の読出位置601はキーの識別情報に相当する。
図2Bは、本発明の一実施の形態におけるビット列データソート装置の機能ブロック構成を説明する図である。
図に示すように、ビット列データソート装置200は、差分ビット位置計算手段210、差分ビット位置分類手段220、ソート済みキー出力手段230、及び制御手段240を含む。以下、各手段の動作の概要について、図2Aの例示を参照して説明する。
差分ビット位置計算手段210は、キー表309に記憶されたキー602のうちから、差分ビット位置による分類処理の対象となるキーの差分ビット位置を計算する。制御手段240は最初の分類処理の対象をキー表309に記憶された全てのキーとする。この場合、差分ビット位置を計算する基準となるキーは、読出位置P0に格納された最小値キー“0001”である。ソート済みキー出力手段230は、最小値キー“0001”をソート済みキー表313に出力する。
差分ビット位置分類手段220は、差分ビット位置計算手段210の計算結果に基づいて、差分ビット位置表310とリンク表311の書き込みを行う。その結果、キーの識別情報をキー表309の読出位置601として、差分ビット位置が0の組(P3、P4、P1)と差分ビット位置が2の組(P2)に分類される。
制御手段240は、分類後に複数のキーが含まれる組について、さらに差分ビット位置計算手段210による差分ビット位置の計算と差分ビット位置分類手段220による分類処理が繰り返されるように制御する。
図3は、本発明を実施するためのハードウェア構成例を説明する図である。
本発明によるソート処理は中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。キー表309、差分ビット位置表310、リンク表311、ソート済みキー表313を有するデータ格納装置308は、主記憶装置305または外部記憶装置306で実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。
図3の例示では、主記憶装置305、外部記憶装置306及び通信装置307が一本のバス304によりデータ処理装置301に接続されているが、接続方法はこれに限るものではない。また、主記憶装置305をデータ処理装置301内のものとすることもできるし、キー表309は外部記憶装置306に、他の表は主記憶装置305に持つなど、使用可能なハードウェア環境、ソート対象キーの集合の大きさ等に応じて適宜ハードウェア構成を選択できることは明らかである。
また、特に図示されてはいないが、処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた主記憶装置305の一時記憶領域が用いられることは当然である。そして、以下の説明においては、一次記憶領域に格納されるあるいは設定される値を一時記憶領域の名前で呼ぶことがある。
次に、本発明の一実施の形態におけるソート処理について、図4A及び図4Bを参照して詳細に説明する。また、その説明において、図1Bあるいは図2Aの例示を適宜用いて説明する。
図4Aは、本発明の一実施の形態におけるソート処理の初段の分類処理とソート済みキーの出力処理の処理フローを説明する図である。キー表にはソート対象のキーが記憶されており、キー表の先頭の読出位置には最小値キーが記憶されていることを前提とする。すなわち、図1Bに示すキー列100に含まれるキーは図2Aに示すようにキー表309に記憶されているものとする。
まず、ステップS401において、キー表の先頭位置をキー表の読出位置(以下、単に読出位置ということがある。)に設定する。ここでいう「キー表の読出位置」は、先に述べた「処理の途中で得られた各種の値を後の処理で用いるためにそれぞれの処理に応じた一時記憶領域」の1つである。以下の説明では、「キー表の先頭位置をキー表の読出位置に設定する。」のように、「キー表の読出位置」が図示しない一次記憶領域であることを省略して述べることがある。
上記の設定により、図2Aの例示では、キー表の読出位置にP0が設定される。
次にステップS402において、キー表より、先頭位置の指すキーを最小値キーとして取り出す。ここでいう「最小値キーとして取り出す」は、図示しない一次記憶領域である最小値キーに設定する、の意味である。以下においても、同様な表記を用いる場合がある。
ステップS403に進み、読出位置に次の読出位置を設定する。次にステップS404において、全てのキーは処理済みか、すなわち、全てのキーについての初段における分類処理が終了したか判定する。
全てのキーが処理済みでなければ、ステップS405に進み、キー表より、読出位置の指すキーをソートキーとして取り出すとともに、読出位置をソートキーの読出位置に設定する。そしてステップS406において、ソートキーと最小値キーの差分ビット位置を得て、差分ビット位置によりソートキーを分類し、ステップS403に戻る。
ステップS406の処理においては、初段における分類処理として差分ビット位置表とリンク表への設定が行われる。その処理の詳細については、後に図5A及び図5Bを参照して説明する。
一方、ステップS404で全てのキーが処理済みであると判定されると、ステップS407に分岐し、ステップS402で得た最小値キーを、ソート済みキー表に設定し、図4Bに示すステップS408以下の処理に進む。以上の処理により、図2Aの例示のように、差分ビット位置表310とリンク表311の各エントリの値が設定される。また、最小値キー“0001”がソート済みキー表313に格納される。
図4Bは、本発明の一実施の形態におけるソート処理の初段以降の分類処理とソート済みキーの出力処理の処理フローを説明する図である。
ステップS408においては、図示しない一次記憶領域である差分ビット位置に、初期値として差分ビット位置表の差分ビット位置、すなわちソート対象のキーが有する可能性のある差分ビット位置の最大値を設定する。図2Aの例示では、差分ビット位置の最大値として3が設定される。
ステップS409において、差分ビット位置表の全ての差分ビット位置のエントリについて処理済みであるか判定し、処理済みであればソート処理を終了し、処理済みでなければステップS410に進む。
ステップS410では、差分ビット位置表より、差分ビット位置の指すエントリから親リンクを読み出す。差分ビット位置の指すエントリに親リンクが格納されていれば、この読み出された親リンクは一次記憶領域である親リンクに設定される。すなわち、本実施の態様の説明における「親リンクを読み出す」等の表記は、親リンクを読み出して図示しない一次記憶領域である親リンクに設定することを意味することがある。親リンク以外のものに対しても同様である。
ステップS411では、親リンクは設定済みであるか判定する。設定済みでなければステップS416で差分ビット位置から値を1減らしてステップS409に戻り、一方、設定済みであればステップS412に進む。
ステップS412では、キー表より、ステップS410で設定した親リンク(キー表の読出位置)の指すキーをソート済みキーとして取り出し、その取り出したソート済みキーをソート済みキー表に設定する。先に説明したように、差分ビット位置表にその読出位置が格納されているキーは、同一の差分ビット位置に分類されたキーのうちの最小値キーであるので、ステップS412でソート済みキー表に設定する。
次にステップS413で、リンク表より、ステップS410で設定した親リンクの指すリンクを次リンクとして読み出し、ステップS414で、差分ビット位置表の、差分ビット位置の指す親リンクを削除してステップS415に進む。ここで差分ビット位置表の差分ビット位置の指す親リンクを削除するのは、キー表の読出位置が親リンクである最小値キーの分類処理はステップS412で完了しており、もはや差分ビット位置表上のこの親リンクは必要がないことと、この親リンクが差分ビット位置表に残っていることによる後続の処理への影響を避けるためである。
ステップS415では、ステップS413で読み出した次リンクとステップS410で設定した親リンクが同一であるか判定する。
ステップS415で次リンクと親リンクが同一であると判定されると、先に説明したステップS416を経由してステップS409に戻る。
上述のステップS409〜ステップS416のループ処理により、差分ビット位置の降順でソート済みキーの取り出しとソート済みキー表への格納が行われる。より大きい差分ビット位置を有するキーの値がより最小値キーの値に近いので、差分ビット位置の降順でソート済みキーを取り出すことにより、昇順でソート済みキーをソート済みキー表へ格納することができる。
ステップS415で次リンクと親リンクが同一であると判定されるのは、親リンクが格納された差分ビット位置を有するキーが親リンクをキー表の読出位置とするキーしか存在しない場合である。図2Aの例示では、リンク表311の読出位置621がP2でリンク622がP2の場合である。また、図1Bの例示では、キー群142aがキー“0011”のみで構成され、キー群142aについての分類処理は行われない場合に相当する。そして、この場合は差分ビット位置表に親リンクが格納された差分ビット位置についての分類処理が終了したことを意味するので、差分ビット位置から値1を減らし、次の差分ビット位置についてのステップS409〜S415の処理に進む。図1Bの例示では、差分ビット位置0のキー群140aについての処理が行われる。
一方、ステップS415で次リンクと親リンクが同一でないと判定されると、ステップS417に進み、同一の差分ビット位置(ステップS408またはステップS416で設定されている。)を有する複数のキーを、下位の差分ビット位置によりさらに分類する。ステップS417の処理の詳細については、後に図5Cを参照して説明する。
次リンクと親リンクが同一でないと判定される場合は、図2Aの例示では、リンク表311の読出位置621がP3でリンク622がP4の場合である。図1Bの例示では、キー群140aの複数のキーについて、差分ビット位置による分類149b、149cが実行される。
ステップS417の処理では、差分ビット位置表とリンク表が再設定され、ステップS408に戻る。そして、再設定された差分ビット位置表の親リンクの設定された差分ビット位置についての処理が繰り返される。
上述の処理を、ステップS409において、差分ビット位置表の全ての差分ビット位置のエントリについて処理済みである、と判定されるまで繰り返し、その判定が得られるとソート対象のキーのソートが完了しているので処理を終了する。
図4Bに例示する処理は、差分ビット位置を計算する基準となるキーを最小のキーとし、差分ビット位置の降順で処理を行ってソート済みキーを昇順で取り出すものである。しかし、先に述べたように、差分ビット位置を計算する基準となるキーを最大のキーとする場合には、差分ビット位置の昇順で処理を行ってソート済みキーを降順で取り出すことができることは、本明細書及び図面の記載によって当業者に明らかである。
次に図5A及び図5Bを参照して本発明の一実施の形態におけるキーを分類する処理を説明する。図5A及び図5Bに記載するものは、図4Aに示すステップS406の処理、及び後述の図5Cに示すステップS524の処理の詳細な処理フローである。
図5Aは、本発明の一実施の形態におけるキーを分類する処理の前段の処理フローを説明する図である。
図に示すように、ステップS501で、ソートキーに設定されているキーと最小値キーに設定されているキーをビット列として比較し、上位0ビット目からみた最初の不一致ビットのビット位置を、差分ビット位置に設定する。ソートキーは、図4Aに示すステップS405、あるいは後述の図5Cに示すステップS522で設定されるものであり、図5A及び図5Bに示す分類処理の対象のキーである。
次にステップS502で差分ビット位置表より、ステップS501で設定した差分ビット位置の指す親リンクを読み出し、ステップS503で親リンクは設定済みであるか判定する。親リンクが設定済みでなければ、ステップS504に進み、差分ビット位置表の、差分ビット位置の指す親リンクにソートキーの読出位置を設定し、ステップS505において、リンク表の、ソートキーの読出位置の指すリンクに、ソートキーの読出位置を設定して処理を終了する。
差分ビット位置表には、先に述べたように同一の差分ビット位置を有するキーのうち、最小のキーの読出位置が親リンクとして格納されるが、上記ステップS504の処理は、最初のソートキーを仮の最小値キーとして、ソートキーの読出位置を差分ビット位置表の差分ビット位置の指す親リンクに設定するものである。一旦親リンクが設定済みとなった後、すなわちステップS503での判定が親リンクは設定済みになると、図5Bに示す後段の処理に進み、ソートキーと最小値キーの大小比較による最小値キーの更新が行われ、最終的には同一の差分ビット位置を有するキーのうち、最小のキーの読出位置が親リンクとして差分ビット位置表に格納される。
なお、ステップS504の処理におけるソートキーの読出位置は、図4Aに示すステップS405あるいは後述の図5Cに示すステップS523で設定されるものである。
図5Bは、本発明の一実施の形態におけるキーを分類する処理の後段の処理フローを説明する図である。
図に示すように、ステップS506で、キー表より、親リンクの指すキーを、親ソートキーとして読み出し、ステップS507において、ソートキーは親ソートキーより小さいか判定する。
ステップS507でソートキーは親ソートキーより小さいと判定されると、ステップS508に進み、差分ビット位置表の、差分ビット位置の指す親リンクにソートキーの読出位置を設定し、ステップS509でリンク表の、ソートキーの読出位置の指すリンクに、ステップS502で得た親リンクを設定して処理を終了する。
上述のステップS508の処理は、差分ビット位置表の差分ビット位置の指す親リンクに同一の差分ビット位置を有するキーのうちで最小のキーの読出位置を設定するために、より小さいキーの読出位置で親リンクを更新するものである。そして、ステップS509の処理は、差分ビット位置表に新たに設定されたソートキーの読出位置の指すリンク表のリンクに、差分ビット位置表に設定されていた親リンクを設定することで、リンク表に、同一の差分ビット位置を有するキーのキー表における読出位置をたどるための情報を保持させるものである。
一方、ステップS507でソートキーは親ソートキーより小さくないと判定されると、ステップS510に進み、リンク表より、親リンクの指すリンクを次リンクとして読み出し、ステップS511で、次リンクと親リンクは同一か判定する。
ステップS511で次リンクと親リンクは同一であると判定されると、ステップS512において、リンク表の親リンクの指すリンクに、ソートキーの読出位置を設定する。そして、ステップS513において、リンク表のソートキーの読出位置の指すリンクに、ソートキーの読出位置を設定して処理を終了する。
一方、ステップS511で次リンクと親リンクは同一でないと判定されると、ステップS514に進み、リンク表の親リンクの指すリンクに、ソートキーの読出位置を設定する。そして、ステップS515において、リンク表のソートキーの読出位置の指すリンクに、ステップS510で得た次リンクを設定して処理を終了する。
上述のステップS511の判定は、同一の差分ビット位置を有するキーのうちで分類済みのキーが1つのみであったかの判定と同じである。分類済みのキーが1つのみであればこのキーの読出位置の指すリンク表のリンクにはその読出位置が格納されている。そこで、それをソートキーの読出位置で更新し、ソートキーの読出位置の指すリンク表のリンクにソートキーの読出位置を設定してソートキーが、その時点での最後の分類済みのキーであることを示す。分類済みのキーが2つ以上のときは、ステップS514とステップS515の処理により、リンク表で表現される親リンクと次リンクのリンク関係の間に、ソートキーの読出位置を挿入する。
次に図5Cを参照して、図4Bに示すステップS417の処理である、本発明の一実施の形態における同一の差分ビット位置を有する複数のキーをさらに分類する処理の詳細な処理フローを説明する。
図5Cは、本発明の一実施の形態における同一の差分ビット位置を有する複数のキーをさらに分類する処理の詳細な処理フローを説明する図である。
図に示すように、ステップS521において、最小値キーにソート済みキーを設定する。ソート済みキーは、図4Bに示すステップS412で得たものであり、後記ステップS524においてソートキーの差分ビット位置を計算するための基準となるキーである。
ステップS522に進み、キー表より、次リンクの指すキーをソートキーとして取り出すとともに、次リンクをソートキーの読出位置に設定する。そして、ステップS523において、キー表より次リンクの指すリンクを読み出して退避エリアに退避する。ステップS522における次リンクは、図4Bに示すステップS413において、リンク表より読み出された親リンクの指すリンクである。図2Aの例の差分ビット位置0を有するキーの分類処理であれば、親リンクがP3、次リンクがP4、そして次リンクの指すリンクであって退避エリアに退避されるリンクはP1である。
ステップS523において次リンクの指すリンクを退避するのは、次のステップS524において、ステップS522で設定したソートキーの、ステップS521で設定した最小値キーに対する差分ビット位置に基づく分類処理が行われ、その結果としてリンク表の次リンクの指すリンクの値が書き換えられるので、あらかじめ退避しておいて、ステップS524以後の、次リンクの指すリンクを用いた処理を正常に行うためである。
ステップS524では、図5A及び図5Bを参照して詳細に説明した、ソートキーと最小値キーの差分ビット位置を得て差分ビット位置によりソートキーを分類する処理が実行される。
そして、ステップS525において、次リンクと退避リンクは一致するか判定される。退避リンクが次リンクと一致すれば、同一差分ビット位置を有する分類対象となるキーは残っていないことから処理を終了する。
一方、ステップS525において、退避リンクが次リンクと一致しないと判定されると、ステップS526において退避リンクを次リンクに設定してステップS522に戻り、新しく設定された次リンクをキー表の読出位置とするキーを分類対象のソートキーとして分類処理を継続する。
上述のステップS522〜S526のループ処理を、退避リンクが次リンクと一致するまで、すなわち分類処理の対象となるキーがなくなるまで繰り返し、分類処理の対象となるキーがなくなると処理を終了する。
以上、本発明の最良の実施形態に詳細に説明した。以下においては、本発明の理解をさらに容易にするために、図1B及び図2Aの例示についての処理を、図6A〜図7を参照して説明する。
図6Aは、本発明の一実施の形態におけるキーを昇順に取り出す初段の処理のデータの流れを説明する図である。
図6Aの(a)に示すのは、キー列100に含まれるキーをキー表309に設定するデータの流れである。
キー位置100aのキー“1111”は、点線の矢印651aで示すように、キー表309の読出位置P1に設定される。同様に、キー位置100bのキー“0011”は、点線の矢印651bで示すように、キー表309の読出位置P2に設定され、キー位置100cのキー“1010”は、点線の矢印651cで示すように、キー表309の読出位置P3に設定され、キー位置100eのキー“1110”は、点線の矢印651eで示すように、キー表309の読出位置P4に設定される。キー位置100dのキー“0001”は、点線の矢印651dで示すように、最小値キーとしてキー表309の読出位置P0に設定される。
図6Aの(b)に示すのは、初段の分類処理で最小値キーがソート済みキーとして取り出され、最小値キーを基準のキーとした差分ビット位置によりソート対象のキーを分類した状態である。先に図2Aに示したものと類似のものである。キー表309の先頭の読出位置P0に設定された最小値キー“0001”は、矢印689cに示すように、ソート済みキー表313の先頭の書込位置640aに設定される。
また、図の点線の矢印660aに示すように、差分ビット位置が0である3つのキーのうち最小のキーである“1010”の読出位置P3が差分ビット位置表310の差分ビット位置0に親リンクとして格納され、差分ビット位置が2である1つのキーであって最小のキーである“0011”の読出位置P2が差分ビット位置表310の差分ビット位置2に親リンクとして格納される。
リンク表311には、点線の矢印673b及び672bに示すように、差分ビット位置表310に設定された親リンクの読出位置621に、同一の差分ビット位置を有するキーの読出位置が格納されている。すなわち、親リンクP3が指す読出位置621にはリンク622としてP4が、親リンクP2が指す読出位置621にはリンク622としてP2が格納されている。
点線の矢印674cに示すように、リンクP4が指す読出位置621にはリンク622としてP1が格納され、リンクP1が指す読出位置621には、同一の読出位置P1がリンク622として格納されている。これは、同一の差分ビット位置0を有するキーがそれ以上存在しないことを表している。すなわち、キー表309の読出位置P1のキー“1111”がリンク表311において同一差分ビット位置のキーの最後のキーであることを示している。
読出位置621がP2のリンク622にP2が格納されているのは、キー表309の読出位置P2のキー“0011”がリンク表311において同一差分ビット位置のキーの唯一のキーであることに対応している。
図6Aの(b)に示す差分ビット位置表310とリンク表311の設定については、後に図7を参照して詳細に説明する。
図6Aの(c)に示すのは、初段の分類処理で分類されたキー群のうち、差分ビット位置611が2である親リンクP2を読出位置とするキー“0011”を含むキー群(実際には1つのキーしか含まない。)の最小値キー“0011”をソート済みキーとしてソート済みキー表313に格納する流れを説明する図である。
親リンク612は、差分ビット位置表310の差分ビット位置611の降順で取り出される。図の例の場合、矢印682で示す差分ビット位置611が2であるエントリの親リンクP2が取り出され、図の矢印682bに示すように、キー表309の親リンクP2の指す読出位置601からキー“0011”が読み出され、矢印682cに示すようにソート済みキー表313の書込位置640bに書き出される。
一方、矢印672bに示す親リンクP2に対応するリンク表311の読出位置621に格納されたリンク622は親リンク612と同一のP2であるから、差分ビット位置2に関するさらなる分類は行われない。そこで、差分ビット位置表310の差分ビット位置2に格納されていた親リンクP2は、以降の処理の妨げにならないように削除される。
図6Bは、本発明の一実施の形態におけるキーを昇順に取り出す中段の処理のデータの流れを説明する図である。
図6Bの(d)に示すのは、図6Aの(c)に示す差分ビット位置2についての処理に続いて、図の矢印680aで示すように差分ビット位置0についての分類処理を開始するときの、差分ビット位置表310とリンク表311の状態である。この状態は、差分ビット位置表の差分ビット位置2のエントリから親リンクP2が削除されている点を除いて、図6Aの(b)に示すものと同様である。ただし、リンク表311の読出位置P2のエントリの値は不必要なので省略している。
図6Bの(e)に示すのは、図6Aの(b)に示す最小値キー“0001”を基準のキーとしたときの差分ビット位置が0であるキーの分類処理の流れを示すものである。図1Bの例示では、差分ビット位置による分類149bに相当する。
矢印680aで示す差分ビット表310の差分ビット位置0の親リンクP3が取り出され、点線の矢印683bで示すP3を読出位置とするキー表309からの点線の矢印683dに示すように、キー表309の読出位置P3に格納されたキー“1010”、すなわち親リンクP3の指すキーが図4Bに示すステップS412でソート済みキーとして取り出されて一次記憶領域であるソート済みキー650に設定され、さらにソート済みキー表313の書込位置640cに書き出される。
一方、ソート済みキー650に設定された、先の分類対象キーのうちの最小値キーであるキー“0001”について同一の差分ビット位置0を有するキーのうち最小の値のキーであるキー“1010”と、同一の差分ビット位置0を有するキー“1111”と“1110”との差分ビット位置1が計算され、図の点線の矢印661aが示すように、小さいほうのキーの読出位置であるP4が差分ビット位置表310の差分ビット位置621が1であるエントリに親リンク612として格納される。
さらに矢印674bに示すように、親リンクP4の指すリンク表311のリンク622には読出位置P1が格納され、その読出位置P1が指すリンク表311のリンクには、矢印671cで示すように同じP1が格納されている。
図6Bの(f)に示すのは、図6Bの(e)に示す最小値キー“1010”を基準のキーとしたときの差分ビット位置が3であるキーの分類処理の流れを示すものである。図1Bの例示では、差分ビット位置による分類149cに相当する。
矢印681aで示す差分ビット表310の差分ビット位置1の親リンクP4が取り出され、点線の矢印684bで示すP4を読出位置とするキー表309からの点線の矢印684dに示すように、キー表309の読出位置P4に格納されたキー“1110”、すなわち親リンクP4の指すキーが図4Bに示すステップS412でソート済みキーとして取り出されて一次記憶領域であるソート済みキー650に設定され、さらにソート済みキー表313の書込位置640dに書き出される。
一方、ソート済みキー650に設定された、先の分類対象キーのうちの最小値キーであるキー“1010”について同一の差分ビット位置1を有するキーのうち最小の値のキーであるキー“1110”と、同一の差分ビット位置1を有するキー“1111”との差分ビット位置3が計算され、図の点線の矢印662aが示すように、小さいほう、すなわち唯一のキーの読出位置であるP1が差分ビット位置表310の差分ビット位置621が3であるエントリに親リンク612として格納される。
さらに矢印671bに示すように、親リンクP1の指すリンク表311のリンク622には親リンクと同じ値のP1が格納される。
図6Cは、本発明の一実施の形態におけるキーを昇順に取り出す終段の処理のデータの流れを説明する図である。すなわち図6Bの(f)に示す処理により、差分ビット位置表310には、差分ビット位置3のエントリの親リンクP1だけが格納されている。
差分ビット位置表310の差分ビット位置611の降順で親リンク612が取り出されるので、図の例の場合、矢印683aで示す差分ビット位置611が3であるエントリの親リンクP1が取り出され、図の矢印681bに示すように、キー表309の親リンクP1の指す読出位置601からキー“1111”が読み出され、矢印681cに示すようにソート済みキー表313の書込位置640eに書き出される。
一方、矢印671bに示す親リンクP1に対応するリンク表311の読出位置621に格納されたリンク622は親リンク612と同一のP1であるから、差分ビット位置3に関するさらなる分類は行われない。そこで、差分ビット位置表310の差分ビット位置3に格納されていた親リンクP1は、削除される。
すると、差分ビット位置表310の全ての親リンクは削除され、全ての差分ビット位置についての処理は完了するので、すべての処理を終了する。
図7は、初段の分類処理のデータの流れ、すなわち、図6Aの(b)に示す差分ビット位置表310とリンク表311の設定を説明する図である。
図7の(a)に示すのは、キー表309にキー602が設定され、差分ビット位置表310とリンク表311には何も設定されていない、初期状態である。
なお、読出位置P2に格納されるキー“0011”は省略されている。キー“0011”については、最小値キー“0001”に対する差分ビット位置が2であるキーが唯一のものである。したがって、図5Aに示すステップS504とステップS505で、差分ビット位置表とリンク表311の読出位置P2に関する設定が一度で完成するので、その設定の理解が容易なものであるから省略した。
図7の(b)に示すのは、キー表309の読出位置P1に格納されたキー“1111”に関する処理のデータの流れである。点線680dと681dで示すように、読出位置P0に格納された最小値キー“0001”とのビット列比較により差分ビット位置0が計算され、点線の矢印660aに示すように、差分ビット位置表310の差分ビット位置0に読出位置P1が設定される。また、点線の矢印671bで示すように、リンク表311の読出位置P1に、P1が設定される。
図7の(c)に示すのは、キー表309の読出位置P3に格納されたキー“1010”に関する処理のデータの流れである。点線680dと683dで示すように、読出位置P0に格納された最小値キー“0001”とのビット列比較により差分ビット位置0が計算される。そして、差分ビット位置表310の差分ビット位置0に設定されている親リンクP1を読出位置とするキー“1111”との大小比較が図5Bに示すステップS507で行われる。読出位置P3のキーの方が小さいので、点線の矢印660aに示すように、差分ビット位置表310の差分ビット位置0のエントリは読出位置P3に更新される。また、点線の矢印673bで示すように、リンク表311の読出位置P3に、P1が設定される。この設定により、矢印671cで示すように読出位置P3のキーと読出位置P1のキーの差分ビット位置が同一であるというリンク関係が保持される。
図7の(d)に示すのは、キー表309の読出位置P4に格納されたキー“1110”に関する処理のデータの流れである。点線680dと684dで示すように、読出位置P0に格納された最小値キー“0001”とのビット列比較により差分ビット位置0が計算される。そして、差分ビット位置表310の差分ビット位置0に設定されている親リンクP3を読出位置とするキー“1010”との大小比較が図5Bに示すステップS507で行われる。読出位置P4のキーの方が大きいので、点線の矢印660aに示すように、差分ビット位置表310の差分ビット位置0の読出位置P3は更新されない。しかし、点線の矢印673bで示すように、リンク表311の読出位置P3のエントリはP4に更新される。そして、矢印674cで示すように、リンク表311の読出位置P4にP1が設定される。この設定により、矢印674cと矢印671cで示すように、読出位置P3のキー、読出位置P4のキー及び読出位置P1のキーの差分ビット位置が同一であるというリンク関係が保持される。
以上のデータの流れ(読出位置P2については省略)により、初段の分類処理による差分ビット位置表310とリンク表311の設定が行われる。
以上本発明を実施するための最良の形態について詳細に説明したが、本発明の実施の形態はそれに限ることなく種々の変形が可能であることは当業者に明らかである。
また、本発明のビット列データソート装置が、図2Aに例示するデータ構造を有する記憶手段と図4A及び図4Bに示す処理をコンピュータに実行させるプログラムによりコンピュータ上に構築可能なことは明らかである。
したがって、上記プログラム、及びプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の実施の形態に含まれる。
以上詳細に説明した本発明が提供する新しいビット列データソート手法を用いることにより、より高速なビット列データのソートを行うことが可能となる。
従来の基数ソートの概念を説明する図である。 本発明の一実施の形態における差分ビット位置によるソート処理の概念を説明する図である。 本発明の一実施の形態における差分ビット位置によるソート処理で用いるデータ構造を説明する図である。 本発明の一実施の形態におけるビット列データソート装置の機能ブロック構成を説明する図である。 本発明を実施するためのハードウェア構成例を説明する図である。 本発明の一実施の形態におけるソート処理の初段の分類処理とソート済みキーの出力処理の処理フローを説明する図である。 本発明の一実施の形態におけるソート処理の初段以降の分類処理とソート済みキーの出力処理の処理フローを説明する図である。 本発明の一実施の形態におけるキーを分類する処理の前段の処理フローを説明する図である。 本発明の一実施の形態におけるキーを分類する処理の後段の処理フローを説明する図である。 本発明の一実施の形態における同一の差分ビット位置を有する複数のキーをさらに分類する処理の処理フローを説明する図である。 本発明の一実施の形態におけるキーを昇順に取り出す初段の処理のデータの流れを説明する図である。 本発明の一実施の形態におけるキーを昇順に取り出す中段の処理のデータの流れを説明する図である。 本発明の一実施の形態におけるキーを昇順に取り出す終段の処理のデータの流れを説明する図である。 初段の分類処理のデータの流れを説明する図である。
符号の説明
100 キー列
130 ソート済みキー列
149a、149b、149c 差分ビット位置による分類
200 ビット列データソート装置
210 差分ビット位置計算手段
220 差分ビット位置分類手段
230 ソート済みキー出力手段
240 制御手段
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 キー表
310 差分ビット位置表
311 リンク表
313 ソート済みキー表

Claims (12)

  1. ビット列で表されるソート対象のキーのソート処理を行うビット列データソート装置において、
    前記ソート対象のキーを記憶するソート対象キー記憶手段と、
    前記ソート対象キー記憶手段に記憶された前記ソート処理を構成する分類処理の分類対象である前記キーと、該分類対象であるキーのうち基準となるキーと、のビット列比較により、最初に異なるビット値となる差分ビット位置を求める差分ビット位置計算手段と、
    前記差分ビット位置計算手段で求めた差分ビット位置毎に該差分ビット位置を有するキーの識別情報を記憶する分類対象キー差分ビット位置記憶手段と、
    前記差分ビット位置計算手段で求めた前記差分ビット位置毎に該差分ビット位置を有するキーの識別情報を前記分類対象キー差分ビット位置記憶手段に書き込むことにより、前記分類対象であるキーを同一の差分ビット位置を有する組に分類する差分ビット位置分類手段と、
    前記差分ビット位置分類手段で分類された同一の差分ビット位置を有するキーが1つの場合はそのキーを、同一の差分ビット位置を有するキーが複数の場合はそのうちの次の分類処理において基準となるキーをソート済みキーとして出力するソート済みキー出力手段と、
    前記差分ビット位置計算手段、前記前記差分ビット位置分類手段及び前記ソート済みキー出力手段を制御する制御手段と、
    を備え、
    前記制御手段は、
    前記差分ビット位置計算手段が、前記差分ビット位置計算手段の最初の処理における前記分類対象をソート対象のキー全体とし、以後、前記差分ビット位置分類手段で分類された同一の差分ビット位置を有するキーを複数含むキーの組を前記分類対象として前記差分ビット位置をもとめることを繰り返し、
    前記差分ビット位置分類手段が、前記差分ビット位置計算手段で求められた差分ビット位置毎に同一の差分ビット位置を有する組に分類することを繰り返し、
    前記ソート済みキー出力手段は、前記差分ビット位置分類手段が前記差分ビット位置毎に同一の差分ビット位置を有する組に分類するたびに、該同一の差分ビット位置を有するキーが1つの場合のキー及び前記基準となるキーをソート済みキーとして出力するために、
    前記差分ビット位置計算手段、前記前記差分ビット位置分類手段及び前記ソート済みキー出力手段を制御すること、
    を特徴とするビット列データソート装置。
  2. 請求項1に記載のビット列データソート装置において、
    前記分類対象であるキーのうち基準となるキーを、分類対象であるキーのうち最小の値をとる最小値キーあるいは最大の値をとる最大値キーとすることを特徴とするビット列データソート装置。
  3. 請求項2に記載のビット列データソート装置において、
    前記キーを識別する情報は、該キーが記憶された前記ソート対象キー記憶手段における該キーのアドレスである読出位置であり、
    前記分類対象キー差分ビット位置記憶手段は、前記分類対象であるキーと該分類対象であるキーのうち基準となるキーである前記最小値キーあるいは最大値キーとの差分ビット位置毎に、該最小値キーあるいは最大値キーに対する同一の差分ビット位置を有するキーのうち、最小あるいは最大のキーの前記読出位置である親リンクを格納する差分ビット位置表と、前記読出位置毎に該読出位置のキーと前記同一の差分ビット位置を有するキーの読出位置であるリンクを格納するリンク表から構成されることを特徴とするビット列データソート装置。
  4. 請求項3に記載のビット列データソート装置において、
    前記同一の差分ビット位置を有するキーの前記キー表の読出位置をリンク表の読出位置とするリンクは、該リンクをリンク表の読出位置とし、さらに該読出位置に設定されたリンクをたどることにより、前記同一の差分ビット位置を有する全てのキーの前記キー表の読出位置を参照するために設定されており、該同一の差分ビット位置を有するキーのうちの最後のキーの読出位置のリンクには、該最後のキーの読出位置が格納されていることを特徴とするビット列データソート装置。
  5. 請求項4に記載のビット列データソート装置において、
    前記制御手段は、前記差分ビット位置分類手段が、前記差分ビット位置表の差分ビット位置の降順あるいは昇順に、該差分ビット位置に格納された前記親リンクを読出位置とするキーと同一の差分ビット位置を有する組を分類することを繰り返すこと、を制御することを特徴とするビット列データソート装置。
  6. ビット列で表されるソート対象のキーのソート処理を行うビット列データソート方法において、
    前記ソート対象のキーを記憶するソート対象キー記憶手段に前記ソート対象のキーを記憶するソート対象キー記憶ステップと、
    前記ソート対象キー記憶手段に記憶された前記ソート処理を構成する分類処理の分類対象である前記キーと、該分類対象であるキーのうち基準となるキーと、のビット列比較により、最初に異なるビット値となる差分ビット位置を求める差分ビット位置計算ステップと、
    前記差分ビット位置計算ステップで求めた差分ビット位置毎に、分類対象キー差分ビット位置記憶手段に該差分ビット位置を有するキーの識別情報を書き込むことにより、前記分類対象であるキーを同一の差分ビット位置を有する組に分類する差分ビット位置分類ステップと、
    前記差分ビット位置分類ステップで分類された同一の差分ビット位置を有するキーが1つの場合はそのキーを、同一の差分ビット位置を有するキーが複数の場合はそのうちの次の分類処理において基準となるキーをソート済みキーとして出力するソート済みキー出力ステップと、
    前記差分ビット位置計算ステップ、前記前記差分ビット位置分類ステップ及び前記ソート済みキー出力ステップを制御する制御ステップと、
    を備え、
    前記制御ステップは、
    最初の処理における前記分類対象をソート対象のキー全体として前記差分ビット位置計算ステップを実行し、以後、前記差分ビット位置分類ステップで分類された同一の差分ビット位置を有するキーを複数含むキーの組を前記分類対象として前記差分ビット位置計算ステップを繰り返し、
    前記差分ビット位置計算ステップで求められた差分ビット位置毎に同一の差分ビット位置を有する組に分類する前記差分ビット位置分類ステップを繰り返し、
    前記差分ビット位置分類ステップが前記差分ビット位置毎に同一の差分ビット位置を有する組に分類するたびに、前記ソート済みキー出力ステップが、該同一の差分ビット位置を有するキーが1つの場合のキー及び前記基準となるキーをソート済みキーとして出力するために、前記差分ビット位置計算ステップ、前記前記差分ビット位置分類ステップ及び前記ソート済みキー出力ステップを制御する、
    ことを特徴とするビット列データソート方法。
  7. 請求項6に記載のビット列データソート方法において、
    前記分類対象であるキーのうち基準となるキーを、分類対象であるキーのうち最小の値をとる最小値キーあるいは最大の値をとる最大値キーとすることを特徴とするビット列データソート方法。
  8. 請求項7に記載のビット列データソート方法において、
    前記キーを識別する情報は、該キーが記憶された前記ソート対象キー記憶手段における該キーのアドレスである読出位置であり、
    前記分類対象キー差分ビット位置記憶手段は、前記分類対象であるキーと該分類対象であるキーのうち基準となるキーである前記最小値キーあるいは最大値キーとの差分ビット位置毎に、該最小値キーあるいは最大値キーに対する同一の差分ビット位置を有するキーのうち、最小あるいは最大のキーの前記読出位置である親リンクを格納する差分ビット位置表と、前記読出位置毎に該読出位置のキーと前記同一の差分ビット位置を有するキーの読出位置であるリンクを格納するリンク表から構成されることを特徴とするビット列データソート方法。
  9. 請求項8に記載のビット列データソート方法において、
    前記同一の差分ビット位置を有するキーの前記キー表の読出位置をリンク表の読出位置とするリンクは、該リンクをリンク表の読出位置とし、さらに該読出位置に設定されたリンクをたどることにより、前記同一の差分ビット位置を有する全てのキーの前記キー表の読出位置を参照するために設定されており、該同一の差分ビット位置を有するキーのうちの最後のキーの読出位置のリンクには、該最後のキーの読出位置が格納されていることを特徴とするビット列データソート方法。
  10. 請求項9に記載のビット列データソート方法において、
    前記制御ステップは、前記差分ビット位置分類ステップが、前記差分ビット位置表の差分ビット位置の降順あるいは昇順に、該差分ビット位置に格納された前記親リンクを読出位置とするキーと同一の差分ビット位置を有する組を分類することを繰り返すことを、制御することを特徴とするビット列データソート方法。
  11. 請求項6〜請求項10のいずれか1項に記載のビット列データソート方法をコンピュータに実行させるプログラム。
  12. 請求項6〜請求項10のいずれか1項に記載のビット列データソート方法をコンピュータに実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
JP2008325692A 2008-12-22 2008-12-22 ビット列データソート装置、方法及びプログラム Expired - Fee Related JP4921453B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008325692A JP4921453B2 (ja) 2008-12-22 2008-12-22 ビット列データソート装置、方法及びプログラム
PCT/JP2009/006001 WO2010073471A1 (ja) 2008-12-22 2009-11-11 ビット列データソート装置、方法及びプログラム
US13/067,722 US8515976B2 (en) 2008-12-22 2011-06-22 Bit string data sorting apparatus, sorting method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008325692A JP4921453B2 (ja) 2008-12-22 2008-12-22 ビット列データソート装置、方法及びプログラム

Publications (3)

Publication Number Publication Date
JP2010146472A true JP2010146472A (ja) 2010-07-01
JP2010146472A5 JP2010146472A5 (ja) 2012-02-09
JP4921453B2 JP4921453B2 (ja) 2012-04-25

Family

ID=42287131

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008325692A Expired - Fee Related JP4921453B2 (ja) 2008-12-22 2008-12-22 ビット列データソート装置、方法及びプログラム

Country Status (2)

Country Link
JP (1) JP4921453B2 (ja)
WO (1) WO2010073471A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5143797B2 (ja) * 2009-08-18 2013-02-13 株式会社高速屋 ビット列データソート装置、ソート方法及びプログラム
US8515976B2 (en) 2008-12-22 2013-08-20 KOUSOKUYA, Inc. Bit string data sorting apparatus, sorting method, and program
JP5165654B2 (ja) * 2009-08-30 2013-03-21 株式会社高速屋 ビット列データソート装置、方法及びプログラム
JP5512031B2 (ja) * 2012-10-19 2014-06-04 株式会社高速屋 ビット判定回路、ビット列データ選択回路及びビット列データ順次選択回路

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0432924A (ja) * 1990-05-23 1992-02-04 Matsushita Electric Ind Co Ltd 最大値検出装置と最小値検出装置
US5396622A (en) * 1991-12-23 1995-03-07 International Business Machines Corporation Efficient radix sorting system employing a dynamic branch table
US5440734A (en) * 1993-09-14 1995-08-08 International Business Machines Corporation System for MSD radix sort bin storage management
JP2007122302A (ja) * 2005-10-27 2007-05-17 Hitachi Ltd 情報検索システムとインデクス管理方法およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4502223B2 (ja) * 2007-12-05 2010-07-14 株式会社エスグランツ ビット列のマージソート装置、方法及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0432924A (ja) * 1990-05-23 1992-02-04 Matsushita Electric Ind Co Ltd 最大値検出装置と最小値検出装置
US5396622A (en) * 1991-12-23 1995-03-07 International Business Machines Corporation Efficient radix sorting system employing a dynamic branch table
US5440734A (en) * 1993-09-14 1995-08-08 International Business Machines Corporation System for MSD radix sort bin storage management
JP2007122302A (ja) * 2005-10-27 2007-05-17 Hitachi Ltd 情報検索システムとインデクス管理方法およびプログラム

Also Published As

Publication number Publication date
WO2010073471A1 (ja) 2010-07-01
JP4921453B2 (ja) 2012-04-25

Similar Documents

Publication Publication Date Title
WO2017216980A1 (ja) 機械学習装置
US20120209855A1 (en) Bit-string key classification/distribution apparatus, classification/distribution method, and program
CN111027703A (zh) 一种量子线路查询的方法、装置、存储介质及电子装置
CN109067708B (zh) 一种网页后门的检测方法、装置、设备及存储介质
CN112463894B (zh) 一种基于条件互信息和交互信息的多标签特征选择方法
JP4921453B2 (ja) ビット列データソート装置、方法及びプログラム
CN107526746A (zh) 管理文档索引的方法和设备
US11900251B2 (en) Amplification of initial training data
US8515976B2 (en) Bit string data sorting apparatus, sorting method, and program
US8626688B2 (en) Pattern matching device and method using non-deterministic finite automaton
CN110471854A (zh) 一种基于高维数据混合约简的缺陷报告指派方法
JP5143797B2 (ja) ビット列データソート装置、ソート方法及びプログラム
CN109933584A (zh) 一种多级无序索引方法与系统
US4989162A (en) Method of using an accuracy valve in a conflict resolution of a forward inference
CN109740249B (zh) 一种mux树逻辑结构优化方法、模块及存储介质
US8195667B2 (en) Bit string search apparatus, search method, and program
Blake et al. Reinforcement learning based decision tree induction over data streams with concept drifts
US8661061B2 (en) Data structure, data structure generation method, information processing apparatus, information processing system, and computer-readable storage medium having stored therein information processing program
CN115203053B (zh) 基于频繁序列挖掘的代码克隆检测方法
JP2010146472A5 (ja)
CN117708683A (zh) 基于对抗神经网络实现数据共享授权信息管理的方法、装置、处理器及其存储介质
JP2020077236A (ja) 探索プログラム、探索方法及び探索装置
JP2004302754A (ja) データベース検索経路判定方法
CN103348348B (zh) 信息检索装置以及信息检索方法
JP2020123035A (ja) ソート方法、ソートプログラム及びソート装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111215

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111215

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20111215

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120123

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120202

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20150210

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees