注:本文作者也没太搞懂K-center算法
什么是近似算法?
因为存在NP-Hard问题,没有算法能在多项式时间找出最优解。
在设计算法的时候要考虑三个问题:1.最优解 2.快速 3.全部情况
如果三个都考虑,可能没法在多项式时间内完成,所以就考虑2和3,在多项式的时间内找到一个解,这个解可能不是最优解,但也不会太坏。
这就是近似算法
常见例子有:装箱问题(Bin Packing)、背包问题(The Knapsack Problem)、纹理拼接问题(texture packing)
衡量近似算法
近似算法的得到的解不能太坏,不然我们就不用这个算法了。所以要能衡量这个算法的好坏,标准就是所得解与最优情况的比值,哪个放分母无所谓,但结果一定要大于1。
比值可能有小数位,变成大于它的最小整数(1.3->2),叫这个整数ρ (n)。
这个算法就叫做ρ(n)-approximation algorithm,显然ρ(n)越小越好。
什么是K-center问题
有一堆点(N),你要找到K个中心的位置,每个中心形成一个半径为r的圆,这些圆能覆盖所有的点。
K-center问题分析
定义dist(x,y)和 dist(x,C)x, y是点, C是点的集合。
d