我很难理解分治算法在大于二维时如何工作,特别是如何在两个子问题之间找到最近的点对。
我知道只需要考虑距离两者在x
轴上的分割线上距离小于d
的点。
我知道在三维情况下需要将每个点与其他15个点进行比较。
我不明白的是如何选择这15个点。在二维情况下,只需按y
值对值进行排序并按顺序处理即可。然而,在三维情况下,每个点都需要与其在y
和z
轴上最接近的15个点进行比较。我似乎找不到确定这些15个点的方法,使其不具有O(n^2)
的最坏情况复杂度...
我在这里缺少什么?
我很难理解分治算法在大于二维时如何工作,特别是如何在两个子问题之间找到最近的点对。
我知道只需要考虑距离两者在x
轴上的分割线上距离小于d
的点。
我知道在三维情况下需要将每个点与其他15个点进行比较。
我不明白的是如何选择这15个点。在二维情况下,只需按y
值对值进行排序并按顺序处理即可。然而,在三维情况下,每个点都需要与其在y
和z
轴上最接近的15个点进行比较。我似乎找不到确定这些15个点的方法,使其不具有O(n^2)
的最坏情况复杂度...
我在这里缺少什么?