随笔分类 - 计算复杂性
摘要:在图灵机的模型下,复杂性理论的研究遇到了许多困难,至今为止许多符合直观的命题都还只是猜想而无法得到证明(比如\(\text{P}\neq \text{NP}\))。于是人们意识到,造成这样的研究瓶颈的原因是“图灵机”作为模型本身太过复杂。图灵机刻画了一切计算,其使用的方法是描述若干条纸带以及读写头的
阅读全文
摘要:\(\newcommand{\NP}{\text{NP}}\newcommand{\SAT}{\texttt{SAT}}\)直观上,在相同条件下最优化问题的难度高于存在性问题。判定一个解是否合法比判定该解是否是满足某最优条件的最优解要花费更多的计算资源。从逻辑刻画的角度,判定问题\(L\)形如\(x
阅读全文
摘要:离散概率本质是计数问题。所以如果想要进一步研究由概率图灵机定义的复杂性类(比如\(\text{PP}\)),一个很自然的角度是研究计数问题的复杂性类。 到目前为止,我们讨论的都是判定问题。判定问题的输出只能是\(0\)或\(1\),也就是说判定问题可以看作一类特殊的计数问题。然而直观上就可以接受,计
阅读全文
摘要:许多算法中会用到随机性,这类算法称为随机算法。一个随机算法可以看作是一系列确定性算法的分布。引入随机性一般有两种目的:第一种目的是,提供一个简单的解决方案使得我们能以期望意义下更高效地完成计算,例如在快速排序中我们不通过分析数据选取一个尽可能接近中位数的pivot,而是快速地选一个随机的pivot;
阅读全文
摘要:根据加速定理,我们明白了我们必须对算法定义复杂性而不能对问题定义复杂性。然而,直观上确实存在不同问题的难易程度(hardness)之分。有的问题只需要扫描一遍输入就可以求出,有的问题似乎除了暴力搜索之外没有好办法。那么我们应该如何比较不同问题之间的难度呢?(除非特殊说明,我们所说的“问题”就是指判定
阅读全文
摘要:空间复杂性(Space Complexity)\(\newcommand{\TIME}{\text{TIME}}\)\(\newcommand{\M}{\mathbb{M}}\)\(\newcommand{\SPACE}{\text{SPACE}}\)\(\newcommand{\NSPACE}{\
阅读全文
摘要:如何定义时间复杂性\(\newcommand{\TIME}{\text{TIME}}\)\(\newcommand{\M}{\mathbb{M}}\) 加速定理(Speedup Theorem) 当我们提到“时间复杂性”的时候,我们说的是“一个算法的时间复杂性”,这是通过这个算法在图灵机上的运行步数
阅读全文
摘要:当我们提到“计算(calculation)”这个词时,指的是“回答一个数学问题”。这个数学问题可以是“求两个正整数的乘积”,“求出一个线性方程组的所有解”,“给一列数字排序”,“给定一个无向图求最大独立集的大小”等等。在计算这些问题的时候,可以有很多不同的方法。对于第一个问题,我们可以依据“乘法本质
阅读全文