最大的最小距离算法核心

步骤:
1.从初始数据集D={x1,x2,… xn}中选取一个点作为第一个聚类中心z1
2.计算数据集D中其他点到z1的距离集合d1i={d12,d13,…d1n},选择其中最大的max{d1i}对应的点作为第二个聚类中心z2.
3.计算D中各点到z1,z2的举例d1i,d2i,找到其中每对的最小值的min{d1i,d2i},(注,min{d1i,d2i}是一个数据集,是{min{d11.d21},min{d12,d22},…min{d1n,d2n}}的缩写)。
4.计算min{d1i,d2i}的最大值–max{min{d1i,d2i}},(注max{min{d1i,d2i}}是一个值,min{d1i,d2i}中的最大值)
5.若存在对应的点xi可以使max{min{d1i,d2i}}>m*||z1-z2||,(其中m是其中 m 为最大最小距离算法中的检验参数,通常取 0<m<1,||z1-z2||为z1到z2的距离),则对应的xi使第三个聚类中心z3。否则结束聚类中心的选取。
6.如第5步,一次类推。
7,若已经存在k聚类中心,判断是否存在xi是的max{min{d1i,d2i,…dki}}>m*||z1-z2||,若上式子成立选择xi为第k+1个聚类中心,否则结束。
(注max{min{d1i,d2i,…dki}}>m*||z1-z2||次不等式在有些书中为max{min{d1i,d2i,…dki}}>m*[average(||z1-z2||,||z2-z3||,|||z3-z4|,…,||z(k-1)-zk||)])
安排房间
描述

在一条街道上面,有n个房间,第i个房间在x[i]的位置,现在要给m个人安排房间,如果他们住的太近,就会打架,所以我们需要找出一个距离,使任意两个人之间的最小距离尽可能的大,那么,这个最大的最小距离是多少呢?

输入

第一行用空格分隔的两个整数n和m;

第二行为n个用空格隔开的整数,表示位置x[i]。

输出

输出仅一个整数,表示最大的最小距离值。

输入样例 1

5 3
1 2 8 4 9
输出样例 1

3
提示
如果安排 1 2 4 ,那么任意最近两个人的最小距离就是1 , 如果安排1 4 8 , 那么任意最近两个人的最小距离就是3.还有许多种安排方案,但是所有方案中最大的最小距离就是3

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值