Approximation method(近似算法)

定义

近似算法是一种用来处理NP-完全优化问题的一种方法。

特点

  • NP-难问题
  • 在大多数情况下是多项式算法
  • 近似比

近似比

ρ ( n ) ≥ m a x ( C C ∗ , C ∗ C ) \rho(n) \ge {max({C \over{C^*}},{C^* \over{C}})} ρ(n)max(CC,CC)
第一项为求极小值时,第二项为求极大值时。
近似比越大,算法性能越差。

近似策略/近似结构

优化问题的近似策略是一种近似算法,它的输入不仅是问题的一个实例,而且是一个值 ϵ \epsilon ϵ,因此对于任何确定的 ϵ \epsilon ϵ,该策略是一个 ( 1 + ϵ ) (1+\epsilon) (1+ϵ)-近似算法。

PTAS

多项式时间近似策略
对任意确定的 ϵ > 0 \epsilon>0 ϵ>0,运行时间与输入算例的大小 n n n呈多项式关系。

FPTAS

完全多项式时间近似策略
对任意确定的 ϵ > 0 \epsilon>0 ϵ>0,运行时间与输入算例的大小 n n n 1 / ϵ 1/\epsilon 1/ϵ都呈多项式关系。

例1.顶点覆盖问题

目标

对给定无向图,寻找一个最小的顶点集合使之满足“顶点覆盖”。

算法

在这里插入图片描述

证明

  • (1)多项式性
    已证明其在多项式时间内运行。
  • (2)正确性
    算法返回的集合C中的顶点是“顶点覆盖”,因为该算法的循环直到所有的边的某一顶点都存在集合C中才结束。
  • (3)近似度
    C ∗ C^* C:精确解集合
    A A A: 算法第四行被挑选的边的集合
    C C C:近似算法解
    由于 A A A中的边都是不连通的,即 A A A中不存在两条边被 C ∗ C^* C中的同一个顶点覆盖
    ∣ C ∗ ∣ ≥ ∣ A ∣ |C^*|\ge{|A|} CA
    ∣ C ∣ = 2 ∣ A ∣ |C|=2|A| C=2∣A
    由以上两式推出
    ∣ C ∣ = 2 ∣ A ∣ ≤ 2 ∣ C ∗ ∣ |C|=2|A|\le{2|C^*|} C=2∣A2∣C

例2.满足三角不等式的旅行商问题

TSP是NP-完全问题

目标

假设有一个旅行商人要拜访N个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。

算法

在这里插入图片描述

证明

(1)多项式性
(2)正确性
(3)近似度
H ∗ H^* H:精确解
T T T:最小生成树
W W W:T的"full work"
H H H:近似解
c ( T ) ≤ c ( H ∗ ) c(T)\le{c(H^*)} c(T)c(H)
c ( W ) = 2 c ( T ) c(W)=2c(T) c(W)=2c(T)
以上两式推出
c ( W ) ≤ 2 c ( H ∗ ) c(W)\le{2c(H^*)} c(W)2c(H)
c ( H ) ≤ c ( W ) c(H)\le{c(W)} c(H)c(W)
可以推出
c ( H ) ≤ 2 c ( H ∗ ) c(H)\le{2c(H^*)} c(H)2c(H)

哈密顿环

NP-完全问题

近似难

近似难有解就证明了 P = N P P=NP P=NP
如果 P ! = N P P !=NP P!=NP,则对于任意常数 ρ > 1 \rho > 1 ρ>1,对于一般的旅行商问题,不存在近似比为 ρ \rho ρ的多项式时间近似算法。
证明过程
(1)先建立全图
E ‘ = { ( u , v ) : u , v ∈ V a n d   u ≠ v } E^`=\{{(u,v):u,v \in {V} and \space u \ne{v}}\} E={(u,v):u,vVand u=v}
(2)对所有的边加上权值,原来的边权值为1
c ( u , v ) = { n , i f ( u , v ) ∈ E ρ ∣ V ∣ + 1 , o t h e r w i s e c(u,v)= \begin{cases} n, if (u,v) \in E\\ \rho|V| + 1, otherwise \end{cases} c(u,v)={n,if(u,v)EρV+1,otherwise
(3)如果原图中有哈密顿环,把H环作为正确解 ∣ V ∣ |V| V,否则 > ρ ∣ V ∣ >\rho|V| >ρV

例3. 子集和问题

目标

S S S中寻找合适的子集,子集中元素的和为 t t t

算法

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值