フィボナッチヒープに二項ツリーではないツリーを含めることは可能ですか? もしそうなら、これはどのように起こりますか?例を挙げていただけますか?
1 に答える
0
はい、これは発生する可能性があります。直感的には、その理由は、フィボナッチヒープでは、キーの減少操作が大きなツリーからサブツリーを切り取って機能し、(潜在的に)二項ツリーではない2つのツリーが生成されるためです。これは、キーがルートまでずっと減少したノードからバブルアップ操作を実行することによって減少キーが機能する二項ヒープとは異なります。
具体的な例を示すために、フィボナッチヒープに5つの要素、たとえば1、3、5、7、および9を挿入してみましょう。これによりヒープが得られます。
1 - 3 - 5 - 7 - 9
次に、1を抽出するdequeue-minを実行します。次に、残りのすべての要素をまとめて圧縮し、次のようにツリーをマージします。
3
/|
5 7
|
9
ここで、キーを減らす操作を実行して、9のキーを6に減らすと仮定します。これを行うには、親から9を切り取り、それを上部のツリーのリストにマージします。
3 - 6
/|
5 7
そして、ルートに3があるツリーには、3つの要素しか含まれていないため、二項ツリーではなくなりました。
お役に立てれば!
于 2012-02-13T04:30:41.980 に答える