本人初来乍到,这是第一次在CSDN分享博文,如有谬误欢迎指出。
该问题三个维度的实现代码、暴力代码以及对拍测试脚本(Java):戳这里
低维时,最邻近点对问题可以利用分治求解。但是网络上相关资料良莠不齐,对于3维甚至难有有价值的参考。最近恰巧梳理了123维最邻近点对问题的相关知识,故在此分享。
1 一般问题描述
简单描述:
给出
m
m
m维下的
n
n
n个点,找到最近点对。
详细描述:
最邻近点对问题(Closest-Pair Problem):
m
m
m维下,对于一个有
n
n
n个点的点集
P
=
{
p
1
,
.
.
.
p
n
}
=
{
(
x
11
,
x
12
,
.
.
.
,
x
1
m
)
,
.
.
.
,
(
x
n
1
,
x
n
2
,
.
.
.
,
x
n
m
)
}
P = \{p_1,...p_n\} = \{(x_{11},x_{12},...,x_{1m}),...,(x_{n1},x_{n2}, ...,x_{nm})\}
P={p1,...pn}={(x11,x12,...,x1m),...,(xn1,xn2,...,xnm)}找到欧几里得距离dis最小的点对
{
p
i
,
p
j
}
\{p_i, p_j\}
{pi,pj}。其中
d
i
s
=
∑
k
=
1
m
(
x
i
k
−
x
j
k
)
2
dis = \sqrt{\sum_{k=1}^m(x_{ik} - x_{jk})^2}
dis=k=1∑m(xik−xjk)2
2 链接
因为思路相通所以循序渐进为妙,可以帮助理解高维。大佬请无视。
最邻近点对问题(Closest-Pair Problem):一维的分治解法详解
最邻近点对问题(Closest-Pair Problem):二维的分治解法详解
最邻近点对问题(Closest-Pair Problem):三维的分治解法详解