通过Java实现Dijkstra的Fibonacci堆
我想在Dijkstra算法上实现Fibonacci堆。我将此代码用于斐波那契堆。 问题是如何调用方法:decreaseKey?它总是给我一个暗示(进入,加倍)。但是如何写一个条目呢?下面是一个简单的例子,如何填写问号通过Java实现Dijkstra的Fibonacci堆,java,dijkstra,Java,Dijkstra,我想在Dijkstra算法上实现Fibonacci堆。我将此代码用于斐波那契堆。 问题是如何调用方法:decreaseKey?它总是给我一个暗示(进入,加倍)。但是如何写一个条目呢?下面是一个简单的例子,如何填写问号 FibonacciHeap<Integer> aa = new FibonacciHeap<>(); aa.enqueue(10, 1.01); aa.enqueue(10, .2); aa.enqueue(12, 3.2); aa.enqueue(13,
FibonacciHeap<Integer> aa = new FibonacciHeap<>();
aa.enqueue(10, 1.01);
aa.enqueue(10, .2);
aa.enqueue(12, 3.2);
aa.enqueue(13, 3.4);
aa.decreaseKey(??????, newPriority);
FibonacciHeap aa=新的FibonacciHeap();
aa.排队(10,1.01);
aa.排队(10.2);
aa.排队(12,3.2);
aa.排队(13,3.4);
aa.减少密钥(????,新优先级);
decreaseKey()
要求第一个参数的类型为FibonacciHeap.Entry
。类中的3个方法返回堆的项
s:
公众进入排队(T值,双优先级)代码>
public Entry min()代码>
public Entry dequeueMin()代码>
条目
存储在变量中,并将其传递给decreaseKey()
一种情况是在排队时存储条目
。无论何时enqueue()
某个内容进入堆,它都会返回相应的条目。根据其文件:
/**
* Inserts the specified element into the Fibonacci heap with the specified
* priority.
* ...
* @return An Entry representing that element in the tree.
*/
public Entry<T> enqueue(T value, double priority);
非常感谢你!它工作正常,但只需要添加FibonacciHeap.Entry。
FibonacciHeap<Integer> aa = new FibonacciHeap<>();
FibonacciHeap.Entry entry = aa.enqueue(10, 1.01);
// ...
aa.decreaseKey(entry, newPriority);