您好,欢迎访问三七文档
美国麻州的克雷(Clay)数学研究所于2000年5月24日在巴黎法兰西学院宣布了一件被媒体炒得火热的大事:对七个“千僖年数学难题”的每一个悬赏一百万美元。以下是这七个难题。“千僖难题”之一:P(多项式算法)问题对NP(非多项式算法)问题“千僖难题”之二:霍奇(Hodge)猜想“千僖难题”之三:庞加莱(Poincare)猜想“千僖难题”之四:黎曼(Riemann)假设“千僖难题”之五:杨-米尔斯(Yang-Mills)存在性和质量缺口“千僖难题”之六:纳维叶-斯托克斯(Navier-Stokes)方程的存在性与光滑性“千僖难题”之七:贝赫(Birch)和斯维讷通-戴尔(Swinnerton-Dyer)猜想NP完全问题排在百万美元大奖的首位,足见他的显赫地位和无穷魅力。数学上著名的NP问题,完整的叫法是NP完全问题,也即“NPCOMPLETE”问题,简单的写法,是NP=P?的问题。问题就在这个问号上,到底是NP等於P,还是NP不等於P。证明其中之一,便可以拿百万美元大奖。这个奖还没有人拿到,也就是说,NP问题到底是Polynomial(多项式),还是Non-Polynomial,尚无定论。NP里面的N,不是Non-Polynomial的N,是Non-Deterministic,P代表Polynomial倒是对的。NP就是Non-deterministicPolynomial的问题,也即是多项式复杂程度的非确定性问题。什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。但是,有些问题是无法按部就班直接地计算出来。比如,找大质数的问题。有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也就是非确定性问题。而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间内算出来,就叫做多项式非确定性问题。而如果这个问题的所有可能答案,都是可以在多项式时间内进行正确与否的验算的话,就叫完全多项式非确定问题。完全多项式非确定性问题可以用穷举法得到答案,一个个检验下去,最终便能得到结果。但是这样算法的复杂程度,是指数关系,因此计算的时间随问题的复杂程度成指数的增长,很快便变得不可计算了。人们发现,所有的完全多项式非确定性问题,都可以转换为一类叫做满足性问题的逻辑运算问题。既然这类问题的所有可能答案,都可以在多项式时间内计算,人们於是就猜想,是否这类问题,存在一个确定性算法,可以在指数时间内,直接算出或是搜寻出正确的答案呢?这就是著名的NP=P?的猜想。解决这个猜想,无非两种可能,一种是找到一个这样的算法,只要针对某个特定NP完全问题找到一个算法,所有这类问题都可以迎刃而解了,因为他们可以转化为同一个问题。另外的一种可能,就是这样的算法是不存在的。那么就要从数学理论上证明它为什么不存在。前段时间轰动世界的一个数学成果,是几个印度人提出了一个新算法,可以在多项式时间内,证明某个数是或者不是质数,而在这之前,人们认为质数的证明,是个非多项式问题。可见,有些看来好象是非多项式的问题,其实是多项式问题,只是人们一时还不知道它的多项式解而已。上回说到可怜的旅行商想找出走遍所有城市的最短路径。让我们用计算机帮他搜索一下。这就需要用到本篇文章中要介绍的第一门学科了:《人工智能》。人类的许多活动,如解算题、猜谜语、进行讨论、编制计划和编写计算机程序,甚至驾驶汽车和骑自行车等等,都需要智能。如果机器能够执行这种任务,就可以认为机器已具有某种性质的人工智能。现在我们就要利用人工智能,用计算机模拟人的思维来搜索最短路径。想像一下,我们人思考问题时,有两种方法:一种是精确搜索,就是试验所有的可能性,找出最精确的一个方案。但它在搜索过程中不改变搜索策略,不利用搜索获得的中间信息,它盲目性大,效率差,用于小型问题还可以,用于大型问题根本不可能;另一种叫做启发式搜索,它在搜索过程中加入了与问题有关的启发性信息,用以指导搜索向着一个比较小的范围内进行,加速获得结果。对于旅行商问题这种NP完全问题,精确式搜索是不可能实现的,只能采用下面的几种启发式搜索方法:1.近邻法(nearestneighbor)推销员从某个城镇出发,永远选择前往最近且尚未去过的城镇,最后再返回原先的出发点。这方法简单,也许是多数人的直觉做法,但是近邻法的短视使其表现非常不好,通常后段的路程会非常痛苦。2.插入法(insertion)先产生连接部分点的子路线,再根据某种法则将其它的点逐一加入路线。比如最近插入法(nearestinsertion),先针对外围的点建构子路线,然后从剩余的点里面评估何者加入后路线总长度增加的幅度最小,再将这个点加入路线。又比如最远插入法(farthest,insertion),是从剩余的点里面选择距离子路线最远的点,有点先苦后甜的滋味。3.模拟退火算法(RecuitAlgorithm)模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。根据Metropolis准则,粒子在温度T时趋于平衡的概率为e-ΔE/(kT),其中E为温度T时的内能,ΔE为其改变量,k为Boltzmann常数。用固体退火模拟组合优化问题,将内能E模拟为目标函数值f,温度T演化成控制参数t,即得到解组合优化问题的模拟退火算法:由初始解i和控制参数初值t开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值,算法终止时的当前解即为所得近似最优解。3.遗传算法遗传算法是仿真生物遗传学和自然选择机理,通过人工方式所构造的一类搜索算法,从某种程度上说遗传算法是对生物进化过程进行的数学方式仿真。生物种群的生存过程普遍遵循达尔文进化准则,群体中的个体根据对环境的适应能力而被大自然所选择或淘汰。进化过程的结果反映在个体的结构上,其染色体包含若干基因,相应的表现型和基因型的联系体现了个体的外部特性与内部机理间逻辑关系。通过个体之间的交叉、变异来适应大自然环境。生物染色体用数学方式或计算机方式来体现就是一串数码,仍叫染色体,有时也叫个体;适应能力是对应着一个染色体的一个数值来衡量;染色体的选择或淘汰则按所面对的问题是求最大还是最小来进行。4.神经网络算法根据一个简化的统计,人脑由百亿条神经组成—每条神经平均连结到其它几千条神经。通过这种连结方式,神经可以收发不同数量的能量。神经的一个非常重要的功能是它们对能量的接受并不是立即作出响应,而是将它们累加起来,当这个累加的总和达到某个临界阈值时,它们将它们自己的那部分能量发送给其它的神经。大脑通过调节这些连结的数目和强度进行学习。尽管这是个生物行为的简化描述。但同样可以充分有力地被看作是神经网络的模型。看了上面的介绍是不是已经眼冒金星,哈欠连天了?其实这些还都只是些理论模型,要想用计算机程序来实现,还需要大量更加枯燥乏味的工作。
本文标题:NP完全问题
链接地址:https://www.777doc.com/doc-2889862 .html