簡體   English   中英

中斷優先級隊列的算法

[英]Algorithm for Broken Priority Queue

如果優先級隊列有兩個操作: insertbroken_min 其中broken_min返回第一個或第二個最小項目。

這些都不能在o(logn)時間內實現。 我認為這是因為insert使用broken_min,然后必須做更多檢查以查看它是否具有最大值。

這是正確的推理嗎?

是的,我相信你是正確的。

優先級隊列通常實現為

堆是一種特殊的基於[二叉樹]的數據結構...父節點的鍵小於或等於子節點的鍵,最低的鍵在根節點(最小堆)中。

因為其中一個子元素是第二大元素,所以可以在O(1)中實現broken_min ,因此我們可以同時檢查這兩個元素。

但是insert將取Ω(log n),而不是o(log n)(但實際上為O(log n))。

我懷疑您會發現可以滿足給定運行時間的優先級隊列實現,但是說這不可能是不負責任的。

注意:給定標簽,我假設您的意思是little-o(嚴格的上限,與big-O相對,big-O的上限或更高是一個嚴格的上限),盡管big-O大部分時間都在使用,並且很少-o幾乎從未使用過(據我所知)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM