0

B +ツリーを使用してkey1に従ってソートされたトゥープル{key1、key2}のリストがあります。この構造は、セカンダリメモリ(HDD)にあります。key1でソートされたリストを必要とするが、key2を使用してリストにランダムアクセスする必要があるアルゴリズムを実装したいと思います。アルゴリズムのリスト全体は必要ありません。必要に応じてディスクからブロックを取得するため、B+Treeは発生するすべての挿入と削除でうまく機能します。

私は1週間頭を悩ませてきましたが、key2で2番目の構造(たとえば2番目のBツリー)を使用するのが唯一の方法だと思いますが、これにより、ツリーの更新に必要なすでに大きなスペースと時間が2倍になります。

ハッシュテーブルについてはよくわかりませんが、これらを使用してキーを特定の値にマップすることはできないと思いますよね?

データを2倍にすることなくkey2へのランダムアクセスを提供できる構造について何か考えがありますか?

あるいは、ランダムアクセスを必要としない代替アルゴリズムを使用することもできますが、それを最後の解決策として残したいと思います。

前もって感謝します

4

1 に答える 1

0

速度が気になる場合は、key2を指すハッシュテーブルを作成するのが最善の方法だと思います。ハッシュテーブルは通常、Bツリーよりも挿入とルックアップの方が高速です。また、すべてのデータを2倍にする必要はなく、既存の構造のハッシュテーブルからkey2を指すだけです。

更新:ハッシュテーブルを使用したことがない場合は、以下をお読みください。

于 2011-02-03T11:08:06.000 に答える