近似算法理论分析
近似算法与性能分析

近似算法与性能分析
局部搜索的原理与应用
局部搜索的原理与应用
▪ 局部搜索原理
1.局部搜索是一种在解决方案空间中寻找近似最优解的方法, 通过在当前解周围进行邻域搜索,逐步改进解的质量。 2.局部搜索的原理主要包括两个核心步骤:产生新解和接受新 解。通过对当前解的邻域进行探索,生成新的候选解,并根据 一定接受准则决定是否接受新解作为当前解。 3.局部搜索的有效性取决于邻域结构和接受准则的设计。合适 的邻域结构能够产生质量更好的新解,而合理的接受准则能够 保证搜索过程向更好的方向进行。
近似算法与性能分析
线性规划的原理与应用
线性规划的原理与应用
线性规划原理
1.线性规划是一种求解最优化问题的数学方法,其目标函数和约束条件均为线性函数。 2.线性规划的原理包括单纯形法和内点法等求解方法,能够高效地解决线性规划问题。 3.线性规划的应用范围广泛,包括生产计划、货物运输、资源分配等领域。
动态规划应用
1.动态规划在计算机科学和工程领域有广泛应用,如计算机网 络中的路由协议、语音识别、生物信息学中的序列比对等。 2.在解决实际问题时,首先需要确定问题是否具有“最优子结 构”性质,即问题的最优解能否由其子问题的最优解组合而成 。 3.动态规划的应用需要充分考虑问题的约束条件和目标函数, 以确保算法的正确性和效率。 以上内容仅供参考,建议查阅专业书籍或咨询专业人士获取更 全面和准确的信息。
▪ 贪心算法的优缺点
1.贪心算法的优点是简单、高效,适用于大规模数据的处理。 2.缺点是不一定能够得到全局最优解,只能得到近似最优解。
贪心算法的原理与应用
▪ 贪心算法的经典案例
1.活动选择问题:选择尽可能多的互不冲突的活动。 2.货郎担问题:经过若干个城市,选择最短的一条路径。
3.8基于线性规划的近似算法

3.8 基于线性规划的近似算法前面已经介绍了近似算法能在多项式时间内找到许多NP 难问题的近似最优解,并且介绍了许多基本算法都可以用来设计近似算法。
本节我们将介绍另一类近似设计技术,即利用线性规划的有关理论与技术来设计近似算法。
3.8.1理论基础设待求解的是最小化问题,对于最小化问题的一个实例I ,令,则我们可以利用松弛技术,通过松弛对变元的约束,增大搜索空间的办法来获得最优解的下界。
考虑相应的优化问题)(min )OPT(X f I SX ∈=S )OPT(I )(min )LB(X g I S X ′∈=,如果下列条件1) ,S S ′⊆2) 对任意的,有满足,则S X ∈)()(X f X g ≤)OPT()(min )(min )LB(I X f X g I SX S X =≤=∈′∈.整数规划问题及其相应的LP 问题就满足上述1)和2)两个条件,因此,任何IP 问题的可行解也是相应LP 问题的可行解。
而且,LP 的最优解也是IP 最优解的下界。
设LP 问题的最优解值为,IP 问题的最优解值,则)(OPT LP I )(OPT IP I )(OPT )(OPT IP LP I I ≤.如果设计的算法A 得到的解值满足)(OPT )(LP I R I A ⋅≤,则有,这样便可以设计出)(OPT )(IP I R I A ⋅≤−R 近似算法,从而,我们可以设计出基于线性规划的近似算法。
松弛技术是获得最优解下界的一种好方法,大多数经典的松弛主要通过线性规划来实现。
线性规划松弛技术是设计近似算法的一种非常有用的方法,其思路非常简单。
我们知道,许多实际问题能够很容易的形式化为整数规划问题,而整数规划问题是NP 完全的,这样所有的NP 完全问题都能够转化为整数规划问题,但是这里我们指的是一种自然转化,不是那种复杂的归约。
对于整数规划问题,我们无法有效求解,如果我们将它转化为线性规划问题,我们就可以利用解线性规划问题的方法,例如单纯型法,从而解决整数规划问题。
最大割问题近似算法

最大割问题近似算法最大割问题的近似算法:理论与应用深度解析在图论和优化理论中,最大割问题(Max-Cut Problem)是一个经典且具有广泛应用的问题。
它源于寻找网络中的最优分割,使得分割后的两部分之间的边数尽可能少,这在许多领域,如计算机科学、物理学、经济学和社交网络分析中都有着重要的作用。
然而,由于其NP完全性,找到全局最优解在最坏情况下需要的时间复杂度是指数级的。
因此,研究最大割问题的近似算法成为了一个关键的研究方向。
最大割问题的定义简单明了:给定一个无向图G=(V,E),求解一个将顶点集V 分割为两个非空子集A和B的最大边数,使得A和B之间没有边相连。
这个值被称为图的割,而最大割就是图的最大边数。
尽管这个问题在最一般情况下很难解决,但我们可以通过一些巧妙的方法找到接近最优解的近似算法。
一种著名的近似算法是Goemans-Williamson算法(GW算法),由David P. Goemans和William J. Williamson于1995年提出。
该算法结合了随机化和线性规划的思想。
首先,对每个顶点进行随机化,赋予其一个介于-1和1之间的随机值,然后计算每个边的“割值”为两个端点的随机值之差的绝对值。
最后,通过求解一个线性规划问题,找到一组割值,这些割值可以近似地表示出图的割。
GW 算法证明了可以在多项式时间内找到一个0.878-近似解,这意味着找到的解决方案与最优解的差距不会超过这个比例。
除了GW算法,还有其他一些近似算法值得一提,比如Christofides算法,它最初是为了求解旅行商问题(TSP)而设计的,但也可以用于最大割问题。
Christofides算法通过构造一个包含图的一条最小生成树和一条最小完美匹配的组合,提供了3/2-近似解,虽然不如GW算法的精度高,但它更易于实现。
在实际应用中,最大割问题的近似算法被广泛用于各种场景,例如社交网络分析中的社区检测,其中需要找出用户群体之间的边界;在路由算法中,用于减少网络中的通信量;在机器学习中,用于二分类问题的特征选择等。
np算法 的近似算法

np算法的近似算法
近似算法是一种用于解决NP难问题的方法,它可以在有限时
间内找到一个近似最优解。
在计算复杂性理论中,一个问题被称为NP问题,如果给定一
个解,可以在多项式时间内验证该解的正确性。
然而,找到一个最优解可能需要指数时间,因此,这些问题被认为是非常困难的。
为了解决这些问题,近似算法提出了一种近似最优解的方法。
近似算法的基本思想是在可接受的时间内找到一个近似最优解,该解与真正的最优解之间存在可控制的差距。
近似算法的性能通常通过近似比或逼近比来度量。
近似比是一个常数,它描述了近似解与最优解之间的差异程度,而逼近比则是一个函数,它描述了近似解质量与输入规模之间的关系。
近似算法的设计和分析是一个活跃的研究领域,有许多经典的近似算法已经被提出。
其中一些方法包括贪婪算法、局部搜索算法、随机化算法和近似固定参数算法等。
这些算法通常基于一些启发式策略,以在有限时间内找到一个好的解。
尽管这些方法不能保证找到最优解,但它们通常能够找到一个近似最优解,这在实际应用中已经被证明是非常有用的。
- 贝叶斯近似算法介绍

- 贝叶斯近似算法介绍全文共四篇示例,供读者参考第一篇示例:贝叶斯近似算法(Bayesian Approximation Algorithm)是一种基于贝叶斯统计推断原理的近似算法,通常用于解决模型复杂、数据量大的问题。
在机器学习领域中,贝叶斯方法是一种常见且有效的方法,它不仅可以用于分类、回归等监督学习任务,还可以应用于聚类、降维、推荐系统等无监督学习任务。
贝叶斯近似算法的核心思想是基于贝叶斯定理进行概率推断,通过对参数的后验分布进行近似推断,从而得到参数的估计结果。
与传统的最大似然估计方法相比,贝叶斯方法能够更好地利用先验知识,对参数的不确定性进行更合理的建模,同时还能够避免过拟合的问题。
在实际应用中,由于后验分布的计算通常是非常困难甚至不可行的,因此需要借助于贝叶斯近似算法来进行推断。
常见的贝叶斯近似算法包括马尔科夫链蒙特卡洛(MCMC)方法、变分推断方法、拉普拉斯近似方法等。
马尔可夫链蒙特卡洛方法是一种基于随机模拟的推断方法,通过构建马尔可夫链来模拟参数的后验分布。
通过多次迭代采样,最终得到参数的后验分布的近似值。
但是MCMC方法的计算复杂度较高,收敛速度较慢,在处理大规模数据时可能会面临挑战。
变分推断方法是另一种常见的贝叶斯近似算法,它通过最优化一个参数化的分布来近似真实的后验分布。
变分推断方法通常会引入一些近似假设,例如独立性假设、指数族假设等,从而简化推断的计算复杂度。
变分推断方法的优点是计算效率高,但是可能会引入一定的偏差。
拉普拉斯近似方法是一种基于高斯分布的近似推断方法,通过在后验分布的峰值处进行局部近似,得到参数的估计结果。
拉普拉斯近似方法通常适用于后验分布近似是单峰分布的情况,当后验分布是多峰分布时可能会出现不准确的情况。
贝叶斯近似算法是一种在处理复杂、大规模数据时非常有效的推断方法。
通过合理地选择适当的近似算法,结合先验知识和数据信息,可以得到更加准确和稳健的模型参数估计结果。
近似算法理论分析

近似算法理论分析近似算法是在计算问题的解决过程中,通过一定的近似策略来寻找问题的近似解,这样可以在多项式时间内得到一个接近最优解的解决方案。
近似算法理论分析是对近似算法性能进行理论上的衡量和评估。
在近似算法的理论分析中,通常使用近似比或近似比界来衡量算法的近似程度。
对于最优化问题,其最优解为OPT,而近似算法得到的解为APX,并且存在一个常数c,使得算法得到解APX满足以下条件:APX≤c×OPT近似比的取值范围在[1,+∞]之间,当近似比为1时,算法得到的解与最优解相等或非常接近;当近似比为大于1的常数时,算法得到的解与最优解的差距会相应增大。
近似比界是指近似算法的最优近似比的上界。
对于一个问题,最优的近似比界往往很难确定,因此通常通过设计近似算法,通过实际求解问题来得到一个近似比界的估计值。
在进行近似算法的理论分析时,通常会涉及到以下几个方面:1.算法的设计思路:描述算法的整体框架和核心思想,通过简洁明了的描述来阐述算法的设计思路。
2.问题的数学表示和形式化定义:将问题转化为严格的数学表示,明确问题的输入和输出,以及问题的约束条件。
3.问题的最优解的定义:明确问题的最优解的定义和求解目标,为后续的理论分析提供准确的基础。
4.算法的正确性证明:通过数学推导和严密的推理,证明算法的输出符合问题的要求,即算法的解是问题的一个合法解。
5.算法的近似性分析:通过数学推导和估计,分析算法得到的解与最优解之间的近似程度。
通常使用近似比或近似比界来衡量算法的性能。
6.算法的时间复杂度和空间复杂度:分析算法的时间复杂度和空间复杂度,评估算法的运行效率和资源消耗情况。
近似算法的理论分析是为了对算法的性能进行客观评估和比较,并为实际应用场景中的问题提供解决方案。
通过近似算法的理论分析,可以知道算法在实际应用中的优劣势,为问题求解提供一个可接受的解决方案。
同时,理论分析也可以指导算法的改进和优化,使得算法在实际应用中能够更好地适应各种特殊情况和约束条件。
结构力学中的新算法和近似方法研究
结构力学中的新算法和近似方法研究结构力学是研究建筑、桥梁、船舶等结构物的力学性能和稳定性的一门学科。
其研究范围涉及领域广泛,从建筑古迹到高科技、高层次的建筑、桥梁、船舶等结构,都需要依靠力学知识进行设计和分析。
在结构力学的分析和设计中,解决力学方程组是非常关键的,而解决力学方程组有两种基本方法:解析法和数值法。
解析法是指利用解析方法求解微分方程的过程,这种方法对于简单的模型是比较有效的,但是当涉及到复杂的模型时,解析方法的应用范围就受到很大的限制。
而数值法则是指将微分方程转化为代数方程,然后通过数值方法求解代数方程的过程。
数值法在实际应用中被广泛使用,但是由于其精度有限,可能存在误差,因此需要对数值结果进行验证和修正。
近年来,随着计算机计算能力的不断提高和数值算法的不断创新,结构力学中出现了很多新的算法和近似方法。
下面,我们将介绍一些重要的新算法和近似方法。
一、有限元法在结构力学中,有限元法是解决复杂结构分析问题的主要方法之一。
有限元法是将结构划分成若干个有限元,然后通过计算每个有限元内的应力和应变来求解整个结构的应力和位移分布。
有限元法的优点是可以很好地处理复杂的几何形状和材料特性,但是该方法需要耗费大量计算资源,另外还需要对其计算结果进行验证和修正,以确保其精度和可靠性。
二、边界元法边界元法是一种基于边界积分方程的计算方法,可以求解均匀分布在边界上的力和位移分布。
与有限元法相比,边界元法需要的计算资源较少,因此在一些特定的应用中比较有优势。
三、多尺度方法多尺度方法是一种将结构分解成多个尺度来分析的方法。
这种方法可以更好地描述不同尺度的结构性质,例如,在大尺度下结构的整体力学行为,以及在小尺度下结构的细节特征。
该方法的主要优点是可以更准确地刻画各个尺度下的结构特征。
四、矩形函数方法矩形函数方法是一种利用基本函数为直角函数的方法,将原有连续物理量离散化,从而实现对连续问题的求解。
该方法在处理三维问题时,可以大大简化计算,同时保证精度。
中科大算法第二章近似算法--黄刘生(调整后适合打印版)
NP-完全性理论
Karp的贡献
理查德·卡普(Richard Karp , 1935- ) 1972 年论文 ”Reducibility among Combinatorial Problems” 发 展和加强了由库克提出的“NP完全性”理论。 尤其是库 克仅证明了命题演算的可满足问题是NP完全的,而卡普则证明了从 组合优化中引出的大多数经典问题(背包问题、覆盖问题、匹配问 题、分区问题、路径问题、调度问题等)都是NP完全问题。只要证 明其中任一个问题是属于P类的,就可解决计算复杂性理论中最大 的一个难题,即P=?NP。
SAT∈P当且仅当P=NP
Cook 于1961 年获 Michigan 大学学士学位, 1962 和 1966年分获哈佛 大学硕士与博士学位。 1966-1970 ,他在 UC Berkeley 担任助教授; 1970年加盟多伦多大学,现为该校CS 和数学系教授,他的论文开启 了NP完备性的研究,令该领域于之后的十年成为计算机科学中最活 跃和重要的研究。因其在计算复杂性理论方面的贡献,尤其是在奠 定NP完全性理论基础上的突出贡献而荣获1982年度的图灵奖。
9
P、NP及NPC类问题
NP=?P
∵确定型图灵机是非确定型图灵机的特例,∴P⊆NP 是否有NP⊆P?即是否NP=P?
美国麻省的Clay数学研究所于2000年5月24日在巴黎法兰西学院宣 布:对七个“千年数学难题”中的每一个均悬赏 100 万美元,而 问题NP=?P位列其首:
1.P问题对NP问题 2.霍奇猜想 3. 庞加莱猜想 (2002.11-2003.7 ,俄罗斯数学家佩雷尔曼在 3 篇 论文预印本中证明了几何化猜想,2006被授予菲尔兹奖) 4.黎曼假设 5.杨-米尔斯存在性和质量缺口 6.纳维叶-斯托克斯方程的存在性与光滑性 7.贝赫和斯维讷通-戴尔猜想
max2sat近似算法
MAX2SAT近似算法一、引言MAX2SAT问题是一种典型的NP困难问题,它是2SAT问题的扩展。
在2SAT问题中,给定一个包含n个变量和m个约束的集合,每个约束都是一个包含2个变量的布尔表达式,目标是确定这些变量的值,使得尽可能多的约束得到满足。
由于2SAT问题是NP困难的,MAX2SAT问题同样也是NP困难的。
在实际应用中,我们经常需要处理大规模的MAX2SAT问题,而这些问题的精确解通常是不可行的或成本高昂的。
因此,研究和设计近似算法来近似地解决MAX2SAT问题是具有重要的理论和应用价值。
二、近似算法的基本概念近似算法是一种可以近似解决NP困难问题的算法。
这类算法通常不能保证找到最优解,但可以在多项式时间内找到一个近似最优解,其性能接近于最优解。
近似算法的性能通常使用一个性能比率来度量,它表示算法找到的解与最优解的比值。
如果一个近似算法的性能比率接近于1,则认为该算法的性能较好。
三、常见的Max2SAT近似算法1.贪心算法:贪心算法是一种常见的近似算法,它在每一步选择中都采取当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的。
在MAX2SAT问题中,贪心算法通常从约束集合中选择一个或多个满足度最高的约束进行满足,直到无法再满足更多的约束为止。
这种算法的时间复杂度为O(n^3),其中n是变量的数量。
2.遗传算法:遗传算法是一种基于生物进化原理的优化算法,它通过模拟自然选择和遗传机制来寻找最优解。
在MAX2SAT问题中,遗传算法通常将约束表示为个体,并通过选择、交叉和变异等操作来产生新的个体,逐步接近最优解。
遗传算法的性能取决于许多参数的选择和设置,但通常来说,它在处理大规模MAX2SAT问题时表现较好。
3.模拟退火算法:模拟退火算法是一种基于物理退火过程的优化算法,它通过随机地接受或拒绝状态转移来寻找最优解。
在MAX2SAT问题中,模拟退火算法通常从一个随机解开始,通过不断接受或拒绝满足更多约束的状态转移来逐步接近最优解。
常微分方程中的解析近似解法
常微分方程中的解析近似解法常微分方程(ODE)是解决许多问题的基础数学理论。
从物理领域的经典力学、电磁学到生物学中的生命过程,常微分方程在描述现实世界中的许多现象上都有着广泛的应用。
然而,由于许多常微分方程没有显式解,解析近似方法是其中一个重要的研究方向。
本文将介绍一些解析近似方法,以及它们如何在不同的ODE问题中应用。
1. 常微分方程的解析近似ODE通常被定义为一个形式为$f(x,y,y',...,y^{(n)})=0$的函数关系,其中$f$是一个已知的函数,$y$是未知函数,$y',...,y^{(n)}$是$y$的各微分阶。
在解决某些ODE问题时,解析方法是解决问题的首选方法之一。
解析方法的基本思想是通过一些简单的求导运算来确定$y$的解析表达式。
2. 马克西米安近似常微分方程中的解析近似方法可以分为两组:一组是基于非线性ODE所执行的,另一组是基于线性ODE所执行的。
马克西米安近似是一种非线性ODE近似的方法,它通常用于解决末端边界的问题。
该方法的基本思想是将$y$展开成一个级数,并将级数的每一项插入到原方程中,然后通过简单的计算找到每一项的系数。
最终,我们得到一个级数解析解$y=\sum c_n y_n$,其中$y_n$是$y$的单项表达式,并且$c_n$是它的相应系数。
马克西米安方法适用于很多的非线性ODE问题,尤其是一些弱非线性的ODE问题。
3. 零阶逼近另一种常见且简单的解析方法是零阶逼近法,它通常用于解决线性ODE问题。
该方法的基本思想是假设$y$的形式并将其标准化为一个简单的形式$y=Ae^{\lambda x}$。
将其代入ODE,我们可以得到$\lambda$的值,并进而推导出$y$的形式。
零阶逼近方法只能提供线性ODE的局部解,它通常用于解决上下文具有相对明确边界的机械工程应用,如模拟建筑物上的结构问题。
4. 奇异摄动法奇异摄动法是一种用于求解高阶线性ODE的解析方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
近似算法12.1 简介到目前为止,我们已经学习了很多可以在多项式时间内高效解决的问题,我们可以很快速的解决这些问题。
然而,在下面几讲,我们将考虑一些不知道如何高效解决的问题。
12.1.1 NP-完全性问题在学习这些问题的时候,我们会遇到这个概念NP-完全性。
NP-完全性问题是由很多组合和最优化问题组成,这些问题都有两个共同点:没有很高效的算法;然而,我们可以在指数时间内解决这些问题。
有高效的缩影存在于所有其他的NP-完全性问题中;因此,如果我们有一个黑盒,它能解决其中的一个问题,那么我们就能够高效的解决所有的问题。
下面就列举了一些NP-完全性问题的例子。
除了SAT的每一个问题都可以被阐明为最优化问题,尽管严格来说,它取决于每一个问题的NP-完全性。
另一方面讲,存在一个与SAT相关的最优化问题,称为MAXSAT。
在这个问题中,我们给出一个布尔公式,我们必须找到一些变量的赋值来最大化的满足子句。
可满足性问题(SAT):给定一个布尔公式,是否存在一个变量的赋值使得它满足此公式(即使公式的值为真)?装箱问题:给定一些箱子和物品,这些物品有着特定的大小,这些箱子有着一定的容积,求出能容纳这些物品的所需的最小箱子数。
最大独立子集问题:给定一个图,找出节点的最大子集,使得在这个子集中没有两个节点是相互连接的。
背包问题:给定一个能容纳一定大小的背包和一些物品,这些物品有着特定的大小和价值,求出此背包能容纳的最大价值量。
并行机器调度问题:给定一组相同的机器和一组任务,这些任务都有特定的所需时间,求如何分配任务给这些机器,使得所有的机器完成分配给它们的任务所需的时间最小。
旅行商问题:找出一个最短路径使得旅行商从一个城市出发,最后又回到该城市,并且要求每一个城市只能经过一次。
所有的这些问题不能依赖于这个假定P≠NP高效的解决。
尽管这个推测还没有被证明,但是我们可以相信它是正确的,所以我们可以简单的假定P≠NP。
12.1.2 解决NP-完全性问题如果我们不知道如何高效的解决NP-完全性问题,那我们应该怎么做呢?启发式:一种可能性就是放弃寻求多项式算法,取而代之的是集中开发启发式的算法,它在实践中接近于多项式的时间复杂度。
但是一般来说,很难找到低于指数级的算法,达到这样的目标是有分歧的(关于P和NP问题是否相同)。
一般情况分析:与其分析这些算法的最坏情况下的性能,我们不如分析某一类特定输入下的算法行为。
这取决于某些特定输入实例的分布情况。
但是,使用不同的分布又会有很大的差别。
近似算法:我们试图找到多项式时间的近似算法,它们被证明是近似正确的。
12.2 最优化问题 在我们讨论近似算法之前,我们必须为最优化问题定义一些术语。
定义1 一个最优化问题有一组问题实例(problem instances)。
定义2 每一个实例I 都有一个解集。
()S I 定义3 最大/最小化问题就是找到一个解()s S I ∈,能达到最大/最小化的目标值()f s 。
我们假定f 的输入和输出都是整数(由多项式级的位数组成)。
定义4 实例I 得到的最优解值()f s ,用表示。
()OPT I 12.1.1给出的每一个最优化问题的例子都符合这个最优化的结构。
例如,最大独立子集问题。
每一个问题实例都是一个图;图的解集都是由节点的所有子集组成,在每个子集中,没有两个顶点是互相连接的。
解的值就是在这个子集中的节点的个数。
尽管我们喜欢把这些最优化问题归于NP-完全性问题,但是这个术语经常为决策(判定问题)问题所保留。
所以,我们用NP-难这个概念来代替。
定义5 如果一些其他的NP-难问题能够在多项式的时间内解决,那这样的最优化问题称为NP-hard 。
一般情况下,NP-hard 问题对应于决策问题,它的最优解至少(或至多)是某个值的问题。
()OPT I K12.3 绝对近似算法定义 6 近似算法就是在多项式时间内的算法,当给定一个实例I 时,返回解空间中的一个解。
()S I s 例如:在装箱问题中,一种可能的近似算法就是简单的把每一个物品放入一个箱子里。
但是这样做质量不高。
为了提高质量,我们考虑绝对近似算法。
定义7 给定一个实例I ,一个α-绝对近似算法就是找到一个解值至多是()OPT I α+。
我们需要指出的是这个定义只有针对最小化问题行得通,一个最大化问题的α-绝对近似算法将返回的解值至少是()OPT I α−。
我们注意到当我们设计一个绝对近似算法的时候,我们希望α值越小越好。
12.3.1 图着色算法考虑这样一个平面图的着色问题,在这个问题中,我们给定一个平面图,我们必须找出一个顶点的着色方式,使得没有两个相邻的顶点着同样的颜色。
就像下面的定理所陈述的那样,这个问题就有一个绝对近似算法。
定理1 平面图着色问题都存在一个2-绝对近似算法。
证明:根据5色定理,每一个平面图都可以用5种颜色满足条件。
更进一步,空图(即没有边的图)可以用一种颜色,二分图可以用2种颜色满足条件,然而所有其他的图都需要至少3种颜色。
这种观察,可以让我们得出下面的一种算法:1. 如果这个图是空图或者二分图,可以用最优的方式着色。
2. 其他情况下,用5种颜色着色。
因为这个算法只需要5种颜色,最优情况下,颜色的数量是3种,那么它就是2-绝对近似算法。
我们可以再考虑边着色的问题。
不像平面图着色那样,边着色问题所需的颜色数量没有固定的上界,因为的最优值的下界是由顶点的最大度数 决定的。
不过,我们有下面的定理:()OPT I定理2 任一个图的边着色至多使用 +1种颜色。
因为这个定理证明是具有建设性的,它能为我们提供一种算法:能找到比最优情况下至多用一种颜色的方法给边着色。
推论1 边着色问题存在一个1-绝对近似算法。
12.3.2 通过缩放证明负面的例子尽管这些着色问题都存在绝对近似算法,但是大部分的NP-难问题都不存在。
事实上,对于这些问题的大部分,我们可以证明,绝对近似算法是不存在的,除非P 等同于NP 。
这个证明使用一种称为scaling(缩放)。
在缩放中,我们首先增加实例的某些参数值,然后我们就可以看出,如果一个绝对近似算法存在的话,它能够为一个修改过的实例得到解,那么这个解再回缩就能够为原来的实例产生一个最优的算法。
但是这就暗示着NP-难问题存在一种高效的算法,那么P 就等同于NP 。
下面的两个例子就证明了这种scaling 技术。
引理 1 背包问题不存在绝对近似算法。
证明:考虑一个背包问题的实例I ,每一个物品i 都有其价值i p ,我们假定有一个α-绝对近似算法A 。
如果我们把每一个物品的价值增大到2i p 来形成一个新的实例2I ,那么产生的最优算法就是原来最优算法的2倍,因为原来物品的设置能产生而现在产生的价值为2。
如果我们在实例(2)OPT I ()OPT I ()OPT I ()OPT I 2I 上运行这个绝对近似算法A ,那么我们就能得到一个解法至少是ε(2)2()OPT I OPT I αα−=−。
最后,我们可以用2除,那么我们就能得到原来实例的一个解()/2OPT I α−,因此,我们可以提高α的值为/2α。
一般来说,缩放原实例I ,缩放因子为,然后再用除解值,那么我们就把r r α降低为/r α。
因此,如果我们选择为r ⎡⎤α2,那么我们就把α降低为α/⎡⎤α2≤1/2,那就意味着对实例I 的解的值至少是s ()1/2OPT I −。
假定实例I 的大小和价值是整型,能达到的最优解也是整型,所以一定等于。
因此, 我们解决背包问题的整型实例有高效的算法,那么就与我们的假定P≠NP 相矛盾。
()OPT I s ()OPT I引理 2 最大独立子集也不存在绝对近似算法。
证明:假定我们有个α-绝对近似算法A 。
如果我们修改实例I (通过复制该图),新实例称为2I ,2I 中的最优独立子集的元素个数是I 中的2倍。
因此,等于,那么意味着在实例(2)OPT I 2(OPT I )2I 上运行算法A 产生的独立子集的大小至少是(2)2()OPT I OPT I αα−=−。
为了转换这个解来适合原来的实例I ,我们必须记住2I 中独立子集的顶点个数。
其中一个图必须包含至少一半的这些顶点,因此,那么这个图的独立子集的大小至少是(2())/2()/2OPT I OPT I αα−=−,意味着我们减小α为/2α。
为了使结论一般化,如果做⎡⎤α2个的图的副本,我们能够利用算法A 来找到I 实例的独立子集的大小至少为。
但是这个必须等于,因为顶点的个数是整型。
那么,我们就有解决最大独立子集的高效算法,那么就与之相矛盾。
()1/2OPT I −()OPT I12.4 相对近似算法因为绝对近似算法存在于太少的优化问题当中,所以我们有一种更好的近似算法就是相对近似算法。
因为它们应用如此普遍,我们简单的把它们称为近似算法。
定义8 一个α-近似算法就是能找到一个解值最多是*(OPT I )α。
需要指出,虽然α的值能随着输入的大小而改变,那我们只考虑常量的情况。
为了阐明α-近似算法的设计与分析,让我们考虑并行机器调度问题,负载平衡的普遍形式。
并行机器调度:给定台机器和个作业,每个作业的处理时间是m i m n j p ,给每个机器分配作业,使得负载 (所有机器完成分配的作业所需的时间)最小。
在调度符号中,∑∈ij j p max这个问题可以被描述为。
max ||P C 解决这个问题的最自然的方法就是利用贪心算法,称为list scheduling(列表调度)。
定义9 一个列表调度算法就是分配作业给机器,分配每一个作业给具有最小负载的机器。
需要指出,处理作业的顺序并没有指定。
为了分析列表调度的性能,我们必须将每一个实例I 的解(称这个解为()A I )与最优解相比较。
但是我们并不知道如何得到的分析表达式。
然而,如果我们能找到的下界,并能证明对于某个()OPT I ()OPT I ()OPT I ()LB I α,有()()A I LB I α≤i ,那么我们就能得到()()A I LB I α≤i()OPT I α≤i利用的下界的方法,我们现在就可以得出列表调度的性能。
()OPT I 引理3 列表调度是为并行机器调度提出的一个2-近似算法。
证明:考虑下面的最优负载的两个下界()OPT I 最大的处理时间max j j p p =平均负载是=。
L ∑j j m p /最大处理时间p 很明显是一个下界,该机器完成所分配给它的任务所需要的时间至少是p 。
平均负载也是一个下界,需要指出,如果所有的机器都能在少于的时间内完成它的任务,那么最大负载就小于平均值,这个是相互矛盾的。
现在假定机器有最大的运行时间,作业L i m max C j 是分配给该机器的最后一个作业。