算法导论-第34章-计算模型与NP完全性

34.1 引言

34.1.1 算法与计算模型的关系

非形式地说,算法是为实现某个任务而构造的简单指令集。这是一个非严格的算法定义。

1900年,Hilbert在巴黎举行的世界数学家大会上提出了23个数学问题,其中第10个问题是要设计一个算法来测试多项式是否有整数根,他没有用算法这个术语,而用这样一句短语: “通过有限多次运算就可以决定的过程”。

  • 该问题是算法上不可解的,1970年由Yuri Matijasevic解决。关键在于算法的精确定义,后来由Church和Turing分别解决,从此称为丘奇-图灵论题。
  • Church使用入演算定义算法和Turing使用图灵机定义算法。

现在严格地讲,一个问题算法可解的等于该问题在图灵机上可解(可判断)。

34.1.2 计算模型的作用

  • 对于一个计算任务,有两个问题要解决:
    • 该计算任务能否在一个计算机上实现?
    • 该计算任务在一个计算机上实现的复杂度?
  • 计算模型可以帮助我们解决上述问题,本课程我们主要学习图灵机模型。
  • 计算模型的主要作用:
    • 可计算性:将问题按计算模型的可计算性进行分类。也就是回答一个问题在某种计算模型上是否可计算,而不计较其计算时间的长短。
    • 计算复杂性:将问题按计算模型的计算复杂性(时间和空间)进行分类。
    • 可编程性:在计算模型下算法的实现。

34.1.3 几种计算模型的语言识别能力

image-20230630223307311

  • 有限状态自动机能够识别正则文法生成的语言;
  • 下推自动机能够识别上下文无关文法生成的语言;
  • 线性有界自动机能够识别上下文相关文法生成的语言;
  • 然而上述自动机不能识别短语结构文法生成的语言。图灵机能够识别短语结构文法生成的所有语言,是一种能力很强的计算模型。

34.2 图灵机模型

  • 确定性图灵机DTM
  • 非确定性图灵机NTM

34.3 NP完全问题

P问题:

  • 确定性图灵机上具有多项式时间算法的判定问题类

NP问题:

  • 在非确定性图灵机上多项式时间可解的问题
  • 在确定性图灵机上多项式时间可验证的问题

NP完全问题:

  • 存在这样一个NP问题,所有的NP问题都可以约化成它。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。其定义要满足2个条件:
    • 首先,它得是一个NP问题;
    • 然后,所有的NP问题都可以约化到它。
  • 要证明npc问题的思路就是: 先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它。

问题 A A A 的实例 I I I 多项式时间内转化为问题 B B B 的实例 f ( I ) f(I) f(I),对于 A A A 的输入 I I I 的回答与其对应的 B B B 的输入 f ( I ) f(I) f(I) 一致,则称 A A A 可多项式归约于 B B B,记为 A ≤ p B A \le _pB ApB

如果 B B B 可以多项式时间求解,则 A A A 也可以多项式时间求解。

参考

  • https://zhuanlan.zhihu.com/p/73953567
  • http://www.matrix67.com/blog/archives/105
posted @ 2023-06-30 23:43  gengduc  阅读(54)  评论(0编辑  收藏  举报  来源