我已经为2-satisfiability问题编写了一个SAT求解器,有人请给我一个测试用例说10000个文字只有一个可满足的赋值,即只有一个解决方案
The format can be:(for 3 literals)
2 // No of clauses and then each clause
2 3
1 -2
corresponding to
(b+c).(a+!b)
答案 0 :(得分:2)
测试覆盖率通常很难,大多数时候,你只是忘记了一个或另一个因素。
我通常只需几步:
2)和3)几乎可以互换,4)只有在你有办法研究这种信息时才会出现(基准测试,内存泄漏检测......)。
重要的一点是,您不应该对代码进行反向工程来编写测试,因为您最终会测试代码,但不会测试它是否符合规范。
如果它是一个家庭项目,规范通常是非正式的,但它们仍然存在(在你的头脑中),并且在它们之后你应该生成测试用例。
答案 1 :(得分:1)
这种方法有效吗?
(a + b ).(a + !b)
如果a为真,则只能满足。
(a + !b).(!a + !b)
只有在b为假时才能满足。因此
(a + b ).(a + !b).(a + !b).(!a + !b)
完全指定a和b的值。我们现在可以为任意数量的文字扩展它。
要测试您的应用,您可能还会指定相互矛盾的要求,因此无法解决问题。