|
JUtil | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object net.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.Entry s 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.Entry s
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.Entry
s 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)
AbstractHeap
Map.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)
Heap
Heap
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()
Heap
Heap
.
size
in interface Heap<K,V>
size
in class AbstractHeap<K,V>
public void clear()
Heap
Heap
.
clear
in interface Heap<K,V>
clear
in class AbstractHeap<K,V>
public Collection<Map.Entry<K,V>> entries()
Heap
Map.Entry
s
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)
AbstractHeap
Map.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 |