【发布时间】:2018-06-11 13:17:15
【问题描述】:
有没有办法在队列达到一定大小后移除一定百分比(比如 20 个)?
这个问题源于使用搜索算法将根父板的子节点保存在优先级队列中的问题。有这么多不同的节点要经过,需要20多个小时才能找到解决方案。我想粗略削减队列以缩短节点数量,以便更快地找到解决方案,但有可能会丢弃导致该目标的基本节点。
【问题讨论】:
-
对删除哪 20% 有任何限制吗?例如,最高优先级的 20%?那些优先级最低的?随意?在优先级之间平均分配?等等。另外,你指的是哪个优先级队列——
heapq是在标准库中,还是在另一个?此外,您是否希望自动删除,或者监督例程是否可以在需要时调用删除? -
最高优先级 20% 是防止删除最重要节点的好规则。我已将我的优先级队列(从队列中导入)更改为 heapq。这工作得更快。这将有助于我的运行时。应该测试均匀分布或随机分布,看看哪个效果更好,这个项目需要反复试验,因为问题非常复杂。最简单的方法是在达到一定阈值后自动删除。
-
您可以实现min-max heap,这将允许您删除最低优先级的 20%,保留最重要的项目。
标签: python queue priority-queue