website: 计算复杂性理论
成绩:练习50+期末50
1. 复杂性理论研究什么?
根据解决问题所需的计算资源,对问题进行分类和比较。
- 可计算性:是否存在一个算法,对任意合法输入都能停机并给出正确答案?
- 算法设计与分析:如何设计解决问题的算法?某个算法需要多少时间、空间?
- 计算复杂性:解决一个问题需要多少资源?能否用更少资源解决?不同问题的难度如何比较?
1.1 问题与实例
问题是一类输入及其对应的求解要求;实例是其中一个具体输入。
例如,“给定一个图和整数 ,能否找到大小不超过 的顶点覆盖?”是一个问题;给出某一张具体的图和 ,得到一个实例。
复杂性通常考察:输入编码长度为 时,算法所需资源如何随 增长。常见资源是时间和空间。
1.2 四个例子
| 问题 | 判定版本问什么? | 分类 |
|---|---|---|
| 丢番图问题(Diophantine Problem) | 给定整系数多项式方程,是否存在整数解? | 一般情形不可判定 |
| 匹配(Matching) | 给定图和 ,是否存在至少含 条边的匹配? | 属于 P |
| 图同构(Graph Isomorphism) | 两张图能否通过顶点重命名,使邻接关系完全对应? | 关键分类问题尚未解决 |
| 顶点覆盖(Vertex Cover) | 给定图和 ,是否能选至多 个顶点,使每条边至少有一个端点被选中? | 判定版本是 NP 完全的 |