欢迎来到天天文库
浏览记录
ID:48053055
大小:218.00 KB
页数:39页
时间:2020-01-12
《算法分析与设计 近似算法.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第11章近似算法11.1概述11.2图问题中的近似算法11.3组合问题中的近似算法11.4实验项目——TSP问题的近似算法11.1概述11.1.1近似算法的设计思想11.1.2近似算法的性能许多难解问题实质上是最优化问题,即要求在满足约束条件的前提下,使某个目标函数达到最大值或最小值的解。在这类问题中,求得最优解往往需要付出极大的代价。在现实世界中,很多问题的输入数据是用测量方法获得的,而测量的数据本身就存在着一定程度的误差,因此,输入数据是近似的。同时,很多问题的解允许有一定程度的误差,只要给出的解是合理的、可接受
2、的,近似最优解常常就能满足实际问题的需要。此外,采用近似算法可以在很短的时间内得到问题的近似解,所以,近似算法是求解难解问题的一个可行的方法。11.1.1近似算法的设计思想即使某个问题存在有效算法,好的近似算法也会发挥作用。因为待求解问题的实例是不确定的,或者在一定程度上是不准确的,如果使用近似算法造成的误差比不精确的数据带来的误差小,并且近似算法远比精确算法高效,那么,出于实用的目的,当然更愿意选择近似算法了。近似算法的基本思想是用近似最优解代替最优解,以换取算法设计上的简化和时间复杂性的降低。近似算法是这样一个过
3、程:虽然它可能找不到一个最优解,但它总会为待求解的问题提供一个解。为了具有实用性,近似算法必须能够给出算法所产生的解与最优解之间的差别或者比例的一个界限,它保证任意一个实例的近似最优解与最优解之间相差的程度。显然,这个差别越小,近似算法越具有实用性。11.1.2近似算法的性能衡量近似算法性能最重要的标准有两个:(1)算法的时间复杂性:近似算法的时间复杂性必须是多项式阶的,这是设计近似算法的基本目标;(2)解的近似程度:近似最优解的近似程度也是设计近似算法的重要目标。近似程度可能与近似算法本身、问题规模,乃至不同的输入
4、实例都有关。不失一般性,假设近似算法求解的是最优化问题,且对于一个确定的最优化问题,每一个可行解所对应的目标函数值均为正数。若一个最优化问题的最优值为c*,求解该问题的一个近似算法求得的近似最优值为c,则将该近似算法的近似比(ApproximateRatio)η定义为:在通常情况下,该性能比是问题输入规模n的一个函数ρ(n),即:这个定义对于最大化问题和最小化问题都是适用的。对于一个最大化问题,c≤c*,此时近似算法的近似比表示最优值c*比近似最优值c大多少倍;对于一个最小化问题,c*≤c,此时近似算法的近似比表示近
5、似最优值c比最优值c*大多少倍。所以,近似算法的近似比η不会小于1,近似算法的近似比越大,它求出的近似解就越差。显然,一个能求得最优解的近似算法,其近似比为1。有时用相对误差表示一个近似算法的近似程度会更方便些。若一个最优化问题的最优值为c*,求解该问题的一个近似算法求得的近似最优值为c,则该近似算法的相对误差(RelativeError)λ定义为:近似算法的相对误差总是非负的,它表示一个近似最优解与最优解相差的程度。若问题的输入规模为n,存在一个函数ε(n),使得则称ε(n)为该近似算法的相对误差界(Relativ
6、eErrorBound)。近似算法的近似比ρ(n)与相对误差界ε(n)之间显然有如下关系:有许多问题的近似算法具有固定的近似比和相对误差界,即ρ(n)和ε(n)不随着问题规模n的变化而变化,在这种情况下,用ρ和ε来表示近似比和相对误差界。还有许多问题的近似算法没有固定的近似比,即近似比ρ(n)随着问题规模n的增长而增长,换言之,问题规模n越大,近似算法求出的近似最优解与最优解相差得就越多。对有些难解问题,可以找到这样的近似算法,其近似比可以通过增加计算量来改进,也就是说,在计算量和解的精确度之间有一个折衷,较少的计算
7、量得到较粗糙的近似解,而较多的计算量可以得到较精确的近似解。11.2图问题中的近似算法11.2.1顶点覆盖问题11.2.2TSP问题11.2.1顶点覆盖问题无向图G=(V,E)的顶点覆盖是顶点集V的一个子集V'V,使得若(u,v)是G的一条边,则v∈V'或u∈V'。顶点覆盖V'的大小是它所包含的顶点个数
8、V'
9、。顶点覆盖问题是求出图G中的最小顶点覆盖,即含有顶点数最少的顶点覆盖。顶点覆盖问题是一个NP难问题,因此,没有一个多项式时间算法有效地求解。虽然要找到图G的一个最小顶点覆盖是很困难的,但要找到图G的一个近似最
10、小覆盖却很容易。可以采用如下策略:初始时边集E'={},顶点集V'={},每次从边集E'中任取一条边(u,v),把顶点u和v加入到顶点集V'中,再把与u和v顶点相邻接的所有边从边集E'中删除,直到边集E'为空。显然,最后得到的顶点集V'是无向图的一个顶点覆盖,由于每次把尽量多的相邻边从边集E'中删除,可以期望V'中的顶点数尽量少,但不能保证V'
此文档下载收益归作者所有