您的位置:首页 > 其它

近似算法与K-center问题的解释不清楚笔记

2017-05-30 12:09 447 查看
注:本文作者也没太搞懂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是点的集合。

dist(x, y):两个点间的距离

dist(x, C):点x到C集合中所有点的距离的最小值,在本问题里就是里最近中心的距离

在这个问题里,把点实体化为老年人的房子(House->h),中心实体化为老年人活动中心(Center->C)

问题就转化为求出所有的dist(h.i, C),然后取其最大值作为r,这样每个老年人都最多走r距离找到一个活动中心。

为了让老年人少走点路,K-center问题就需要找出让r最小的K个中心位置。

这个问题里我们用C*和r*表示最佳的情况。

为什么K-center问题需要用近似算法解决

亟待解决!

第一反应是因为K个点的位置组合太多了,遍历会很慢。但很多非近似算法不需要考虑所有情况,只需要考虑某些情况(比如最优情况,greedy)

问题转化为:为什么其他算法思想没法在多项式时间解决这个问题

下面第一个贪婪算法可能能帮助理解。

做了texture packing 的project,感觉四个算法的思想都是贪婪算法的思想,课件上K-center问题的两个可行的2-approximation算法也都是贪婪算法。
是否近似算法一般都用的贪婪算法的思想呢?


一个不可行的贪婪算法

先建造一个老年活动中心,让老年人们都有地方去且r最小,然后再建第二第三个,缩小r的值。

但问题是建造了中心后拆起来不方便,就有可能出现特别糟糕的情况,让这个中心不如废弃。

举例:两个城市集资建立一个老年活动中心,当然会建在两个城市间。但后来老年人们觉得还是太远了,于是让儿女众筹出了可以再建两个中心的钱,在各自城市建立了新的两个中心。第一个中心就没用了。(K = 3)r大幅度缩短,从高速路变成了城市街道的距离。

如果只众筹出了一个中心的钱,那还有一个城市的老年人要跑和以前一样远的距离(半条高速路长),r还是没变。(K = 2),显然多等一段时间在两个城市各建一个才是最优情况。

一个可行的贪婪算法 近似算法Greedy-2r

!!!!!!发现理解有点不太对,思考中。请不要看下去了

这个算法是预先设定一个r值,然后看看这个r值能不能解决问题。

如何看能否解决问题?

随便选一个老年人A把他家作为活动中心,那些离A距离在2r内的老年人就可以不用去别的中心了。然后在从剩下的老年人中重复这个操作,直到没有老年人了为止。

如果最后选出了K以内的老年人,r就是一个可行解。

如果选的比K多,说明r肯定比最优解r*要小。

//伪代码
Centers  Greedy-2r ( Sites S[ ], int n, int K, double r )
{   Sites  S’[ ] = S[ ]; /* S’ is the set of the remaining sites */
Centers  C[ ] = ∅;
while ( S’[ ] != ∅ ) {
Select any s from S’ and add it to C;
Delete all s’ from S’ that are at dist(s’, s) ≤ 2r;
} /* end-while */
if ( |C| ≤ K ) return C;
else ERROR(No set of K centers with covering radius at most r);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: