PYEDA таблица истинности функций
Надеюсь, что найдется кто-нибудь, кому нравится 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. Как мне добавить этот х2?
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.
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