gpt4 book ai didi

algorithm - 具有 O(1) Get-Min、Delete-Min 和 Merge 操作的优先级队列

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:17 30 4
gpt4 key购买 nike

我想知道是否有一种方法可以构造一个支持恒定时间get-min、delete-min 和merge 操作的优先级队列结构。我不关心插入的时间复杂度,也不需要支持减键操作。我在(错误的)伪代码中的用例:

func periodical(current_state) {
// always_executed_jobs is a priority queue
queue = always_executed_jobs;
// other_jobs is an array of priority queues;
// current_state is an index to the array, so
// sometimes_executed_jobs is another priority queue
sometimes_executed_jobs = other_jobs[current_state];
queue.merge(sometimes_executed_jobs);
while (!queue.empty()) {
job = get_min(queue);
execute(job);
delete_min(queue);
}
}

我考虑过 splay 树(特别是 https://cs.stackexchange.com/questions/524/does-there-exist-a-priority-queue-with-o1-extracts )和 Fibonacci 堆,但它们似乎不能满足这些要求。

最佳答案

如果只能比较优先级,这是不可能的。问题是一个恒定时间的 merge 可以用来在恒定时间内模拟 insert,因为 delete-min 也是恒定的-时间,违反了已知的排序下限。

关于algorithm - 具有 O(1) Get-Min、Delete-Min 和 Merge 操作的优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28813082/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com