我已经为 2-可满足性问题编写了一个 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)
有帮助吗?

解决方案

测试覆盖率通常很困难,大多数时候,您只是忘记了一个或另一个因素。

我通常分几步进行:

  1. 确保它解决了一个小问题(或一些)
  2. 测试边缘情况/边界条件:例如 0 子句
  3. 测试错误案例:输入格式错误,无法解决的问题
  4. 测试性能/大量注入(查看程序是否在负载下不会崩溃,不会泄漏,...)

2) 和 3) 几乎可以互换,4) 仅当您有办法调查此类信息(基准测试、内存泄漏检测...)时才应该出现。

重要的一点是,您不应该对代码进行逆向工程来编写测试,因为您最终会测试代码,但不会测试它是否遵守规范。

如果这是一个家庭项目,规范通常是非正式的,但它们仍然存在(在您的脑海中),并且在它们之后您应该生成测试用例。

其他提示

请问这种方法的工作?

 (a + b ).(a + !b) 

如果a为真时才可以在线北京。

 (a + !b).(!a + !b)

只能被满足,如果b为假。因此

  (a + b ).(a + !b).(a + !b).(!a + !b)

完全指定a和b值。现在,我们可以为任何数量的文字的延伸这一点。

要测试您的应用程序,你可能还指定矛盾requriements,因此一些没有解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top