在计算复杂性理论中,如果解决输入大小 n 问题的计算次数,我们说算法具有复杂度 O(f(n))所有整数 n 都受 cf(n)的约束,其中 c 是一个正常数,不依赖于 n ,和 f(n)是一个增加的函数,它会像 n 那样进入 infinity 。
3-SAT 问题表示为:给定CNF表达式,其子句正好有3个文字,是否有一些TRUE和FALSE值赋值给变量整个表达式是真的吗?
CNF表达式包含,例如 k 子句,涉及 m 变量 x1,...,xm 。
为了确定3-SAT是否具有多项式复杂度 P(n),我需要理解问题中“什么是 n ”这么简单的事情。
我的问题是:
在这个特定的 3-SAT 问题中考虑输入 尺寸 n ?
是条款的数字 k 吗?或者是变量的数量 m ? 或 n 是 k 和 m 的某些功能? ( n = f(k,m))。
我遇到这个简单的问题。
根据Timmie Smith的回答,我们可以考虑估计:
k <= constant * f(m)
其中 m 是 m 的多项式函数。
更准确地说,函数 P(m)它可以被认为是指数 3 (即立方)。
因此,如果我们考虑3-SAT的复杂度 f(k),我们就会:
f(k, m)=f(P(m),m), (with P(m) = m^3).
因此,如果函数 f 在 k 和 m 中是多元的,那么实际上会在 m 中得到多项式。因此,通过将 m 视为输入大小,可以估计给定算法是否是 m 中的多项式,以便知道3-SAT在P或不在。
如果你同意,我可以接受Timmie作为好人的回答。
更新
我在这里做了同样的问题:
https://cstheory.stackexchange.com/questions/18756/whats-the-meaning-of-input-size-for-3-sat
接受的答案对我有帮助。
答案 0 :(得分:3)
输入是变量的数量m。这是因为给定m个变量可以形成的可能子句数是变量数的多项式函数。
答案 1 :(得分:3)
我在Carnegie Mellon University的一些论文中看到过这种问题的“输入大小”的以下定义:
向下写入输入所需的位数
考虑到输入可以被压缩,这个定义对我来说很有意义,因为它是输入熵的一个很好的衡量标准。
我的2美分!干杯!!
答案 2 :(得分:3)
输入大小是变量m
的数量。
原因是需要遍历以解决问题的大小的搜索空间完全取决于变量的数量:每个变量都有两种可能的状态(1或0) ),搜索空间包含所有可能的分配。蛮力算法只会测试所有可能的分配(2^m
)以遍历搜索空间。虽然大多数3-SAT算法会受到条款数量的显着影响,但这并不会影响潜在问题的复杂性。
因此,输入大小也是普通SAT的变量数,其中搜索空间看起来相同,尽管以非暴力方式解析子句的工作方式完全不同。