Fibonacci Heap 是否可以有多个具有相同等级(或值,或键)的节点?
Can Fibonacci Heap have more than one nodes with equal rank(or value, or key)?
我一个人在研究斐波那契堆,遇到一道题
我知道任何节点都可以插入 Fibonacci 堆,但是如果那个新节点的等级(或值,或键)等于兄弟节点怎么办?
1) 例如,
(1) <-minimum root
/ \
(3) (5)
如果插入(1)的节点会发生什么?
(1) --- (1)
/ \
(3) (5)
2) 或者遇到这种情况会怎样?
之前:
(2)-----(4)-----(5)
| / \ / \
(1) (6) (7) (8) (9)
之后:
(2)-----(4)-----(5) + (5)
| / \ / \
(1) (8) (9) (1) (2)
新节点树属于哪里?
3) 你会如何合并(或排序)这种在根部有一对相等节点的树?
(10) ---- (10) ----- (1) ----- (3) ----- (4)
如果有人能帮我解决斐波那契堆上的这个小困惑,我将不胜感激。谢谢。
具有相同键的节点是可以的。
回忆一下堆属性:对于min-heap,每个节点的key是大于或等于其父项的键。 (最大堆属性可以类似定义。)
斐波那契堆就是这些树的集合。如果不止一个根有最小键,那么任何这样的根都可以是最小节点。
以你为例,(1)和(3)没有错。但是在 (2) 中,您的树违反了最小堆 属性.
我一个人在研究斐波那契堆,遇到一道题
我知道任何节点都可以插入 Fibonacci 堆,但是如果那个新节点的等级(或值,或键)等于兄弟节点怎么办?
1) 例如,
(1) <-minimum root
/ \
(3) (5)
如果插入(1)的节点会发生什么?
(1) --- (1)
/ \
(3) (5)
2) 或者遇到这种情况会怎样?
之前:
(2)-----(4)-----(5)
| / \ / \
(1) (6) (7) (8) (9)
之后:
(2)-----(4)-----(5) + (5)
| / \ / \
(1) (8) (9) (1) (2)
新节点树属于哪里?
3) 你会如何合并(或排序)这种在根部有一对相等节点的树?
(10) ---- (10) ----- (1) ----- (3) ----- (4)
如果有人能帮我解决斐波那契堆上的这个小困惑,我将不胜感激。谢谢。
具有相同键的节点是可以的。
回忆一下堆属性:对于min-heap,每个节点的key是大于或等于其父项的键。 (最大堆属性可以类似定义。)
斐波那契堆就是这些树的集合。如果不止一个根有最小键,那么任何这样的根都可以是最小节点。
以你为例,(1)和(3)没有错。但是在 (2) 中,您的树违反了最小堆 属性.