3

「Introduction to Algorithm」という書籍で提供されている二項ヒープの減少キーのインターフェイスは次のとおりです。キーが k に減らされるノードの「インデックス」。時間計算量は O(logn)

ただし、通常、リンクされたリストを使用して二項ヒープを実装します。この場合、検索を実行せずに x に直接アクセスすることはできません。これは一般に O(n) です。

この問題を解決する 1 つの方法は、二項ヒープ内の各ノードのポインターを保持することです。これにより、O(1) 内のすべてのノードに直接アクセスできますが、空間の複雑さは O(n) になります。

これに対するより良い解決策を知っている人はいますか?ありがとう!

以前の議論はここにあります。

4

1 に答える 1

-1

ヒープを配列に格納すると、簡単に実行できます。

ルート要素がインデックス i にある場合、左の子は 2i にあり、右の子は 2i+1 にあります。

配列には、インデックス 1 の要素を格納します。

このようにヒープ要素を格納すると、インデックス x の要素を直接デクリメントし、x からヒープ化できます。

この方法では、heapify に o(logn) 時間がかかります。デクリメントの場合は一定です。

于 2013-11-13T07:15:01.317 に答える