问题描述:1.我现在有5个中心点,每个中心点作为一些点的中心,
         2.判断两两中心点的距离,如果其中两个中心点的距离最短,就合并这两个中心点,并且也将以这两个中心点作为中心的点也合并到一个类中.
         3.循环执行第2步,直到最后所有的点都合并成一个类为止请问一下怎么实现,想了很久,也没处理好这个问题,先谢谢了!

解决方案 »

  1.   

    举个例子吧,假如现在有5个类,a,b,c,d,e是这5个类的中心,
                   a1,a2,a3,a4,a5,a6的中心为a,属于第1个类
                   b1,b2,b3,b4,b5的中心为b,属于第2个类
                   c1,c2,c3,c4的中心为c,属于第3个类
                   d1,d2,d3,d4,d5的中心为d,属于第4个类
                   e1,e2,e3的中心为e,属于第5个类
    计算a,b,c,d,e5个中心两两之间的距离,如果c点和d点之间的距离最短,就将c1,c2,c3,c4,d1,d2,d3,d4,d5这些点合并到第3类或者第4类中.注:上述的点均为4维的坐标点.迭代执行上面的过程,直到所有的这些点属于一个大类中为止.不清楚的地方,多多包涵,我会继续更新的,谢谢!
      

  2.   

    这个和欧几里得距离差不多吧,搂住先吧所有的点用二维数组或链表存下来,然后两两之间算距离,记录下最小的那个的两个点的编号取中值存入新的点,去掉原来的点,用数组的话可以考虑a[m][5],最后一个是标志可以取0,1来判断此点是否被去掉,这样一直计算到只有一个点就ok了 ,思路这样,楼主写几个循环就ok了 呵呵
      

  3.   

    其实距离倒是好解决,比如高斯距离作为距离侧度就行。不过不明白的是楼主说的类,什么样的类,是Java概念上的类吗,如果是,如何合并类呢?或者类仅仅是几个点的集合,那就没有什么好说了,比较简单了。