Data structures 二进制堆是否支持减少密钥操作?
根据,需要Θ(logn)(转换为O(logn))来执行减少键操作。然而,似乎没有任何站点包含具有减少密钥操作的二进制堆实现 因此,考虑到web上缺乏实现,是否可以在二进制堆中执行减少键操作?我发现:Data structures 二进制堆是否支持减少密钥操作?,data-structures,priority-queue,Data Structures,Priority Queue,根据,需要Θ(logn)(转换为O(logn))来执行减少键操作。然而,似乎没有任何站点包含具有减少密钥操作的二进制堆实现 因此,考虑到web上缺乏实现,是否可以在二进制堆中执行减少键操作?我发现: 为了在O(logn)中执行减少键,我们必须事先知道相应元素的位置。一个hash映射和一个好的hash函数可以保证O(1)个摊销时间。在每次修改之后,我们必须更新哈希映射,它采用O(logn) 在确定元素的位置后,如果元素的优先级高于其父元素,则将其上移(与插入的方式类似),如果元素的优先级低于其子
- 为了在O(logn)中执行减少键,我们必须事先知道相应元素的位置。一个hash映射和一个好的hash函数可以保证O(1)个摊销时间。在每次修改之后,我们必须更新哈希映射,它采用O(logn)
- 在确定元素的位置后,如果元素的优先级高于其父元素,则将其上移(与插入的方式类似),如果元素的优先级低于其子元素的优先级,则将其下移(与删除的方式类似),并更新修改后的元素在哈希映射中的位置
Θ(1)
减少键操作感兴趣,我认为是相反的。哈希映射的更新需要O(1),而reduce key需要O(lg(n))。更新哈希映射需要O(logn),因为每次交换(父、子)
操作都必须更新它。在递减键
操作中存在O(log n)这样的操作。