如何根据相对于其他点的约束来计算点的坐标?

时间:2010-02-03 08:33:07

标签: algorithm math geometry

如果这是mathoverflow材料,请告诉我,我会在那里继续前行。我希望有人会认识到这一点并指出我正确的方向......

我正在尝试绘制相关节点。我已经弄清楚如何计算所有点之间的最小距离,现在我需要知道如何将它们变成2D空间中的实际坐标。

因此,给定点P n (其中n> 1),一组点[P 1 ... P n-1 ]和一组距离[d 1 .. d n-1 ]其中每个d代表P n 之间的最小距离和各个点,如何计算P n 的最佳有效坐标集[x,y]?

当我说“最佳”有效坐标集时,我指的是使P n 最接近所有其他点而不违反任何约束的集合。

我的第一个想法是将P 1 粘贴在[0,0],P 2 位于[0,d](d 1 对于P 2 )然后对于P 3 我会把它放在[0,y],其中y是P 3 具有的最小距离为了满足其d 1 和d 2 ,然后在半径为d 的P 2 周围移动它2 ,只要它仍然满足d 1

对于所有点都必须重复,这听起来好像需要很长时间。

这个问题是否与任何人敲响了什么?我不确定我在寻找什么样的公式或算法。

更新 我没想过“最接近”意味着什么。我知道写这篇文章时的意思,但我没想过计算它!

最小平方和听起来就像它能完成这项工作一样。

3 个答案:

答案 0 :(得分:1)

听起来好像你正试图做某种形式的multidimensional scaling

答案 1 :(得分:1)

没有约束的解决方案是设置

  

P n i = 1 n-1 P i /(n-1)< / p>

(限制更难;我知道如何做,请参阅下面的建议)

证明

我们希望尽量减少

  

Σ i = 1 n-1 || P n - P i || 2
  =Σ i = 1 n-1 (P n - P i )·(P n - P i
  =Σ i = 1 n-1 P n ·P n - 2P n ·P i + P i ·P i
  =Σ i = 1 n-1 P n ·P n - Σ i = 1 < / sub> n-1 2P n ·P i i = 1 n-1 P i ·P i
  =(n-1)P n ·P n - 2P n ·Σ i = 1 n-1 P i i = 1 n-1 P i ·P <子> I

由于我们在2d,这是2变量的二次方程;我们可以用偏导数来找到临界点(从而得到最小值):

  

f =(n-1)P nx 2 +(n-1)P ny 2 - 2P nx Σ i = 1 n-1 P ix - 2P ny Σ i = 1 n-1 P iy + Σ i = 1 n- 1 P i ·P i (常数,因此对衍生物无关紧要)
  D x f = 2(n-1)P nx - 2Σ i = 1 n-1 P <子> IX
  D y f = 2(n-1)P ny - 2Σ i = 1 n-1 P <子> IY

将最后两个导数设置为0,我们得到结果。

这被称为重心组合(或重心,或质心或者你是什么)。虽然这不能回答你的问题,但最后一个等式应该会有所帮助:

  

k =(n-1)P n ·P n - 2P n ·Σ i = 1 n-1 P i i = 1 n-1 P i ·p <子> I

其中k是常数。如果我们要在平面上绘制图形,那么对于某些k,我们得到一个点:P n ,我们的重心。当我们增加k时,我们得到一个以P n 为中心的圆的图 - 这个圆上的所有点都具有相同的平方和值。随着我们增加k,这个平方和值变得越来越大。

如果我们要以数学和危险的方式解决这个问题,我们希望找到最小的k,它创建一个圆圈,其中有一个点满足所有约束。我不知道我们是怎么做的。

为了估算程序中的答案,我会继续创建以我们的重心为中心的更大和更大的圆圈,直到我们找到一个有效的圆圈。要确定圆是否有效:找到我们的重心圆的所有碰撞点与约束创建的所有其他圆,并且我们的圆与其他圆碰撞的每个地方都创建一个切割点。通过我们所有的切点,我们将圆圈划分为弧线(不超过2n-1弧线,除非我们的中心正好是其中一个点) - 每个圆弧上的所有点将共享相同的“状态满足约束或不“,所以选择弧上的任何点来测试它。对圆上的所有圆弧执行此操作,如果它们都不满足,请将圆圈放大一点。

我们可以通过注意到如果我们仍然与所有相同的圈子碰撞相同的次数而增加圆圈大小没有任何帮助,我们可以做得更好。

答案 2 :(得分:0)

我的猜测一般来说这很难。你正在做的是从整个平面开始,然后在你现有的d周围移除光盘(半径为P),然后询问 - 在这个残缺的平面上哪里是'最接近'的点所有现有的P s?

即使您已经确定了“最接近”的意思(最小化平方距离的总和是传统的,但这可能不是您想要的),您仍然面临着残缺的飞机可以的问题在一般情况下,具有任意复杂的形状。我建议你转到mathoverflow。