Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Java实现Dijkstra的Fibonacci堆_Java_Dijkstra - Fatal编程技术网

通过Java实现Dijkstra的Fibonacci堆

通过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,

我想在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, 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()
这3个方法中的每一个都返回不同的元素,并以自己的方式修改堆。根据您的用例,您可以将这些
条目
存储在变量中,并将其传递给
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);