Skip to content
Snippets Groups Projects
Verified Commit fc444452 authored by David Procházka's avatar David Procházka
Browse files

ADD: an incremental version is now done by building the hull on hull objects

parent a7fed238
No related branches found
No related tags found
No related merge requests found
...@@ -39,13 +39,8 @@ public class LeafNode extends Node implements Serializable { ...@@ -39,13 +39,8 @@ public class LeafNode extends Node implements Serializable {
* @throws BucketStorageException addition of object into bucket exception * @throws BucketStorageException addition of object into bucket exception
*/ */
protected void addObject(LocalAbstractObject object) throws BucketStorageException { protected void addObject(LocalAbstractObject object) throws BucketStorageException {
addObject(object, null);
}
protected void addObject(LocalAbstractObject object, PrecomputedDistances distances) throws BucketStorageException {
bucket.addObject(object); bucket.addObject(object);
addObjectIntoHull(object);
addObjectIntoHull(object, distances);
} }
/** /**
......
...@@ -6,7 +6,6 @@ import messif.buckets.BucketStorageException; ...@@ -6,7 +6,6 @@ import messif.buckets.BucketStorageException;
import messif.objects.LocalAbstractObject; import messif.objects.LocalAbstractObject;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -94,18 +93,18 @@ public abstract class Node implements Serializable { ...@@ -94,18 +93,18 @@ public abstract class Node implements Serializable {
} }
protected void addObjectIntoHull(LocalAbstractObject object) { protected void addObjectIntoHull(LocalAbstractObject object) {
addObjectIntoHull(object, null); if (isCovered(object)) return;
}
switch (insertType) {
protected void addObjectIntoHull(LocalAbstractObject object, PrecomputedDistances distances) { case GREEDY:
if (isCovered(object, distances)) return; insertGreedy(object);
break;
if (insertType == InsertType.INCREMENTAL) { case INCREMENTAL:
hull.addHullObject(object); insertIncremental(object);
return; break;
default:
throw new IllegalStateException("Unexpected value: " + insertType);
} }
rebuildHull(object, distances);
} }
protected abstract void addObject(LocalAbstractObject object) throws BucketStorageException; protected abstract void addObject(LocalAbstractObject object) throws BucketStorageException;
...@@ -118,24 +117,19 @@ public abstract class Node implements Serializable { ...@@ -118,24 +117,19 @@ public abstract class Node implements Serializable {
protected abstract void gatherLeafNodes(List<LeafNode> leafNodes); protected abstract void gatherLeafNodes(List<LeafNode> leafNodes);
private void rebuildHull(LocalAbstractObject object, PrecomputedDistances distances) { private void insertGreedy(LocalAbstractObject object) {
List<LocalAbstractObject> objects = new ArrayList<>(getObjects()); List<LocalAbstractObject> objectsFromLeafNodes = getObjects();
objects.add(object); objectsFromLeafNodes.add(object);
if (distances == null) {
hull = new HullOptimizedRepresentationV3(objects);
} else {
hull = new HullOptimizedRepresentationV3(distances.getSubset(objects));
}
hull = new HullOptimizedRepresentationV3(objectsFromLeafNodes);
hull.build(); hull.build();
} }
private boolean isCovered(LocalAbstractObject object, PrecomputedDistances distances) { private void insertIncremental(LocalAbstractObject object) {
if (distances == null) { List<LocalAbstractObject> hullObjects = hull.getHull();
return hull.isExternalCovered(object); hullObjects.add(object);
}
return hull.isExternalCovered(object, distances); hull = new HullOptimizedRepresentationV3(hullObjects);
hull.build();
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment