タグ付けされた質問 「heaps」



3
バイナリ最小ヒープのキーの増加とキーの減少
バイナリヒープの多くの議論では、通常、min-heapでサポートされている操作として減少キーのみがリストされています。たとえば、CLR 6.1章およびこのウィキペディアのページ。通常、min-heapのキーが増加しないのはなぜですか?増加した要素(x)を最小の子と繰り返し交換することにより、O(height)で、子がxより大きくなるまでそれを行うことができると思います。 例えば IncreaseKey(int pos, int newValue) { heap[pos] = newValue; while(left(pos) < heap.Length) { int smallest = left(pos); if(heap[right(pos)] < heap[left(pos)]) smallest = right(pos); if(heap[pos] < heap[smallest]) { swap(smallest, pos); pos= smallest; } else return; } } 上記は正しいですか?そうでない場合、なぜですか?はいの場合、min-heapのキーがリストされないのはなぜですか?

2
ヒープ
おそらく、この質問は以前に聞かれます。CLRS(2nd Ed)problem 6.5-8からのものです- 得マージに時間アルゴリズムをK 1つのソートされたリストの中にリストをソートし、N、すべての入力リスト内の要素の総数です。(ヒント:k方向のマージには最小ヒープを使用します。)O(nlgk)O(nlg⁡k)O(n \lg k)kkknnnkkk あるとしてリストをソートし、合計n個の値、私たちはそれぞれのリストが含まれていると仮定しましょうn個kkknnn番号、また各リストのは、厳密に昇順にソートされ、そして結果はまた、昇順に格納されます。nknk\frac{n}{k} 私の擬似コードはこのように見えます- list[k] ; k sorted lists heap[k] ; an auxiliary array to hold the min-heap result[n] ; array to store the sorted list for i := 1 to k ; O(k) do heap[i] := GET-MIN(list[i]) ; pick the first element ; and …

1
ポテンシャル関数バイナリヒープ抽出最大O(1)
最大ヒープが償却時間で完了するように、最大​​ヒープの潜在的な関数を理解する手助けが必要です。潜在的な方法をよく理解していないことを付け加えておきます。O (1 )O(1)O(1) 抽出のコストを削減するために、挿入関数はさらに「支払う」必要があることを知っています。これは、ヒープの高さに関するものでなければなり(if log (n )⌋がヒープの高さを与える場合挿入は2 log (n )または∑ n k = 1 2 log (k ))⌊ ログ(n )⌋⌊log⁡(n)⌋ \lfloor \log(n) \rfloor 2 ログ(n )2log⁡(n)2\log(n)Σんk = 12 ログ(k )∑k=1n2log⁡(k) \sum_{k=1}^n 2\log(k)

1
ランダム化された溶融可能なヒープ-期待される高さ
ランダム化された融合可能なヒープには操作「meld」があり、それを使用して、挿入を含む他のすべての操作を定義します。 問題は、ノードを持つツリーの予想される高さは何ですか?nnn Gambin and Malinkowskiの定理1、ランダム化された融合可能な優先キュー(Proceedings of SOFSEM 1998、Lecture Notes in Computer Science vol。1521、pp。344–349、1998; PDF)は、この質問に対する答えを証明とともに示しています。しかし、なぜ書き込めるかはわかりません: E[hQ]=12((1+E[hQL])+(1+E[hQR])).E[hQ]=12((1+E[hQL])+(1+E[hQR])).\mathbb{E} [ h_Q] = \frac{1}{2} ((1 + \mathbb{E}[h_{Q_L}]) + (1 + \mathbb{E}[h_{Q_R}]))\,. 私にとって木の高さは hQ=1+max{hQL,hQR},hQ=1+max{hQL,hQR},h_Q = 1 + \max\, \{ h_{Q_L}, h_{Q_R}\}\,, これは次のように拡張できます。 E[hQ]=1+E[max{hQL,hQR}]=1+∑kP[max{hQL,hQR}=k].E[hQ]=1+E[max{hQL,hQR}]=1+∑kP[max{hQL,hQR}=k].\mathbb{E} [ h_Q] = 1 + \mathbb{E}[\max \,\{ h_{Q_L}, h_{Q_R}\}] = 1 + \sum …

3
対数時間で共通の最小値を見つける
空でない交差があることがわかっているサイズ 2つのインスタンスが与えられ、交差の最小要素が時間で見つかるようなセットを格納するデータ構造を探しています。これは、最悪の場合または償却後の複雑さのどちらでも達成できますか?データ構造の他の要件:削除、初期化。O (n )O(n)O(n)O (ログn )O(log⁡n)O(\log n)O (ログn )O(log⁡n)O(\log n)O (n ログn )O(nlog⁡n)O(n \log n) 要件を明確にするために、このようなデータ構造の適用例を次に示します。入力は、すべて番号nを含むのn個のサブセットで構成されます。出力はn行n列の行列で、そのエントリはセットiとjの共通部分の最小要素です。基本的なアプローチで、この問題を時間で解決できます。上記の条件を満たすデータ構造では、時間で解くことができ。{ 1 、。。。、n }{1,...,n}\{1, ..., n\}私、ji,ji, jO (ん3)O(n3)O(n^3)O (ん2ログn )O(n2log⁡n)O(n^2 \log n)

2
ソートされた配列に対するヒープの利点は何ですか?
私はヒープにかなり慣れていないので、ソートされた配列がデフォルトで最小/最大プロパティを提供しているように見えるときに、最小ヒープと最大ヒープがツリーとして表される理由に頭を抱えようとしています。 そしてフォローアップ:クイックソートのようなアルゴリズムがソートを非常にうまく処理する場合、ヒープへの挿入の複雑さを処理する利点は何ですか? コンテキスト:私はPythonでCLRS / MIT 6.006を使用していて、葉の値の整数表現しか見ていません。これは、各リーフに簡単にソートできない構造体が含まれているCなどの言語でより適切ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.