JP4502223B2 - ビット列のマージソート装置、方法及びプログラム - Google Patents
ビット列のマージソート装置、方法及びプログラム Download PDFInfo
- Publication number
- JP4502223B2 JP4502223B2 JP2007314782A JP2007314782A JP4502223B2 JP 4502223 B2 JP4502223 B2 JP 4502223B2 JP 2007314782 A JP2007314782 A JP 2007314782A JP 2007314782 A JP2007314782 A JP 2007314782A JP 4502223 B2 JP4502223 B2 JP 4502223B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- node
- merge
- search
- tree
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/32—Merging, i.e. combining data contained in ordered sequence on at least two record carriers to produce a single carrier or set of carriers having all the original data in the ordered sequence merging 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)
- Stored Programmes (AREA)
Description
一方、データベースに関連した処理として、下記特許文献1及び下記特許文献2に記載されているように、データベース中のレコードのマージソートが行われている。このマージソートもビット列のマージソートに帰着される。
図1Aに示すように、ブロック1〜ブロックNにはソート済みのデータが格納されており、ブロック1の最小値は13、ブロック2の最小値は8で、次に大きいデータは22であることが例示されている。同様に、ブロック3の最小値が53、ブロック4の最小値が24、ブロックNの最小値が9であると例示されている。
ある検索キーで検索を行うとき、ルートノードから順次各ノードに保持される検索キーの検査ビット位置を検査していき、検査ビット位置のビット値が1であるか0であるか判定を行い、1であれば右リンクをたどり、0であれば左リンクをたどる。そして、リンク先のノードの検査ビット位置がリンク元のノードの検査ビット位置より大きくなければ、すなわち、リンク先が下方でなく上方に戻れば(図1Bにおいて点線で示されたこの逆戻りのリンクをバックリンクという)、リンク先のノードのインデックスキーと検索キーの比較を行う。比較の結果、等しければ検索成功であり、等しくなければ検索失敗であることが保証されている。
上述の従来の検索手法における問題点を解決するものとして、本出願人は、特願2006−187827において、ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対からなるビット列検索に用いるツリーであって、ルートノードはツリーの始点を表すノードであって、該ツリーのノードが1つのときはリーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードの位置を示す位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含むカップルドノードツリーを用いたビット列検索を提案した。
図2Aを参照すると、ノード101が配列100の配列番号10の配列要素に配置されている。ノード101はノード種別102、弁別ビット位置103及び代表ノード番号104で構成されている。ノード種別102は0であり、ノード101がブランチノードであることを示している。弁別ビット位置103には1が格納されている。代表ノード番号104にはリンク先のノード対の代表ノードの配列番号20が格納されている。なお、以下では表記の簡略化のため、代表ノード番号に格納された配列番号を代表ノード番号ということもある。また、代表ノード番号に格納された配列番号をそのノードに付した符号あるいはノード対に付した符号で表すこともある。
ノード[0]112、ノード[1]113、ノード122、及びノード123の格納された配列要素にそれぞれ付された0あるいは1は、検索キーで検索を行う場合にノード対のどちらのノードにリンクするかを示すものである。前段のブランチノードの弁別ビット位置にある検索キーのビット値である0か1を代表ノード番号に加えた配列番号のノードにリンクする。
図2Bは、本実施形態に係るカップルドノードツリーのツリー構造を概念的に示す図である。図示の6ビットのインデックスキーは、図1Bに例示されたパトリシアツリーのものと同じである。
ツリー構造としては、ルートノード210aの下にノート対201bが、その下層にノード対201cとノード対201fが配置され、ノード対201fの下層にはノード対201hとノード対201gが配置されている。ノード対201cの下にはノード対201dが、さらにその下にはノード対201eが配置されている。
まず、ビット列“100010”を検索キーとしてルートノード210aから処理をスタートする。ルートノード210aの弁別ビット位置230aは0であるので、検索キー“100010”の弁別ビット位置が0のビット値をみると1である。そこで代表ノード番号の格納された配列番号220aに1を加えた配列番号の配列要素に格納されたノード211bにリンクする。ノード211bの弁別ビット位置231bには2が格納されているので、検索キー“100010”の弁別ビット位置が2のビット値をみると0であるから、代表ノード番号の格納された配列番号221bの配列要素に格納されたノード210fにリンクする。
カップルドノードツリーの構成はインデックスキーの集合により規定される。図2Bの例で、ルートノード210aの弁別ビット位置が0であるのは、図2Bに例示されたインデックスキーに0ビット目が0のものと1のものがあるからである。0ビット目が0のインデックスキーのグループはノード210bの下に分類され、0ビット目が1のインデックスキーのグループはノード211bの下に分類されている。
そして2ビット目が1であるインデックスキーは3ビット目の異なるものがあるのでノード211fの弁別ビット位置には3が格納され、2ビット目が0であるインデックスキーでは3ビット目も4ビット目も等しく5ビット目で異なるのでノード210fの弁別ビット位置には5が格納される。
そしてさらにいえば、異なるビット値となるビット位置ごとにビット値が“1”のノードとビット値が“0”のノードとに分岐していることから、ノード[1]側とツリーの深さ方向を優先させてリーフノードをたどると、それらに格納されたインデックスキーは、ノード211hのインデックスキー251hの“101100”、ノード210hのインデックスキー250hの“101011”、・・・、ノード210cのインデックスキー250cの“000111”となり降順にソートされている。
検索キーで検索するときはインデックスキーがカップルドノードツリー上に配置されたルートをたどることになり、例えば検索キーが“101100”であればノード211hに到達することができる。また、上記説明からも想像がつくように、“101101”か“101110”を検索キーとした場合でもノード211hにたどり着き、インデックスキー251hと比較することにより同一のインデックスキーを求める検索が失敗したことが分かる。
本実施形態によるマージソートは中央処理装置302及びキャッシュメモリ303を少なくとも備えたデータ処理装置301によりデータ格納装置308を用いて実施される。カップルドノードツリーが配置されるマージ配列309、マージソートの前段の処理でソートされたキーを格納する複数のソート済みキー配列312、マージ済みであって全体としてソート済みのキーを格納するマージ済みキー配列313と検索中にたどるノードが格納された配列要素の配列番号を記憶する探索経路スタック310を有するデータ格納装置308は、主記憶装置305または外部記憶装置306で実現することができ、あるいは通信装置307を介して接続された遠方に配置された装置を用いることも可能である。
次にステップS610において、図4に示す検索処理を実行し検索結果のインデックスキーを得て、ステップS611に進む。
ステップS612において、配列から空きのノード対を求め、そのノード対のうち代表ノードとなるべき配列要素の配列番号を取得する。
ステップS614に進み、ステップS612で得た代表ノードの配列番号にステップS613で得たブール値を加算した配列番号を得る。
ステップS614で得た配列番号は、挿入キーをインデックスキーとして持つリーフノードが格納される配列要素の配列番号であり、ステップS615で得た配列番号は、そのリーフノードと対を成すリーフノードまたはブランチノードが格納される配列要素のものである。
ステップS616〜ステップS623までの処理は、挿入するノード対のカップルドノードツリー上の位置を求める処理であり、ステップS624以下の処理は各ノードにデータを設定して挿入処理を完成させる処理である。
ステップS617に進み、ステップS616で得た差分ビット列から、上位0ビット目から見た最初の不一致ビットのビット位置を得る。この処理は、例えばプライオリティエンコーダを有するCPUではそこに差分ビット列を入力し、不一致のビット位置を得ることができる。また、ソフト的にプライオリティエンコーダと同等の処理を行い最初の不一致ビットのビット位置を得ることも可能である。
ステップS620に進み、ステップS619で取り出した配列番号の配列要素を配列からノードとして読み出す。
次にステップS622に進み、ステップS621で取り出した弁別ビット位置がステップS617で得たビット位置より上位の位置関係か判定する。ここで上位の位置関係とは、ビット列のより左側の位置、すなわちビット位置の値が小さい位置であることとする。
ステップS624では探索経路スタックからスタックポインタの指す配列番号を取り出す。
次にステップS627において、ステップS615で得た配列番号の配列要素にステップS626で読み出した内容を書き込む。
まず、ステップS702において、配列から空きのノード対を求め、そのノード対のうち代表ノードとなるべき配列要素の配列番号を取得する。次にステップS703において、ステップS702で得た配列番号に0を加えた配列番号を求める。(実際には、ステップS702で取得した配列番号に等しい。)。
図8Aは、削除処理の前段である検索処理の処理フローを示す図であり、図4に示した検索処理において、検索開始ノードをルートノードとし、削除キーを検索キーとしたものに相当する。
次にステップS810において、図4に示す検索処理を実行し検索結果のインデックスキーを得て、ステップS811に進む。
まず、ステップS812で探索経路スタックに2つ以上の配列番号が格納されているか判定する。2つ以上の配列番号が格納されていないということは、言い換えれば1つだけで、その配列番号はルートノードの格納された配列要素のものである。その場合はステップS818に移行し、ステップS801で設定したルートノードの配列番号に係るノード対を削除する。次にステップS819に進み、登録されていたルートノードの配列番号を削除して処理を終了する。
以上、本実施形態のソートマージで用いるカップルドノードツリーに関する技術を説明した。
図9は本実施例の概要を説明する図である。図9の(1)はマージ処理の前段を図9の(2)は後段を説明する図である。
最初のステップ(A)において、ソート済みキー配列312a、312b、312cからそれぞれの最小値480a、480b、480cが取り出され、マージ配列309aに格納される。
ステップ(E)では、マージ配列309dに格納された最小値であるキー481bがマージ済みキー配列313のキー配列番号3の配列要素に格納され、キー481bはマージ配列309dから削除され、マージ配列309eを得る。
図10Aは、例えば図9に示すマージ配列309aをカップルドノードツリーの構造を持つものとして生成し、検索開始ノードの配列番号を設定するエリアに、生成したカップルドノードツリーのルートノードの配列番号を設定するまでの初期処理を説明するものであり、図10Bは、それ以降の最小値を検索してマージを実行する処理を説明する図である。
図10Aに示すように、ステップS1001においてソート済みキー配列を設定する。その際、ソート済みキー配列には識別子が与えられるものとする。図9に示す例では、ソート済みキー配列312a、312b及び312cが設定されている。各ソート済みキー配列を設定するためのソート手法は、任意のものでよく、何ら制限はない。
図11A(1)の例示では、空のノード対401aの代表ノード番号420が得られ、ノード[0]にルートノード410aが格納されている。ルートノード410aのノード種別460aにはリーフノードであることを示す“1”、処理元識別子471aにはソート済みキー配列312aの識別子“a”、インデックスキー450aにはソート済みキー配列312aの最小値“001010”が格納されている。
次に、図10Bを参照して、カップルドノードツリーの最小値検索と削除挿入処理を繰り返してマージソートを実行する処理を説明する。
次にステップS1016において、ルートノードが登録されているか判定する。この判定でルートノードが登録されていないと判定されるのは、図11E(3)、(4)に例示するように、マージ配列の最小値を含むノードがルートノードとなり、ステップS1014でマージ配列が抹消、すなわちルートノードの配列番号が削除され登録が抹消されたときである。
図11E(1)の例示では、次のキーを取り出すソート済みキー312bのポインタの指す配列要素にはキーが格納されていないことから、この場合、ステップS1017では次のキーを取り出すことはできないから、ステップS1018での判定は全てのキーは取り出し済みとなる。
ステップS1019では、挿入キーにステップS1017で取り出したキーを設定し、ステップS1020で、挿入処理のための処理元識別子設定エリアに、ステップS1015で設定した、すなわちステップS1011で求めた処理元識別子を設定する。そして、ステップS1021において、図6A〜図6Cに示す挿入処理を実行してステップS1011に戻る。
ステップS1022の処理により、マージ処理が完了し、すべてのソート済みキー配列に格納されていたキー全体のマージソートが完成する。
リーフノード410cの処理元識別子470cの値は“a”なので、次に図11C(1)に示すように、ソート済みキー配列312aから次のキー481aを取り出してマージ配列に挿入する。次に図11C(2)に示すように、マージ配列の最小値“010011”をマージ済みキー配列313に書き出し、最小値を含むリーフノード410dを削除する。
図12A、図13B及び図14Bは実施例2に関するものであり、図12B、図13Cは実施例3に関するものである。図13Aと図14Aは両実施例に共通である。
図12Aを図9に示す実施例1の概要と比較すると、説明の都合上、ソート済みキー配列312aのキー配列番号3に、キー483aが追加されている。また、ステップ(A)以外におけるマージ配列の部分が異なる。
次のステップ(B)において、マージ配列309aに格納された最小値であるキー480bがマージ済みキー配列313のキー配列番号0の配列要素に格納される。そして、キー480bを取り出した処理元のソート済みキー配列312bからキー480bを取り出した後の最小値であるキー481bを取り出してマージ配列309aに挿入してマージ配列309b’を得る。さらに、マージ配列309b’の最小値であるキー480bがマージ配列309b’から削除され、次のステップ(C)において次のキーが挿入される前のマージ配列309c’を得る。
ステップ(E)では、マージ配列309e’に格納された最小値であるキー481bがマージ済みキー配列313のキー配列番号3の配列要素に格納される。キー481bを取り出したソート済みキー配列312bのキーは全て取り出し済みなので、挿入されるキーはなく、キー481bはマージ配列309d’から削除され、マージ配列309f’を得る。
図13Aは、図12Aの例示におけるマージ配列309aをカップルドノードツリーの構造を持つものとして生成するまでの初期処理を説明するものであり、図13Bは、それ以降のマージ配列から最小値を検索してマージ済み配列に書き込む処理を説明する図である。
次にステップS1311に進み、図5Aに示す最小値検索を実行し、最小値と処理元識別子を求め、ステップS1312において、ステップS1311で得た最小値をマージ済みキー配列に書き出す。
次にステップS1314に進み、ステップS1313でソート済みキー配列識別子設定エリアに設定された識別子の指すソート済みキー配列から、次のキーの取り出しを試みる。
全てのキーを取り出し済みであれば、ステップS1319に進み、取り出し済みでなければ、ステップS1316〜ステップS1318bの処理に進む。
図14Aに示すように、ステップS1402で探索経路スタックに2つ以上の配列番号が格納されているか判定する。図8BのステップS812で説明したのと同じく、2つ以上の配列番号が格納されていないということは、言い換えれば1つだけ配列番号が格納されており、その配列番号はルートノードの格納された配列要素のものである。その場合はステップS1407に移行し、ルートノードの配列番号に係るノード対を削除する。次にステップS1408に進み、登録されていたルートノードの配列番号を削除して処理を終了する。
次に図14Bを参照して、探索経路スタックの検索処理について説明する。
次にステップS1403で、検索用スタックポインタがルートノードの格納された配列要素の配列番号を指しているか判定する。検索用スタックポインタがルートノードの格納された配列要素の配列番号を指していれば、最小値検索の探索経路スタックに格納された配列番号は挿入ノードの配列番号と一致しないことを出力して処理を終了する。
次に実施例3について説明する。後に図13Cを参照して詳細に説明するが、実施例3では、基本的には実施例1と同様に最小値検索、削除処理、挿入処理の順番で処理を行うが、削除処理の後に削除ノードの親ノードを検索開始ノードとして中間的に最小値検索を行い、その最小値と次に処理元から取り出されるキーとの大小比較を行い、次のキーが小さければ挿入処理はスキップして直接マージ済みキー配列に書き出すものである。
図12Bを図9に示す実施例1の概要と比較すると、説明の都合上、ソート済みキー配列312cのキー配列番号2に、キー482cが追加されている。また、ステップ(A)以外におけるマージ配列の部分が異なる。
次のステップ(B)において、マージ配列309aに格納された最小値であるキー480bがマージ済みキー配列313のキー配列番号0の配列要素に格納され、キー480bはマージ配列309aから削除される。次にキー480b削除後のマージ配列309aの次の最小値であるキー480aと処理元識別子を求める。そして、キー480bを取り出した処理元のソート済みキー配列312bからキー480bを取り出した後の最小値である次のキー481bを取り出してキー480aとの大小比較を行う。次のキー481bがマージ配列309aの次の最小値であるキー480aより大きいので、キー481bをマージ配列309aに挿入してマージ配列309b’を得る。
次にステップS1351に進み、図5Aに示す最小値検索を実行し、最小値と処理元識別子を求め、ステップS1352において、ステップS1351で得た最小値をマージ済みキー配列に書き出す。
次にステップS1354に進み、削除ノード設定エリアにステップS1351あるいは後記ステップS1358で求めた最小値を含むノードの配列番号を設定し、次にステップS1355において、マージ配列から削除ノードを削除するとともに、削除ノードの直近上位の親ノードを得る。なお、ステップS1355の処理の詳細は、先に図14Aを参照して説明したものである。
全てのキーを取り出し済みであれば、ステップS1352に戻り、図12Bのステップ(E)、ステップ(F)について説明したように、挿入処理をスキップしてマージ済みキー配列への最小値書き出しと削除処理を行う。
ステップS1363において、挿入処理のための処理元識別子設定エリアに、ステップS1353で設定した、すなわちステップS1351で求めた処理元識別子を設定し、ステップS1364で、挿入キーにステップS1359で取り出したキーを設定する。そして、ステップS1365において、図6A〜図6Cに示す挿入処理を実行し、ステップS1350に戻る。
ステップS1801〜ステップS1809の処理は、図4に示す第1の実施形態のビット列検索の基本動作を示すフローチャートのステップS401〜ステップS409と同じであるから、説明を省略する。
図19Aは、本実施態様に係るカップルドノードツリーに格納されたインデックスキーの最小値を求める処理を示したフローチャートである。
図19Bは、本実施態様に係るカップルドノードツリーに格納されたインデックスキーの最大値を求める処理を示したフローチャートである。
ステップS2001において、検索開始ノードの配列番号を設定するエリアにルートノードの配列番号を設定し、ステップS2002において、検索キーに挿入キーを設定する。
ステップS2011において挿入キーとステップS2010で得られたインデックスキーを比較し、等しければ挿入キーは既にカップルドノードツリーに存在するのであるから、挿入は失敗となり、処理を終了する。挿入キーとステップS2010で得られたインデックスキーが等しくなければ、ステップS2011aに進み、キー情報設定エリアのインデックスキーに挿入キーを設定する。
図20Bは、挿入するノード対のための配列要素を準備する処理を説明する処理フロー図である。図6Bに示す第1の実施形態のものと、図20Aにおける検索処理が図18に示すものである点を除いて同一であるので、説明を省略する。
まず、ステップS2102において、配列から空きのノード対を求め、そのノード対のうち代表ノードとなるべき配列要素の配列番号を取得する。次にステップS2103において、ステップS2102で得た配列番号に0を加えた配列番号を求める。(実際には、ステップS2102で取得した配列番号に等しい。)
次にステップS2103aにおいて、キー情報の記憶領域の空き領域へのポインタを取得し、ステップS2103bで取得してポインタの指す記憶領域のキー情報の処理元識別子に挿入キーを取り出したソート済み配列の識別子を、インデックスキーに挿入キーを書き込む。
図22Aと図22Bは、本実施態様に係るカップルドノードツリーのインデックスキーのうち、特定のインデックスキーを削除する処理フローを説明する図である。
次に、図23A、図23Bを参照して第2の実施形態に係るカップルドノードツリーを用いた本発明の実施例4を説明する。
図23A及び図23Bは、本実施例におけるカップルドノードツリーを用いたマージソート処理フローを説明する図である。
本実施例は、第1の実施形態に係るカップルドノードツリーを用いた実施例2において、第2の実施形態に係るカップルドノードツリーを用いるようにしたものである。
図24Aは、例えば図12Bに示すマージ配列309aをカップルドノードツリーの構造を持つものとして生成し、検索開始ノードの配列番号を設定するエリアに、生成したカップルドノードツリーのルートノードの配列番号を設定するまでの初期処理を説明するものであり、図24Bは、それ以降の最小値を検索してマージを実行する処理を説明する図である。
また、図24Bに示すステップS2410〜S2423の処理も、図13Bに示す実施例2の処理と比較すると、ステップS2411の検索処理が第2の実施態様に係る図19に示すものであること、ステップ2418における挿入処理が第2の実施態様に係る図20A〜図20Cに示すものであること及びステップS2420の削除処理の次に、ステップS2420aが挿入され、ステップS2410で得た参照ポインタの指す記憶領域を開放することを除けば、図13Bに示すステップS1310〜ステップS1323と同じであることを指摘して、説明の繰り返しを省略する。
100 配列
101 ノード
102 ノード種別
103 弁別ビット位置
104 代表ノード番号
111 ノード対
112 ノード[0]、代表ノード
113 ノード[1]、代表ノードと対をなすノード
118 インデックスキー
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 配列
310 探索経路スタック
311 キー情報の記憶領域
312 ソート済みキー配列
313 マージ済みキー配列
Claims (15)
- コンピュータが実行するマージソート方法であって、昇順あるいは降順にソート済みのビット列からなるキーを格納した複数のソート済みキー記憶領域からそれぞれ最小値あるいは最大値であるキーを取り出してマージ用キー列を生成し、該マージ用キー列のうちの最小値あるいは最大値であるものを該マージ用キー列から取り出してマージ済みキー記憶領域に格納し、該マージ済みキー記憶領域に格納されたキーが取り出された前記ソート済みキー記憶領域から次の最小値あるいは次の最大値である次のキーを取り出して前記マージ用キー列に挿入し、該マージ用キー列のうちの最小値あるいは最大値であるキーを該マージ用キー列から取り出して前記マージ済みキー記憶領域に格納することを前記複数のソート済みキー記憶領域からすべてのキーを取り出して前記マージ済みキー記憶領域に格納するまで繰り返すことにより、前記複数のソート済みキー記憶領域に格納された全てのキーを昇順あるいは降順にソートするビット列のマージソート方法において、
前記マージ用キー列のキーを、
ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは検索対象のビット列からなるインデックスキーを含み、前記ツリーの任意のノードを検索開始ノードとして前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成されたカップルドノードツリー上のインデックスキーとして保持するとともに、前記リーフノードは前記キーの格納されていた前記ソート済みキー記憶領域を識別する処理元識別子を含むものとし、
前記ソート済みのキーを格納した複数のソート済みキー記憶領域からそれぞれ最小あるいは最大のキーを取り出して前記カップルドノードツリーを生成するマージツリー生成ステップと、
該カップルドノードツリーを用いて最小値あるいは最大値検索を行い、検索結果の最小値である最小キーあるいは最大値である最大キーと前記処理元識別子を取得し該最小キーあるいは最大キーを前記マージ済みキー記憶領域に格納するマージステップと、
該最小キーあるいは最大キーを前記カップルドノードツリーから削除するキー削除ステップと、
前記マージステップにおいて取得された処理元識別子が示す前記ソート済みキー記憶領域から前記最小キーの次の最小値である次のキーあるいは前記最大キーの次の最大値である次のキーを取り出す次キー取り出しステップと、
該取り出した次のキーを前記カップルドノードツリーに挿入する次キー挿入ステップと、
を備え、
前記マージステップ、前記キー削除ステップ、前記次キー取り出しステップ及び前記次キー挿入ステップを、前記複数のソート済みキー記憶領域からすべてのキーを取り出して前記マージ済みキー記憶領域に格納するまで繰り返すことにより、
前記複数のソート済みキー記憶領域に格納されたキーを昇順あるいは降順に前記マージ済みキー記憶領域に格納することを特徴とするビット列のマージソート方法。 - 請求項1に記載のビット列のマージソート方法において、
前記次キー取り出しステップは、前記取得された処理元識別子が示す前記ソート済みキー記憶領域から前記次のキーが取り出せたか判定する次キー取り出し判定ステップを含み、
該次キー取り出し判定ステップで前記次のキーが取り出せないと判定した場合に、前記次キー挿入ステップをスキップすることを特徴とするビット列のマージソート方法。 - 請求項2に記載のビット列のマージソート方法において、
前記キー削除ステップは、前記最小キーあるいは最大キーを前記カップルドノードツリーから削除した後に前記カップルドノードツリーの前記ルートノードが登録されているか判定するルートノード登録判定ステップを含み、
前記ルートノード登録判定ステップにおいて前記ルートノードが登録されていないと判定された場合に未取り出しのキーが存在する前記ソート済みキー記憶領域から順次最大あるいは最小のキーまで取り出して前記マージ済みキー記憶領域に格納する最終マージステップを備えることを特徴とするビット列のマージソート方法。 - 請求項1に記載のビット列のマージソート方法において、
前記キー削除ステップ、前記次キー取り出しステップ及び前記次キー挿入ステップの実行順序を、前記次キー取り出しステップ、前記次キー挿入ステップ及び前記キー削除ステップの実行順序とすることを特徴とするビット列のマージソート方法。 - 請求項4に記載のビット列のマージソート方法において、
前記削除された最小値あるいは最大値を含むノードの直近上位のノードを前記マージステップにおける最小値あるいは最大値検索の検索開始ノードとすることを特徴とするビット列のマージソート方法。 - 請求項5に記載のビット列のマージソート方法において、
前記挿入された次のキーをインデックスキーとして含むノードの直近上位のノードである挿入ノードが、前記最小値検索あるいは最大値検索におけるルートノードから該最小値あるいは最大値を含むリーフノードに至る検索経路に存在するか判定する挿入ノード検索ステップと、
前記挿入ノード検索ステップで該挿入ノードが前記検索経路に存在すると判定されるとルートノードを検索開始ノードとして再度最小値検索あるいは最大値検索を行う再検索ステップと、
を備えることを特徴とするビット列のマージソート方法。 - 請求項1に記載のビット列のマージソート方法において、
前記キー削除ステップの次に、該キー削除ステップで削除された最小値あるいは最大値を含むノードの直近上位のノードを検索開始ノードとして最小値あるいは最大値検索を行う中間検索ステップと、
前記次キー取り出しステップの次に、該次キー取り出しステップで取り出した前記次のキーが前記中間検索ステップで求めた最小値あるいは最大値より小さいかあるいは大きいか判定する次キー大小判定ステップを備え、
前記次のキーが前記最小値あるいは最大値より小さいかあるいは大きい場合、該次のキーを前記マージ済みキー記憶領域に格納して再度前記次キー取り出しステップを実行し、
前記次のキーが前記最小値あるいは最大値より大きいかあるいは小さい場合、前記次キー挿入ステップを実行することを特徴とするビット列のマージソート方法。 - 請求項7に記載のビット列のマージソート方法において、
前記次キー取り出しステップは、前記取得された処理元識別子が示す前記ソート済みキー記憶領域から前記次のキーが取り出せたか判定する次キー取り出し判定ステップを含み、
該次キー取り出し判定ステップで前記次のキーが取り出せないと判定した場合に、前記次キー挿入ステップとルートノードを検索開始ノードとして最小値検索あるいは最大値検索を行う検索ステップとをスキップすることを特徴とするビット列のマージソート方法。 - 請求項1〜8のいずれか1項に記載のビット列のマージソート方法において、
前記カップルドノードツリーのリーフノードには、処理元識別子とインデックスキーに替えて、該処理元識別子とインデックスキーの配置された領域へのポインタを格納し、処理元識別子とインデックスキーの取得は、該ポインタを介して行われることを特徴とするビット列のマージソート方法。 - 請求項1〜9のいずれか1項に記載のビット列のマージソート方法をコンピュータに実行させるためのプログラム。
- 請求項1〜9のいずれか1項に記載のビット列のマージソート方法をコンピュータに実行させるためのプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
- コンピュータが実行するマージソート方法であって、昇順あるいは降順にソート済みのビット列からなるキーを格納した複数のソート済みキー記憶領域からそれぞれ最小値あるいは最大値であるキーを取り出してマージ用キー列を生成し、該マージ用キー列のうちの最小値あるいは最大値であるものを該マージ用キー列から取り出してマージ済みキー記憶領域に格納し、該マージ済みキー記憶領域に格納されたキーが取り出された前記ソート済みキー記憶領域から次の最小値あるいは次の最大値である次のキーを取り出して前記マージ用キー列に挿入し、該マージ用キー列のうちの最小値あるいは最大値であるキーを該マージ用キー列から取り出して前記マージ済みキー記憶領域に格納することを前記複数のソート済みキー記憶領域からすべてのキーを取り出して前記マージ済みキー記憶領域に格納するまで繰り返すことにより、前記複数のソート済みキー記憶領域に格納された全てのキーを昇順あるいは降順にソートするビット列のマージソート方法におけるマージ用キー列のためのツリー状のデータ構造において、
ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるカップルドノードツリーであって、
前記ルートノードは、前記ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、該ツリーのノードが2つ以上のときは前記ブランチノードであり、
前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードの位置を示す情報を含み、
前記リーフノードは、前記ソート済みキー記憶領域から取り出したキーであって検索対象のビット列からなるインデックスキーと前記キーの格納されていた前記ソート済みキー記憶領域を識別する処理元識別子を含むものであり、
前記コンピュータが、
前記ソート済みのキーを格納した複数のソート済みキー記憶領域からそれぞれ最小あるいは最大のキーを取り出して前記カップルドノードツリーを生成するマージツリー生成ステップと、
該カップルドノードツリーを用いて最小値あるいは最大値検索を行い、検索結果の最小値である最小キーあるいは最大値である最大キーと前記処理元識別子を取得し該最小キーあるいは最大キーを前記マージ済みキー記憶領域に格納するマージステップと、
該最小キーあるいは最大キーを前記カップルドノードツリーから削除するキー削除ステップと、
前記マージステップにおいて取得された処理元識別子が示す前記ソート済みキー記憶領域から前記最小キーの次の最小値である次のキーあるいは前記最大キーの次の最大値である次のキーを取り出す次キー取り出しステップと、
該取り出した次のキーを前記カップルドノードツリーに挿入する次キー挿入ステップと、
を備え、
前記マージステップ、前記キー削除ステップ、前記次キー取り出しステップ及び前記次キー挿入ステップを、前記複数のソート済みキー記憶領域からすべてのキーを取り出して前記マージ済みキー記憶領域に格納するまで繰り返すことにより、
前記複数のソート済みキー記憶領域に格納されたキーを昇順あるいは降順に前記マージ済みキー記憶領域に格納するビット列のマージソート方法、
を実行することを可能とすることを特徴とするデータ構造。 - 請求項12記載のデータ構造を有するデータを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
- 昇順あるいは降順にソート済みのビット列からなるキーを格納した複数のソート済みキー記憶領域からそれぞれ最小値あるいは最大値であるキーを取り出してマージ用キー列を生成し、該マージ用キー列のうちの最小値あるいは最大値であるものを該マージ用キー列から取り出してマージ済みキー記憶領域に格納し、該マージ済みキー記憶領域に格納されたキーが取り出された前記ソート済みキー記憶領域から次の最小値あるいは次の最大値である次のキーを取り出して前記マージ用キー列に挿入し、該マージ用キー列のうちの最小値あるいは最大値であるキーを該マージ用キー列から取り出して前記マージ済みキー記憶領域に格納することを前記複数のソート済みキー記憶領域からすべてのキーを取り出して前記マージ済みキー記憶領域に格納するまで繰り返すことにより、前記複数のソート済みキー記憶領域に格納された全てのキーを昇順あるいは降順にソートするビット列のマージソート装置において、
前記マージ用キー列のキーを、
ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるビット列検索に用いるツリーであって、前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、ビット列検索を行う検索キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは、検索対象のビット列からなるインデックスキーと前記キーの格納されていた前記ソート済みキー記憶領域を識別する処理元識別子を含み、前記ツリーの任意のノードを検索開始ノードとして前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の検索キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたインデックスキーを、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記検索キーによる検索結果である検索結果キーとするように構成されたカップルドノードツリー上のインデックスキーとして保持するマージツリー格納手段と、
前記ソート済みのキーを格納した複数のソート済みキー記憶領域からそれぞれ最小あるいは最大のキーを取り出して前記カップルドノードツリーを生成して前記マージツリー格納手段に格納するマージツリー生成手段と、
該カップルドノードツリーを用いて最小値あるいは最大値検索を行い、検索結果の最小値である最小キーあるいは最大値である最大キーと前記処理元識別子を取得し該最小キーあるいは最大キーを前記マージ済みキー記憶領域に格納するとともに、該最小キーあるいは最大キーを前記カップルドノードツリーから削除するマージ手段と、
前記マージ手段により取得された処理元識別子が示す前記ソート済みキー記憶領域から前記最小キーの次の最小値である次のキーあるいは前記最大キーの次の最大値である次のキーを取り出すとともに、該取り出した次のキーを前記カップルドノードツリーに挿入する次キー挿入手段と、
を備え、
前記マージ手段、及び前記次キー挿入手段により、前記複数のソート済みキー記憶領域からすべてのキーを取り出して前記マージ済みキー記憶領域に格納することにより、
前記複数のソート済みキー記憶領域に格納されたキーを昇順あるいは降順に前記マージ済みキー記憶領域に格納することを特徴とするビット列のマージソート装置。 - 請求項14に記載のビット列のマージソート装置において、
前記マージ手段は、該削除した最小値あるいは最大値を含むノードの直近上位のノードを検索開始ノードとして最小値あるいは最大値検索を行う中間検索部を備えるとともに、
前記次キー挿入手段は、前記取り出した次のキーが、前記中間検索部が求めた最小値あるいは最大値より小さいかあるいは大きいか判定する次キー大小判定部を備え、
前記次キー判定部が、前記次のキーが前記最小値あるいは最大値より小さいかあるいは大きいと判定すると、
前記マージ手段は該次のキーを前記マージ済みキー記憶領域に格納し、
前記次キー挿入手段は再度前記次キーを取り出し、
前記次キー判定部が、前記次のキーが前記最小値あるいは最大値より大きいかあるいは小さいと判定すると、
前記次キー挿入手段は該次のキーを前記カップルドノードツリーに挿入することを特徴とするビット列のマージソート装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007314782A JP4502223B2 (ja) | 2007-12-05 | 2007-12-05 | ビット列のマージソート装置、方法及びプログラム |
CN200880119130XA CN101884043B (zh) | 2007-12-05 | 2008-10-30 | 比特序列合并排序装置、方法以及程序 |
EP08856620A EP2244192A4 (en) | 2007-12-05 | 2008-10-30 | BIT CHAIN COMBINATION SORTING DEVICE, METHOD AND PROGRAM |
PCT/JP2008/003116 WO2009072233A1 (ja) | 2007-12-05 | 2008-10-30 | ビット列のマージソート装置、方法及びプログラム |
US12/801,319 US8332410B2 (en) | 2007-12-05 | 2010-06-03 | Bit string merge sort device, method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007314782A JP4502223B2 (ja) | 2007-12-05 | 2007-12-05 | ビット列のマージソート装置、方法及びプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2009140161A JP2009140161A (ja) | 2009-06-25 |
JP2009140161A5 JP2009140161A5 (ja) | 2010-02-18 |
JP4502223B2 true JP4502223B2 (ja) | 2010-07-14 |
Family
ID=40717419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007314782A Expired - Fee Related JP4502223B2 (ja) | 2007-12-05 | 2007-12-05 | ビット列のマージソート装置、方法及びプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US8332410B2 (ja) |
EP (1) | EP2244192A4 (ja) |
JP (1) | JP4502223B2 (ja) |
CN (1) | CN101884043B (ja) |
WO (1) | WO2009072233A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8495701B2 (en) * | 2008-06-05 | 2013-07-23 | International Business Machines Corporation | Indexing of security policies |
JP4921453B2 (ja) * | 2008-12-22 | 2012-04-25 | 株式会社エスグランツ | ビット列データソート装置、方法及びプログラム |
US8515976B2 (en) | 2008-12-22 | 2013-08-20 | KOUSOKUYA, Inc. | Bit string data sorting apparatus, sorting method, and program |
CN101968807A (zh) * | 2010-10-15 | 2011-02-09 | 北京思在信息技术有限责任公司 | 一种内容检索的方法及装置 |
US8527546B2 (en) * | 2010-11-25 | 2013-09-03 | International Business Machines Corporation | Generating a checkpoint image for use with an in-memory database |
US9155320B2 (en) * | 2011-07-06 | 2015-10-13 | International Business Machines Corporation | Prefix-based leaf node storage for database system |
US9904721B1 (en) * | 2013-01-25 | 2018-02-27 | Gravic, Inc. | Source-side merging of distributed transactions prior to replication |
CN104424204B (zh) * | 2013-08-21 | 2017-08-11 | 华为技术有限公司 | 索引机制合并方法、搜索方法、装置及设备 |
US9588978B2 (en) | 2013-09-30 | 2017-03-07 | International Business Machines Corporation | Merging metadata for database storage regions based on overlapping range values |
JP6016215B2 (ja) | 2013-12-20 | 2016-10-26 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | トライ木構造を有するレコード群を高い効率でマージソートする方法、装置及びコンピュータプログラム |
WO2015097834A1 (ja) * | 2013-12-26 | 2015-07-02 | 株式会社東芝 | 通信制御装置、通信制御方法およびプログラム |
US9519687B2 (en) | 2014-06-16 | 2016-12-13 | International Business Machines Corporation | Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices |
CN105468603B (zh) * | 2014-08-22 | 2019-04-02 | 腾讯科技(深圳)有限公司 | 数据选择方法及装置 |
US10042887B2 (en) | 2014-12-05 | 2018-08-07 | International Business Machines Corporation | Query optimization with zone map selectivity modeling |
JP6380952B2 (ja) | 2014-12-12 | 2018-08-29 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 多数の要素からなる配列をソートする装置、方法およびプログラム |
CN109271132B (zh) * | 2018-09-19 | 2023-07-18 | 中南大学 | 一种基于机器学习模型的排序方法 |
US11048756B2 (en) * | 2019-01-31 | 2021-06-29 | EMC IP Holding Company LLC | Inserting datasets into database systems utilizing hierarchical value lists |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001357070A (ja) * | 2000-06-13 | 2001-12-26 | Nec Corp | 情報検索方法及び装置 |
JP2006163565A (ja) * | 2004-12-03 | 2006-06-22 | Mitsubishi Electric Corp | ソート処理装置及びソート処理方法及びプログラム |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287494A (en) * | 1990-10-18 | 1994-02-15 | International Business Machines Corporation | Sorting/merging tree for determining a next tournament champion in each cycle by simultaneously comparing records in a path of the previous tournament champion |
ATE210856T1 (de) * | 1994-06-06 | 2001-12-15 | Nokia Networks Oy | Verfahren zum daten speichern und daten wiederfinden und eine speicheranordnung |
US5852826A (en) * | 1996-01-26 | 1998-12-22 | Sequent Computer Systems, Inc. | Parallel merge sort method and apparatus |
JP3344559B2 (ja) | 1998-06-19 | 2002-11-11 | 三菱電機株式会社 | マージソート処理装置 |
US6571244B1 (en) * | 1999-10-28 | 2003-05-27 | Microsoft Corporation | Run formation in large scale sorting using batched replacement selection |
EP1107126A2 (en) * | 1999-12-08 | 2001-06-13 | Hewlett-Packard Company, A Delaware Corporation | A fast, efficient, adaptive, hybrid tree |
US6931424B1 (en) * | 2000-03-21 | 2005-08-16 | Alantro Communications, Inc. | Storage efficient minimization logic |
US6675163B1 (en) * | 2000-04-06 | 2004-01-06 | International Business Machines Corporation | Full match (FM) search algorithm implementation for a network processor |
EP1648060B1 (en) | 2004-10-14 | 2008-07-23 | Samsung Electronics Co.,Ltd. | Funnel structure vertical external cavity surface-emitting laser (VECSEL) |
JP2006187872A (ja) | 2004-12-28 | 2006-07-20 | Canon Inc | インクジェット記録装置およびインクジェット記録方法 |
JP2006187827A (ja) | 2005-01-05 | 2006-07-20 | Toyo Tire & Rubber Co Ltd | 研磨パッド |
JP2006293619A (ja) | 2005-04-08 | 2006-10-26 | Toshiba Tec Corp | コンピュータ装置及びログ出力プログラム |
JP2007114915A (ja) | 2005-10-19 | 2007-05-10 | Kazumi Sonomoto | 自己診断チェックシステムを活用したユーザー側に設置されている通報装置からの情報送出による自動メンテチェックシステム。 |
JP4271227B2 (ja) | 2006-10-30 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4271214B2 (ja) * | 2006-07-07 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4379894B2 (ja) * | 2006-11-28 | 2009-12-09 | 株式会社エスグランツ | カップルドノードツリーの分割/結合方法及びプログラム |
JP4402120B2 (ja) | 2007-01-24 | 2010-01-20 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4514768B2 (ja) | 2007-04-19 | 2010-07-28 | 株式会社エスグランツ | カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム |
EP2149845B1 (en) * | 2007-04-19 | 2013-06-12 | Kousokuya, Inc. | Coupled node tree backup/restore apparatus, backup/restore method, and program |
-
2007
- 2007-12-05 JP JP2007314782A patent/JP4502223B2/ja not_active Expired - Fee Related
-
2008
- 2008-10-30 WO PCT/JP2008/003116 patent/WO2009072233A1/ja active Application Filing
- 2008-10-30 CN CN200880119130XA patent/CN101884043B/zh not_active Expired - Fee Related
- 2008-10-30 EP EP08856620A patent/EP2244192A4/en not_active Withdrawn
-
2010
- 2010-06-03 US US12/801,319 patent/US8332410B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001357070A (ja) * | 2000-06-13 | 2001-12-26 | Nec Corp | 情報検索方法及び装置 |
JP2006163565A (ja) * | 2004-12-03 | 2006-06-22 | Mitsubishi Electric Corp | ソート処理装置及びソート処理方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2009072233A1 (ja) | 2009-06-11 |
US8332410B2 (en) | 2012-12-11 |
US20100250560A1 (en) | 2010-09-30 |
EP2244192A4 (en) | 2011-11-23 |
CN101884043A (zh) | 2010-11-10 |
JP2009140161A (ja) | 2009-06-25 |
CN101884043B (zh) | 2012-07-04 |
EP2244192A1 (en) | 2010-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4502223B2 (ja) | ビット列のマージソート装置、方法及びプログラム | |
JP4498409B2 (ja) | データベースのインデックスキー更新方法及びプログラム | |
JP4271227B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4271214B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4527753B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4402120B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4379894B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP4514771B2 (ja) | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム | |
JP4514768B2 (ja) | カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム | |
JP5473893B2 (ja) | コード列検索装置、検索方法及びプログラム | |
JP4439013B2 (ja) | ビット列検索方法及び検索プログラム | |
WO2009122651A1 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4417431B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP4567754B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP2011018296A (ja) | カップルドノードツリーのインデックスキー挿入/削除方法 | |
EP2149845A1 (en) | Coupled node tree save/restore method, longest consistence/shortest consistence retrieval method, bit retrieval method and memory medium | |
JP5220057B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4813575B2 (ja) | ビット列検索装置 | |
WO2009093290A1 (ja) | ビット列検索装置、検索方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091225 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091225 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20091225 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20100119 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100325 |
|
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: 20100414 |
|
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: 20100414 |
|
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: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 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: 20130430 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160430 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |