website: 计算复杂性理论

成绩:练习50+期末50

1. 复杂性理论研究什么?

根据解决问题所需的计算资源,对问题进行分类和比较。

  • 可计算性:是否存在一个算法,对任意合法输入都能停机并给出正确答案?
  • 算法设计与分析:如何设计解决问题的算法?某个算法需要多少时间、空间?
  • 计算复杂性:解决一个问题需要多少资源?能否用更少资源解决?不同问题的难度如何比较?

1.1 问题与实例

问题是一类输入及其对应的求解要求;实例是其中一个具体输入。

例如,“给定一个图和整数 ,能否找到大小不超过 的顶点覆盖?”是一个问题;给出某一张具体的图和 ,得到一个实例。

复杂性通常考察:输入编码长度为 时,算法所需资源如何随 增长。常见资源是时间和空间。

1.2 四个例子

问题判定版本问什么?分类
丢番图问题(Diophantine Problem)给定整系数多项式方程,是否存在整数解?一般情形不可判定
匹配(Matching)给定图和 ,是否存在至少含 条边的匹配?属于 P
图同构(Graph Isomorphism)两张图能否通过顶点重命名,使邻接关系完全对应?关键分类问题尚未解决
顶点覆盖(Vertex Cover)给定图和 ,是否能选至多 个顶点,使每条边至少有一个端点被选中?判定版本是 NP 完全的