算法:点与点之间欧式距离最小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法:点与点之间欧式距离最小相关的知识,希望对你有一定的参考价值。

参考技术A

2017/03/10
问:
知道一堆点,如何求出其中距离最近的一对?!按欧式距离。
除了暴力求解,还有没有其他的办法。这个算是最笨的办法,复杂度也比较高。

我在另外一个博客里看到,他是用分治法的方式进行处理,而且也指出这个算法的难点在于如何将各种情况考虑进去。!算法进行合并的时候,是最容易出现错误的。
分支法会将数据集分为两个区域,然后分别进行比较,找出最小距离的。
但是如果两个点恰恰在两个区域怎么比!?这就到了合并的情况。而且, 对于二维的情况也比较复杂,不容易表示出这样的点。

而昨天看的统计学习的办法,对于他求出几个最近的点。
他最开始的时候就知道自己要用这种方法,所以直接就将数据集进行了处理。用一种特殊的数据集进行存储,后面为了找到这些点,只需要进行查找就可以。
(这种问题算不算是一种查找的问题!?)

2018/08/14
上面这个说的有些不对,记得那个书上应该是采用了kd树这种数据结构来解决了这个问题,当然他们的这个需求跟我最上面的问的按个东西还不太一样(能解决问题)。
这就是说,数据结构决定了我后续的算法。

最接近一组点的线[重复]

【中文标题】最接近一组点的线[重复]【英文标题】:Line closest to a set of points [duplicate] 【发布时间】:2013-09-08 02:34:16 【问题描述】:

给定一组pointsS (x, y)

找到与所有点的距离最小的line? 也就是说,最小化每个点与最优线之间的距离总和(绝对值或平方)。

我所说的距离是指点和线之间的最短距离。 也就是最常见的欧式空间中的欧式距离。

我尝试谷歌搜索但找不到任何相关结果,是否有任何线扫描算法可以完成任务?

【问题讨论】:

您是指与线性回归显着不同的东西吗? @JerryCoffin 最好是 @JerryCoffin 也许他们的意思是Deming regression? 没有“与所有点的距离”之类的东西。有很多点和很多距离。您可能希望最小化所有距离的 sum,或者(通常这样做)所有 squared 距离的总和,或者可能是所有距离的某个其他函数。跨度> 我不同意这个问题是重复的断言。作为@n.m。指出,问题中没有关于需要最小化线和点之间距离的哪个函数的声明。线性回归使平方距离之和最小化;没有理由相信问题与此有关。当我读到它时,问题是关于最小化线和点集之间的最大距离。在这种情况下,最好的答案是找到集合的最小直径,并通过直径中间垂直于它放置线。 【参考方案1】:

我想您正在尝试拟合曲线/直线,因此我建议您使用最小二乘法拟合您的情况。

你可以看看:http://www.alglib.net/interpolation/leastsquares.php

希望对您有所帮助。 :-)

【讨论】:

最小二乘法,又称线性回归,确实是最流行的线拟合技术,但它并不是所有线拟合问题的通用解决方案。有时需要最小化最大距离,而不是距离平方和,这种情况下的答案会大不相同。

以上是关于算法:点与点之间欧式距离最小的主要内容,如果未能解决你的问题,请参考以下文章

DBSCAN算法实现---Python

机器学习基于组平均的AGNES算法,支持多维数组,距离用欧式距离

K-近邻算法欧式距离

两个向量之间的欧式距离

机器学习基于组平均的AGNES算法,支持多维数组,距离用欧式距离

分类算法——K-邻近