首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个有趣的有关问题

2012-02-24 
一个有趣的问题有一个数组[m][n]数组中存放的是数值,现在有没有一种好的算法,能把数组中的数值进行分类,分

一个有趣的问题
有一个数组
[m][n]

数组中存放的是数值,现在有没有一种好的算法,能把数组中的数值进行分类,

分类依据是按数值的大小来分类。

例:
a[3][3]
{
1 3 4
90 76 43
13 6 20
}

期望的分类结果是三类
{1,3,4,6}
{13,20}
{43,76,90}


也就是能找几个中心点,使得存在一些数据与这些中心点的距离最小。

谢谢,帮顶者有分。


[解决办法]
你搜一下“聚类算法”,应该是你要的!
[解决办法]
分成几类呢
[解决办法]
我觉得你举得例子,对于数组是几维都一样。都是按一维考虑的。

如果是这样。那就先对所有的数排序,然后还要看要求了。

例如每一类的总量是否有要求,分成几个类是否有要求。

因为我看你的例子,6和13不能分为一类,而13和20却可以分为一类,并不是简单的考虑了距离。

而1和3分为一类,又不仅仅是考虑到倍数,有一个可能是13超过6的2倍,所以分为新类,而43超过20的2倍,又划分一类。

所以我觉得可能考虑了多种因素。
[解决办法]
无非是排序,控制一下每个排序的作用域就行了
例如a[m][n]
a[0][n]是一个域,按照输入的范围排序
[解决办法]
排序-->总数为奇数,取中点
-->总数为偶数,中中间2点。

[解决办法]
up,排序后的操作不是很透彻
[解决办法]
用哈希法,分类
[解决办法]
先记录中心点到各相邻中心点的距离,然后除以2得到覆盖半径,再依次划分集合即可
最笨的方法大概需要O(n*M)的时间,n是数据个数,M是中心点个数,应该还能通过技巧改进
[解决办法]

探讨

引用:

用哈希法,分类

如何用哈希方法分类???

能详细一点吗?

[解决办法]
探讨

引用:

先记录中心点到各相邻中心点的距离,然后除以2得到覆盖半径,再依次划分集合即可
最笨的方法大概需要O(n*M)的时间,n是数据个数,M是中心点个数,应该还能通过技巧改进


有没有具体一点的步骤??
初始时,中心点是什么?

热点排行