【发布时间】:2012-11-21 03:18:21
【问题描述】:
[问题已重写以澄清问题]
我正在尝试提出一个排序功能。正在排序的是一个点列表。
排序函数取 3 分。一个来自要排序的点列表,另外两个用于比较。目标是确定要排序的点与其他两个点的相对欧几里得距离。当点直接位于两点之间时,应给出函数的最小值。该函数应利用两点之间的欧几里德距离。
到目前为止,该公式似乎应该是距离的一些平方,或者在两个给定点之间创建一个点,并使用到该点的欧几里得距离。到目前为止,我已经包含了两个可能的功能。
p is the point to be sorted
p1,p2 are the given points
def f(p,p1,p2): #Midpoint distance
midPoint = midpoint(p1,p2)
return distance(p,midPoint)
def f(p,p1,p2): #Sum of squares
return distance(p,p1) ** 2 + distance(p,p2) ** 2
def distance(pointA,pointB): #Psudocode
dx = pointA.x - pointB.x
dy = pointA.y - pointB.y
return sqrt(dx ** 2 + dy ** 2)
下面是一个例子:
这里考虑的两点是在它们之间画线的点。圈出的点应该是排序算法中的三个最低点。左边的近点因靠近两点之一而远离另一点而受到处罚。
【问题讨论】:
-
能否提供更多背景信息?因为我真的不明白你希望这三个最接近的逻辑。我会做与你完全相反的事情。我定义了一个距离
h,然后使用它我会说“哦,是的,它们确实是最接近的”或“不,它们不是”。在没有更多关于你想要拥有哪个特征的信息的情况下反其道而行之,真的很难。 -
听起来您正在使用矩阵,在这种情况下this might be what you're looking for。
-
请解释为什么您认为这三点最接近。这可能有助于澄清你的问题陈述,目前有点模糊。
-
另外,如果您不告诉我们您在做什么,我们怎么能告诉您“可接受的执行方式”?不同的情况需要不同的距离,所以我想说你的一般问题没有“可接受的”答案。如果你想要有用的答案,你必须缩小范围。
-
我已经更新了这个问题,试图澄清我的意思。我在想最小二乘/最小化平方和可能是我正在寻找的。span>