Algorithm 在点集中找到两个至少有一半直径距离的点的线性算法
我被以下作业问题困住了: 考虑平面上的一个点集p,p |=n,让D(p)为p的直径,即p中任意两点之间的最大欧几里德距离。我的任务是找到一个O(n)时间的算法,在p输入时返回p的两个点x和y,D(x,y)>=D(p)/2,其中D表示欧几里德距离Algorithm 在点集中找到两个至少有一半直径距离的点的线性算法,algorithm,computational-geometry,Algorithm,Computational Geometry,我被以下作业问题困住了: 考虑平面上的一个点集p,p |=n,让D(p)为p的直径,即p中任意两点之间的最大欧几里德距离。我的任务是找到一个O(n)时间的算法,在p输入时返回p的两个点x和y,D(x,y)>=D(p)/2,其中D表示欧几里德距离 我不知道我怎么能做到。你能给我一个提示吗?假设你的观点是(xi,yi) 使用min(xi)和O(n)查找点,并将其命名为minX\u点 使用max(xi)和O(n)查找点,并将其命名为maxX\u点 用min(yi)用O(n)查找点,并将其命名为minX
我不知道我怎么能做到。你能给我一个提示吗?假设你的观点是
(xi,yi)
min(xi)
和O(n)
查找点,并将其命名为minX\u点
max(xi)
和O(n)
查找点,并将其命名为maxX\u点
min(yi)
用O(n)
查找点,并将其命名为minX\u点
max(yi)
和O(n)
查找点,并将其命名为maxY\u点
现在考虑将这4个点(具有水平和垂直边)框的矩形 此矩形的直径大于或等于D(P),因为所有P点都在其中。 矩形的直径如下所示
Rec_Diameter=sqrt((minX-maxX)^2+(minY-maxY)^2)
现在查找max((mixX-maxX),(minY-maxY))
最大值将是您所需的点,例如maxX_点
和minX_点
因为如果距离小于D(P)/2,那么我们有
Rec_Diameter=sqrt((minX-maxX)^2+(minY-maxY)^2)
哪个Rec_Diameter>=D(P)
不是真的任何一点至少离直径中的两个点中的一点那么远……谢谢你的回答,但我听不懂。我们不能假设D(P)是给定的,算法唯一的输入是P,计算D(P)需要O(n log(n))时间,如果它离其他点更远,那就更好了。只是为了确保我正确理解你。我们选取一些任意点,比如x,然后计算P中所有其他点y的d(x,y)。然后我们只选取d(x,y)最大的y,对吗?