算法概述--线性规划与计算复杂性问题 (200分)

  • 主题发起人 主题发起人 DarwinZhang
  • 开始时间 开始时间
D

DarwinZhang

Unregistered / Unconfirmed
GUEST, unregistred user!
算法是程序的灵魂,那么算法的基本概况如何呢?我尝试作一个简单的介绍:
1947年,G.B.Dantzig提出求解现行规划的单纯形方法以来,线性规划理论上趋于成熟,
虽然Dantzig的算法平均时间是非常优异的,为O(n*log(2,n) ),但它实际上是一个指数
算法,这由Klee和Minty在1972年指出,在1979年L.G.Khachina提出椭球算法
证明线性规划是P问题.
P问题就是所谓存在多项式算法的问题.
而NP问题是存在多项式可验证的但没有多项式求解算法的问题.
当然,这只是一个简略的规定,严格的规定要从图林机着手.
NP-难(NPC)问题则是1972年S.A.Cook提出的,他证明一切NP问题都可以
使用SAT问题的解决算法在多项式时间内解出.
假如一个问题A可以使用多项式的时间算法调用问题B得到解决,
那么认为A不会比B难.这是因为,假如B有多项式算法,
那么A一定有多项式算法,而A有多项式算法,那么B却不一定有多项式算法.
在NPC族问题中只要有任何一个被证明有多项式时间算法,
那么所有的NP问题就是P问题.经过几十年的探索,数学家们没有对NPC问题
获得任何进展.人们目前倾向与认为 NPC<>P.
Karp证明了: 3SAT,3DM(三维匹配问题),划分问题,顶点覆盖问题,哈密顿圈问题,
团问题,TSP(旅行商问题)都是NP-C(NP完全或NP难)的.
这一研究有什么意义呢?这实际上是目前算法的理论问题基石.
在本版的大量未解决的问题,大部分是NP-C的.
当我们遇到一个实际问题的时候,首先应该想一下,这个问题是不是NPC的,如果是,
那么就应该放弃求最优解的期望,而应该使用其它的一些办法.比如平均概率为
多项式的算法(比如:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1588082 ),
求次优解的办法(比如:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1886759 ).
如何判断一个问题是否是NPC的呢?首先我们需要试探求解最优解.
如果试探不出来P算法,那么就应该怀疑是否可以将这个问题归为NPC的.目前已知的
NPC问题有上千个.当年R.M.Karp在1972年就证明了21个NPC问题.初学者应该至少
知道几个基本的NPC问题,才可能学会将问题归到NPC的办法.
下面是几个很基本的NPC问题:
1. SAT问题:
给定布尔变量x1,x2,x3,......xn的一个布尔表达式c1*c2*c3*.....*cm,其中ci是
x1,x2,x3,......xn构成的句子,问此表达式可以取到真值吗?
SAT问题是数理逻辑的中心问题之一,这可以从计算机运行的方式看出来.
2. 3SAT问题:
给定布尔变量x1,x2,x3,......xn的一个布尔表达式c1*c2*c3*.....*cm,其中ci是
x1,x2,x3...xn中的三项构成的句子,问此表达式可以取到真值吗?
比如: (x1+!X2+x3).(x2+x3+!x4).(x4+!x1+x5)
3. 三维匹配问题:
给定X,Y,Z三个不相交的集合,他们的元素个数都是q, M是X,Y,Z的一个组合(匹配),
是否存在一个匹配Mi使M的元素个也为q?
比如:实际问题中,记单身男人集合为X,单身女人集合为Y,住房集合为Z,有些男人和女人
可以结合,有些不可以,有些人只愿意住某些房间,问可否组成一个匹配,使所有的人都
可以组成家庭不重婚且都有房屋?
4. 划分问题:
给定一个正整数集合 A={a1,a2,a3,....an},问是否存在一个A的子集A',使 A'中所有元素的和为
A中所有元素的和的一半?
5.顶点覆盖问题:
给定一个图集G=(V,E)和一个正整数K<=|V|,问G中是否含有不超过K个顶点的覆盖?
(覆盖表示它至少包含G中任何一条边的顶点之一)
6.哈密顿圈问题:
给定一个图G=(V,E),问是否存在哈密顿圈?
哈密顿圈是从某点出发,经过所有顶点一次而回到出发顶点的闭回路.
知道了上面6个问题是NPC问题,那么下面举几个例子来看看实际中
碰到一个问题时,是如何证明它是NPC的:
旅行商问题:有n个城市 a1,a2,a3...an,城市ai到aj的运费为cij,注意cij和cji可能不等,
有商人从城市a1出发去推销商品,城市只去且只去一次,问如何安排行程
才能够使运输费用最少?
很显然,取cij=cji=1,那么这个问题就转化成哈密顿圈问题.
如果运输费用为n就是存在哈密顿圈否则不存在哈密顿圈.
因此在多项式时间内旅行商问题可以转化成哈密顿圈问题,因此不比哈密顿圈问题容易,
所以旅行商问题是NPC的.
0-1线性规划问题:
首先介绍线性规划问题:对于变量x1,x2,x3,......xn,
有若干约束条件 f1(xi)<0, f2(xi)<0,....fm(xi)<0,
求min g(xi) .
如果线性规划中,xi只能取0,或1那么就转化成0,1线性规划问题
很容易看出,令A=a1+a2+a3......+an, a*x1+a*x2+a*x3+....+a*xn>=A/2,
求min(a*x1+a*x2+a*x3+....+a*xn),如果
结果为A/2,就知道划分问题的回答是肯定的,如果大于A/2答案为否.
因此0-1线性规划问题不比划分问题容易,所以0-1线性规划问题是NPC的.
但是线性规划问题是P问题,所以只要加上一个约束,P问题可能就变成NPC的了.
因此我们在实际中一定要小心.
希望能对各位有所帮助,
如有谬误还请指正!
by DarwinZhang 2004.1.16
 
樓主回來轉了一圈了怎麼還不續呀。
我在聽呢。
 
lichdr前段时间实在太忙了,没有时间,这两天把它补完.[:)]
今天终于已经写完了,如果能对大家有点用处,我将非常高兴.[:)]
如有谬误,还请指正!
 
这样吧,再加一个题目,请证明哈密顿路问题也是NPC的,
哈密顿路问题是:
某个图中是否存在从某点出发但不必回到出发点而经过所有顶点一次的方法?
 
应该祝贺各位新年快乐!
呵呵,我看我现在是越来越喜欢理论了,
大富翁论坛却是解决实际上可用的问题为主要的,
可能将来会来得越来越少了,有缘相见了。[:)]
 
不是啦,今年 DFW 也许会改版,没准就有为你考虑的一些变化,还是要常来啊。
祝新年快乐,一切顺利。
 
新年帮助你ding!
 
大富翁早就该改版了[:D]
 
好久还来,呼声很高啊,我也顶一下,祝新的一年DFW能让新老顾客更加满意:)
 
多人接受答案了。
 
后退
顶部