2017/03/10
问:
知道一堆点,如何求出其中距离最近的一对?!按欧式距离。
除了暴力求解,还有没有其他的办法。这个算是最笨的办法,复杂度也比较高。
我在另外一个博客里看到,他是用分治法的方式进行处理,而且也指出这个算法的难点在于如何将各种情况考虑进去。!算法进行合并的时候,是最容易出现错误的。
分支法会将数据集分为两个区域,然后分别进行比较,找出最小距离的。
但是如果两个点恰恰在两个区域怎么比!?这就到了合并的情况。而且, 对于二维的情况也比较复杂,不容易表示出这样的点。
而昨天看的统计学习的办法,对于他求出几个最近的点。
他最开始的时候就知道自己要用这种方法,所以直接就将数据集进行了处理。用一种特殊的数据集进行存储,后面为了找到这些点,只需要进行查找就可以。
(这种问题算不算是一种查找的问题!?)
2018/08/14
上面这个说的有些不对,记得那个书上应该是采用了kd树这种数据结构来解决了这个问题,当然他们的这个需求跟我最上面的问的按个东西还不太一样(能解决问题)。
这就是说,数据结构决定了我后续的算法。