在Z3中编码“至多k个/最少k个布尔值是真实的”约束

乔什·罗森(Josh Rosen)

对于任意k任意数量的布尔变量,在Z3中编码“至少k个/最多k个布尔变量必须为真”约束的好方法是什么

我正在考虑通过引入新的PB变量(使用此编码),通过双条件(例如将它们与我的布尔变量相关联,并断言它们的总和大于或,将“至少k ”转换为伪布尔问题。等于k这是一种合理的方法,还是我应该使用更简单/更有效的编码?x == true iff y == 1

尼古拉·比约纳(Nikolaj Bjorner)

最简单的方法是使用算术编码基数约束。因此,如果您想说a + b + c <= 2,其中a,b,c是布尔,那么您可以将其表示为(如果a 1 0)+(如果b 1 0)+(如果c 1 0) > =2。基础求解器Simplex通常使用此编码做非常合理的工作。

还有许多其他方法来处理基数约束。一种是将基数约束编译为“排序电路”,并且为此目的,已经开发了很多方法。Z3的未来版本将直接支持基数约束,更普遍的是伪布尔不等式。如果您有很多基数约束并且非常喜欢冒险,欢迎尝试在开发此代码的“ opt”分支中进行尝试。它对伪布尔不等式使用专用格式,并且还包括一种模式,该模式将“(如果a 1 0)+(如果b 1 0)+(如果c 1 0)> = 2”不等检测为PB不等式。也就是说,我将首先尝试非常简单的编码,然后看看基于单纯形的引擎如何在您的域中工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript:比较三个布尔值并返回所有真实布尔值

来自分类Dev

长度为n且正好为k个True的布尔值的Pythonic随机列表

来自分类Dev

当7个布尔值中的3个布尔值等于true时如何调用函数

来自分类Dev

约束泛型类型 T 和 K 其中 K 扩展 keyof T 并且 T[K] 是布尔值?

来自分类Dev

在Z3中有效检查两个约束的句法等价

来自分类Dev

如何从z3表达式中区分布尔值?

来自分类Dev

为什么Tcl expr不等于2个真实的布尔值?

来自分类Dev

如何从一组布尔值中返回一个布尔值?

来自分类Dev

在sh脚本中具有3个或更多表达式的布尔值

来自分类Dev

k个连续整数约束

来自分类Dev

PostgreSQL检查约束,仅允许两个布尔值之一为真

来自分类Dev

Java:等待布尔值变为真实

来自分类Dev

Java:等待布尔值变为真实

来自分类Dev

为什么我在React Native中对此布尔值有两个不同的值?

来自分类Dev

PostgreSQL使用2个表中的数据,但没有公共值,但为布尔值

来自分类Dev

映射函数返回1个布尔值,而不是布尔值数组

来自分类Dev

根据其他两列的布尔值返回一个布尔值

来自分类Dev

将场景中的布尔值保存到Unity中的另一个场景

来自分类Dev

Z3中的布尔矩阵乘以向量乘法

来自分类Dev

在Z3中的函数上添加约束

来自分类Dev

关于Z3中对数组的约束

来自分类Dev

Z3中的所有不同约束

来自分类Dev

在Z3中对整数位添加约束

来自分类Dev

Z3 C API中的指数约束未知吗?

来自分类Dev

Z3 Python API 中的标签约束

来自分类Dev

如何在一个查询中切换Postgres中的布尔值

来自分类Dev

从12个月布尔值列表中创建日期范围字符串

来自分类Dev

在另一个类中更改布尔值

来自分类Dev

如何在MySQL数据库中存储60个布尔值?

Related 相关文章

  1. 1

    Javascript:比较三个布尔值并返回所有真实布尔值

  2. 2

    长度为n且正好为k个True的布尔值的Pythonic随机列表

  3. 3

    当7个布尔值中的3个布尔值等于true时如何调用函数

  4. 4

    约束泛型类型 T 和 K 其中 K 扩展 keyof T 并且 T[K] 是布尔值?

  5. 5

    在Z3中有效检查两个约束的句法等价

  6. 6

    如何从z3表达式中区分布尔值?

  7. 7

    为什么Tcl expr不等于2个真实的布尔值?

  8. 8

    如何从一组布尔值中返回一个布尔值?

  9. 9

    在sh脚本中具有3个或更多表达式的布尔值

  10. 10

    k个连续整数约束

  11. 11

    PostgreSQL检查约束,仅允许两个布尔值之一为真

  12. 12

    Java:等待布尔值变为真实

  13. 13

    Java:等待布尔值变为真实

  14. 14

    为什么我在React Native中对此布尔值有两个不同的值?

  15. 15

    PostgreSQL使用2个表中的数据,但没有公共值,但为布尔值

  16. 16

    映射函数返回1个布尔值,而不是布尔值数组

  17. 17

    根据其他两列的布尔值返回一个布尔值

  18. 18

    将场景中的布尔值保存到Unity中的另一个场景

  19. 19

    Z3中的布尔矩阵乘以向量乘法

  20. 20

    在Z3中的函数上添加约束

  21. 21

    关于Z3中对数组的约束

  22. 22

    Z3中的所有不同约束

  23. 23

    在Z3中对整数位添加约束

  24. 24

    Z3 C API中的指数约束未知吗?

  25. 25

    Z3 Python API 中的标签约束

  26. 26

    如何在一个查询中切换Postgres中的布尔值

  27. 27

    从12个月布尔值列表中创建日期范围字符串

  28. 28

    在另一个类中更改布尔值

  29. 29

    如何在MySQL数据库中存储60个布尔值?

热门标签

归档