我需要从大量对象中找到最多similar
到所需的object
。对象阵列中距离最近的对象
在这种情况下,object
- 只有我们必须比较的数值的东西(例如下面的x
和y
coords)。
我该如何以最快的方式做到这一点?
P.S.如果需要,可以在搜索之前排列对象数组。
P.S.S.我已经在math.stackexchange.com上问过这个问题,但有些用户说我也可以在这里找到一些东西。
我需要从大量对象中找到最多similar
到所需的object
。对象阵列中距离最近的对象
在这种情况下,object
- 只有我们必须比较的数值的东西(例如下面的x
和y
coords)。
我该如何以最快的方式做到这一点?
P.S.如果需要,可以在搜索之前排列对象数组。
P.S.S.我已经在math.stackexchange.com上问过这个问题,但有些用户说我也可以在这里找到一些东西。
这叫做distance function。最简单的就是取对应坐标的差异;取各差值的绝对值;将所有坐标加起来,这就是两组点之间的距离。用更多的代数术语:
让我们将点(Dx1,Dy1),(Dx2,Dy2),...和目标数组(Tx1,Ty1),(Tx2, Ty2),...你在上面的例子中有10个目标。
|Dx1 - Tx1| + |Dy1 - Ty1| +
|Dx2 - Tx2| + |Dy2 - Ty2| +
...
这是d和T之间的距离 这样做对所有十项具体目标,并报告最小距离目标的最佳匹配。
感谢您的回答。这是最简单明显的答案,对于小数据集来说是很好的。但不幸的是,如果我们将有大型数据阵列,那么计算它们几乎是不现实的。所以由于这个问题我问了这个问题。 –
然后你必须改进你的问题陈述。如果你想选择最小差异总和的匹配,信息论证明你必须以某种方式计算差异之和。如果您具有某些特征的数据,将它们聚类并将计算距离节省到已知距离“所需”较远的聚类是可行的。但是,该聚类需要一个不重要的计算量 - 距离。 – Prune
你能解释关于集群化的部分吗?我不明白我应该做什么。也许你可以通过我的示例在帖子中解释它?此外,我不明白如何将预计算距离存储到所需的值,如果每次需要的对象不同? –
欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布准则。 [在主题](http://stackoverflow.com/help/on-topic)和[如何提问](http://stackoverflow.com/help/how-to-ask)适用于此处。 这通常是针对特定的编程问题。 “最快”取决于所使用的语言,但你没有发布任何代码。 – Prune
@Prune我只是需要一些启动。我甚至不知道哪种语言可以解决这个问题以及如何,我不知道如何找到解决这个任务的方法。如果您对该主题有所了解,请分享它,无论使用哪种语言。 –