我在二维平面上有两组点。我想找到最接近的双点小号,吨使得小号∈ 小号,吨∈ Ť,并且欧几里德距离之间小号,吨是尽可能小。如何有效地做到这一点?可以在O (n log n )时间内完成吗,其中n = | S | + | T | ?
我知道,如果我给一组,那么就可以找到最接近的一对点小号,小号' ∈ 小号在Ø (ñ 日志ñ )使用的时间标准分而治之算法。但是,该算法似乎不能推广到两个集合的情况,因为S或T中两个最接近点之间的距离与这两个集合中两个最接近点之间的距离之间没有联系。
我以为存储设置的在ķ -d树,然后为每个小号∈ 小号,使用最近邻查询找到的最近点牛逼到小号。但是,最坏情况下的运行时间可能与O (n 2)时间一样糟糕。结果表明,如果T的点是随机分布的,则每个查询的预期运行时间为O (log n ),因此我们将获得一个预期运行时间为O (n log n )的算法。 如果可以保证点是随机分布的,但是我正在寻找一种适用于任何点集合(不一定是随机分布)的算法。
动机:一个有效的算法将对另一个问题有用。