1. Counting Problems
1.1 什么是Counting Problems?
1.2 计算问题和计数问题、计算复杂性和计数复杂性的区别、关系
- 计算问题:
- 计算复杂性:
- 计数问题:
- 计数复杂性:
1.3 研究方向(近似计数与近似取样)
- 对于 #P-难的计数问题,既然我们相信不存在多项式时间的算法能够计算其精确解,一个自然的妥协便是计算其近似解:我们希望在多项式的时间内给出问题的一个近似,并且近似的精度可以任意的高。
- 近似计数的算法又和近似取样的算法是息息相关的。在我们独立集的例子中,一个高效的近似取样的算法,可以在多项式时间内输出一个独立集,并且,每一个独立集被输出的概率是接近一样的。可以证明,对于很多计数问题,近似计数和近似取样是等价的。
2. 计算复杂性
在不同计数问题的框架内,对各种问题的计数复杂性进行分类成为了一个重要的课题。分类的标准则是根据计算复杂度进行制定,因此了解各类问题,对于计数问题的研究具有重要的意义,具体分类如下:
- 时间复杂度:若存在一个常数C,使得对于所有n>=0,都有|f(n)| <= C*|g(n)|,则称函数f(n)是O(g(n))。
- 多项式时间(可解)算法:时间复杂度是O(p(n))的算法称为多项式时间算法,这里p(n)是关于n的多项式。不能够这样限制时间复杂度的算法被称为指数时间算法。
- 以多项式时间可解分类的意义:若一个算法不是多项式的(如指数与阶乘),则当输入规模稍大一些时,它必然是不高效、不实用的。
- P问题:在多项式时间内可解的问题为P问题(Polynomial Problem,多项式问题)
- NP问题((Non-deterministic Polynomial Problem,非确定性多项式问题):指问题只能通过验证给定的猜测是否正确来求解(所谓不可求解只是使用多项式时间不可求解,所谓只能验证是只能通过多项式时间验证)。所谓多项式指的是验证猜测可在多项式时间内完成,所谓非确定性指的是问题只能通过验证猜测来解,而不能直接求解。
- NPC问题(NP完全问题):指满足NP问题条件(即它是一个NP问题)且所有的NP问题都可以用多项式时间约化到它的问题 。
- 约化:存在一个变化法则,对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同。问题A可约化为问题B,即用问题B的解法解决问题A,问题A可以“变成”问题B。
- 约化实例: 一元一次方程可以“归约”为一元二次方程。
- 约化性质:约化具有传递性。如果问题A可约化为问题B,问题B可约化为问题C,则问题A一定可约化为问题C。
- 约化意义:问题A可约化为问题B”等价于“B的时间复杂度高于或者等于A的时间复杂度”。也就是说,问题A不比问题B难。
- 约化要求:“可约化”指的是可“多项式时间地”约化(Polynomial-time Reducible),即变换输入的方法是能在多项式的时间里完成的。约化的过程只有用多项式的时间完成才有意义。
- NPH问题(NP难问题,NP-hard):其满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广,但不一定是NP问题)。即多项式时间不可解。
3. 计数问题基础
- FP(不是属于P的吗?不理解图灵机是如何用在此处的):
- #P问题(不明白定义):
- 重要课题(二分定理)1:如果NP不等于P(因为不是所以NP都能约化成P),则FP不等于#P。即并非所有#P问题都有多项式解,于是,在不同计数问题的框架内,对各种问题的计数复杂性进行分类成为了一个重要的课题。
- 二分定理:对于不同的计数问题,证明其属于 FP 或者是#P-完备的。
- 重要课题(近似算法)2:对于那些已经被证明是 #P-完备的问题,一个现实的研究方向是考虑它们的近似算法。对于计数问题,我们考虑所谓的完全多项式时间近似方案(Fully Polynomial Time
Approximation Scheme, FPTAS)或者完全多项式时间随机近似方案(Fully Polynomial-time Randomized Approximation Scheme, FPRAS) - FPRAS与FPTAS: