Algorithm 在给定的欧几里德距离内的二维空间中寻找移动节点对?

Algorithm 在给定的欧几里德距离内的二维空间中寻找移动节点对?,algorithm,graph,simulation,graph-algorithm,Algorithm,Graph,Simulation,Graph Algorithm,我希望模拟放置在2D空间中且具有固定、有限通信范围的移动设备。我需要能够确定哪些节点对在彼此的范围内,并确保在顶点移入或移出范围时相应地更新边。我希望有1000个或更多节点,所以每个时间步进行完全成对比较(O(n^2))是不可行的。顶点将使用不同的方向和速度移动,因此我假设预测路径的“预测”方法也同样困难。我假设所有顶点都具有相同的通信半径 现有的仿真环境或Java库是理想的,但算法也会有所帮助。像ns-2这样的硬件模拟环境对于我正在寻找的简单功能来说是极其过分的。一个典型的简单解决方案是将空间

我希望模拟放置在2D空间中且具有固定、有限通信范围的移动设备。我需要能够确定哪些节点对在彼此的范围内,并确保在顶点移入或移出范围时相应地更新边。我希望有1000个或更多节点,所以每个时间步进行完全成对比较(O(n^2))是不可行的。顶点将使用不同的方向和速度移动,因此我假设预测路径的“预测”方法也同样困难。我假设所有顶点都具有相同的通信半径


现有的仿真环境或Java库是理想的,但算法也会有所帮助。像ns-2这样的硬件模拟环境对于我正在寻找的简单功能来说是极其过分的。

一个典型的简单解决方案是将空间划分为网格。如果通信范围为R,则可以使用例如R作为网格间距系数。在网格的每个单元中,持续维护属于该单元的那些节点的列表/集合。现在,为了找到移动设备M的邻居,检查其自身小区内的移动设备以及该小区的邻居就足够了。显然,还可以使用其他间距因子。如果不是每个移动设备都互相连接,这会大大加快速度。

正如@antti.huima所说,我们应该将欧几里德空间划分为网格,但网格的大小取决于需求。我不确定我们是否可以使集群脱离网格,但使集群更有效。
假设手机移动了一点点。。然后从集群C1移动到相邻集群c2,所以我们的手机应该与集群c2中给定范围内的所有手机配对。。。所以在这个过程中,我们不需要用所有剩余的N-1元素更新配对事件,只需要用集群中的元素更新配对事件。我们进一步假设集群半径为2R,其中R是我假设的移动范围。因此,当一个集群从C1移动到相邻集群时,周围将有atmost 8到10集群(想象为圆圈),因此节点或移动设备应与8到10集群的元素进行比较。。通过这种方式,我们最小化了配对的数量

能否请您详细说明配对和簇的devices和约束所需的参数……唯一的参数是r,即2D平面中允许通信的顶点之间的距离。否则,就不存在可以形成对的其他约束。