绑定到depqbf(qbf解算器)

pydepqbf的Python项目详细描述


作者:

很多python绑定代码和文档都是从pycosat中提取出来的 <;https://pypi.python.org/pypi/pycosat>;

depqbf归florian lonsing所有<;http://lonsing.github.io/depqbf/>;

pydepqbf python模块与depqbf在同一术语下分布。

摘要

DepQBF是一个有效的 QBF求解器 由弗洛里安·朗辛用纯C语言写的。 这个包在C级别上为depqbf提供了高效的Python绑定, 即,当导入pydepqbf时,depqbf解算器成为 python进程本身。

用法

pydepqbf模块有一个函数:solve

函数solve返回包含两个元素的元组。这个 第一个元素是一个整数,即qdpll_result_sat或 qdpll_result_unsat或qdpll_result_unknown。第二要素 包含输入问题的部分证书。如果最外层 (最左边的)量词块是一个非终结符。 量化,则部分证书是 此块的变量(对于不可满足的qbfs和universal是对偶的 最外层块的变量,如果该块是通用的 量化)。如果 可满足的qbf是普遍量化的,或者如果最外层的块 一个不可满足的QBF是存在量化的。

示例

让我们考虑以下问题,用 qdimacsQDIMACS 格式:

p cnf 5 3
a 1 2 0
e 3 4 0
-1 -3 0
1 2 4 0
1 -4 0

这里,我们有4个变量和3个子句,第一个子句是 (不是x1或不是x3)。 在python中,每个子句都是 最方便地表示为整数列表。很自然,它使 将每个解也表示为整数列表,其中 对应于布尔值(+表示真和-表示假)和 绝对值对应于ith变量:

>>> from pydepqbf import solve, QDPLL_QTYPE_FORALL, QDPLL_QTYPE_EXISTS
>>> quantifiers = ((QDPLL_QTYPE_FORALL, (1, 2)), (QDPLL_QTYPE_EXISTS, (3, 4)))
>>> clauses = ((-1, -3), (1, 2, 4), (1, -4))
>>> solve(quantifiers, clauses)
(20, [-1, -2])

结果对的第一个元素是20(定义为 qdpll_result_unsat in the pydepqbf package)和partial 证书转换为:x1=x2=false。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用jaxb2annotateplugin和XJC工具的java自定义注释   java组织。xeustechnologies。jcl无法加载WstxInputFactory类   java JUnit在格式化字符串上比较失败   java Bukkit配置部分getKeys   如何关闭Java流?   java Struts2正则表达式配置   链式事务注释的java奇怪行为   java在两个JButton之间使用变量   java签署APK时内容会发生什么变化?   java LWJGL:Slick:3D世界中的绘图字体   如何分解Java数组?   在Java MySql中处理多个过滤器   java如何在Firebase数据库中跳过初始OnChildaded事件触发   java如何在PreviewView中使用CameraX?   在子类#中重写父类后访问父类原始方法的java已解决   java找不到类型的属性   游戏框架游戏!框架+Java