PYEDA правдоподобные функции - PullRequest
1 голос
/ 08 марта 2020

Надеюсь, что есть кто-то, кто чувствует себя хорошо с 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

Вот мой al go, чтобы исправить это, я вычисляю fun c в каждой точке вручную, где функция может содержать 1-4 переменных, а я расчет для всех точек и комбинаций х1 ... х4.

1 Ответ

0 голосов
/ 08 марта 2020

Я не уверен, что понимаю вопрос как заданный, но вы можете попробовать выражение simplify method.

Например:

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
...