1

希望有人对 PYEDA 感觉良好。

我想给函数添加虚构变量让我有 f=x1,但是我怎样才能得到这个函数的真值表,它也有 x2

就像 f(x1)=x1 的真值表是:

x1 f
0 0
1 1

但是对于 f(x1,x2)=x1 是:

x1   x2   f
0    0    0
0    1    0
1    0    1
1    1    1

但我会得到第一个表,pyeda 会自动将 x1&(x2|~x2) 简化为 x1。我怎样才能添加这个 x2?

def calcFunction(function, i):
    #here is is point with dimension-size 4
    function=function.restrict({x4:i[3]})
    function = function.restrict({x3:i[2]})
    function = function.restrict({x2:i[1]})
    function = function.restrict({x1:i[0]})
    if function.satisfy_one() is not None:
        return 1
    return 0

这是我修复它的算法,我正在手动计算每个点的 func,其中函数可以包含 1-4 个变量,并且我正在计算所有点和 x1...x4 的组合。

4

1 回答 1

1

我不确定我是否理解所提出的问题,但您可能想尝试表达simplify方法。

例如:

In [1]: f = (X[1] & X[2]) | (X[3] | X[4] | ~X[3])                                                                  

In [2]: expr2truthtable(f)                                                                                         
Out[2]: 
x[4] x[3] x[2] x[1]
   0    0    0    0 : 1
   0    0    0    1 : 1
   0    0    1    0 : 1
   0    0    1    1 : 1
   0    1    0    0 : 1
   0    1    0    1 : 1
   0    1    1    0 : 1
   0    1    1    1 : 1
   1    0    0    0 : 1
   1    0    0    1 : 1
   1    0    1    0 : 1
   1    0    1    1 : 1
   1    1    0    0 : 1
   1    1    0    1 : 1
   1    1    1    0 : 1
   1    1    1    1 : 1

In [3]: f = f.simplify()                                                                                           

In [4]: f                                                                                                          
Out[4]: 1

In [5]: expr2truthtable(f)                                                                                         
Out[5]: 1
于 2020-03-08T04:01:46.677 回答