2011-12-17 4 views
3

max要素をmin要素と同様に扱う必要はありませんか?なぜこの非対称性を持ち、0(loglogN)時間で操作を実行できるのでしょうか?最大要素はツリーの下に伝播しますが、最小値はそうではありません...逆の場合は操作時間がありますか?ヴァン・エムデ・ボア・ツリーの最大要素をツリーの外に保存する必要がありますか?

私はここに見つかりました:http://code.google.com/p/libveb/wiki/Intro要素のsqrtは時間がかかる操作なので、格納する必要があります。しかし、私は他に何かがあると思います。

答えて

1

van Emde Boasツリーは通常、最大値と最小値を別々に保存します。そうしないと、後継者と前任者を効率的に実装できないためです。

そうでないと思われる特定のソースはありますか?私が見たvEB木に関するすべてのメモには、このように最大値と最小値の両方を格納することが記述されています。参照してください

は、この情報がお役に立てば幸い!

3

私は、最小要素に似たmax要素、つまり最大要素をツリーに伝播させる理由と、この処理を取り消すことができないかどうかについて、私は考えていると思います。

特定の構造体が空でないことが示唆されているため、空のチェックを行うために不要な再帰呼び出しを行うことができず、空のツリーにO(1)演算を挿入します。つまり、最小要素を設定するだけです。後継者操作と前の操作のために、ツリーの外側に最大要素と最小要素の両方が必要です。

これは、Erik Demaineの講義ノート(templatetypedefによって提供されるリンク)でうまく説明されています。

私は、構造体が空でないかどうかを知るためにこれを行うので、伝播なしで外側の最小/最大要素のいずれかを外側に保ち、操作あたりO(ログログ)時間を維持することが可能であると考えます。両方を維持し、両方を伝播しないことは重複しており、余分な時間を費やすことはありません。

関連する問題