more fixes to the VPTree, this time it's working consistently for real
git-svn-id: http://google-refine.googlecode.com/svn/trunk@293 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
f7ab7c9cf6
commit
3495c417cd
@ -80,12 +80,14 @@ public class VPTreeBuilder {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
TNode vpNode = new TNode(nodes[begin + getRandomIndex(delta)].get());
|
Node randomNode = nodes[begin + getRandomIndex(delta)];
|
||||||
|
TNode vpNode = new TNode(randomNode.get());
|
||||||
|
|
||||||
if (DEBUG) System.out.println("\nvp-node: " + vpNode.get().toString());
|
if (DEBUG) System.out.println("\nvp-node: " + vpNode.get().toString());
|
||||||
|
|
||||||
calculateDistances (vpNode , nodes, begin, end);
|
calculateDistances (vpNode , nodes, begin, end);
|
||||||
orderDistances (nodes, begin, end);
|
orderDistances (nodes, begin, end);
|
||||||
|
fixVantagPoint (randomNode , nodes, begin, end);
|
||||||
|
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
for (int i = begin; i <= end; i++) {
|
for (int i = begin; i <= end; i++) {
|
||||||
@ -127,6 +129,19 @@ public class VPTreeBuilder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void fixVantagPoint (Node pivot, Node nodes[], int begin, int end) {
|
||||||
|
for (int i = begin; i < end; i++) {
|
||||||
|
if (nodes[i] == pivot) {
|
||||||
|
if (i > begin) {
|
||||||
|
Node tmp = nodes[begin];
|
||||||
|
nodes[begin] = pivot;
|
||||||
|
nodes[i] = tmp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void orderDistances(Node nodes[], int begin, int end) {
|
private void orderDistances(Node nodes[], int begin, int end) {
|
||||||
NodeSorter.sort(nodes, begin, end);
|
NodeSorter.sort(nodes, begin, end);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user