Questions tagged «heaps»



3
二进制最小堆中的增加键和减少键
在许多关于二进制堆的讨论中,通常仅将减小键列为最小堆的受支持操作。例如,CLR第6.1章和此Wikipedia页面。为什么通常不会为最小堆列出增加密钥?我想可以通过将增加的元素(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; } } 以上正确吗?如果没有,为什么?如果是,为什么没有列出最小堆的增加密钥?

2
堆-给出
最有可能在问过这个问题。来自CLRS(第二版)问题6.5-8- 给出一个时间算法,将k个排序列表合并为一个排序列表,其中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 keeps track of …

1
潜在函数二进制堆提取最大值O(1)
我需要帮助来确定最大堆的潜在函数,以便在摊销时间内完成提取最大。我还要补充一点,就是我对潜在方法没有很好的了解。O(1)O(1)O(1) 我知道insert函数应该“付出更多”以减少提取的成本,这必须要考虑到堆的高度(如果给出了堆应该是或)⌊log(n)⌋⌊log⁡(n)⌋ \lfloor \log(n) \rfloor 2log(n)2log⁡(n)2\log(n)∑nk=12log(k)∑k=1n2log⁡(k) \sum_{k=1}^n 2\log(k)

1
随机可熔堆-预期高度
随机可熔堆具有一个“混合”操作,然后我们将其用于定义所有其他操作,包括插入。 问题是,具有节点的那棵树的期望高度是多少?nnn Gambin和Malinkowski的定理1,随机可融合优先级队列(SOFSEM论文集,计算机科学讲座,第1521卷,第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 k \mathbb{P}[\max\, \{ h_{Q_L}, h_{Q_R}\} = k]\,. 可以使用总概率定律重写两个子树的高度的最大值等于kkk的概率: P[max{hQL,hQR}=k]=P[max{hQL,hQR}=k∣hQL≤hQR]P[hQL≤hQR]+P[max{hQL,hQR}=k∣hQL>hQR]P[hQL>hQR]=P[hQR=k∣hQL≤hQR]P[hQL≤hQR]+P[hQL=k∣hQL>hQR]P[hQL>hQR].P[max{hQL,hQR}=k]=P[max{hQL,hQR}=k∣hQL≤hQR]P[hQL≤hQR]+P[max{hQL,hQR}=k∣hQL>hQR]P[hQL>hQR]=P[hQR=k∣hQL≤hQR]P[hQL≤hQR]+P[hQL=k∣hQL>hQR]P[hQL>hQR].\begin{align*} \hspace{2em}&\hspace{-2em} \mathbb{P}[\max\, …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.