我们对#3SAT的加法近似感兴趣。即给定一个3CNFϕ 上 n 变量计算满意的分配数量(称其为 a)直至附加误差 k。
这是一些基本结果:
情况1: k=2n−1−poly(n)
这里有一个确定性的多重时间算法: m=2n−2k=poly(n)。现在评估ϕ 上 m 任意输入(例如,按字典顺序 m输入)。假设ℓ 这些输入满足 ϕ。然后我们知道a≥ℓ 因为至少有 ℓ 满意的任务和 a≤2n−(m−ℓ) 因为至少有 m−ℓ不满意的作业。这个间隔的长度是2n−(m−ℓ)−ℓ=2k。所以如果我们输出中点2n−1−m/2+ℓ 这是在 k 根据需要提供正确答案。
情况2: k=2n/poly(n)
这里我们有一个随机的多时间算法:评估 ϕ 在 m 随机点 X1,⋯,Xm∈{0,1}n。让α=1m∑mi=1ϕ(Xi) 和 ε=k/2n。我们输出2n⋅α。为了这个最多有错误k 我们需要
k≥|2nα−a|=2n|α−a/2n|,
相当于
|α−a/2n|≤ε.由
Chernoff边界,
P[|α−a/2n|>ε]≤2−Ω(mε2),
如
E[ϕ(Xi)]=E[α]=a/2n。这意味着,如果我们选择
m=O(1/ε2)=poly(n) (并确保
m 是...的力量
2),那么至少有概率
0.99,错误最多
k。
情况3: k=2cn+o(n) 对于 c<1
在这种情况下,问题是#P-hard:我们将减少#3SAT。参加3CNFψ 上 m变量。挑n≥m 这样 k<2n−m−1 -这需要 n=O(m/(1−c))。让ϕ=ψ 除了 ϕ 现在在 n 变量,而不是 m。如果ψ 已 b 满足任务,然后 ϕ 已 b⋅2n−m 令人满意的作业 n−m“自由”变量可以在令人满意的分配中采用任何值。现在假设我们有a^ 这样 |a^−a|≤k - 那是 a^ 是满足以下条件的分配数量的近似值 ϕ 有附加误差 k。然后
|b−a^/2n−m|=∣∣∣a−a^2n−m∣∣∣≤k2n−m<1/2.
以来
b 是整数,这意味着我们可以确定的确切值
b 从
a^。通过算法确定的准确值
b需要解决#P-完全问题#3SAT。这意味着它很难计算
a^。