2016-11-16 28 views
0

我需要从大量对象中找到最多similar到所需的object对象阵列中距离最近的对象

在这种情况下,object - 只有我们必须比较的数值的东西(例如下面的xy coords)。

By​​我们是指相应值之间的差异的最小总和。 enter image description here

我该如何以最快的方式做到这一点?

P.S.如果需要,可以在搜索之前排列对象数组。

P.S.S.我已经在math.stackexchange.com上问过这个问题,但有些用户说我也可以在这里找到一些东西。

+1

欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布准则。 [在主题](http://stackoverflow.com/help/on-topic)和[如何提问](http://stackoverflow.com/help/how-to-ask)适用于此处。 这通常是针对特定的编程问题。 “最快”取决于所使用的语言,但你没有发布任何代码。 – Prune

+0

@Prune我只是需要一些启动。我甚至不知道哪种语言可以解决这个问题以及如何,我不知道如何找到解决这个任务的方法。如果您对该主题有所了解,请分享它,无论使用哪种语言。 –

回答

0

这叫做distance function。最简单的就是取对应坐标的差异;取各差值的绝对值;将所有坐标加起来,这就是两组点之间的距离。用更多的代数术语:

让我们将点(Dx1,Dy1),(Dx2,Dy2),...和目标数组(Tx1,Ty1),(Tx2, Ty2),...你在上面的例子中有10个目标。

|Dx1 - Tx1| + |Dy1 - Ty1| + 
|Dx2 - Tx2| + |Dy2 - Ty2| + 
... 

这是d和T之间的距离 这样做对所有十项具体目标,并报告最小距离目标的最佳匹配。

+0

感谢您的回答。这是最简单明显的答案,对于小数据集来说是很好的。但不幸的是,如果我们将有大型数据阵列,那么计算它们几乎是不现实的。所以由于这个问题我问了这个问题。 –

+0

然后你必须改进你的问题陈述。如果你想选择最小差异总和的匹配,信息论证明你必须以某种方式计算差异之和。如果您具有某些特征的数据,将它们聚类并将计算距离节省到已知距离“所需”较远的聚类是可行的。但是,该聚类需要一个不重要的计算量 - 距离。 – Prune

+0

你能解释关于集群化的部分吗?我不明白我应该做什么。也许你可以通过我的示例在帖子中解释它?此外,我不明白如何将预计算距离存储到所需的值,如果每次需要的对象不同? –