0

让我们将变量的数量固定为 4:x0、x1、x2、x3。

我正在寻找一个允许我执行以下操作的 python 构造:

(i) 将析取正规公式存储在内存中,其中原子公式为不等式:a0x0 + a1x1 + a2x2 + a3x3 >= a4 或等式:a0x0 + a1x1 + a2x2 + a3x3 == a4。

(ii) 给定一个不在 DNF 中的公式,我有一个函数可以将其转换为该公式。

(iii) 给定一个点 (u1,u2,u3,u4),我可以找到该点到 DNF 公式的设定距离。

我知道 numpy 允许我编写原子公式并计算它们与点的距离,但它不允许我编写它们的连词或析取词;而且我无法计算从点到 DNF 的设定距离。

我什至检查了 pyeda,但原子公式必须是布尔变量,并且不允许不等式和等式。

我可以重写整个代码来为 DNF 定义我自己的类,并定义我自己的距离函数,但我不想重新发明轮子。我可以使用哪些 python 库(以及如何)让我以最简单的方式完成我的任务?

4

1 回答 1

0

我的回应是对我对您的问题的解释,但我承认我正在用我的假设填补一些空白。

(i) 可以用线性规划求解。

(ii) 是一个非常开放的问题,我将跳过它。

(iii) 如果您对距离sum |x[i] - u[i]|问题仍然可以使用 linproc 处理感到满意,那么您将不得不使用辅助变量。

于 2022-02-27T14:53:49.057 回答