如何更改我的算法以获取每次迭代的最远节点?
因此,我试图为每次迭代选择最远的节点。我首先随机选择第一个节点,然后继续选择第一个节点最远的节点。
从那里,我有两个节点,我想在距离(我使用欧几里得度量)中与其他节点进行比较。然后,我添加一个已经选择的节点并继续此过程,直到我选择k节点。
Node maxDistNode = null;
k = k - pickedNodes.size(); //in this case pickedNodes has 2 entries already
while(k > 0) {
for(Node pickedN: pickedNodes) {
for(Node notpickedN: allNodes) {
if(notpickedN.distance < distanceBetween(notpickedN, pickedN)) { //distanceBetween(Node a, Node b) is method that returns Math.hypot(a.x - b.x, a.x - b.x)
notpickedN.distance = distanceBetween(notpickedN, pickedN);
}
}
maxDistNode = Collections.max(allNodes, new Comparator<Node>() {
@Override
public int compare(Node o1, Node o2) {
if(o1.distance > o2.distance) {
return 1;
}
if(o1.distance == o2.distance) {
return 0;
}
return -1;
}
});
}
if(maxDistNode != null) {
maxDistNode.setPicked(true);
pickedNodes.add(maxDistNode);
allNodes.remove(maxDistNode);
--k;
}
}
节点最初具有integer.min_value的距离。现在的问题是,当k很小时,这可以很好地工作,尽管每当我想搜索更多节点时,这都会为我提供相同的k-times。因此,我留下了许多重复的节点。 如何更改此操作,以便可以在所有新添加和旧的picknodes上获得最远的节点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论