关闭

算法课笔记系列(九)——近似算法(Part1)

标签: 算法近似算法
7066人阅读 评论(0) 收藏 举报
分类:

这一周的内容是近似算法(Approximation Algorithm)。

对于许多的问题的算法,我们通常目标在于设计一个可以在多项式时间内运行的算法。然而,上一节的NP问题告诉我们这样的算法不一定存在。近似算法其实是针对NP难问题的一种退让,对于许多P不等于NP的最优化问题,无法在多项式时间内找到最优解。因此,如果可以只求一个我们可以接受的解,而不是非要最优解,那么可能存在一个多项式时间的算法。


因此,这里的“近似”其实就是针对最优化问题而言的。其主要应用也是用来解决最优化的问题,并且要求其时间花销为多项式级别的时间。

首先,提出一个NP的优化问题,即NPO问题。

        

不同的NOP问题的相似程度可能有非常大的差别。

一个NP优化问题P可以用一个四元组(I, Sol, m, goal)来表示,也就是:

I : I是P的实体的集合,可以在多项式时间内被识别;

Sol: 给定一个x∈  I, Sol(x)表示x的可能的解的集合;对于任意的y∈  Sol(x), |y|是|x|的多项式;给定任何|x|的多项式x和y,如果有y∈  Sol(x),那么这个问题可以在多项式时间内决定。

m: 给定一个实例x∈  I,y∈  Sol(x), y是x的一个可行解,m(x,y)表示y的值,并且,可以在多项式时间内被解决的函数

Goal ∈ {max, min}。表示这是一个最大化问题还是最小化问题。

下面定义一个NPO类:

类NPO是所有NP优化问题的集合。NPO问题的目标是,对于一个实体x,找到一个最优解,也就是一个可行解y使得m(x,y)=goal{m(x,y’): y’∈ Sol(x)}.

近似算法则是给定一个NP优化问题P=(I,Sol, m, goal),一个算法A是对P的一个近似算法,如果给定任意的实例x∈  I, 它返回一个近似解,也就是一个有着保障质量的可行解A(x) ∈Sol(x) 。这里的保障的质量是只在近似与启发法之间的差异。

对于一个近似算法,我们关心以下两点:

1.      算法的时间复杂度(必须为多项式级的)

2.      解的近似程度(可能与算法设计、问题规模、输入实例等有关)

为了衡量解的近似程度,提出了近似比。

令P为一个NPO问题,给出一个实例x和x的一个可行解y,我们定义y对于x的一个性能比值为

         

r-近似的定义为:

给定一个优化问题P和一个P的近似算法A,A被称为一个r近似算法则对于P,如果给定P的任意实例x,近似算法A(x)的性能比界为r,即

下面定义F-APX,给定一类函数F,一个NPO问题P属于类F-APX如果一个r近似多项式时间算法A对于P存在,对于某个函数r∈ F。

           

一个NPO问题P属于类PTAS如果一个算法A存在使得对于任意有理数ε> 0, 当将A应用到输入(x, ε), 它返回x的一个(1+ε)近似解在|x|的多项式时间内。通俗解释说,任意给定一个ε,这种“模式”都可以在多项式时间内完成,并且可以任意的逼近最优解。但是,随着ε变小,所花的时间可能急剧增多,比如O(n^2/ε)O(n^2/ε)。

这样的“模式”称为多项式时间近似模式(Polynomial-time approximation scheme,简称PTAS)。

FPTAS(Full PTAS)则是,如果一个算法A存在使得对于任意有理数ε> 0, 当将A应用到输入(x, ε), 它返回x的一个(1+ε)近似解在|x|和1/ε的多项式时间内.

如果P不等于NP,那么.

                    

       下面开始一些实际的例子。首先是从贪心算法的角度,下周将接触到从序列算法的角度。

使用贪心算法的角度的流程是,给定一个问题的实例指定一组条目。目标是决定满足问题限制的条目的一个子集,最大化或者最小化评价函数。具体步骤为,首先根据一些标准对这些条目进行排序,接着从空集开始增量的建立问题的解,一次只考虑一个条目,然后保持被选择了的条目的集合;当达到问题的限制条件时,终止。

1.   集合覆盖问题

给定一个有n个元素的集合 ,U的一个子集的集合为 ,目标是找到一个子集能够覆盖U的所有元素。测量函数为计算选择子集的总成本,

         

算法实现为:

         

一个集合S的成本有效性是指它覆盖新元素时的平均成本,一个元素e的成本是当e被覆盖时的平均成本。贪心集合覆盖的时间复杂度为O(mn)。

贪心集合覆盖时一个对于最小集合覆盖问题的Hn因子近似算法,其中,即调和数。(Log-APX)

                   

       最优覆盖的成本为1+ε,当贪心算法将输出覆盖的成本为

2.   最大背包问题

给定一个包含条目的有限集合X和一个正整数b,对于每一个xi∈ X,有一个价值pi∈ Z+,和一个大小ai∈ Z+。

我们目标是找到条目的一个集合使得,测量函数为计算选择条目的总价值测量函数为计算选择自己的总成本 .

              

贪心背包问题的复杂度为O(nlogn),对于该算法的近似比,事实上,贪心背包问题的解从最优值而言可以是任意远的。贪心背包的糟糕性能是因为算法并不能包含有着最高性能的利益的元素当最优解仅仅包含这个元素时。

3.   最大独立集问题

给定一个图G=(V,E),目标是为了在G上找到一个独立集, 使得对于任意的边 (u, v) ∈ E,有u ∉ V‘或者 v ∉ V‘。一个立方体有6个最大独立集(下图中红色结点标注)

               

                

给出一个有n个顶点和m条边的图G,令,贪心独立集的近似比为

 

Reference:

http://zhangxiaoyang.me/categories/intro-to-algorithms-tutorial/intro-to-algorithms-tutorial-9.html

 

0
0
查看评论

算法导论之NP完全性和近似算法

NP完全性和近似算法 在理解NP完全性之前,笔者想引入关于科学与伪科学的定义。凡可接受实践检验、可被证实和被否正的为科学,相反之为非科学,而伪科学是非科学之子集,与科学相对立,认定非科学为科学的即是伪科学。三者关系可简化为:科学相反于非科学、对立于非科学子集伪科学。集合的运算关系见公式(1),科学定...
  • fjssharpsword
  • fjssharpsword
  • 2016-05-04 17:14
  • 4232

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

K-center
  • Ken_Kun
  • Ken_Kun
  • 2017-05-30 12:09
  • 569

拉普拉斯近似算法小结

在机器学习中,经常遇到需要对复杂分布进行近似的情况。目前常用的近似算法主要有三种:拉普拉斯近似、变分近似、吉布斯采样。其中拉普拉斯近似算法是用一个高斯分布来近似原始分布,当原始分布比较简单的时候效果会较好。目标:用一个高斯分布近似一组连续变量上的概率密度分布。一维空间:变量zz,假设分布为p(z)=...
  • wangjian1204
  • wangjian1204
  • 2015-11-05 20:31
  • 3826

NP完全性理论与近似算法

转自:http://www.cnblogs.com/chinazhangjie/archive/2010/12/06/1898070.html         一、图灵机 根据有限状态控制器的当前状态及每个读写头读到的带符号,图灵机的一个计算步可实...
  • acm_1361677193
  • acm_1361677193
  • 2015-09-04 19:46
  • 935

高性能算法与固定近似比算法

以前做研究写论文,总爱用高性能这一词来形容所提的算法,有点王婆卖瓜的感觉。当然,所研究的算法的性能是不错的,但是否是高性能,自己不敢说一定。最近翻读Vazirani的《Approximate Algorithms》一书,仔细重读了他的前言,发现他给出了高性能算法的一个定义,即高性能算法的解与最有解的...
  • mao_kun
  • mao_kun
  • 2014-11-02 15:31
  • 1762

背包问题的动态规划算法和fptas

背包问题instance:给定n个item,i=1,2,…,ni=1,2,\dots,n; weights w1,w2,…,wn∈Z+w_1,w_2,\dots,w_n\in Z^{+}; values v1,v2,…,vn∈Z+v_1,v_2,\dots,v_n\in Z^{+}, 给定背包容量B...
  • Hlveying
  • Hlveying
  • 2017-12-28 21:38
  • 36

近似算法

近似算法
  • jingyi130705008
  • jingyi130705008
  • 2017-11-03 14:29
  • 159

0-1背包问题的多种算法设计与分析

0-1背包问题的多种算法设计与分析 0-1背包问题描述:给定一组共n个物品,每种物品都有自己的重量wi(i=1~n)和价值vi(i=1~n),在限定的总重量(背包的容量C)内,如何选择才能使得选择物品的总价值之和最高。选择最优的物品子集放置于给定背包中,最优子集对应n元解向量(x1,…xn),&#...
  • wspxxy
  • wspxxy
  • 2014-06-12 23:50
  • 2254

欧式空间上旅行售货员问题 (TSP问题) 的2-近似算法。

注:欧式空间满足三角不等式。TSP问题:给定欧式空间上n个城市相互之间的距离dij, 1£i,j£n,求经过每个城市恰好一次的最短的环游。此问题是NP-困难的,设计求解精确解的多项式算法几乎是不可能的。2-近似算法:是指对所有的输入,算法求得的解不超过最优解的2-倍(最小化问题)...
  • jeanFlower
  • jeanFlower
  • 2016-11-19 14:17
  • 1914

[代码实例]字符串近似匹配算法 C++

[代码实例]字符串近似匹配算法英雄C、C++ (2003-10-29 13:00:21)  字符串的近似匹配,就是允许在匹配时有一定的误差,比如在字串“以前高手好久不见”中找“以前是高手”也能成功。具体地说,错误可以有三种类型:加字符(以前也是高手)、漏字符(以前高手)和替换字符(以前石膏...
  • JacksonLiang
  • JacksonLiang
  • 2006-09-26 09:33
  • 2224
    个人资料
    • 访问:245976次
    • 积分:1679
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:8篇
    • 译文:4篇
    • 评论:26条
    最新评论