考慮在一組N個獨立且分佈相同的浮點值中查找top-k元素的任務。通過使用優先級隊列/堆,我們可以在所有N個元素重複一次,並保持前-K通過以下操作設置:查找top-k元素的平均時間複雜度
如果元素x大於堆的頭「雪上加霜」:廢棄X ⇒複雜度O(1)
如果元素x是大於堆的頭部 「更好」:刪除頭部和插入X⇒複雜爲O(log K)
的最壞情況下的時間複雜度這種方法顯然是O(N log k),但平均時間複雜度呢?由於iid假設,O(1)操作的概率隨着時間而增加,並且我們很少必須執行昂貴的O(log k),尤其是對於k而言,這是平均時間任何可引用參考文獻中記錄的複雜性什麼是平均時間複雜度?如果你有一個可供參考的答案,請包括它。
IMO對於k << N,複雜度將漸近地逼近O(N)。 –
我相當確定要求一個'可引用參考'分類爲推薦問題,根據[help/on-topic],這是一個脫離[so]主題的推薦問題。隨意適當地改變你的問題。 – Dukeling
@Dukeling:我不是要求推薦。我是否應該以某種獨特的方式修改問題?例如,通過詢問包含此結果的_first_出版物?對我而言,問題更多的是這樣的參考是否存在。 – bluenote10