如果函数f是在#P,然后给定的某些长度N的输入串x,值f(x)是由围成的非负数。(这是根据NP验证程序的接受路径数量的定义得出的。)2poly(N)
这意味着许多函数f #P的谎言之外无趣原因---要么因为f是否定的,或者,在你提到的情况下,因为该函数的增长速度比。但是对于本文中建模的n皇后问题,这只是作者决定让输入值n以二进制编码的假象。如果期望的输入是一元字符串1 n,则f (1 n):=(有效n的数量2poly(N)nn1nf(1n):=n-queen配置)肯定会在#P中,由一个简单的NP验证程序检查给定配置的有效性。
如果您出于某些有趣的原因而想探索一些(推测地)在#P之外的功能,请考虑以下这些:
- UNSAT: 如果ψ是一个无法满足的布尔公式,否则f (ψ ):= 0f(ψ):=1ψf(ψ):=0。除非NP = coNP,否则此函数不在#P中。它也可能不在更通用的计数类GapP中。也就是说,UNSAT可能不是两个#P函数的差f-g。但是,它位于更通用的计数复杂度类,实际上它包含Toda定理的整个多项式层次结构。P#P
您可能不喜欢该示例,因为它不是自然的“计数问题”。但是接下来的两个将是:
分配给 x的数量,使得布尔公式 ψ (x ,⋅ )f(ψ(x,y)):=xψ(x,⋅)对于某些设置而言,是可满足的。y
x的数量,使得对于所有 y的至少一半, ψ (x ,y )= 1。f(ψ(x,y)):=xyψ(x,y)=1
即使使用oracle访问#P,后两个问题也无法有效计算。但是,它们可以在所谓的“计数层次结构”中计算。对于被分到这一类中的一些更自然的问题,例如见这个最近的一篇论文。
计算纳什均衡显然是#P困难的,请参阅此处。同样,即使是搜索问题容易解决的问题,也可能难以计算,例如计算完美匹配。