Algorithm 三角剖分覆盖另一点时查找最近3点的算法

Algorithm 三角剖分覆盖另一点时查找最近3点的算法,algorithm,geometry,Algorithm,Geometry,想象一幅画布,它周围随机分布着一堆点。现在选择其中一点。你如何找到离它最近的3个点,如果你画了一个三角形连接这些点,它将覆盖所选的点 澄清:所谓“最近”,我指的是到该点距离的最小总和 这主要是出于好奇。我认为如果一个点是未知的,但周围的点是已知的,那么这将是一个很好的方法来估计它的“值”。使用3个周围点,可以推断值。我以前从未听说过这样的问题,看起来不是很琐碎,所以我认为这可能是一个有趣的练习,即使这不是估计某件事的最佳方法。取最接近的N=3分。检查三角形是否合适。如果不是,则将N增加1,并尝

想象一幅画布,它周围随机分布着一堆点。现在选择其中一点。你如何找到离它最近的3个点,如果你画了一个三角形连接这些点,它将覆盖所选的点

澄清:所谓“最近”,我指的是到该点距离的最小总和



这主要是出于好奇。我认为如果一个点是未知的,但周围的点是已知的,那么这将是一个很好的方法来估计它的“值”。使用3个周围点,可以推断值。我以前从未听说过这样的问题,看起来不是很琐碎,所以我认为这可能是一个有趣的练习,即使这不是估计某件事的最佳方法。

取最接近的N=3分。检查三角形是否合适。如果不是,则将N增加1,并尝试所有组合。这样做,直到有东西合适或者什么都不合适。

这是我的第一次尝试:

  • 将空间分成四个象限 拾取的点位于[0,0] 库德
  • 找到最近的点 从每个象限(因此您有4个 积分)
  • 有三角形吗 点应该足够小(但不一定是最小的)

  • 您的问题描述不明确。在这个图中,你想要哪个三角形,红色的还是蓝色的

    蓝色三角形根据点距离的字典比较更接近,而红色三角形根据点距离的总和更接近

    编辑:您对其进行了澄清,以明确希望最小化距离之和(红色三角形)

    那么,这个素描算法呢

  • 假设所选点位于原点(便于描述算法)
  • 按距离原点的距离对点进行排序:P(1)最接近,P(n)最远
  • 从i=3开始,s=∞.
  • 对于a
  • 如果是≤ |P(1)|+| P(2)|+| P(i)|,停下来
  • 如果i=n,则停止
  • 否则,增加i并返回步骤4
  • 显然,在最坏的情况下,这是O(n³)

    这是另一个算法的草图。考虑所有的点对(A,B)。要使第三个点形成包含原点的三角形,它必须位于本图中的灰色阴影区域中:

    通过在极坐标(r,θ)中表示点并根据θ对它们进行排序,可以直接检查所有这些点并选择离原点最近的点

    在最坏的情况下,这也是O(n³),但在许多问题情况下,合理的访问对顺序(a,B)应该会导致提前退出

  • 就像@thejh建议的那样,根据与所选点的距离对点进行排序
  • 从前3个点开始,寻找一个覆盖所选点的三角形
  • 如果找不到三角形,请扩展范围以包括下一个最近的点,然后尝试所有组合
  • 一旦找到一个三角形,你就不一定有最终的答案。但是,现在您已经限制了要检查的最后一组点。要检查的最远可能点的距离等于找到的第一个三角形的距离之和。再远一点,距离之和肯定会超过找到的第一个三角形

  • 增加点的范围,以包括距离的最后一个点,这只是迭代方法上的一个警告。您可能会发现一个三角形,其中有3个“近点”,其“长度”大于通过向集合中添加一个较远的点而产生的另一个。抱歉,无法将此作为评论发布

    见图表。

    红色三角形的周长接近4R,而黑色三角形的周长为3sqrt[3]>5.2R

    亚分辨率:(解析几何基础,如果熟悉,请跳过)查找对半平面的点

    示例:让我们有两点:A=[A,b]=[2,3]和b=[c,d]=[4,1]。求向量u=A-B=(2-4,3-1)=(-2,2)。该向量与AB线平行,向量(-1,1)也平行。该直线的方程式由向量uAB中的点定义(即A):

    其中t是任何实数。摆脱t

    X = 2 -1*t
    Y = 3 +1*t
    
    t = 2 - X
    Y = 3 + t = 3 + (2 - X) = 5 - X
    X + Y - 5 = 0
    
    符合这个方程的任何一点都在直线上

    现在让我们用另一个点来定义半平面,即C=[1,1],我们得到:

    X + Y - 5 = 1 + 1 - 5 < 0
    
    解决方案:找到适合该点的最小三角形S

  • 找到最近的点P作为min(sqrt(Xp-Xs)^2+(Yp-Ys)^2))
  • 求与SP的垂直向量为u=(-Yp+Ys,Xp-Xs)
  • 找到两个最接近的点AB,从相对的半平面到sigma=pP,其中p=Su(参见子解),例如A位于线q=SP的不同位置(参见子解的最后一部分)
  • 现在我们有了三角形ABP覆盖S:计算距离之和|SP|+|SA|+|SB|
  • 找到距离S最近的第二个点,然后从1开始继续。如果距离之和小于前面步骤中的距离之和,请记住它。如果|SP |大于最小距离之和或没有更多可用点,则停止
  • 我希望这张图表能说明问题。

    您想如何定义“最近的3点”?最小平均距离?最小面积三角形?你的问题不明确。
    X + Y - 5 > 0