98
运筹学基础 胡晓东 应用数学研究所 中国科学院数学与系统科学研究院 http://www.amt.ac.cn/member/huxiaodong/index.html Institute of Applied Mathematics

胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

  • Upload
    dokhanh

  • View
    239

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

运筹学基础

胡晓东

应用数学研究所

中国科学院数学与系统科学研究院

http://www.amt.ac.cn/member/huxiaodong/index.html

Institute of Applied Mathematics

Page 2: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

提纲

1. 线性规划 对偶定理

2. 博弈论 极大极小定理

3. 非线性规划 K-K-T 定理

4. 计算/算法理论 停机定理,库克定理

拓扑学 不动点定理

奇点理论 莫尔斯定理

5. 组合最优化 算法设计技巧

运筹学

• 模型

• 理论

• 算法

20世纪数学的五大指导理论 Five Golden Rules

叶其孝、刘宝光 Great Theories of 20th Century Math

上海教育出版社,2000 -and Why They Matter

Page 3: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 3

4. 算法理论-参考文献

基础内容

[1] The Design and Analysis of Computer Algorithms A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz, Prentice-Hall, 1982. [3] Introduction to Algorithms T. H. Cormen, C. E. Leiserson, R. L. Rivest, MIT, 1990.

较深内容

[1] Complexity and Approximation G. Ausiello, et al, Springer, 1999. [2] Combinatorial Optimization: Theory and Algorithms B. Korte and J. Vygen, Springer, 2000. [3] Approximation Algorithms V. V. Vzairani, Springer, 2001.

计算复杂性导论

堵丁柱、葛可一、王洁 ,高等教育出版社,2002

Page 4: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史

计算机的理论始于1935年的英国。

图灵,Alan Turing (1912-1954),剑桥

皇家学院的一个大学生,想制造一种(自

动)推理机,用它来解决由希尔伯特

David Hilbert (1862-1943)提出的判定

问题(Entscheidungs problem):

是否存在一种有效的程序,以预先

确定某个结论能不能从一组给定的

假设用逻辑推演出来。

Page 5: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 5

4. 计算/算法理论-历史(续一)

图灵在试图用数学术语表述这些问题时,所遇到的中心

困难是:对于可视作“有效的程序”的东西,这是一个直观上

令人满意,但是它是非形式的,没有一个清晰的概念。虽说人

类作计算已有数千年的历史,但在1935年前对于什么是计算,

仍然没有一个好的回答。

图灵面临的主要任务是弄清楚如何用一种形式的数学对

象去代替有效过程的概念。他所建议的是某种我们现在称作算

法的东西,是他仿效人类在进行一项计算时实际经历的步骤而

提出的一个概念。本质上讲,图灵将算法看作一个机械的过程

(或者是一组规则),它规定在任何一组特定情况下如何一步

步进行操作/运算。

Page 6: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 6

4. 计算/算法理论-历史(续二)

图灵参加了二次世界大战的密

码破译工作。研究的对象就是

1926年登场的德国ENIGMA。

Page 7: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 7

4. 计算/算法理论-历史(续三)

Page 8: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 8

4. 计算/算法理论-历史(续四)

图灵1939年在国家编码和翻译

学校设计了一个电子-机械解

密器,称为Bombe(布丁:鸡

蛋加糖等做成的冷冻点心 )。

Page 9: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 9

4. 计算/算法理论-历史(续五)

US Navy Bombe (1943)

British Bombe rebuilt (2008)

Page 10: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史(续六)

1940年纳粹德国又启用了更先进的洛伦兹编码机,用以传递

重要情报。为此,电子工程师T. Flowers、数学家M. Newman

和一个密码专家小组经过11个月努力,于1943年研制出每秒读

取能力达到5000个字符的“巨人”计算机The Colossus,使盟

军最终在与纳粹德国的情报战中取胜。

Colossus Mark 2 (1944) Lorenz SZ42 machine (1942)

Page 11: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

11

4. 计算/算法理论-历史(续七)

1944年,冯诺伊曼参加原子弹

的研制工作,该工作涉及到极为

困难的计算。在对原子核反应过

程的研究中,要对一个反应的传

播做出“是”或“否”的回答。

Page 12: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 12

4. 计算/算法理论-历史(续八)

解决这一问题通常需要通过几十亿次

的数学运算和逻辑指令,尽管最终的

数据并不要求十分精确,但所有的中

间运算过程均不可缺少,且要尽可能

保持准确。

被计算机所困扰的冯诺伊曼在一次极为偶然的机会中知道了

ENIAC计算机(ElectroNic Integrator And Computer)的研制计划,

从此他投身到计算机研制这一宏伟的事业中,建立了一生中最

大的丰功伟绩。

他所在的洛斯阿拉莫斯实验室为此聘用了一百多名女计算员,

利用台式计算机从早到晚计算,还是远远不能满足需要。无穷

无尽的数字和逻辑指令如同沙漠一样把人的智慧和精力吸尽。

Page 13: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

13

4. 计算/算法理论-历史(续九)

1944年夏的一天,正在火车站候车的冯诺伊曼巧遇

戈尔斯坦,并同他进行了短暂的交谈。当时,戈尔斯坦是美

国弹道实验室的军方负责人,他正参与ENIAC计算机的研制

工作。在交谈时,戈尔斯坦告诉了冯诺伊曼有关ENIAC的

研制情况。具有远见卓识的冯诺伊曼为这一研制计划所吸引,

他意识到了这项工作的深远意义。

几天之后,冯诺伊曼专

程来到莫尔学院,参观了尚

未竣工的这台庞大的机器,

并以其敏锐的眼光,一下子

抓住了计算机的灵魂-逻辑

结构问题,令年轻的ENIAC

的研制们敬佩不已。

Page 14: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 14

4. 计算/算法理论-历史(续十)

因实际工作中对计算的需

要以及把数学应用到其他科学

问题的强烈愿望,使冯诺伊曼

迅速决定投身到计算机研制者

的行列。对业已功成名就的冯

诺伊曼来说,这样做需要极大

的勇气,因为这是一个成败未

卜的新征途,一旦失败,会影

响他已取得的名誉和地位。

冯诺伊曼却以对新事物前途的洞察力,毅然决然地向此

征途迈出了第一步,于1944年8月加入莫尔计算机研制小组,

为计算机研制翻开了辉煌的一页。

Page 15: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

15

4. 计算/算法理论-历史(续十一)

冯诺伊曼以其非凡的分析、综合能力及雄厚的数理基础,

集众人之长,提出了一系列优秀的设计思想,在他和莫尔小组

其他成员的共同努力下,只经历了短短的十个月,人类在数千

年中积累起来的科学技术文明,终于结出了最激动人心的智慧

之花-一个全新的存储程序通用电子计算机方案(EDVAC:

Electronic Discrete variable Automatic Computer;离散变量

自动电子计算机 )诞生了。

冯诺伊曼以“关于EDVAC的报告草案”为题,起草了长达

101页的总结报告。报告广泛而具体地介绍了制造电子计算机

和程序设计的新思想。它明确规定,EDVAC计算机由计算器、

逻辑控制装置、存储器、输入和输出五大部分组成,并阐述了

这五大部分的职能和相互关系。这份报告是计算机发展史上一

个划时代的文献,它向世界宣告:电子计算机的时代开始了。

Page 16: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 16

4. 计算/算法理论-历史(续十二)

1954年6月,冯诺伊曼到美国普林斯顿高级研究所工

作,出任ISA计算机研制小组的主任职位。在那时,他提出了

更加完善的设计报告“电子计算装置逻辑结构初探”。报告中,

冯诺伊曼对EDVAC中的两大设计思想作了进一步的论证,为

计算机的设计树立了一座里程碑。

设计思想之一是二进制,他根据电子元件双稳工作的特点,

建议在电子计算机中采用二进制。报告提到了二进制的优点,

并预言,二进制的采用将大简化机器的逻辑线路。

实践证明了冯诺伊曼预言的正确性。如今,逻辑代数的

应用已成为设计电子计算机的重要手段,在EDVAC中采用的

主要逻辑线路也一直沿用着,只是对实现逻辑线路的工程方法

和逻辑电路的分析方法作了改进。

Page 17: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 17

4. 计算/算法理论-历史(续十三)

程序内存是冯诺伊曼的另一杰作。通过对ENIAC的考

察,冯诺伊曼敏锐地抓住了它的最大弱点-没有真正的存储

器。ENIAC只有20个暂存器,它的程序是外插型的,指令存

储在计算机的其他电路中。这样,解题之前,必需先相好所需

的全部指令,通过手工把相应的电路联通。这种准备工作要花

几小时甚至几天时间,而计算本身只需几分钟。计算的高速与

程序的手工存在着很大的矛盾。

针对这个问题,冯诺伊曼提出了程序内存的思想:把运

算程序存在机器的存储器中,程序设计员只需要在存储器中寻

找运算指令,机器就会自行计算,这样,就不必每个问题都重

新编程,从而大大加快了运算进程。这一思想标志着自动运算

的实现,标志着电子计算机的成熟,已成为电子计算机设计的

基本原则。

Page 18: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史(续十四)

冯诺伊曼为计算机的

发展道路打通了一道道关

卡。尽管长期以来,关于

二进制的引入和程序内存

的发明权一直有争议,但

是,冯诺伊曼在计算机总

体配置和逻辑设计上所做

的卓越贡献掀起了一次计

算机热潮。推动了电子计

算机的发展。

因而,冯诺伊曼被后人

称为“计算机之父” 。

John Mauchly J Presper Eckert

Page 19: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史(续十五)

然而,究竟谁才是第一台电子计算机的真正发明者?围绕着这个问题,计算机界纷争了许多年。一般人们都认定ENIAC是世界上第一台电子数字计算机。但一美国地方法庭认定J. V.

Atanasoff 和他的研究生C. Berry于1937年发明的ABC计算机,才是真正的“鼻祖”。

J.V. Atanasoff (1903-95) 19

Page 21: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史(续十七)

1973年10月19日,明尼苏达州一家地方法院经过135次开庭审理,当众宣判:“Mauchly 和 Eckert 没有发明第一台计算机,只是利用了Atanasoff 发明中的构思。”并且判决Mauchly和 Eckert 的专利无效,理由是Atanasoff早在1941年,就将他对计算机的初步构想告诉给Mauchly 。但是Atanasoff

所在的衣阿华大学并没有为ABC计算机申请专利,而且打官司的也不是几位计算机设计者本人,而是两家计算机公司,Honeywell 和Sperry Rand 公司。

这个判决下来的时间是1973年10月19日,水门事件暴光的前一天。第二天丑闻的报道铺天盖地,把判决结果湮没了。

Atanasoff 没能因此名声大振,他的处境依然如故。

对说 ABC 没有成功的人, Atanasoff 回应说:“构想就是成就,一旦有了构想,任何人都可以造出来。”

Page 22: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史(续十八)

Atanasoff 的“Atanasoff –Berry 计算机” (简称ABC)模

型机正好处于模拟计算与数字计算的门槛上。自从C.

Babbage 1822年设计差分机和分析机以后,在19世纪下半叶,

一些物理学家开始研制模拟计算装置。1876年,发现热力学

第二定律的L. Kelvin 和他的弟弟一起研制了能计算傅立叶系

数的“潮汐调和分析仪”。1887年,和 E. Monley 一起否定

以太存在的美国物理学家 A. Michelson 又研制了更精确的分

析仪。1930年美国科学家、教育家V. Bush 等人研制出微分分

析仪,用它来计算火力表时,速度要比手工计算快几十倍。

从ABC开始,人类的计算从模拟向数字挺进。而“ENIAC”标志着计算机正式进入数字时代。而客观地说,第一台通用电子计算机是由Atanasoff 设计、由Mauchly 和 Eckert 负责制成的。

xdhu 22

Page 23: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

图灵奖 (ACM,1966 - )

4. 计算/算法理论-历史(续十九)

若可将冯诺依曼誉为“计算机之父”的话,则可将阿兰图灵

视为“计算机之母” 或者“计算机科学之父” 。实际上,

冯·诺依曼的助手曾写到:“许多人都推举冯·诺依曼为‘计算

机之父’,然而我确信他本人从来不会促成这个错误。或许,他

可以被恰当地称为助产士,但是他曾向我,并且我肯定,他也

曾向别人,坚决强调:如果不考虑巴贝奇、阿达和其他人早先

提出的有关概念,计算机的基本概念属于图灵。”

图灵测试 (Loebner Prize,1991 - )

Page 24: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史(续二十)

British Government Gives Official

Apology to Alan Turing for Homophobia

Without [Alan's] outstanding contribution,

the history of world war two could well

have been very different.

The debt of gratitude he is owed makes it all the

more horrifying, therefore, that he was treated

so inhumanely. Alan and the many thousands of

other gay men who were convicted as he was

convicted under homophobic laws were treated

terribly. Over the years millions more lived in

fear of conviction.

Page 25: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史(续二十一)

This recognition of Alan's status as one of Britain's most famous

victims of homophobia is another step towards equality and long

overdue.

But even more than that, Alan deserves recognition for his

contribution to humankind … It is thanks to men and women who

were totally committed to fighting fascism, people like Alan Turing,

that the horrors of the Holocaust and of total war are part of

Europe's history and not Europe's present.

So on behalf of the British government,

and all those who live freely thanks to

Alan's work I am very proud to say:

we're sorry, you deserved so much better.

Page 26: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-历史(续二十二)

Turing made the single biggest

contribution to Allied victory in the

war against Nazi Germany and its

Axis partners. – W. Churchill

Page 27: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 27

4. 计算/算法理论-历史 (续二十三)

1950年前后,美国数学家Davis、Putnan、Robinson 等

取得关键性突破。

1970年,Baker、Philos对含两个未知数的方程取得肯定结论。

1970年,苏联数学家 Matijasevic 最终证明:

在一般情况答案是否定的。

整系数代数多项式方程称为丢番图方程 (Diophantine

Equation) ,求出一个丢番图方程的整数根称为丢番图方程可

解。 Diophantus, 约210-290,古希腊数学家)

D. Hilbert 第十个问题:能否通过有限步骤来判定不定方程

是否存在有理整数解?

Fermat “猜想”涉及的也是丢番图方程 xn + yn = zn, n 3

Page 28: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 28

4. 计算/算法理论-哥德尔定理

哥德尔定理 (形式逻辑叙述)对算术的每一种相容的形式

化,都存在在此形式系统之内不是可证明的算术真理。

哥德尔定理 对于任何一个目的在于解决,即证明或者反证

明算术的所有的陈述的相容的形式系统 F,存在一个算术

命题,它在该系统中可以既未被证明,也未被否证。形式

系统 F 是不完全的。

哥德尔(K. Godel, 1906-78年)所要证明的是如何将词句的自相引用的陈述,翻译成数学家为了证明算术陈述所接受的形式系统以内的等价陈述。可以考虑数学家欧几里德创立的“麦加学派”(又称“小苏格拉底学派”)

提出的三个悖论之一:“我正在说谎”。

Page 29: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 计算/算法理论-阿罗不可能定理

阿罗不可能定理(1951):在绝大多数情况下,不可能通过

投票选举方式保证产生出合乎大多数人意愿的领导者。

阿罗(K. J.Arrow)1972年因在一般均衡理论

方面的突出贡献与约翰·希克斯共同荣获诺贝

尔经济学奖。在他的经济《社会选择与个人价

值》一书中,采用数学的公理化方法对通行的

投票选举方式能否保证产生出合

乎大多数人意愿的领导者或者说

“将每个个体表达的先后次序综

合成整个群体的偏好次序” 进行了研究。他得

出了上述非常惊人的结论:当至少有三名候选

人和两位选民时,不存在满足阿罗公理的选举

规则。

Page 30: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 30

4. 算法理论-问题

这里我们仅讨论以下两类抽象问题(而不是如数理逻辑中那

样,考虑字符串或者语言)。

判定问题 (亦称 识别问题) 仅有两种可能的答案,“是”

或者“否”。此时,我们可以将一个判定问题视为一个函数,

它将问题的输入集合 I 映射到问题解的集合 {0, 1}。 例如,我

们考虑路问题: 给定一个图 G=(V, E) 和顶点集 V 中的两个顶

点 u, v, 判断 G 中是否存在一条路 u 和 v 之间的路。如果我们

用 i=<G, u, v> 表示该问题的一个输入,则函数 PATH(i)=1, 当

相应的答案为“是”,即u 和 v 之间存在一条路;否则函数

PATH(i)=0。 注意,这里对于 是-实例,我们仅需要给出答案

“是” ,而不必要给出 u 和 v 之间的一条路。

Page 31: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 31

4. 算法理论-问题(续一)

优化问题 或者求最小值或者求最大值。一个优化问题

通常可以用以下四个部分来描述。

一个优化问题也可以视为一个判定问题。 特别地,在问题

的实例之外,再给定一个最优值的上(或下)解即可。

实 例:若干实例 I 组成的集合 D,其中每一个实例 I

含有一个问题所有输入的数据信息。

可行解集:每一个实例 I 有一个解集合 S(I),其中的每一个解

都满足问题的条件,称为可行解。

目标函数:映射 c(): S(I)

最 优 化:求最优解 opt (I) S(I),使得对任意一个可行解

S(I),都有 c(opt (I)) c() (求最大值问题)

或者 c( opt (I)) c() (求最小值问题)

Page 32: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 32

4. 算法理论-问题(续二)

尽管在本课程的最后一部分我们主要讨论优化问题,但是

在本部分(计算复杂性理论),我们还是主要考虑判定问题。

这主要基于以下两个原因。

表述形式语言理论及其相应的基于判定问题的计算复杂性理

论的结果要更加容易一些。

基于判定问题的结果并不会减弱相应理论的影响和应用。

一方面,如果我们可以非常快速地求解一个优化问题,那

么我们也可以非常快速地求解相应的判定问题。亦即,如果优

化问题容易求解, 那么相应的判定问题也容易求解。

另一方面,如果我们有证据表明,求解一个判定问题是困

难的,那么我们也可以给出证据表明,求解相应的优化问题同

样是困难的。

Page 33: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 33

4. 算法理论-算法

一般地且不是严格地讲,一个算法可以理解为一个合理

的计算步骤:它以一些变量值为输入,然后生成若干变量值做

为输出。换言之,一个算法是一系列计算步骤,它根据输入给

出输出。

我们称一个算法是正确的,如果对每一个输入的实例,

它都可以终止并给出正确的输出(我们需要的解)。我们称一

个正确的算法可以求解一个特定的计算问题。一个不正确的算

法,对某一些输入的实例,可能不能终止,或者可以终止但是

输出的解不正确。通常人们可能会觉得奇怪,不正确的算法有

时竟然也是有用的, 只要算法出错的可能性控制在一定范围内,

亦即,算法对大多数输入的实例,都能输出正确的解。然而,

在本课程中我们主要讨论正确的算法。

Page 34: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 34

4. 算法理论-图灵机

当分析一个算法的性能时,我们需要估算一些算法所需要

的资源。有时候, 资源可能是指存储空间,通讯带宽,或者逻

辑门,这些从技术的角度讲非常基本因素。 然而,在这里我们

主意是指需要考虑的计算时间,也就是,算法在生成最终解或

者找到问题的答案以前所花费的时间。注意,由于所用计算机

的速度、存储空间和其他技术因素的不同,计算时间可能会有

巨大的差异。

因而,在我们开始从计算的角度分析一个算法前,我们

必须有一个技术上可实现的计算模型,它包括计算所需的所有

资源和使用它们的相应成本。

Page 35: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 35

4. 算法理论-图灵机

1936年,图灵描述了一个计算模型,后称图灵机

“a(automatic)-machine”。他并不是想将其设计成一

项实际的计算技术,而是要用表示思维实验

(thought experiment)中的计算机器。

图灵机主要是帮助计算机科学家

研究机器(mechanical

computation)计算的能力。

TURING CENTENARY

CONFERENCE

CiE 2012 - How the World Computes

Page 36: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

36

4. 算法理论-图灵机(续一)

一个多带确定型图灵机 (DTM) 有 k 条带,每一条都有一

个起始单元,而它的右侧有无限多个单元。它还有一个有限字

符集合,每一个单元可储存其中的一个字符。每一条带都有一

个读写头,它可对带上的单元进行逐一扫描,并读出单元所存

储的字符或者将一个字符存储到该单元中。 图灵机是由一个有

限控制所操作,每一个控制都是处于有限状态中的某个状态。

TM(S, T, I, , B, s0, sf )

S :状态集

T :带用字符集

I :输入字符集

B :T \ I 中的“空”

s0 :初始状态

sf :最终/接受状态

:下次-移动函数

…… ……

…… ……

.

.

.

有限控制

Page 37: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 37

4. 算法理论-图灵机(续二)

我们可以用如下的方法设计一个辨识某种特殊字符串的图灵

机:带用字符集包括输入的字符和一个特殊字符 B,也可以还

包含一些其他的字符。初始时,第一条带子上是输入的字符串,

其中从最左侧开始,每一个单元存储了一个字符;且字符串的

最后一个字符右侧的单元的所含字符皆为B。 其他带上的单元

所含字符皆为B。此时,图灵机处于初始状态 s0 ,且所有的读

写头都位于最左侧的单位。然后,图灵机根据下次-移动函数

在带子上进行一系列的移动和操作。

图灵机接受输入的字符串当且仅当它在系列操作以后达到

最终状态 sf 。否则图灵机在某一步不进行任何操作;它会处于

某个非接受状态。

Page 38: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 算法理论-图灵机(续三)

我们下面考虑一个简单的2-带图灵机。它可以确定字符集

{ 0, 1 } 上的一个字符串是回文(字符串从前往后与从后往前

读是一样的;例如 01110)。

…… 0 1 0 1 1 b b

b b

s0

……

(a)

…… 0 1 0 1 1 b b

B

s1

(b) 1 0 0 1 1 b

…… 0 1 0 1 1 b b

B

s2

(c) 1 0 0 1 1 b

(d)

…… 0 1 0 1 1 b b

B

s3

1 0 0 1 1 b

…… 0 1 0 1 1 b b

B

s3

1 0 0 1 1 b

(e)

…… 0 1 0 1 1 b b

B

sf

1 0 0 1 1 b

(f)

Page 39: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 39

4. 算法理论-图灵机(续四)

上述简单例子表明,

我们可以将一个图灵机视为

一个仪器,用它可以确认输

入的字符串是否有某种特定

的性质。

实际上,我们还可以将一个图灵机视为计算一个函数 f 的

仪器。 我们可以将函数的每一个变量值进行编码,再用一个

特殊的字符将对应于不同变量值的编码隔开,组成一个字符

串$。如果图灵机终止操作,并在预先指定的输出带上存储了

字符串 y, 那么我们就称函数值为 y,即 f(x) = y。可以看出

来,计算函数值的过程与确认字符串具有某种性质的过程有

些不一样。

Page 40: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 40

4. 算法理论-图灵机(续五)

一个图灵机 M 的时间复杂度 T(n) 等于它计算输入规模

为 n 的所有实例中,所需要进行的操作的最多次数。如果对

于输入规模为 n 的某些实例,图灵机不能终止操作,那么称

时间复杂度 T(n) 没有定义。

一个图灵机 M 的空间复杂度 S(n) 等于它计算输入规模

为 n 的所有实例中,从每个带的最左端到最右端移动的最长

距离值。 如果图灵机在某一个带上,向右无穷远地移动,那

么称空间复杂度 S(n) 没有定义。

对于问题的不同输入实例,即使它们输入占用同样多的存

储空间(规模),一个图灵机所需要进行的操作数目往往还是

不相同。 为了处理这种情形:由于不同输入实例所造成的图灵

机操作次数的不同,我们通盘考虑输入规模为 n 的所有实例。

Page 41: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

41

4. 算法理论-图灵机(续六)

关于函数的几个记法在分析算法的时间复杂度是会经常用到:

o(g(n)) ={ f(n): 对任意一个常数 c 0,存在一个正整数

n0 0 ,使得对所有 n n0,都有 0 f(n) c g(n) }。

O(g(n)) ={ f(n): 存在常正数 c 和 n0 使得,对所有 n n0,

都有 0 f(n) c g(n) }。

(g(n)) ={ f(n): 存在常正数 c 和 n0 使得,对所有 n n0,

都有 0 c g(n) f(n) }。

(g(n)) ={ f(n): 存在常正数 c1,c2 和 n0 使得,对所有 n

n0,都有 0 c1 g(n) f(n) c2 g(n) }。

思考题:试比较 O-记法和 o-记法之间的关系。

Page 42: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 42

4. 算法理论-图灵机(续七)

定理 1 若判定问题 P0可被一个时间复杂度为T(n) 的 k-带图灵

机 M 接受,则它可被一个时间复杂度为O(T2(n))的单带图灵机

M1 接受。

定理 2 若判定问题 P0 可被一个空间复杂度为S(n) 的 k-带图灵

机 M 接受,则它可被一个具有同样空间复杂度的单带图灵机

M1 接受。

证明思路(练习**):设计一个时间复杂度为O(T2(n)) 的单

带图灵机 M1,用它来模拟时间复杂度为T(n) 的 k-带图灵机

M。主要思想是:将 M1 的一个带想象成由 2k 个“轨道”构

成,换言之, M1 的一个字符是一个 2k 元组。

Page 43: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 43

4. 算法理论-图灵机(续八)

尽管现在的计算机结构上要复杂得多,计算能力要强大

得多,但是,图灵认识到:能在任何的计算机上执行的程序,

也能用他的机器的一种特定样式,通用图灵机,来完成。这意

味着:只要给予足够的时间和内存,没有任何一种计算机器能

做的计算而用通用图灵机不能够计算的(即图灵机作为一个计

算模型是足够的了)。

图灵认识到:不仅问题的输入数据,而且程序本身也可

以用一系列的符号来代码化。 图灵构造了一个程序:只要把程

序连同它所要对之操作的输入数据一起,写到通用图灵机的带

上。通用图灵机就能模拟程序对输入数据的操作。

图灵-丘奇假设 每一个可计算的量都可用某个图灵机来计算。

Page 44: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 44

4. 算法理论-图灵机(续九)

停机问题:任给图灵机程序P 和一组输入数据 I,是否存在单

个程序,接受 P 和 I 作为其输入,并在有限步后停机,并在带

上的最后做出说明,P 在处理 I 时是否将在有限步后停止?

停机定理 (1936): 给定一任意的图灵机程序 P 和一组任意的输

入数据 I,不存在单个的图灵机程序,它在有限多步后停机,

并告诉我们 P 是否会结束输入数据 I 的处理。

证明: 反证假设,存在这样一个图灵机TM(P, I),它可以判定程

序 P 在输入 I 的情况下是否可停机:若 P 在输入 I 时可停机,

TM(P, I) 输出“停机”,否则, TM(P, I) 输出“死循环” 。

显然,TM(P, I) 本身可被视程序 PTM,也可作为输入 ITM,

故TM(P, I) 可以判定当将 ITM 作为 PTM 的输入时, PTM 是否会

停机。

Page 45: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 45

4. 算法理论-图灵机(续十)

现考虑一个与 TM(P, I) 相反的图灵机TM(P, I):首先,

它调用TM(PTM, ITM)。若 TM(PTM, ITM) 输出“死循环”,则

输出“停机”,否则输出“死循环” 。

再考虑运行 TM(PTM, ITM) 时的情形。若 TM(PTM, ITM) 输

出“停机”,则根据TM的定义,PTM在输入TTM时,输出“停

机”;但是,根据TM的定义,TM应该输出“死循环”。类

似地,若 TM(PTM, ITM) 输出“死循环”,则根据TM的定义,

PTM在输入TTM时,输出“死循环”;但是,根据TM的定义,

TM 应该输出“停机”。总产生矛盾。

思考题:哥德尔定理 和 停机定理 之间有什么关系?

Page 46: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 46

4. 算法理论-图灵机(续十一)

停机测试悖论:计算机里有个

测试程序,这个测试程序的原

则是,对于计算机里所有程序

,当且仅当这个程序不递归调

用自己(输出停机),测试程序

就调用它(对应不停机)。如果

这个程序递归调用自己(对应

不停机),测试程序就不调用

它(对应停机)。无法回答的

问题是,测试程序递归调用自

己么?

Page 47: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 47

4. 算法理论-图灵机(续十二)

理发师悖论(罗素,1872

-1970)城市里唯一的理

发师只为那些不为自己理

发的人理发。理发师应该

为自己理发吗?

罗素悖论的出现引发了第三次数学危机。策梅洛(Zermelo,

1871-1953)应用自己的公理系统,使得集合在公理的限制下不

会太大,从而避免了罗素悖论。经过改进,这一系统形成了现

在被称为ZF系统的公理集合论体系。由策梅洛(Zermelo)和

弗伦克尔(Fraenkel)提出的这个体系至今还没有发现悖论。

Page 48: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 48

4. 算法理论-图灵机(续十三)

Embodied and disembodied computing

at the Turing Centenary

By S. Barry Cooper

Turing’s Titanic Machine?

Communications of the ACM, 2012 (55) (3), 74 - 83

In contrast to popular belief,

proving termination is not always impossible

By B. Cook, A. Podelski, A. Rybalchenko

Proving Program Termination

Communications of the ACM, 2011 (54) (5), 88 - 98

Page 49: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 49

4. 算法理论-图灵机(续十四)

现在我们就可以将一个算法定义为一个确定型图灵机,

其复杂度也是通过相应的图灵机的复杂度定义的。注意,这样

的定义与通常人们理解的算法的概念有些不同:一个算法是一

系列明确的计算步骤,它们与我们要用什么样的机器和硬件

(带、读写头等)运行这些算法是无关的。

在实际运行算法时,求解不同问题的不同算法通常是可以

在同一个计算机上运行的。同时,一个算法也可以在不同的计

算机上运行,只要这些计算机的操作系统都是一样的。

不过,在不同计算机上运行同一个算法,所需要的时间可能

会因为不同型号的中央处理器和其他硬件因素而有所不同。实

际上,用图灵机来描述算法的一个主要目的就是,分析算法的

性能时,我们可以不考虑这些技术上的因素。

Page 50: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 50

4. 算法理论-图灵机(续十五)

因而,为了忽略算法的严格定义与非严格定义之间的这种

差别,可将一个算法视为一个具有有限控制的图灵机的 下次

-移动函数(而非图灵机本身)。一般来讲,我们并不将一个

算法描述成一个 下次-移动函数,这么做也没必要。在分析

图灵机模型下一个算法的性能时,通常是用算法所执行的基本

运算的次数,比如算术运算、比较运算等等,来计算它的时间

复杂度。此时,我们假定在单位时间内可以完成这些基本运算。

实际上,人们发现所有可接受的计算模型都有一个显著

的性质:如果一个问题在某一个计算模型下是多项式时间可解

的,那么它在其他计算模型下同样也是多项式时间可解的。

为了将算法描述的清楚和简洁,我们采用伪码。它与常用

的 Fortran 等不同,它允许使用任意形式的数学表述,只要它

的含义是清楚的,而且其指令可以很容易地转换为图灵机所用

的(真正的)码(字符)。

Page 51: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 51

4. 算法理论-非确定图灵机

给定一个实例输入 I,我们可以将非确定型图灵机 M

的运算方式看作如下过程:并行地执行所有可能的(运算)操作,直到达到接受状态或者无法再进行操作。

确定型图灵机与非确定型图灵机之间最重要的区别在于:

在要执行每一次(运算)操作时,后者有有限多个(移动)方

式可以选择,究竟选择哪一个是不确定的;而前者仅有一个可

以选择,亦即(移动)方式是完全确定的。

计算复杂性理论的一个核心概念是非确定型图灵机,

NonDeterministic Turing Machine (NDTM),的模型。

Page 52: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

52

4. 算法理论-非确定图灵机(续一)

考虑划分问题,并采用简单的编码方式:给定一组自然数,

a1, …, ap,判断集合{1, 2, …, p} 是否存在一个划分,S 和 S’,使得

ai = aj, 其中 S S’={1, 2, …, p} 且 S S’=。 iS jS’

000…0 1 000…0 1 …… 1000 …0

a1 a2 ap

…… ……

…… ……

aiS

ajS’

读取输入带上的信息

以随机地方式在第2条带

或者第3条带上添写ai 个 0 。

检查第2条带和第3条带上0的个数是否相等

Page 53: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

53

4. 算法理论-非确定图灵机(续二)

我们称非确定型图灵机 M 的时间复杂度为T(n) 如果对于任

意输入长度为 n 且可达接受状态的实例,都存在不超过 T(n)

次系列操作使得最后达到接受状态 sf。称 M 的空间复杂度为

S(n) 如果对于任意输入长度为 n 且可达接受状态的实例, 都

存在在任意一个带上读取不超过 S(n) 个单元的一系列操作,

使得最后达到接受状态 sf。

输入为

a1 = 3: 000

a2 = 8: 00000000

a3 = 5: 00000

a1

T2

T2 T2 T3 T3

T3

a3

sf

T2 T2 T2 T2 T3 T3 T3 T3

a2

a1

a2

a3 a3 a3

sf

xdhu

Page 54: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 54

4. 算法理论-非确定图灵机(续三)

至于确定型图灵机与非确定型图灵机之间的关系,我们

不难看出,它们可以模拟彼此的(运算)操作。 然而,当后者

模拟前者时,不需要增加运行的时间和空间。与之不同的是,

当前者模拟后者时,时间复杂度应会增加很多。 以下定理说明,

第二种模拟增加的时间复杂度有一个指数阶的上界。

定理 3 设一个非确定型图灵机 M 在时间T(n) 内可以接受判定

问题 P0,且 T(n) 是一个时间可构造的复杂性函数。则存在一

个确定型图灵机 M’,它可在时间 O(cT(n)) 内接受 P0,其中c 是

一个常数。

我们称图灵机 M 接受一个判定问题 P0, 如果 I 是问题 P0 的

一个是-实例当且仅当 M 接受相应 I 的字符串。

Page 55: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 55

4. 算法理论-复杂性分类

P-类问题 (简记P) 是所有这样的判定问题的集合,它的每个是-

实例都可被某个确定型图灵机在多项式时间内接受。

NP-类问题 (简记 NP)是所有这样的判定问题的集合,问题的每

个是-实例都可被某个非确定型图灵机在多项式时间内接受。

定理 4 判定问题 属于 NP 如果存在一个多项式 p( ) 和一个满

足以下性质的 明证-核对算法 A:字符串 x 是 的一个是-实例

当且仅当存在 中的一个字符串c(x),其中 |c(x)| p(|x|),使得

当输入为 x$c(x) 时, 可在最多p(|x|) 时间内回答“是”。

下述定理给出了证明一个问题是属于NP 的另外一种更常

用的方法。

Page 56: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

56

4. 算法理论-复杂性分类(续一)

在讨论和研究算法或者问题的计算复杂性时,为什么我们

总是用多项式时间做为尺度呢?

实际上,是Jack Edmonds (1934 - )在上个世纪六十年代首先提出:

好算法应该是多项式时间算法。

Page 57: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 57

4. 算法理论-复杂性分类(续二)

所需时间 n=10 n=20 n=30 n=40 n=50

n .00001 second

.00002 second

.00003 second

.00004 second

.00005 second

n2 .0001 second

.0004 second

.0009 second

.0016 second

.0025 second

n5 . 1 second

3.2 seconds

24.3 seconds

1.7 minutes

5.2 minutes

2n .001 second

1.02 second

17.9 minutes

12.7 days

35.7 years

3n .059 second

58 minutes

6.5 years

3855 centuries

2108

centuries

10 310

0.00001 x =

50 250

0.00005 y = 计算量

计算时间

= 计算机速度(不变)

下述图表说明,计算工具在技术和硬件方面的进步所能给多

项式时间算法和指数时间算法带来的好处是有本质不同的。

Page 58: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 58

4. 算法理论-复杂性分类(续三)

问题规模 现有计算机 速度提高100倍 速度提高1000倍

n N1 100N1 1000N1

n2 N2 10N2 31.6N2

n5 N3 2.51N3 3.98N3

2n N4 N4+ log2100 N4 + 9.97

3n N5 N5 + log3100 N5 + 6.29

练习:若 y 是 x 的一个多项式函数,z 是 y 的一个多项式函

数,则 z 也是 x 的一个多项式函数。

下述图表说明,计算工具在技术和硬件方面的进步所能给多

项式时间算法和指数时间算法带来的好处是有本质不同的。

计算量

计算速度

= 运行时间(不变) (N2)

2 x 2

1 100 =

4 2 N 2 y

1 100 =

Page 59: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 59

4. 算法理论-复杂性分类(续四)

为了迎接新千禧年的数学,美国克雷数学所(Clay Math

Institute)仿照一百年前的大数学家希尔伯特, 选定并公布了

七个新千禧年(百万美元)难题,P NP ? 问题就是其中的一

个问题。2000年5月在法国举行的千禧年会议上,T. Gowers 做

了题为 “数学的重要性”的公众演讲,J. Tate 和 M. Atiyah 介

绍了这七个难题。

注意,为了证明一个问题属于NP,我们不必描述,给

定一个实例的输入 x, 如何有效地计算明证 c(x)。实际上,我

们仅需证明,对于每个 x ,都至少存在这样一个字符串c(x) 。

换言之,我们只需要证明,在多项式时间内可以验证每一个

“是-实例”。

Page 60: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 60

4. 算法理论-复杂性分类(续五)

要证明问题 P0 属于 NP-C,我们只需要证明:

(1) P0NP

(2) 对于任意一个问题 P’NP,都存在一个(确定性)多项式

时间算法 A’ :给定问题 P’ 的一个实例输入 I’,它可找到

问题 P0 的一个实例 I 使得 I’ 可接受当且仅当 I 可接受。

NP 中的一个判定问题 P0 是非确定性多项式时间完备

(简记NP-C)问题如果:给定一个时间复杂度为T(n) n 的

可接受 P0 的确定性算法 A0,对任意一个问题 P’NP 我们都

可以找到一个时间复杂度为T(PL(n)) 的确定性算法 A’,它接

受 P’ 当且仅当 A0 接受P0,其中 PL 是一个与 P’ 有关的多项式

(称 P’ 为多项式时间可归约到 P0)。所有的非确定性多项式

时间完备问题组成 NP-C问题类。

Page 61: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 61

4. 算法理论-复杂性分类(续六)

换言之, 如果存在一个确定性多项式时间算法接受某个

问题 P0 NP-C,那么我们便可在多项式时间内接受 NP 中的

任意一个问题。因此,或者NP-C 中的所有问题都属于P 或者

它们都不属于。前者成立当且仅当 P =NP。

目前,人们普遍猜测 P NP。实际上,这个猜测基于一

种哲学信念:现实世界中存在某些问题,它们比其他问题要

难解。

注意,如果存在一个问题 P0 NP-C,且 P0 P,那么对

任意给定问题 P’NP,我们都可以在多项式时间内通过如下

方法接受它:假设多项式时间算法 A0 接受问题 P0。则给定问

题 P’ 的一个实例输入I’,我们可以先用多项式时间算法A’ 构

造问题 P0 的一个实例 I,然后以 I 为输入,运行算法 A0。

Page 62: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

62

4. 算法理论-复杂性分类(续七)

计算复杂性

NP-难解 NP-难解

NP-完全

NP

P

P = NP =

NP-完全

Page 63: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 63

4. 算法理论-复杂性分类(续八)

It’s one of the fundamental mathematical problems of our time,

and its importance grows with the rise of powerful computers

By Lance Fortnow

The Status of the P versus NP Problem

Communications of the ACM, 2009 (52) (9), 78 - 86

千禧年大奖难题 (Millennium Prize Problems) 是由美国克雷

数学研究所 (Clay Math. Inst., CMI) 于2000年5月24日公布的

七个数学难题。该所宣布,每个难题的解答须发表在数学期

刊上,并经各方两年验证期;每破解一题的解答者,会得到

奖金 100万美元。

P = NP?列为其一!

Page 64: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 64

4. 算法理论-复杂性分类(续九)

美剧《基本演绎法》(美版“福

尔摩斯” 于2012年在CBS首播)

第 2 季第 2 集中,两位数学家因

即将证明“P=NP ”而被杀,凶手

为独吞成果而下了毒手。她的动

机并非千禧年难题那100万美元的

奖金,解决了 P=NP,她就能够破

译世界上所有的密码系统,所带

来的利益比100万美元多多了。

剧中只用了一句话介绍 P=NP 的

意义:“能用电脑快速验证一个

解的问题,也能够用电脑快速地

求出解”。

Page 65: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 65

4. 算法理论-复杂性分类(续十)

Page 66: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 66

4. 算法理论- 解线性规划的椭球算法

在1979年春天,L. G. Khachian 证明了,求解线性规划的

一个算法是多项式时间算法,从而解决了一个长期未解的公开

难题。他的工作是基于其他学者研究非线性规划的成果。他所

采用的方法与以前处理线性规划的算法完全不同,该方法完全

摒弃了利用线性规划的组合结构的套路。

为了讨论和表述简单起见,我们考虑如下三个问题:

线性规划: 求解最小值问题 min{ cTx | Ax = b, x 0 }; (LP)

线性不等式组: 求解不等式组 Ax b; (LI)

线性严格不等式组: 求解不等式组 Ax<b. (LSI)

定理 5. 若存在求解线性严格不等式组 LSI 的多项式时间算

法,则存在求解线性规划 LP 的多项式时间算法。

Page 67: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 67

4. 算法理论- 解线性规划的椭球算法 (续一)

定理 6. 线性规划 LP 的所有基础可行解都是有理数向量,且

它们分量和分母的绝对值都不超过 2L。

设 x = (x1, x2, … , xn) 是线性规划的一个基础解,另令

= max{|aij | | i, j }, = max{ |bj| | j =1,…, m } 。

则有 | xj | m!m-1。这对非基变量也成立,因为 xj = 0。对

于基变量,xj 是矩阵B-1 中元素与向量b 中元素相乘的 m 项

之和。根据线性规划问题输入的整数性假设,分子至少是1,

而行列式为矩阵 A 的 m – 1个元素的 (m – 1)! 项乘积的和。

再记 L= mn + log |P |,其中 P 是A, b 和 c 中非0 整数的乘积。

L 称为线性规划 LP 问题的输入规模。

Page 68: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 68

4. 算法理论- 解线性规划的椭球算法 (续二)

引理 1. 假设线性规划LP的两个基础可行解 x 和 y 满足

k2-2L < cTx, cTy (k+1)2-2L 其中 k 是一个整数,则 cTx=cTy.

引理 2. 线性规划 LP 存在多项式时间算法当且仅当线性不等

式组 LI 存在多项式时间算法。

引理 3. 线性不等式组 LI Ax b 有解当且仅当严格线性不等

式组 LSI Ax < b+ 有解,其中 = 2-2L。

引理 4. 如果存在求解严格线性不等式组 LSI 的多项式时间算

法,则存在求解线性不等式组 LI 的多项式时间算法。

Page 69: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

69

4. 算法理论- 解线性规划的椭球算法 (续三)

y

x

Ei

ti+1

Ei+1

x

Ei

ti

y

求解严格不等式组

LSI 的迭代算法的主要

思想是:如果有一个解,

那么让椭球始终包含一

个解。

在每一次迭代步骤中,用

一个更小的椭球替代现有的

椭球,而且新的小椭球同意

包含一个解(若解存在)。

xdhu

Page 70: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 70

4. 算法理论- 解线性规划的椭球算法 (续四)

进行足够多次这样的迭代步骤以后,将椭球的体积逐渐

地缩小,我们或者发现一个解,或者确认不存在解。

引理 6. 如果输入规模为L的线性严格不等式组LSI 有解,则

位于球体 ||x|| n2L 的解的体积至少是 2-(n+2)L。

引理 5. 椭球算法在进行了i 次迭代以后, 椭球 Ei 的体积为

Vol(Ei) < 2-1/(n+1)Vol(Ei-1),其中 i > 2.

定理 7. 经过 32n(n+1)L 次迭代步骤,修改的椭球算法或者收

敛到一个解,或者确认严格线性不等式组无解。

Page 71: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 71

4. 算法理论-Cook定理

首先让我们考虑数理逻辑中的一个核心问题: 可满足

问题 (SAT)。回忆一下,一个布尔变量 x 可以取两个值, 真

和 伪。多个布尔变量之间可以进行 ‘或’ (+) , ‘与’ (),

和 ‘非’运算。称布尔变量的一组赋值是真赋值 如果该赋值

可以使得布尔表达式的值为真。可满足问题是判断任意给定

的一个布尔表达式是否存在一个真赋值(若有, 则称布尔表

达式 可满足)。

要想让上述布尔表达式(称句)的值为“真”, 所有的

子表达式(称子句)的值都必须为“真”。此时易知,每一

子句都至少含有一个字 (变量或变量的非) 其值为“真”。

(x1+x2+x3)(x1+x2)(x2+x3)(x3+x1)(x1+x2+x3), 其中 xi = 1 – xi

练习 上述布尔表达式可满足吗?

Page 72: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 72

4. 算法理论-Cook定理(续一)

Cook 定理 (1971) 可满足问题属于 NP-C。

证明. (i) 可满足问题属于 NP。(练习)

(ii) NP 中的每个问题都可在多项式时间规约为可满足问题。

(查阅任意一本计算复杂性理论方面的专著或教材)

对于任意一个判定问题 P0NP,设 M 是可接受 P0 的、

时间复杂度为多项式的一个非确定型图灵机,另设 w 为 M 的

一个输入。 我们需要说明,由M 和 w 如何构造一个布尔表达

式 w0,使得 w0 是可接受的当且仅当 M 接受 w。证明的关键是

要证明对任意一个 M,都存在一个多项式时间的算法,它可由

w 构造出w0。

Page 73: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

73

4. 算法理论-Cook定理(续二)

自S. Cook 在其开创性论文中证明了这个具有基础重

要性结果以后,即刻产生了巨大的影响。随后人们通过将成

千上万个问题直接或者间接地规约为可满足问题的方法,证

明了它们都是属于 NP-C。特别是,R. Karp (1972) 证明了几

十个经典的组合优化问题都属于 NP-C,从而非常清楚地揭

示了这一概念的重要性。

前面已经提到,合取范式型布尔表达式的可满足问题属于

NP-C。我们称一个布尔表达式为 k-合取范式 (k-CNF) ,其中k

是一个正整数,如果它是若干个布尔和的布尔乘积,其中每一

个布尔和最多含有 k 个字。判定任意给定的k-合取范式是否可

满足的问题为k-可满足问题 (k-SAT) 。人们已经证明: k = 1

或者 2 时, k-可满足问题 属于 P (练习**)。然而,下述定理

表明,当 k = 3 时,该问题的时间复杂度就发生了变化。 xdhu

Page 74: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 算法理论-Cook定理(续三)

定理 8. 3-可满足问题属于 NP-C。

我们可以对新引进的变量进行赋值使得相应的子句的值为“真”

当且仅当变量为 x1, …, xm 的原子句的值为“真”。因此,给定

一个合取范式型的布尔表达式 F,对其中的每一个子句进行上

述转换, 我们可在以与 F 的长度成线性关系的时间内,构造

一个 3-合取范式 F’ 使得它可满足当且仅当 F 可满足。

证明. 要证明这个定理,我们只需证明:可满足问题在多项式

时间内可以规约为 3-可满足问题。不难验证,含有 m 4 个变

量 x1, …, xm 的任意一个子句,都可以通过引入 m – 3 个新变量

y1, …, ym 的方法,将其表述为3-合取范式型的布尔表达式:

(1+ 2+…+ m) = ( 1+ 2+y1) ( 3+y1+y2) (4+y2+y3) …

( m-2+ym-4+ym-3) ( m-1+ m+ym-3)

74 xdhu

Page 75: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

75

4. 算法理论-复杂性分类(续十)

人们有时会遇到这样的问题 P0:尽管可以证明某个 NP-C

问题可以在多项式时间内归约为P0,但却无法证明 P0NP。

因而,按照定义,我们不能称问题 P0 属于NP-C。 然而,无

容置疑,具有这样性质的问题与NP-C中的任意一个问题至少

是一样难的。 我们称其为NP-难(NP-hard)。

现在人们还不知道上述问题是否属于 NP 。注意,如果该问

题存在非确定型图灵机,那么它必须可以处理任意输入的 k

(这与前面讨论的划分问题完全不同)。

第 k 个最重子集问题

实例:自然数 c1, c2, …, cn, k 和 L。

问题: 判断是否存在 {1, 2, …, n} 的 k 个不同子集 S1, …, Sk

使得 cj L,i =1, 2,…, k.

jSi

Page 76: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 76

4. 算法理论-复杂性分类(续十一)

NP-难的概念除了用来表述不知是否属于NP 的一类判

定问题, 而且它还常常用来表述难处理的优化问题:可以证

明其判定形式属于NP-C。

最大可满足问题 (可满足问题的优化形式)

实 例: n 个布尔变量的布尔表达式,C1C2 … Ck

可行解: n 个变量的 0-1 赋值

目 标: 满足的子句的个数最多

最长路问题(哈密顿路的优化形式)

实 例: 连通图 G=(V, E)

可行解: 连接两个顶点的路

目 标: 所含顶点的个数最多

Page 77: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

77

4. 算法理论-Cook定理(续四)

定理 9. 整数线性规划(ILP) 是NP-难解问题。

不难验证,C 是可满足的当且仅当整数线

性规划问题的最大值存在,且其至少为 1。

x1+x2+x3 1

1–x1+x2 1

1–x2+x3 1

证明. 要证明定理,我们需要证明:可满足问题可以在多项式

时间内规约为整数线性规划问题。规约可以这样进行:将“真”

与 1 相关联,“伪”与 0 相关联。 这样‘或’运算就变成通常的

加法运算, x 表示为 1 – x,要保证给定的布尔表达式 C 可满

足,赋值需要使得它的每一个子句都至少有一个“真”字。

x1+x2+x3 y

1–x1+x2 1

1–x2+x3 1

Max y

xi{0, 1}

C=(x1+x2+x3)(x1+x2)(x2+x3)

Page 78: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 算法理论-Cook定理(续五)

团: 图的顶点集V(G) 的一个子集 C 称为团,如果C 中任意两

个顶点之间都存在有一条边属于 E(G)。

顶点覆盖: 图的顶点集V(G) 的一个子集 C 称为顶点覆盖,

如果 E(G) 中每一条边的至少一个端点在 C 中。

独立集:图的顶点集 V(G) 的一个子集 I 称为独立集,如果

I 中任意两个顶点之间都不存在E(G)中的边将其相连。

独立集 顶点覆盖 团

从可满足问题多项式时间规约为其他一些组合优化问题并

不显然;实际上,规约往往并不能直接完成。

Page 79: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 79

4. 算法理论-Cook定理(续六)

引理 7. 设 S 为图的顶点集 V(G) 的一个子集。则以下结论是

等价的: (i) S 是图 G 的一个团。

(ii) S 是图G 的补图G 的一个独立集。

(iii) V \ S 是补图G 的一个顶点覆盖。

补图 G 的独立集 图 G 的团 补图 G 的顶点覆盖

定理 10. 团问题,顶点覆盖问题和独立集问题都属于 NP-C。

证明 (练习**):首先证明团问题属于 NP-C,即可得证。

Page 80: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 80 80

4. 算法理论-Cook定理(续七)

证明组合优化问题 NP-完备性的方法与组合优化问题本身

的结构一样千差万别。 然而,常用的证明方法主要有三大类。

它们为证明一个新问题的 NP-完备性提供了一般的框架。

局部替换 提取一个已知是 NP-C 问题的实例的某些特征,

构造一族基本单元,用一种统一的方式将每一个单元替换为

一个不同的结构。

限制 证明一个已知的 NP-C问题是要所考虑问题的一个

子问题。

部件设计 使用所考虑问题实例 P0 的部件,设计若干构件

使得它们可以组合成一个已知 NP-C 问题的实例。 ’

Page 81: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 81

4. 算法理论-复杂性分类(续十二)

特别注意,概念NP 的定义中所隐含的不对称性:如果 x

是NP 中某个判定问题的一个是-实例,那么存在在多项式时间

内接受它(判定其为是)的非确定型图灵机;然而,假如 y是

这个问题的一个否-实例,就不一定存在在多项式时间内接受

它(判定其为否)的非确定型图灵机。不过,P 就不具有这种

非对称性。

定理 11. 若 P0P,则 P0 P。

证明: 因为 P0 属于 P,所以存在多项式时间算法 A 接受 P0。

现将算法 A 中“是”报告都替换为“否”报告(反之亦然),

相应的算法记为A’。易知,这个算法可以接受 P0。

Page 82: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 82

4. 算法理论-复杂性分类(续十三)

再回忆一下,存在判定是-划分问题的非确定型图灵机,

在O(n) 时间内它可以接受任意一个是-划分实例。但是人们还

不知道是否存在可在多项式时间内接受否-划分实例的非确定

型图灵机:任给这样一个实例 I,它不存在划分 {S, S’},使得

iS ci = jS’ cj。实际上,这个问题可以视为是-划分问题的补

问题。

不太严格地讲,不对称性是指:接受任给的一个字符串,

只要经一组可能的操作之后得出结论“这个串就是所期望的”

即可;然而,要判定任给的一个字符串不是我们所期望的,只

有在实施完所有可能的系列操作之后,我们才能得出结论“这

个串不是所期望的”。

Page 83: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 83

4. 算法理论-复杂性分类(续十四)

一般来讲,一个判定问题 的补问题 的是-实例,是将

字符集 的所有字符串中除去对应 的是-实例的字符串得到

的字符串集。当然,严格地讲,有些字符串既不对应问题 的

是-实例,也不对应问题 的是-实例。 不过,这些字符串对应

的输入实例,并不影响问题的复杂性分类,这是因为很容易在

线性时间内识别并除去它们。

问题的复杂性分类 co-NP 是由补问题属于 NP 的所有

判定问题组成。

注意,根据前面的定理 11,可知 co-P = P。

Page 84: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 84

4. 算法理论-复杂性分类(续十五)

定理 12. 若存在一个问题 P0 NP-C 且 P0 NP,

则 NP = co-NP。

由定理 12 可知,在 NP 的所有问题中,NP-C 问题是这样

的一类问题,它们的补问题最不可能属于NP。反之,如果

NP 中的一个问题的补问题也在 NP 中,那么这很可能说明该

问题不属于 NP-C。

证明 (练习*) 我们只要证明,对任意问题 P’NP,都有P’NP 。

因为P0NP-C,所以在多项式时间内可将 P’ 归约为 P0。又因为

在多项式时间内可将 P’ 归约为 P0,用同样的方法可以将 P’ 归

约为 P0。因为 P0 NP,所以存在非确定型图灵机 M,它可在多

项式时间内接受 P0 ,且它同样可以接受 P’。故有 P’NP。

Page 85: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

85

4. 算法理论-复杂性分类(续十六)

xdhu

Page 86: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

86

4. 算法理论-复杂性分类(续十七)

因为co-NP 中非常多的问题似乎都不属于NP,所以人们

猜测 NP co-NP。注意,这个猜想要强于著名猜想P NP。

这是因为 P 在问题的补的意义下是闭的,亦即P = co-P,所以

NP co-NP 蕴含着 P NP。即使有 NP=co-NP,但也还是可

能有 P NP 。

P NP co-NP

co-NP-C NP-C

根据以上讨论和分析,我们在下图给出了几个重要的

问题复杂类之间的关系。

Page 87: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 算法理论-“圣经”中的一个故事

Computers and

Intractability A Guide to the Theory of

NP-Completeness

Michael R. Garey

David S. Johnson

W. H. Freeman and Company, 1979

“The Bible of Computational Complexity” – 堵丁柱

Page 88: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 88

4. 算法理论-“圣经”中的一个故事(续一)

假定我在一个“呆儿”电脑公司的研发部当算法高级

设计师。这一天老板海呆把主任海龟叫到他的办公室里,跟

他说:“目前金融危机正在加速蔓延,公司生产出的计算机

大量积压。如果不生产出新的产品,公司就会在低迷的市场

中倒闭。你们尽快研发出`矛盾终结机`,使得公司走出困境。”

圣经中用一个非常有趣和生动的故事给我们阐述了计

算复杂性理论的作用和意义。

为此,主任海龟回到他的办公室,开始思考。首先,海龟

认为需要有一个方法能够判定老板海呆所期望的`矛盾终结机`

是否可能实现;如果可以实现,那么需要尽快给出具体的设

计方案。作为研发部的主任,海龟找到了我,算法高级设计

师,让我两周之内设计这样一个有效的算法,解决此问题。

Page 89: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu

4. 算法理论-“圣经”中的一个故事(续二)

89

当我搞明白了老板盖茨的意图以后,我立马开始了工作;

心里想着,完不成任务,我就要失业啦,后果不堪设想……

可是,其中涉及到了一个优化问题,我玩命儿干了几天,

毫无进展,因为除了把每一种可能性都考察一遍(枚举法),我

还是没有找到更好的方法。

又过了几天,还是毫无

进展。最后三天、二天、

一天,仍无进展 … …

我一夜未眠,一直在想

如何跟老板盖茨讲。

Page 90: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 90

4. 算法理论-“圣经”中的一个故事(续三)

要不,我就垂头丧气地去海龟的办公室,跟他实话实说:

“我看了很多书,想了很多办法,请教了很多专家,……可

是 我就是找不到这样的算法。我可能是太笨了…”

Page 91: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 91

4. 算法理论-“圣经”中的一个故事(续四)

要是这样可行的话,那我就可以理直气壮地跟海龟说:“我找不到这样的算法, 这是因为这种算法根本就不存在!”

可我想,这样说可不行呀!(海龟和海呆非得把我给裁了

不可) 我于是想换个思路,是不是可以证明这个问题本身太难

了,不会存在有效的算法找到它的答案呢?

Page 92: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 92

4. 算法理论-“圣经”中的一个故事(续五)

Page 93: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 算法理论-“圣经”中的一个故事(续六)

于是,我胸有成竹地走进海龟的办公室,对他说:“我找不

到有效的算法, 但是华老、陈景润等等也都找不到。” 海龟不

解地问:“为什么呢?”我平静地回答:“因为它是NP-难的 ”

不过,我发现我可以证明这个问题是NP-难的!

Page 94: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 94

4. 算法理论-“圣经”中的一个故事(续七)

这样的回答至少可以告诉海龟,把我裁掉,另外聘其他

(任何)专家都没有用处。

不过,我也十分清楚,毕竟证明一个问题是NP-难的,

仅仅是解决困难问题的第一步。我还是要想办法,给我自己和

公司摆脱困境(一旦公司倒闭了,我便没了工作)。

简而言之,计算复杂性理论最根本的用途不是为我们解决

不了十分棘手的问题提供一个最有说服力的(理论)托词,

而是为我们处理这个问题指引了一个方向(该问题是NP-难的,

不要试图设计求解它的有效算法)。

Page 95: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 95

4. 算法理论-小结

通常有以下三种途径处理NP-难问题:

精确算法(Exact Algorithms): 针对问题的一些特殊情况或

者小规模情形,我们可以设计这样的算法,它可以在可行

的时间内求得准确解或者最优解。

启发式算法(Heuristic Algorithms): 我们可以采用一些直观

上合理的策略,设计这样的算法,在可行的时间内,它不

一定在所有情况下都能求得准确解或者最优解,但是在通

常情况下,可以求得比较准确的解或者接近最优解的解。

近似算法(Approximation Algorithms): 我们可以设计这样

的算法,在任何情况下,它都可以在可行的时间内,求得

一个近似最优的解其目标函数值与最优解的目标函数值相

差常数倍。

Page 96: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 96

4. 算法理论-小结(续一)

Page 97: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

4. 算法理论-小结(续二)

受过教育的人的一个标志就是,

他满足于接受事物自身所具有的精确程度,

而当仅能得到近似值时,

他不去追求无法获得的精确值。

-亚里士多德 (前384年-前322年)

当今人们所面临的一些问题

是无法

以制造这些问题的才智

来解决的。

-爱因斯坦(1879年-1955年)

Page 98: 胡晓东 - amt.ac.cn · A. Aho, J. Hopcroft, J. Ullman, Addison-Wesley Pub., 1974. [2] Combinatorial Optimization: Algorithms and Complexity C. H. Papadimitriou and K. Steiglitz,

xdhu 98

4. 算法理论-复习题

请判断以下断言是否正确,并把不正确的断言改正过来:

1. P-问题类中的有些问题属于NP-问题类,

有些不属于 NP-问题类。

2. 若NP-问题类中的一个问题有多项式时间算法,

则NP-问题类中的所有问题都有多项式时间算法。

3. 若可满足问题有多项式时间算法,则NP=P。

4. 若0-1线性规划有多项式时间算法,

则一般整数线性规划也有多项式时间算法;

5. 要证明一个问题是NP-完全的,需要证明这个问题可以

在多项式时间内转化成一个已知的NP-完全问题。