private MinHeap<HasIndex> createWrappedMinHeap(boolean classicalRemove) { MinHeap<HasIndex> pq = new WrappedBinaryMinHeap<HasIndex>(maxElements, BinaryMinHeap.defaultFanout, classicalRemove); return pq; }
@Override public boolean add(E value, double priority) { return this.delegate.add(this.getOrCreateWrappedEntry(value), priority); }
@Override public boolean remove(E value) { if (value == null) return false; else return this.delegate.remove(this.getWrappedEntry(value)); }
this.heap = new WrappedBinaryMinHeap<>(this.network.getNodes().size()); for (Node node : this.network.getNodes().values()) this.heap.add(node, 0.);
private WrappedEntry getOrCreateWrappedEntry(E value) { WrappedEntry wrappedEntry = this.getWrappedEntry(value); if (wrappedEntry == null) { int index = map.size(); // if (index > maxSize) throw new RuntimeException("Number of elements exceeds the number of specified elements."); wrappedEntry = new WrappedEntry(value, index); map.put(value, wrappedEntry); } return wrappedEntry; }
@Override public boolean decreaseKey(E value, double priority) { return this.delegate.decreaseKey(this.getWrappedEntry(value), priority); }