diff options
author | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:33 +0000 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:33 +0000 |
commit | ace5fa7f57d49756c0e1b111a30f3b6a9436c1cb (patch) | |
tree | 041e034bddeeaf574c02ca8f040b1359cef00133 /src/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java | |
parent | c36aa2a8fd31ca5e225ff30278e910070cd2c8c1 (diff) |
Import Upstream version 0.5.0
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java b/src/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java index fcd6fad1..cdc3fce4 100644 --- a/src/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java +++ b/src/de/lmu/ifi/dbs/elki/index/preprocessed/knn/MaterializeKNNPreprocessor.java @@ -31,6 +31,7 @@ import javax.swing.event.EventListenerList; import de.lmu.ifi.dbs.elki.database.ids.ArrayDBIDs; import de.lmu.ifi.dbs.elki.database.ids.ArrayModifiableDBIDs; import de.lmu.ifi.dbs.elki.database.ids.DBID; +import de.lmu.ifi.dbs.elki.database.ids.DBIDIter; import de.lmu.ifi.dbs.elki.database.ids.DBIDUtil; import de.lmu.ifi.dbs.elki.database.ids.DBIDs; import de.lmu.ifi.dbs.elki.database.ids.HashSetModifiableDBIDs; @@ -127,9 +128,9 @@ public class MaterializeKNNPreprocessor<O, D extends Distance<D>> extends Abstra } } else { - for(DBID id : ids) { - KNNResult<D> knn = knnQuery.getKNNForDBID(id, k); - storage.put(id, knn); + for (DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) { + KNNResult<D> knn = knnQuery.getKNNForDBID(iter, k); + storage.put(iter, knn); if(progress != null) { progress.incrementProcessed(getLogger()); } @@ -150,8 +151,9 @@ public class MaterializeKNNPreprocessor<O, D extends Distance<D>> extends Abstra public void insertAll(DBIDs ids) { if(storage == null && ids.size() > 0) { preprocess(); + } else { + objectsInserted(ids); } - objectsInserted(ids); } @Override @@ -213,25 +215,25 @@ public class MaterializeKNNPreprocessor<O, D extends Distance<D>> extends Abstra private ArrayDBIDs updateKNNsAfterInsertion(DBIDs ids) { ArrayModifiableDBIDs rkNN_ids = DBIDUtil.newArray(); DBIDs oldids = DBIDUtil.difference(relation.getDBIDs(), ids); - for(DBID id1 : oldids) { - KNNResult<D> kNNs = storage.get(id1); + for (DBIDIter iter = oldids.iter(); iter.valid(); iter.advance()) { + KNNResult<D> kNNs = storage.get(iter); D knnDist = kNNs.get(kNNs.size() - 1).getDistance(); // look for new kNNs KNNHeap<D> heap = null; - for(DBID id2 : ids) { - D dist = distanceQuery.distance(id1, id2); + for (DBIDIter iter2 = ids.iter(); iter2.valid(); iter2.advance()) { + D dist = distanceQuery.distance(iter, iter2); if(dist.compareTo(knnDist) <= 0) { if(heap == null) { heap = new KNNHeap<D>(k); heap.addAll(kNNs); } - heap.add(dist, id2); + heap.add(dist, iter2); } } if(heap != null) { kNNs = heap.toKNNList(); - storage.put(id1, kNNs); - rkNN_ids.add(id1); + storage.put(iter, kNNs); + rkNN_ids.add(iter); } } return rkNN_ids; @@ -247,11 +249,11 @@ public class MaterializeKNNPreprocessor<O, D extends Distance<D>> extends Abstra private ArrayDBIDs updateKNNsAfterDeletion(DBIDs ids) { SetDBIDs idsSet = DBIDUtil.ensureSet(ids); ArrayModifiableDBIDs rkNN_ids = DBIDUtil.newArray(); - for(DBID id1 : relation.iterDBIDs()) { - KNNResult<D> kNNs = storage.get(id1); + for(DBIDIter iditer = relation.iterDBIDs(); iditer.valid(); iditer.advance()) { + KNNResult<D> kNNs = storage.get(iditer); for(DistanceResultPair<D> kNN : kNNs) { - if(idsSet.contains(kNN.getDBID())) { - rkNN_ids.add(id1); + if(idsSet.contains(kNN)) { + rkNN_ids.add(iditer); break; } } @@ -280,8 +282,8 @@ public class MaterializeKNNPreprocessor<O, D extends Distance<D>> extends Abstra if(stepprog != null) { stepprog.beginStep(1, "New deletions ocurred, remove their materialized kNNs.", getLogger()); } - for(DBID id : ids) { - storage.delete(id); + for (DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) { + storage.delete(iter); } // update the affected kNNs @@ -349,11 +351,11 @@ public class MaterializeKNNPreprocessor<O, D extends Distance<D>> extends Abstra HashSetModifiableDBIDs ids = DBIDUtil.newHashSet(); for(Collection<DistanceResultPair<D>> drps : extraxt) { for(DistanceResultPair<D> drp : drps) { - ids.add(drp.getDBID()); + ids.add(drp); } } - for(DBID id : remove) { - ids.remove(id); + for (DBIDIter iter = remove.iter(); iter.valid(); iter.advance()) { + ids.remove(iter); } // Convert back to array return DBIDUtil.newArray(ids); |