|
JUtil | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectnet.cscott.jutil.AbstractHeap<K,V>
net.cscott.jutil.FibonacciHeap<K,V>
public class FibonacciHeap<K,V>
A FibonacciHeap allows amortized O(1) time bounds for
create, insert, minimum, union, and decrease-key operations, and
amortized O(lg n) run times for extract-min and delete.
Implementation is based on the description in Introduction to Algorithms by Cormen, Leiserson, and Riverst, in Chapter 21.
| Constructor Summary | |
|---|---|
FibonacciHeap()
Creates a new, empty FibonacciHeap, sorted according
to its keys' natural order. |
|
FibonacciHeap(Collection<? extends Map.Entry<? extends K,? extends V>> collection,
Comparator<K> comparator)
Constructs a new heap from a collection of Map.Entrys and a key comparator. |
|
FibonacciHeap(Comparator<K> c)
Creates a new, empty FibonacciHeap, sorted according
to the given Comparator. |
|
FibonacciHeap(Heap<K,? extends V> h)
Constructs a new heap with the same entries as the specified Heap. |
|
| Method Summary | |
|---|---|
void |
clear()
Removes all entries from this Heap. |
void |
decreaseKey(Map.Entry<K,V> me,
K newkey)
Replace the key in the specified map entry with the specified smaller key. |
void |
delete(Map.Entry<K,V> me)
Remove the specified map entry from the mapping. |
Collection<Map.Entry<K,V>> |
entries()
Returns a collection view of all the Map.Entrys
in this Heap. |
Map.Entry<K,V> |
extractMinimum()
Remove and return a map entry with minimal key. |
Map.Entry<K,V> |
insert(K key,
V value)
Insert an entry into the heap. |
protected void |
insert(Map.Entry<K,V> me)
This method should insert the specified Map.Entry,
which is not currently in the Heap, into the
Heap. |
static void |
main(String[] args)
Self-test method. |
Map.Entry<K,V> |
minimum()
Returns a mapping entry with minimal key. |
protected K |
setKey(Map.Entry<K,V> me,
K newkey)
This method should set the key for the specified Map.Entry to the given newkey. |
int |
size()
Returns the number of entries in this Heap. |
void |
union(FibonacciHeap<K,V> h)
|
void |
union(Heap<? extends K,? extends V> h)
Merges all of the mappings from the specified Heap
into this Heap. |
| Methods inherited from class net.cscott.jutil.AbstractHeap |
|---|
comparator, entryComparator, equals, hashCode, isEmpty, keyComparator, toString, updateKey |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public FibonacciHeap()
FibonacciHeap, sorted according
to its keys' natural order. All keys inserted into the new
map must implement the Comparable interface.
O(1) time.
public FibonacciHeap(Comparator<K> c)
FibonacciHeap, sorted according
to the given Comparator. O(1) time.
public FibonacciHeap(Heap<K,? extends V> h)
Heap. O(n) time.
public FibonacciHeap(Collection<? extends Map.Entry<? extends K,? extends V>> collection,
Comparator<K> comparator)
Map.Entrys and a key comparator. O(n) time.
| Method Detail |
|---|
public Map.Entry<K,V> insert(K key,
V value)
insert in interface Heap<K,V>insert in class AbstractHeap<K,V>protected void insert(Map.Entry<K,V> me)
AbstractHeapMap.Entry,
which is not currently in the Heap, into the
Heap. Implementation is optional, but it is required
if you use the default implementation of updateKey().
insert in class AbstractHeap<K,V>public Map.Entry<K,V> minimum()
Heap
minimum in interface Heap<K,V>minimum in class AbstractHeap<K,V>public void union(FibonacciHeap<K,V> h)
public void union(Heap<? extends K,? extends V> h)
HeapHeap
into this Heap. Note that duplicates are
permitted. After calling union(), the Heap
passed in as an argument will be empty.
Note that usually efficient implementations of this method require
that the Heap argument be from the same implementation
as this. (That is, they must both be binomial heaps, or
both fibonacci heaps, etc.)
union in interface Heap<K,V>union in class AbstractHeap<K,V>public Map.Entry<K,V> extractMinimum()
Heap
extractMinimum in interface Heap<K,V>extractMinimum in class AbstractHeap<K,V>
public void decreaseKey(Map.Entry<K,V> me,
K newkey)
Heap
decreaseKey in interface Heap<K,V>decreaseKey in class AbstractHeap<K,V>public void delete(Map.Entry<K,V> me)
Heap
delete in interface Heap<K,V>delete in class AbstractHeap<K,V>public int size()
HeapHeap.
size in interface Heap<K,V>size in class AbstractHeap<K,V>public void clear()
HeapHeap.
clear in interface Heap<K,V>clear in class AbstractHeap<K,V>public Collection<Map.Entry<K,V>> entries()
HeapMap.Entrys
in this Heap.
entries in interface Heap<K,V>entries in class AbstractHeap<K,V>
protected final K setKey(Map.Entry<K,V> me,
K newkey)
AbstractHeapMap.Entry to the given newkey.
Implementation is optional, but it is required if you use the
default implementation of updateKey().
setKey in class AbstractHeap<K,V>public static void main(String[] args)
|
JUtil | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||