连接图中最近点的最佳方法

时间:2013-11-01 14:25:18

标签: java nodes

我有一系列点(城市),我正在寻找如何找到10个最近点并将它们连接起来创建图形的最佳方法。它必须与每个点完全相同。

点类:

public class City 
{
    int key;
    public int population;
    Point position;

    City(int key, int population, Point position)
    {
        this.key = key;
        this.population = population;
        this.position = position;
    }

    void setPopulation(int newPopulation)
    {
        this.population = newPopulation;
    }
}

现在我在一个阵列中拥有所有积分:

City[] cities = new City[3000];

所有点都有坐标(所有坐标都是五个坐标,因为我必须确定每个点的最近点都超过5(km)。

所有城市都是随机生成的,所以第一个城市可以在左上角,第二个城市可以在右下角。

当我绘制它们时,这就是看所有点的方式。 map

现在我需要建议,如何找到最近的点以及如何连接它们以创建图形。

有什么建议吗?谢谢你的回复。

2 个答案:

答案 0 :(得分:0)

一个相对快速的解决方案是在每个点上使用适应的广度优先搜索并连接到它遇到的前10个点。

答案 1 :(得分:0)

一种非常简单的方法是使用一个库,例如JSI(请参阅nearestN),您可以确定其快速(实际上,jsi是RTree - 针对空间查询优化的实现。