我正在开展一个项目,要求我跟踪二维飞机上的多个点。我需要添加允许某些点检测其他点的接近度的功能。我立即想到了最接近的一对问题,并认为我应该构建一个最小的生成树。
第一个问题是,这些点不断更新它们的坐标,我想知道这样做是否合理。
另一个问题是,我不能使用第三方库,所以没有jgraph或jung。我想知道是否有一种方法可以使用我给出的库来构建最小跨度。可以使用TreeMap还是我必须从头开始这样做?
答案 0 :(得分:0)
听起来您正在尝试进行最近邻查询。这是您尝试找到最接近另一个点的点(或多个点)的地方。对于一个天真的解决方案,您可以只存储一个点列表并使用距离公式迭代它们以找出哪些点最接近。但是,如果您想更快地进行查询,则需要使用支持这些类型查询的空间数据结构。我会建议一个KD树。 Java没有在其标准库中附带KD Tree实现,因此您需要自己实现它。
TreeMap只是Map
接口的一个实现,它允许您通过键来放置和检索值。如果你想写一些东西来生成最小的生成树,你需要自己做。
答案 1 :(得分:0)
以非常面向对象的方式执行此操作会使Point
对象使用Observer Pattern
并将自己注册为所有其他点的观察者,然后当点位置发生变化时,他们可以更新所有观察者他们改变了。您可以控制更改发生频率的阈值,或者在将通知发送给观察者之前需要更改的程度。这可以很好地工作,因为你说,“某些”点需要跟踪接近度,而不是全部。