JPH01248232A - レコード列組合せ方法 - Google Patents

レコード列組合せ方法

Info

Publication number
JPH01248232A
JPH01248232A JP3520389A JP3520389A JPH01248232A JP H01248232 A JPH01248232 A JP H01248232A JP 3520389 A JP3520389 A JP 3520389A JP 3520389 A JP3520389 A JP 3520389A JP H01248232 A JPH01248232 A JP H01248232A
Authority
JP
Japan
Prior art keywords
record
tree
node
list
tournament
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.)
Pending
Application number
JP3520389A
Other languages
English (en)
Inventor
Roberts Case Douglas
ダグラス・ロバート・ケイス
Mannwarling Conner Watson
ワトソン・マンワーリング・コナー
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH01248232A publication Critical patent/JPH01248232A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明は、コンピュータの分類命令を用いるプログラム
・ディジタル・コンピュータによってデータを分類及び
組合せる技術に関し、特に、単一のキー比較を用いてキ
ーによるレコードを順序づける交換選択分類に関する。
B、先行技術及びその問題点 Knuth著、The Art of Compute
rProgramming 、 Volume 3、S
orting andSearching ” 、 A
ddison Wesley PublishingC
ompany 、1973には、トーナメント木を備え
た交換選択を用いることによりディジタル・コンピュー
タにおいてデータの分類乃至は組合せを達成する方法が
詳細に述べられている。トーナメント木は、−貫して番
号付けられた(conseguentively−nu
mbered)ノードの整数番号を含むフォーマットを
備えたデータ構造である。木の根は、単一のノードから
成る。そのノードから対称的分岐構造が現われる。根の
ノードを除いて木における各ノードは、単一の親ノード
を有する。各親ノードは、2つの子ノードに分岐する。
予め分類されたレコード列を単一のレコード列に組合せ
るために、トーナメント木が用いられる。
木の各ノードは、組合せ処理におけるステップを表わす
。そのステップては、各々が個々の入力レコード列から
出発している1対のレコードが比較される。各レコード
は、その比較の基礎となるキー値を含んでいる。最小の
キー値を有するレコードは、比較が行なわれるノードか
ら親ノードへと進められ、その親ノードでは、別の勝者
レコードと比較される。敗者レコードは、その後の比較
の間により大きなキーのレコードによって取って代わら
れるまで子ノードに止まる。
予め分類されたレコード列の分類/組合せは、DFSO
RTユーティリティを用いて、18Mシステム/370
−XAのようなディジタル・コンピュータにおいて実行
される。そのシステム/370−XAにおいては、分類
及び組合せの処理手順が、IBMシステム/370−X
Aアセンブラ命令UPT及びCFCに基づ(ルーチンで
実施される。
トーナメント木において交換選択を用いると、人力レコ
ード列を分類して単一の組合された出力レコード列を生
成するのに必要な比較の数は、nを分類されているレコ
ードの数とすると、n (logz n)のようになる
、入力レコード列がランダムに順序付けられたデータを
含むときには、レコードを分類するのに必要な比較の数
はn (logzn)に近づく。入力レコード列中のレ
コードが予め分類されているときには、それらは非ラン
ダムな順になっている。入力レコード列が非ランダムな
順にレコードを有する場合には、トーナメント木を有す
る交換選択よりほかには分類アルゴリズムを見出すこと
ができる。幾くつかの例においては、これらのアルゴリ
ズムが、n (logt n)回よりも少ない比較でレ
コード列を効率良(組合せることができる。そのような
アルゴリズムは、前記KnuthO本の“merges
ort”及び”heapsort”の項に述べられてい
る。しかしながら、これらの他のアルゴリズムは、トー
ナメント木を伴なう使用のために新しいアセンブリ・レ
ベルの命令を生成する必要があるか、又はトーナメント
木を用いないかである。
最大の効率でコンピュータの資源が用いられるようにす
るために、分類の処理手順を工夫することにおける主目
的は、比較を削除することである。
Lorinは、この目標について、”Sorting 
andSort Systems” 、Addison
−Wesley PublishingCompany
 51975、PP、131に明白に述べている。
Lor inは、レコードの比較的長くて非ランダムな
ストリングが入力レコード列に存在する確率が利用でき
ることを仮定している。このようにLorinは、スト
リングが終了した時を認識する手段を提供することが望
ましいことを暗に認識していた。
これまで、トーナメント木を有する交換選択を使用する
アルゴリズムにおいて入力レコード列における長くて非
ランダムなレコード・ストリングの存在を検出して利用
する手段は、提供されていない。
C1問題点を解決するための手段 本発明の目的は、非ランダムに順序付けられたレコード
の入力列を組合せる交換/選択トーナメント木方法の効
率を向上させることである。
本発明では、トーナメント木を用いる交換選択によって
組合されている入力レコード列がしばしばそれらの構成
部分の非ランダムな配列を示すという事実を利用してい
る。特徴として、単一の順序付けられた出力レコード列
が作成されるまで、ランダムに順序付けられた入力レコ
ードのセットから単一の順序付けられたレコード・リス
トを生成するための分類/組合せ処理手順が、より少数
だがしかしより大きなレコード列へレコードを繰返し順
序付けることを伴なう。より大きなレコード列を作成す
るために連続的に組合される入力レコード列は、比較的
早いうちから非ランダムな順序をとり始める。非ランダ
ムに順序付けられたレコードの複数個例えば(q −1
)個の入力列がトーナメント木の使用によって組合され
ているなら、木の1つの列を離しておいてそのメンバを
木により目下作成されているレコードと比較することに
より、トーナメント木のサイズを増大させることなくq
個の入力レコード列を組合せることができる。現トーナ
メント勝者が木へ供給されている(q−1)個の入力レ
コード列における全てのレコードのうちで最小のキー値
を有しているので、現勝者よりも小さなキー値を有する
木から離れているレコード列からの1個以上のレコード
のストリングが、木を介して比較を続ける必要なしに、
アセンブルされているレコード列へ挿入され得る。
トーナメント勝者レコードとオフリスト・レコードとの
間での比較が、既存のコンピュータ命令を用いて行なわ
れる。
木から離れているリストからのレコードがトーナメント
木からの最小キーのレコードよりも小さなキーを有する
ものであるなら、トーナメント木は全く更新される必要
はない。トーナメント勝者とオフリスト・レコードとの
間の比較によって、新しい最小キーを有するレコードを
作成することができる。このレコードは、ただ1回の比
較を用いて出力リストへ提供され得る。このような場合
は、人力レコード列が非ランダムに順序付けられたレコ
ードを含むときにしばしば起きる。
さらに、本発明では、トーナメント勝者が木から離れて
いるリストからのレコードよりも小さなキーを有するな
ら、その木から離れているリストが、現トーナメント勝
者が現われたトーナメント木におけるリストと交換され
る。これは、ポインタを用いて効率良く行なわれる。こ
れによって、記憶装置中のデータを再配置する必要が除
かれる。
本発明は、プログラム記憶式制御処理装置においてトー
ナメント選択分類を利用してq個の分類されたストリン
グ及びレコードを組合せる方法として特徴付けられる。
この方法は、レコードの(q −1)個のストリングを
組合せるための2進の交換/選択木をその処理装置中で
生成するステップを含む。データのq個のストリングの
うちの残りの1個が分離ストリングとして提供される。
次に、(q−1)個のストリングのうちの最小の大きさ
のキーを有するレコードが、トーナメント木を使用する
交換選択処理手順によって決定される。それから、この
最小の大きさのキーを有するレコードが、分離ストリン
グの最小の大きさのキーを有するレコードと比較される
。こうして、より小さなキーを有するレコードがその処
理から出力される。より小さなキーを有するレコードが
分離ストリングからのものであるなら、比較ステップが
繰り返される。さもなければ、決定及び比較のステップ
が順番に繰り返される。
より小さなキーを有するレコードが分離ストリングから
のものでないなら、その分離ストリングが(q−1)個
のストリングのうちの1個と交換され、決定及び比較の
ステップが繰り返される。
本発明は、交換選択トーナメント木により分類及び組合
せが適合された既存の命令を用いてディジタル・コンピ
ュータにおいて実施することができるものである。
D、実施例 第3図を参照して、本発明が実施される汎用システム環
境を説明する。本発明の方法は、1台以上のCPUを含
むタイプのコンピユーテイング・システムにおいて実行
可能である。各CPUは、主記憶装置及び1台以上の直
接アクセス記憶装置を有する。これらの直接アクセス記
憶装置は、米国特許第3400371号明細書に示され
ているように、各CPUに結合されている。この米国特
許のシステムは、コンピユーテイング及びオペレーティ
ング・システムの全ての資源を含む。それらの資源は、
本発明の方法を含む処理の実行のために必要である。そ
の中央演算処理装置(CPU)としては、好ましくは、
拡張アーキテクチャ(XA)モードのもとで実行される
18Mシステム/370−XAである。
第3図では、本発明の実行のために前記米国特許のタイ
プのマシンのようなディジタル・コンピュータ10が提
供されている。コンピュータ10は、内部記憶装置の他
に装W12のような直接アクセス記憶装置を含んでいる
。コンピュータ10は、またIBM社から販売されてい
るデータ機能分類プログラムDFSORTのような分類
/組合せユーティリティ14を含む。分類/組合せユー
ティリティ14は、プログラム16に応答してディジタ
ル・コンピュータ10によって実行される。
プログラム16は、分類入力ファイルは(分類/組合せ
ユーティリティ14用の入力ファイル)における複数の
ランダムな順序のレコードを分類出力ファイル20(分
類/組合せユーティリティにより提供される出力ファイ
ル)へ分類して組合せるためにコンピュータ10中に入
力される。
通常、分類/組合せユーティリティ14は複数の段階の
処理手順によって分類入力ファイル18を処理する。複
数の段階の処理手順は、レコード列発生の第1段階及び
それに続く組合せ段階の1回以上の繰返しを含む。その
レコード列発生段階では、順序付けられたレコードの複
数の列が分類入力ファイル1日の順序付けられていない
レコードから発生される0分類されたレコード列が組合
せ処理へ入力される。組合せ処理は、組合されていない
レコード列に比べてより大きなレコード集団を伴なうよ
り少ないレコード列を生成する。結局、1つ以上の最終
的な組合されたレコード列が発生され、分類出力ファイ
ル20に設定され、そしてコンピュータ10により出力
される。
さて、第4図を参照して、分類/組合せユーティリティ
動作のレコード列発生段階の間に生成された入力レコー
ド列を組合せるために、交換選択トーナメント木の使用
について説明する。組合せの結果が、出力レコード列で
ある。この出力レコード列では、入力レコード列のレコ
ードの全てが順次順序付けられる。入力レコード列はレ
コードのリンクされたリスト30乃至34である。リス
ト30のようなレコードのリンクされたリストは、記憶
装置における種々のアドレス可能な記憶位置に複数のレ
コードを含む。それらのレコードは、記憶装置において
連続していなくても良いが、しかし、それらはポインタ
の使用によりリンクされる。従って、人力レコード列3
0における各レコード30a、30b及び30cは、記
憶位置の連続レコード列からなる。それらの記憶位置で
は、ポインタ(PTR)及びレコード・データ(DAT
)を含む情報が記憶される。ポインタは、そのポインタ
を含むレコードの後に続く列のレコードのアドレスであ
る。従って、レコード30aのPTRは、レコード30
bの記憶アドレスであり、一方、レコード30bのPT
Rは、レコード30Cの記憶アドレスである。以下、同
様である。各レコードのDAT部分は、数字のキー情報
を含む。
この情報によって、レコードを分類し、昇順キー又は降
順キーの大きさ順に配置することができる。
従って、レコード30aは、レコード列30における最
小(或は最大)のキーの大きさを有するレコードであり
、一方、レコード30bは、次に小さい(次に大きい)
キー・データを有する。以下、同様である。入力レコー
ド列30を構成するレコ−ドのリンクされたリストの構
造は、また、入力レコード列31−34の構造にも当て
はまる。
出力レコード列40は、入力レコード列3〇−34の汎
用構造と同じリンクされたリストの構造を示す。出力レ
コード列40においては、レコード40a−40dは、
キーの大きさ順になっている。即ち、各レコードのPT
Rフィールドが次により大きい(或はより小さい)キー
を有するレコードのアドレスを保持する。レコードは、
それを直ちに処理する出力列レコードのPTRフィール
ドにそのアドレスを設定することにより、簡単に出力レ
コード列に挿入される。ポインタ・フィールドを用いる
リンクされたリストのフォーマットは、都合良いことに
、レコードを連続するアドレス位置に与えるこめに記憶
装置中でそれらを移動させる必要を除く。この技術は、
続いて、分類/組合せユーティリティ14の実行に必要
な処理時間を低減させる。
第4図では、交換選択トーナメント木がコンピュータ1
0の記憶装置中に作成される。この木は、5つの内部ノ
ード50を有する。ノード50の各々は、番号O乃至4
のうちの1つを内部に指示子として有している。さらに
、各ノードは、NXXの形式でそのノード・アドレス対
応子に関連付けられている。各ノード・アドレス対応子
の数字部分は、ノード・アドレスの最下位バイトの16
進表示である。以後の説明では、これは、“ノード・イ
ンデックス”である。文字Nは、トーナメント木の基底
アドレスを示す。
第4図に示されているように、トーナメント木は、内部
ノードの数を有している。この数は、組合されている入
力レコード列の数に等しい。さらに、これまでに与えら
れたレコード列についての説明によって、各レコード列
がレコードのランダムでない/即ち非ランダムなストリ
ングからなることが確立される。
その特定の構造においては、第4図に例示されたトーナ
メント木は、連続的に番号付けられたノードO乃至4を
含む。ノード0は木の根ノードで1つのノード子として
ノード1を有する。このノードは、木の頂点ノードとし
て参照される。この頂点ノードから始まって、各ノード
は、左側と右側に子ノードを有する。このことについて
は、ノード2がノード1の左側の子ノードであり、ノー
ド3がノード1の右側の子ノードである。ノード1は、
ノード2及び3の親ノードとして参照される。このこと
は、各子ノードからその親ノードへ向って引かれた矢印
によって第4図では概略的に示されている。ただ1つの
例外は、根ノード0であり、これは単一の子ノード1を
有している。
第4図のトーナメント木が、分類されるレコード列30
乃至34を出力レコード列40へ組合せるために用いら
れる。各入力レコード列が、第4図のノードについての
子ノード不在位置に割り当てられる。従って、入力レコ
ード列30及び31がノード4についての子ノード不在
位置に割り当てられている。それらの位置は、番号8及
び9を破線で囲むことにより表わされている。子ノード
不在位置は、外部ノード51として示されている。
さらに、外部ノード5乃至9の各々は、内部ノードO乃
至4と同じ16進表示のアドレスに割り当てられる。
第4図のトーナメント木は、1連のステップから成る繰
返しの組合せ処理を実行するために用いられる。組合せ
処理における各ステップ(トーナメント)で組合せレコ
ード列(出力レコード列40)の最初の部分と入力レコ
ード列30乃至34の各々の最後の部分とが存在するこ
とが指摘される。組合せ処理の各繰返しは、入力レコー
ド列30乃至34のまだ組合されていない部分の全てか
ら最小(或いは最大)のキーを有するレコードを選択す
ることからなる。その木においては、各内部ノードは概
念的には夫々の入力レコード列から1つのレコードを含
んでいる。各内部ノードは、入力レコード列30乃至3
4の残りの部分に含まれる最小のキーを有するレコード
を見出すように処理される。“消去トーナメント (elimination tourmoment)”
における比較動作の結果を表わす。そのトーナメントが
完了した後には、各内部ノードは関連する゛″敗者lo
ser) ’“しコードを有する。このレコードは、そ
のノードによって表わされる比較におけるより大きなキ
ーの大きさを有していた。各ノードにおける敗者レコー
ドのほかに、1つのレコード(そのトーナメントの勝者
)がノード0と関連付けられる。このレコードは通常の
出力プロシージャ(OUT)52へ渡される。このプロ
シージャは、出力レコード列における最後のレコードの
PTRフィールドにそのアドレスを設定することにより
出力レコード列40の一番最後におけるレコードとリン
クさせる。
一旦、消去トーナメントの勝者がノードOに現われると
、次のステップは、その勝者レコードが生じた同じ入力
レコード列から新しいレコードを導入し、それから前の
勝者の端末ノードにおける新しいレコードでそのトーナ
メントを再生することである。最後のトーナメント勝者
が入力レコード列32から現われるとすると、その木へ
入力される次のレコードは、入力レコード列32のその
勝者に続く次のレコードとなる。このレコードは、ノー
ド2に位置する敗者レコードと比較されることになる。
その敗者レコードである。入力レコード列32から次の
レコードを導入する結果として生じた勝者は、ノード1
へ渡される、そこで、すぐ前のトーナメントの勝者を生
んだ前のコンテストの敗者と比較される。
レコードが第4図の木へ導入されるたびに、木における
全てのノードによって表わされる全ての比較を行なう必
要がないことは、認識されるである。実際、前の勝者レ
コードが加わったノードでのみ比較を行なえば十分であ
る。従って、レコード列32からのレコードの導入によ
って消去トーナメントを実行することには、新しい勝者
を生むためのノード2における比較とノード1における
比較の2つの比較のみが必要なだけである。
第4図に例示されたトーナメント木の使用は、レコード
のキーの大きさを効率的に比較し且つどの外部ノードで
各々の勝者レコードが生じたかを記憶している方法を支
援するのに十分なプログラミングの存在を仮定している
。そのようなプログラミングは、CFC(比較及びコー
ド・ワードの形成)命令及びUPT (木の更新)命令
によって例証される。これらの命令は、“”IBMシス
テム1370拡張アーキテクチャの動作原理”と題する
IBMの出版物阻/5A22−705−1に詳細に記載
されている。
CFC命令は、第5図及び第6図を参照すれば理解でき
る。第4図の木において各ノードで敗者レコードを複製
するというよりもむしろ、第5図に例示された形式を有
する敗者レコードの表示がCFC命令によって発生され
る。以下の説明では、この表示を“ノード値”と呼ぶ。
第5図では、ノードxxにレコード56の表示54が記
憶されている。レコード56は、記憶位置AB(16進
)に記憶され、そしてバイト0乃至n−1からなるnバ
イト・レコード・キーを含む。次に、2バイト・フィー
ルドがインデックス・キーを含む。このキーは、外部ノ
ードに対するポインタである。
その外部ノードに対して、レコード56を含む入力レコ
ード列が割り当てられる。レコード56に続く入力レコ
ード列における次のレコードに対するポインタが、4バ
イトの後続記憶位置フィールドに記憶される。最後に、
組合せ連鎖ポインタ(MCP)は、レコード56の最後
の4バイトを含む。レコード56がトーナメント勝者の
ときには、OUT処理52は、出力レコード列40にお
ける最後のレコードのMCPフィールド中にレコード5
6のアドレスABを設ける。レコード56に続く次のト
ーナメント勝者が決まると、そのレコードのアドレスが
レコード560MCPに設定される。
レコード56の表示54は、2つの連続するワードから
成るダブルワード・データ・オブジェクトである。各ワ
ードは、ノードxXに記憶された4バイトから成る。表
示54の2番目のワードであるバイト4乃至7は、レコ
ード56のアドレスABである。1番目のワードの最初
の2バイトは、レコード56のレコード・キー・バイト
のうちの1つに対するインデックスであり、一方、表示
54のバイト2及び3は、そのインデックスにより参照
されたバイトに先行する2バイトから成るハーフワード
の補数を含む。第5図の例では、インデックスは例えば
レコード・キーにおけるバイト2を参照している。一方
、レコード・キーのバイトO及びlのその補数から成る
ハーフワードは、表示54の最初のワードを半分にした
ときの2番目の半分のところに存在する。
CFC命令は、第6図に例示されているように、2つの
レコードのハーフワードごとの比較によって表示54中
にコードワードを形成する。CFC(及びtJPT)命
令の実行の説明においては、汎用レジスタを有する前記
米国特許のようなタイプのCPUが仮定されているが、
各レジスタは、1ワードに相当するデータの32ビツト
(ビット0〜31)即ち4バイトを記憶する能力を有す
る。
第6図が示しているように、CFC命令は、等しくない
大きさを見つけるまで昇順に2つのレコードの対応する
ハーフワードを比較する。CFC命令の実行においては
、汎用レジスタ2 (CR2)の位置16乃至31にイ
ンデックスが設定される。一方、レコード58及び6o
のアドレスAB及びCpは夫々GR1及びCR3に設定
される。
実行において、CFC命令は、レコード58及び60の
キーにおけるハーフワードを介して順序付けるために、
CR2中のインデックスをGRI及びCR3中のアドレ
スの各々と結合する。各ハーフワードでは、CFC処理
はハーフワードを比較して、次のハーフワードを指し示
すためにCR2中のインデックスを増分させる。ハーフ
ワードの大きさが等しいなら、次のハーフワードが得ら
れ、インデックスが増分される。ハーフワードが等しく
ないときには、CFC処理手順は、2つのレコードのう
ちのどちらにより小さい大きさのハーフワードが見出さ
れるかを示しながら、また、CR2においてはより小さ
な2番目に関するインデックス及び補数化されたハーフ
ワードを示しながら、条件コードの設定を戻す。トーナ
メント木のプログラムは、条件コード及びCR2の内容
に応じてGRI又はCR3のいずれかの内容からノード
値をアセンブルする。
UPT命令の処理手順は、トーナメント木を更新するた
めに実行される。その処理手順が、第7図に示されてい
る。UPT処理手順は、各トーナメント・ステップにつ
いて一度実行され、端末ノードを介して第4図のトーナ
メント木へレコードを効果的に導入するとともに、一連
のノード比較を実行してその結果として生じるトーナメ
ント勝者を決める。現入力レコード列における新しいレ
コードの先行者であるトーナメント勝者を参照として用
いて、その木へ導入されるべきレコードに対してCFC
命令の実行がUPT命令の実行に先立って行なわれる。
その結果として生じる制御ワード(CWD)がGRO中
に設けられる。一方、導入されつつあるレコードのアド
レス(RCADD)がGRIに設けられる。次に、木の
基本インデックス(TBA)がCR4に設けられ、一方
、導入されつつあるレコードについてのノード・インデ
ックス(NNDX)がCR5に設けられる。
このことが、第7図の処理手順のステップ70に示され
ている。
ステップ71では、UPT命令によるノード・インデッ
クスの処理が展開される。このことについては、CR5
の内容が、1ビツトずつ右ヘシフトされて一時ワード記
憶域(TWD 1 )中に設けられる。その後、TWD
 1のビット29がゼロにされる。この処理の効果は、
第4図における外部ノード9のノード・アドレスN48
を観ることにより理解することができる。N=Oが木に
ついての基底アドレスなら、端末ノード9に対するイン
デックスの16進表示が次のように与えられる。
即ち、 (0048) 16進=(0000000001001
000)2進1ビツト位置だけ右ヘシフトされると、2
進表示は次のようになる。即ち、 GR5においては、右側の最大ビットは、ビット位置2
9を占める。このビット位置は、TWDlにおいてゼロ
化が行なわれると、以下の表示を与える。即ち、 (0000000000100000)2進−(002
0) 16進これは、内部ノード4即ち外部ノード9の
親ノードのインデックスを与える。この処理手順の繰り
返しが外部ノード9からノード4.2及び1を通ってノ
ード0までの経路を定めることになる。
このようにして、UPT命令の実行により第4図のトー
ナメント木を介して経路が定められる。
ステップ71の各実行に続いて、ノードOに達したかど
うかを決める判断ステップ72が行なわれる。ノードO
に達すると、判断ステップ72からイエスの出口が採ら
れ、OUT処理52(第4図)により勝者レコードが出
力レコード列40の終りに設けられる。ノード0に達し
ていないなら、ノーの出口が採られ、木における次のノ
ードの完全アドレス(TADD)が、ステップ74にお
いて、GRA中の木の基数の内容をTWDlの内容に加
えて、TADDにそのアドレスを記憶することにより、
計算される。ステップ75において、アドレス指定され
た木のノードに記憶されたノード値(DWRD)が取り
出され、−時記憶域(TWD2)に制御ワード(CWR
D)がそしてTWD3にレコード・アドレス(RCAD
D)が設けられる。ステップ76では、現木ノードに対
するインデックスがGR5に設けられ、それからGRO
及びTWD2中のCWRDがステップ78で比較される
ステップ78では、それらのCWRDが等しいなら、記
憶されたCWRDをノード及びGR2にそして対応する
レコードのアドレスをGR3に設けることによって、G
R2及びGR3が初期設定される。
UPT命令実行の流れはこの時点で終了する。
UPT命令実行の流れが終了したときに木を更新する処
理を続行するために、判断ステップ78からの“=”分
岐に続いて、CFC命令が再び実行される。これによっ
て、勝者が提供される。敗者のダブルワードがノードに
記憶され、UPT実行処理手順が再入力される。この連
係が第7図の破線のブロックに示されている。
判断ステップ78の比較がTWD2よりもGROの内容
の方が大きいことを示しているときには、UPT命令実
行の流れはステップ71へ分岐して戻る。比較されてい
る2つのレコードのCWRD中のハーフワード値が補数
の形をなすので、左側の分岐(GRO>TWD2)は、
ノードにおけるレコードのキーの大きさがそのノードへ
進んで来るレコードのキーの値よりも大きいことを示し
ている。それ故に、その進んで来るレコードが勝者であ
り、木の上へと次のノードへ進む。
逆に、GROの内容がTWD2の値よりも小さいときに
は、そのノードにおいて表わされているレコードが勝者
である。ステップ80において、2つのレコードを表わ
すダブルワードが交換される。そのノードへ進んで来る
レコード(敗者)を表わすダブルワードがノードに残さ
れ、一方、そのノードに目下存在しているレコードのダ
ブルワードが次のノードへ進む。
第4図では、入力レコード列31からノード9を介して
トーナメント木へ導入されたレコードは、トーナメント
・セツションを開始する。このセツションでは、木を通
る更新経路に沿って一連の比較が実行される。この更新
経路は、ノード4、ノード2及びノード1を通って行き
、ノードOで終了する。最後の勝者レコードの経路にお
いてコード・ワードを比較するときには、更新経路にお
ける全てのコード・ワードは、最後の勝者に関する。
これらのコード・ワードを比較するときには、先に説明
したように大きいコード・ワードが小さなキーを表わす
し、小さなキーは大きいコード・ワードを表わす。コー
ド・ワードが等しくないなら、大きいコード・ワードを
有するノード・エントリが木の上へ移動すべきである。
先行技術のCFC及びUPT命令実行の流れを参照する
ことにより、次のことが確立される。即ち、第4図の木
を使用する交換選択方法により出力レコード列に押し出
される順序は、結果として昇順又は降順のいずれでも生
じ得る。
次の表Iを参照することにより、第4図の交換選択木の
動作を理解することができる。
表I 表Iでは、各入力レコード列が4個又は5個のレコード
を含んで示されている。それらのレコードの記憶位置は
、左側先頭列の記憶位置の項目に示されている。レコー
ドのバイト0乃至5におけるレコード・キーの値のみが
表Iには示されていて、インデックス・キー、後続の位
置(successorlocation)及びMCP
フィールドが、この例では省かれている。この表Iはま
た、各入力レコード列をそのトーナメント木の端末ノー
ドと関連付けている。
第4図の木を用いて表■の入力レコード列に対して交換
選択組合せ処理が実行される。その組合せ処理は、3つ
のステップへ再分される。即ち、1、始動ステップによ
って入力レコード列30乃至34から最初のレコードが
取り出されてトーナメント木に設定される。その木への
各最初のレコードの導入のために、初めに全てゼロであ
る最小可能性のキー値についてそのコード・ワード値を
計算する。このコード・ワードは、実レコードのアドレ
スを含む2番目のワードと共に、木における適切なノー
ドに設定されるダブルワードのノード値を形成する。始
動の後に、内部ノード値が、5つの入力レコード列の各
々から1つであるが、木に設定されたことになる。それ
で、4つの内部ノード1乃至4の各々が1つのノード値
を含み、また勝者レコードについてのノード値がノード
Oへ移動する。
2、各勝者がトーナメント木から現われると、組合せ処
理が繰返さる。各反復が1つの新しいレコードについて
のダブルワードを木へ導入し、新しい勝者レコードにつ
いてのダブルワードを生成する。勝者を加えた木は、組
合されつつある各入力レコード列から1つのノード値を
正確に含まなければならない。従って、木へ導入される
新しいノード値は、先の繰返し勝者が発生した入力レコ
ード列と同じ入力レコード列から来なければならない。
3、入力レコード列の最後のレコードについてのノード
値の生成では、次の繰返しにおいて木へ導入されるべき
その入力レコード列からの後続のレコードは何ら存在し
ないことになる。従って、組合せの順序がそのような発
生セグメントについては1つだけ減少しなければならな
い。この処理は、ランナウト“(runout)″とし
て参照されるが、第4図及び表■の例における4通り、
3通り、2通り及び1通りの組合せについて夫々1回以
上の繰返しから成る。ランナウトは、その例では、レコ
ード列からの次の入力レコードがその先行レコードより
も小さいことが発見されたときに、起きる。
このことは、レコード列中断として参照される。
始動ステップでは、各入力レコード列の最初のレコード
についてのノードのダブルワードが形成される。そのノ
ード値の最初のワードは、全てゼロを含むレコード・キ
ーに対してCFC命令を実行することにより形成される
コード・ワードである。そのノードのダブルワードの2
番目のワードは、そのダブルワードによって表わされる
レコードのアドレスである。各入力レコード列の最初の
レコードについてのノードのダブルワードが、次の表■
において16進表示でリストされている。
表■ 28   0006   FFFC000010303
00006FFFB   0000104038   
0006   FPFA   0000105040 
  0004   FFFE   000010804
8   0006   FFFO00001060レコ
ード列の始動において次にUPT命令が用いられる。ま
ず、木の各内部ノードについてのコード・ワード位置が
全て1 (X’  FFFF  FFFF’)に初期化
される。これによって木は見かけの小さいキーを有する
レコードで占められる。
表■における各レコードについては、そのノード・イン
デックスがGR5にロードされ、UPTが6からO基底
への変位で実行される。始動処理の完了時には、木のノ
ード内容は次のようになる。
即ち、 木      出力リスト OLH1030 0: 1030 1 : 1040 2 : 1060  3 : 10504 : 108
0 この例示においては、第4図のトーナメント木の内゛部
ノードのみが与えられている。各々は、レコードのアド
レスと関連している。そのレコードのダブルワード表示
がそのノードについてのノード値を構成している。従っ
て、レコード1030のダブルワード表示が、ノードO
のノード値を構成している。そのノード値は、出力処理
52へ渡される。その出力処理は、組合せ連鎖ポインタ
(MCP)のエントリによりレコード1030を出力リ
スト・ヘッダ(OHL)にリンクさせる。
表■かられかるように、レコード103oは最小の羊−
値を有している。トーナメント木を用いる交換選択処理
手順とCFC及びUPT命令との次の繰返しにおいて、
以下の結果が生じる。即ち、0 : 1040    
 0LH10301: 1060     1030 
 10402 : 1070  3 : 1050ここ
で、レコード1030は端末ノード28における入力レ
コード列32から発生したので、そのレコード列32の
次のレコード(レコード1070)が内部ノード2でト
ーナメント木へ導入される。UPT順序付けの結果、ノ
ード2にレコード1070が位置することになり、ノー
ド1にレコード1060がそしてノード0にレコード1
040が位置することになる。出力処理がレコード10
30のMCPにレコード1040のアドレスを挿入する
入力レコード列30乃至34の組合せは、全てのレコー
ド列が出力リストへ組合されてしまうまで、前記した処
理手順を繰返して完了する。
さて、第1図及び第2図を参照して本発明を説明する。
第1図は、q個の入力レコード列をトーナメント木によ
って1つの出力レコード列に組合せる処理手順を表わし
ている。このトーナメント木は、別の“木を離れた(o
f f −tree)”入力レコード列と共にq−1個
の入力レコード列を組合せる。
第1図は、8個の入力レコード列を組合せるように設定
されたトーナメント木で9個のレコード列を組合せるの
に本発明がどのように用いられるのかを示している。ト
ーナメント木はインデックス0:、8:、10:、18
:、20:、28:、30:及び38:により示された
内部ノードを含む。8個の入力レコード列のために8個
の外部ノードが提供されている。それらのノードは、ト
ーナメント木構造に接続されている。この木構造は、第
4図のトーナメント木について先に説明したように機能
する。また入力リスト80も提供されている。この入力
リストは、トーナメント木を離れていて、“分離リスト
(separate 1ist) ”として参照される
。分離リスト80は、通常の連係リスト入カレコード列
である。この入力レコード列は、トーナメント木へ提供
される入力レコード列と組合されることになっている。
本発明の方法では、トーナメントの勝者がトーナメント
木の繰返し後に現われたとき、その勝者が分離リストの
先頭における最小の大きさのレコード(SLRCD)と
比較される。この比較がブロック82により表わされて
いる。3つの結果が可能である。即ち、勝者=SLRC
D、勝者>5LRCD及び勝者〈5LRCDである。本
発明の実施においては、レコード・キーの大きさが等し
いなら、CFC命令がステップ84で実行され、比較が
再びステップ82で行なわれる。勝者レコードのキーの
大きさが5LRCDのキーの大きさよりも大きい場合に
は、出力処理が呼び出され、ステップ86で5LR1C
Dが出力レコード列に出力される。それから、ステップ
87で次の5LRCDが分離リスト80から得られ、比
較ステップ82が再び実行される。
勝者のキーの大きさが5LRCDのキーの大きさよりも
小さいときには、勝者を出力リストへリンクするために
出力処理がステップ88で呼び出され、トーナメント勝
者を得た連係リストの残りの部分がステップ90で分離
リストと交換される。
レコード列の交換においては、トーナメント勝者の入力
レコード列の残りの部分が分離リストとして表示される
。一方、前の分離リストは、もはやトーナメント木の端
末ノードに接続される。その端末ノードには、勝者レコ
ードの入力レコード列が先に付加されている。レコード
列の交換が一旦完了すると、別のトーナメントの繰返し
がステップ92におけるUPT命令の実行によってなさ
れる。
本発明においては、第1図に示された参照番号82.8
6及び87を含むループが重要である。
トーナメント勝者が第1図のトーナメント木に付与され
る(q −1)個のレコード列の最小の大きさのキー値
をそのレコードに提供しているので、5LRCDの大き
さがまたそれらのレコードよりも小さいことは値かであ
る。さらに、現勝者よりも小さなキー値を有する分離リ
スト8o中の5LRCDにリンクされたレコードのスト
リングが存在する場合には、これらを検出して単一の比
較(ブロック82)ごとに出力リストへ出力することが
できる。第1図の例では、トーナメント勝者を“′負か
す(beat) ” S L RCDの各々は、トーナ
メント木における2つの比較結果をセーブする。
第1図の処理手順を実行する好実施例が、表■のアセン
ブル・コード・リスティングに示されている。このリス
ティングは、第2図を参照して読まれる。第2図におい
ては、第1図のトーナメント木におけるノード値につい
てのデータ・フォーマットが参照番号90によって示さ
れている。−方、表示されたレコードが参照番号92に
よって示されている。第2図においては、ダブルワード
のノード値90の第2ワードがレコード92へのポイン
タを含み、一方、第1ワードがCFC命令の実行により
生成されるコード・ワードCWRDを含む。第1ワード
と第2ワードの内容を逆にしても良い。ノード値90の
ポインタ・ワードは、レコード92のアドレスADDL
Hを含む。レコード92はに個の連続バイトから成る。
入力レコード列生成段階において、入力リストを含むレ
コードがCFC命令を含む処理手順によって非ランダム
順に配置される。その処理手順は、レコードを順番にす
るためにCFC命令によって生成されるCWRDを用い
、そしてポインタを使用してレコードを順番にリンクす
る。従って、レコード列生成段階の終了時には、複数の
入力レコード列がアセンブルされていることになる。各
入力レコード列は、レコード92のフォーマットを有す
るレコードのリンクされたリストを含む。レコード列生
成段階の終了時に、レコード92は、そのレコード列に
おいてレコード92に続くレコード94のアドレスAD
DLM:を構成するポインタ(PNTR)が入力された
第1ワード(バイト0乃至3)を有する。次に、バイト
4乃至7を含むコード・フィールド・ワード(CFLD
)は、レコード列が生成されたときにCFC命令により
レコードについて生成された最後のCWRDを含む。最
後に、レコード・キーがバイト8乃至に−1において見
出される。入力レコード列が初期設定段階において第1
図のトーナメント木にリンクされるときには、レコード
列における最初のレコードのCWRDが、ゼロの見かけ
の値に対してキーワードの大きさを比較するCFC命令
の実行によって計算される。そのCWRDは外部ノード
の1つを通って木へ移される。外部ノードのインデック
スがレコードのCFLDに設けられる。木におけるレコ
ードがトーナメント勝者となると、その勝者に続く入力
レコード列におけるレコードが上記のようにして木へリ
ンクされる。
第1図においては、トーナメント木が次のような追加を
伴なって上記のようにして始動される。
即ち、全てのリストのうち最も小さなキーの値を有する
レコードが先頭であるリストが、分離リスト80として
指定されていることである。このことは、例えば、q個
のリストを組合せるトーナメント木の単一の繰返しによ
って行なわれる。第1図に示されているように、レコー
ド81が分離リスト80の“ヘッダとして指定される。
本発明の好実施例が表■のアセンブル・コード・リステ
ィングに示されている。
表■ 木を指し示しそして分離リストの先頭を指し示すことに
より開始して、勝者レコードについてのオフセット値の
コードを得る。
5TAIliT L R4,0tlTTREE   出
力組合せ木を得るL R6,5EPLIST   分離
リストの先頭を得る L R7、COMPLEN   比較されるキーの長さ
を得る L RIO,0UTLSIZ  出力リストのサイズを
得る L R1,4(、R4)トーナメント勝者レコードを得
る L Ro、 0(、R4)   勝者のコードを得る分
離リストから次のレコードを得る。
5ELLNEXT L  R15,0(、R6)   
次の5LRCDを得るLTRR15、R15リストの終
了についてテストする BNR5ELLLETE     リストの終了なら、
木の根を削除する 5LRCDに対する勝者をテストする。
CL  RO14(R15) BH5ELLSWAP    大きい方へ分岐悼勝者の
方が小さい BL  5ELLLIST    小さい方へ分岐→5
LRCDの方が小さ い コードが等しかったので、どのレコードが小さいかを決
めるためにもう1つCFCを発行する。
LRR3、R1勝者のキーのポインタ についてコピーする Ll(R2,4(、I’115)  CFCについての
オフセットを得る LRR1、R15分離レコードをCFCレジスタへ移す CFC8(R7)     勝者に対して5LRCDを
比較する BN)l 5ELLO讐    5LRCDが大きくな
いならそれと共に続行する ST  I?2.4(、R15)  St、RCDにつ
いて新コードを設定する トーナメント勝者が最小であったので、新しい分離リス
トを確立するために勝者のレコード列と分離リストとを
交換する。
5ELLSWAP ST R1、O(、R6)勝者を出
力リストへ加える しRR6、R1それを出力リストの最 後にする LRR1、R15分離を交換にする 5ELLECT  L  R5,4(、R6)勝者につ
いての外部ノード・インデックスを 得る L  RO14(、I’ll)交換についてのコードを
得る ST R5,4(、R1)コードを外部ノード・インデ
ックスと交換す ス LTRRO、RO出力リストの最後に等しいかどうか調
べる BM SEI、LOFF   木の更新をバイパスする 勝者についての交換を選択する。
5ELLDATE UPT       木の更新を開
始するBNE 5ELLOFF   木が更新されてい
るなら出る SRL R2,16コードをオフセットに変換する CFC8(R7)    比較して新コードを形成する ST R2,0(R5、R4)更新コードをセーブする ST I?3.4 ([?5、R4)より大きなキー・
ボポインタをセーブす る B  5ELLDATE   木の更新を再開する勝者
リストを削除する 5ELLLETE ST R1,0(、R6)勝者を出
力リストに付加する 木の空きについてテストするためにコード化する BM 5ELLSTOP   木が空いているなら停止
する 勝者リストを分離リストにするためにコード化する BM SELLMPTY   木が空いているなら組合
せを停止にかかる 木を調整するためにコード化して更新のために古くて高
位レコードを交換するようにする。
B  5ELLECT   新しい勝者の選択にかかる 木の空き状態を処理する SELLMPTY SLRRO、l?0   リスト・
コードを高い状態にする SLRR1、R1勝者レコードを空にセットする B  5ELLOFF   選択されるレコードをカウ
ントにかかる 分離リストの先頭が最低位であるので、このレコードは
1回の比較で得られる。分離リストの先頭を出力リスト
に付加する。
5HLLOW   LRRO、R2更新コードをセーブ
する LRR1、R3勝者をコピーする 5ELLLIST  LR’R6、R155LRCDを
出力の一番最後にする 選択されたレコードの数をカウントし終えて、存在する
レコードの数の限界に達したかどうかを調べる。
5ELLOFF BCT RIO,5ELLNEXT 
 限界に達していないなら続行する 限界に達したなら、終了する。もはや全てのレコードが
出力リスト中に存在する。
表■では、5TARTシーケンスが第1図のトーナメン
ト末の基底アドレスをレジスタR4にそして分離リスト
のヘッダ・アドレス(SEPLIST)をレジスタR6
にロードする。レコードのキー・フィールドの比較につ
いての限界がレジスタR7中に入力され、出力リストの
サイズがレジスタR7中に入力される。次に、初期設定
された木のノードO:におけるノード値がレジスタRO
(CWRD)及びR1(勝者レコードのアドレス)にロ
ードされる。
5ELLNEXTにおいては、リストの先頭に続(分離
リストのレコードがリストの先頭におけるポインタから
得られる。5ELLNEXTに直ぐ続いているLTR−
BNP命令によって、分離リストの終了が見出されると
、5ELLLETEに分岐する。されなければ、第1図
の比較82が、BNP乃至5ELLLETE : CL
−BH−BLに続く命令シーケンスによって実行される
分離リストの先頭に対するトーナメント勝者の比較が、
CL(比較論理)命令によって行なわれる。この命令が
、分離リスト・レコードのCWRDに対してROにおけ
る勝者のCWRDを比較する。このCWRDは、R15
におけるアドレスよりも4バイトずれている。表■のリ
スティングを通る第1経路においては、R15が分離リ
ストにおける2番目のレコードを有することになり、ま
たそれがこのレコードのCWRDとなる。このレコード
は、ROにおけるトーナメント勝者レコードのCWRD
に対して比較される。ここでは、次のことが仮定しであ
る。即ち、分離リスト・ヘッダのアドレスもまた出力リ
スト制御ブロックのポインタ・フィールド中へ人力され
ていて、これにより、分離リスト・ヘッダを出力リスト
への第1エントリとして確立することができることであ
る。
この時点からの出力処理手順が出力リストへの最後のエ
ントリのPNTRフィールドへのエントリをなすことか
らなることは明らかである。
それから、比較された両レコードのCWRDが等しいと
仮定しである。もはや、CFC命令の準備のためにLR
R3、R1から始まる流れへ処理は移る。そのCFC命
令の実行によってレコードのより低位のものが決まる。
さて、木の一番上の勝者が2つのレコードのより小さな
キーの大きさを有していると仮定する。
これがCL命令の次のBH命令によって決められると、
流れは5ELLSWAPへ分岐する。この決定がCFC
命令の実行の結果生じるなら、分離リスト・レコードに
ついての新しいCWRDが、5ELLSWAPの直前の
ST、R2,4収R15)命令によってそのコード・フ
ィールド中に設けられ、それから命令の流れが5ELL
SWAPへ進む。
5ELLSWAPでは、トーナメント勝者が最小のキー
を有するものであったので、もはや、新しい分離リスト
を提供するために処理手順が勝者が分離リストと組合さ
った流れから換わる。初めに、トーナメント勝者が、ア
ドレスがレジスタR6中に存在する出力リストへの最後
のエントリのポインタ・フィールド中へそのアドレス(
レジスタR1中に含まれる)を入力することにより、出
力リストに付加される。次に、付加されたばかりの出力
リストの最後のアドレスがレジスタR6中に入力され、
分離リストの先頭のアドレスがレジスタR1中に人力さ
れる。5ELLECT命令で始まる処理手順の流れにお
いては、最後のトーナメント勝者が組合さったレコード
列を連結する端末ノードのインデックスが、レジスタ5
中にロードされる。一方、分離リストのCWRDがレジ
スタ5中に設けられる。それから、トーナメント木から
離されているレコード列の端末ノード・インデックスが
、命令ST  R5,4(R1)によって交換されてい
る分離リストのCFLD中に設けられる。
5ELLECTシーケンスにおける最後の2つの命令は
、交換レコードについてのコードが負の値を有するなら
、5ELLOFFへ分岐する。そのコードが負なら、交
換レコードのキーは出力リストに設けられたばかりのレ
コードのキーに等しいし、JPT処理が実行される必要
はない。
交換レコードのコードが負でないと仮定すると、表■の
処理手順は5ELLDATEに移る。この5ELLDA
TEは、トーナメント木を更新する処理手順を含む、こ
のことは、次のトーナメント勝者を決めるのに必要であ
る。
木が更新され、勝者が決まると、5ELLOFFへ分岐
する。出力リストが十分に収容されなかったなら、処理
手順は5ELLNEXTへ分岐して戻る。この5ELL
NEXTは、第1図における比較82の準備中に分離リ
ストから次のレコードを得る。
さて、CL命令の実行によって分類リストの先頭が低位
(即ちキーの値が小さい)であることが示されると仮定
する。BL命令は処理手順を5ELLLISTへ分岐さ
せる。5ELLL I STでは、分類リストの先頭レ
コードが、単にそのアドレスをレジスタR15からレジ
スタR6へ移すことによって、出力リストの一番最後へ
作成される。
この場合、分離リストにおけるそれの前のレコードは出
力リストの一番最後に設けられていたのである。また、
この場合、最後の出力リスト・レコードが分離リスト・
レコードを指し示し、ポインタを変更するのに特別にS
T命令を必要とすることを除いている。最初のCFC命
令の実行の結果、分類リスト・レコードが低位であると
決定された場合には、BNH命令が処理手順をSELL
LOWへ分岐させる。ここで、トーナメント勝者のCW
RD及びアドレスがそのノード値を保存するためにレジ
スタRO及びR1中へコピーされた後に、分離ヘッダが
出力リストの一番最後に付加される。
5ELLLETEで始まる命令列は、5ELLNEXT
の次のテストによって分離リストが空であることが見出
されたときに実行される。トーナメント木がq−1のた
めに空であるなら、BMから5ELLSTOPまでによ
って処理が終了する。
さもなければ低位の木レコード・リスト(木の先頭)が
新しい分離リスト中へ作成される。
選択水のサイズがこのとき1ノ一ド分だけ減される(q
=q−1)。これによって木が空になるなら(q−1=
O)、BMからSELLMPTYが採択される。さもな
ければ、適切な端末ノード・インデックスが新しい木の
サイズを反映するように調整され、削除された内部ノー
ド(位置q)に記憶されていたレコードが、B乃至5E
LLECTにより初期設定された選択レコード列のため
に交換レコード中へ作成される。
SELLMPTYにおける命令列は、選択水が低減され
たので、5ELLLETE列におケルBMから入力され
る。全ての続く出力レコードが分離リストから選択され
るようにするために、SLRRO,ROは見かけの木先
頭レコード・コードをセットする。
出力リストが十分に収容されたとき、又は木のリスト及
び分離リストにおける全てのレコードが出力リストに設
けられたときには、表■における処理手順は終了する。
前者は、5ELLOFFでのBCT命令によって検出さ
れる条件である。後者の条件は、5ELLLETEルー
チンにおけるBM乃至5ELLSTOPによって検出さ
れる。
例 本発明の動作の例が後に添付した表■乃至■に示されて
いる。表■は、TNIと記された欄に示された端末ノー
ドを介して第1図のトーナメント木に適用された入力レ
コード列のりスティングである。入力レコード列はIS
I乃至IS8と示されており、分離リストはSLと示さ
れている。各入力レコード列(及び分離リスト・レコー
ド列)は、昇順の大きさのコード・ワード列によって表
わされている。従って、例えば端末ノード40:で第1
図のトーナメント木中へ導入された入力レコード列13
1は、コード・ワードの大きさ(10進表示で)が10
01 1015 10161057 1067であるレ
コード列から成る。
表■に示されているように、レコード列生成段階によっ
て入力レコード列の各々が非ランダム・レコードを伴な
って収容されている。表■はまた、最小のキーの大きさ
(1000)の先頭レコードを有するレコード列によっ
て分離リストが開始していることを示している。表Vで
は、分離リストの先頭レコードが出力リスト中へ入力さ
れ、第7図のトーナメント木が開始されている。入力レ
コード列IS1のレコードがノード0:にまで進んでい
る。一方、その他の各人力ノードは、各入力レコード列
の先頭を表わすノード値を受取っている。レコード10
27がもはや分離リストの先頭である。表■においては
、本発明の動作によって、CWRDlooIと表示され
たレコードが出力リストに付加され、勝者のレコード列
の残りの部分が分離リストへ移されている。先の分離リ
ストの残りの部分を端末ノード40を介して木へ導入す
ることにより、木は更新される。その端末ノード40に
は、ISlが初めは接続されていた。結果的には、初め
の分離リストがノード20にまで進む。トーナメントの
勝者は、CWRD1002のレコードで、これはIS5
の先頭である。表■では、レコード1002が出力リス
トに付加され、IS5の残りの部分は分離リストへ移さ
れ、一方、トーナメント木がIS5の出発端末ノードで
あるノード60;においてリスト中へ最後の分離リスト
(ISl)を導入することにより更新されている。この
結果、ISIはノード30を通ってノード10へ進み、
IS2はノード8へそしてIS4はノードOへ夫々進む
表■に示されているように、本発明の動作の例では、ノ
ード0:におけるレコード1011に対する単一の比較
を続けてTS5における非ランダム・ストリングを出力
リスト中へ移すことがら始まっている。この結果、IS
5の残りの部分が出力リストへ移動することになる。こ
の移動は、トーナメント木におけるレコード列の残りが
組合されて出力リストへ接続されてから起きる。
E9発明の効果 本発明を用いることにより、n個の予め分類されたレコ
ードをn (log、 n)回よりも少ない比較で複数
のレコード列へ組合せる効率が著しく向上される。
表■ ISI    40:  1001101510161
0571067IS2   48:  1012102
3102510291077IS3   50:  1
0191033104310441076rs4   
58:  10111014102010211022
IS5   60 :  1002100310041
0051006156   68 :  102810
45105510561058IS7   70:  
10251026103710401050IS8  
 78 :  103010411051105910
69S1、      10001.02710381
0421048表V 班力仄入上: 1000 ノ − ド  yl二上タ止j1    ノードにおけ
るゴーFワードのりスト0 :      ISI  
     1001 1015 1016 1057 
10678  :      IS5      10
02 1003 1004 1005 10061.0
 :      TS4      1011 101
4 1020 1021 102218  :    
  IS7      1025 1026 1037
 1040 105020 :      IS2  
    1012 1023 1028 1029 1
07728 :      IS3      101
9 1033 1043 1044 107630  
:      IS6      1028 1045
 1055 1056 105838  :     
 IS8      1030 1041 1051 
1059 1061う辷古」男L  SL      
  1027 1038 1042 1048表■ 皇l巳し眠旦: 1.0001001 /−Fk:−二上夕す41    ノーFにおけるコー
トヮーFのりスト0 :      IS5     
 1002 1003 1004 1005 1006
8 :      154      1011 10
14 1020 1021 102210 :    
  IS2      1012 1023 1028
 1029 107718  :      IS7 
     1025 1026 1037 1040 
105020 :     SL        10
27 1038 1042 104828 :    
  IS3      1019 1033 1043
 1044 107630:      IS6   
   1028 1045 1055 1056 10
5838 :      IS8      1030
 1041 1051 1059 1061分離リスト
   ISI       1015 1016 10
57 1067表■ 出力リスト: 100010011002ノー ド  
レコード列名    ノーFにおけるコーFワーFのり
スト0 :     IS4      1011 1
014 1020 1021 10228 :    
 IS2      1012 1023 1028 
1029 107710 :     ISl    
   1015 1016 1057 106718 
:     IS7      1025 1026 
1037 1040 105020 :     SL
        1027 1038 1042 10
4828 :     IS3      1019 
1033 1043 1044 107630 :  
   IS6      1028 1045 105
5 1056 105838  :     IS8 
     1030 1041 1051 1059 
1069う辷濤隼ユZ上−IS5      1003
 1004 1005 1006表■ 11尺し源Σ: 1000100110021003ノ
 − ド  レコード列名    ノートにおけるコー
トワードのりスト0 :      IS4     
 1011 1014 1020 1021 1022
8 :      IS2      1012 10
23 1028 1029 107710  :   
   ISl       1015 1016 10
57 106718 :      IS7     
 1025 1026 1037 1040 1050
20 :     SL        1027 1
038 1042 104828 :      IS
3      1019 1033 1043 104
4 107630  :      TS6     
 1028 1045 1055 1056 1058
38 :      TS8      1030 1
041 1051 1059 1069予rL1ユZ上
−IS5      1004 1005 1006
【図面の簡単な説明】
第1図は、本発明の方法を例示する処理の流れのブロッ
ク図、第2図は、本発明に従って分類、及び組合される
レコードのフォーマットを例示する説明図、第3図は、
レコードを分類、及び組合せるための分類プログラムを
有するディジタル・コンピュータにおけるインターフェ
イス及びデータの流れを示す説明図、第4図は、先行技
術に従って分類されたレコードの複数入力レコード列を
単一の出力レコード列へ組合せることを示す説明図、第
5図は、第4図に示された処理において用いられるレコ
ードのフォーマットを示す説明図、第6図は、先行技術
の第1の分類指令の実行を理解するのに必要なハードウ
ェア及びデータ構造を示す説明図及び第7図は、先行技
術の第2の分類命令の実行の流れを示すフローチャート
である。 出願人  インターナショナル・ビジネス・マシーンズ
・コーポレーション 代理人  弁理士  頓  宮  孝  −(外1名)

Claims (2)

    【特許請求の範囲】
  1. (1)プログラム記憶式制御処理装置において交換選択
    分類を利用してq個の分類されたレコード列を順序付け
    られた出力レコード列に組合せる方法であつて、 前記処理装置において2進のトーナメント木を作成し、
    前記木において交換選択分類を行なつて前記レコード列
    の(q−1)個のうちで最小のキー値を有するレコード
    を得るステップと、 前記レコード列のq番目のレコード列を分離レコード列
    として提供するステップと、 前記木によつて得られた最小のキー値を有する最初のレ
    コードを、前記分離レコード列の最小のキー値を有する
    レコードと比較して、より小さなキー値を有するレコー
    ドを出力するステップと、前記より小さなキー値を有す
    るレコードが前記分離レコード列からのレコードである
    ときには、前記比較するステップを繰返し、そうでない
    ときには、前記木により最小のキー値を有する2番目の
    レコードを得て前記比較するステップを繰返すステップ
    と、 を含むレコード列組合せ方法。
  2. (2)プログラム記憶式制御処理装置において交換選択
    分類を利用してq個の分類されたレコード列を順序付け
    られた出力レコード列に組合せる方法であつて、 前記処理装置において2進のトーナメント木を作成し、
    前記木において交換選択分類を行なって前記レコード列
    の(q−1)個のうちで最大のキー値を有するレコード
    を得るステップと、 前記レコード列のq番目のレコード列を分離レコード列
    として提供するステップと、 前記木によつて得られた最大のキー値を有する最初のレ
    コードを前記分離レコード列の最大のキー値を有するレ
    コードと比較して、より大きなキー値を有するレコード
    を出力するステップと、前記より大きなキー値を有する
    レコードが前記分離レコード列からのレコードであると
    きには、前記比較するステップを繰返し、そうでないと
    きには、前記木により最大のキー値を有する2番目のレ
    コードを得て前記比較するステップを繰返すステップと
    、 を含むレコード列組合せ方法。
JP3520389A 1988-03-15 1989-02-16 レコード列組合せ方法 Pending JPH01248232A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16825888A 1988-03-15 1988-03-15
US168258 1988-03-15

Publications (1)

Publication Number Publication Date
JPH01248232A true JPH01248232A (ja) 1989-10-03

Family

ID=22610760

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3520389A Pending JPH01248232A (ja) 1988-03-15 1989-02-16 レコード列組合せ方法

Country Status (1)

Country Link
JP (1) JPH01248232A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6172333A (ja) * 1984-09-15 1986-04-14 Casio Comput Co Ltd 複数ファイルのマージ方法
JPS62113234A (ja) * 1985-11-07 1987-05-25 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション レコ−ドセツト分類方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6172333A (ja) * 1984-09-15 1986-04-14 Casio Comput Co Ltd 複数ファイルのマージ方法
JPS62113234A (ja) * 1985-11-07 1987-05-25 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション レコ−ドセツト分類方法

Similar Documents

Publication Publication Date Title
JP3771271B2 (ja) コンパクト0完全木における順序付けられたキーの集まりの記憶と検索のための装置及び方法
Falkoff Algorithms for parallel-search memories
US5655129A (en) Character-string retrieval system and method
US5497485A (en) Method and apparatus for implementing Q-trees
US5060143A (en) System for string searching including parallel comparison of candidate data block-by-block
US7062499B2 (en) Enhanced multiway radix tree and related methods
JPH04247571A (ja) データベースレコード処理装置
JPH07297728A (ja) パターン一致を探索するための方法およびシステム
JPS61223941A (ja) 化学構造の検索方法
JP2003044267A (ja) データソート方法、データソート装置およびデータソートプログラム
WO1990004826A1 (fr) Procede et dispositif d'extraction de sequences de mots-cles pour le traitement concurrent
US5081608A (en) Apparatus for processing record-structured data by inserting replacement data of arbitrary length into selected data fields
JP3630057B2 (ja) 検索用データ構造構築方法、その装置、及び機械可読プログラム記録媒体
JPS61210478A (ja) ベクトル処理装置
Gupta et al. Parallel generation of permutations
JPH01248232A (ja) レコード列組合せ方法
JPS6142031A (ja) ソ−ト処理装置
JPH0936747A (ja) データ圧縮方法及びデータ圧縮装置
JPH07105224A (ja) 文字配列検索方法
JP3062119B2 (ja) 文字列探索用テーブル、その作成方法及び文字列探索方法
Chen et al. Nonrecursive algorithms for reconstructing a binary tree from its traversals
JPH0156424B2 (ja)
JP2001117929A (ja) データ検索方法、データ整列方法およびデータ検索装置
JPS63311432A (ja) 連想語検索システム
JPH06162096A (ja) レコード検索方法