pyddlib是一个python3库,用于操作决策图(dd)。
pyddlib的Python项目详细描述
pyddlib是一个python3库,用于处理决策图(dd)。
功能
操作**。计算机,ieee交易100,第8期(1986年):
677-691.
[2]Brace,Karl S.,Richard L.Rudell和Randal E.Bryant。**高效
实现bdd包**。第27届acm/ieee设计自动化会议记录,第40-45页。ACM,1991年。
[3]巴哈尔,R.艾里斯,埃里卡A.弗洛姆,查尔斯M.高纳,加里D.哈切特尔,
Enrico Macii,Abelardo Pardo和Fabio Somenzi。**代数决策
图及其应用**。系统设计中的形式化方法10,
2-3号(1997年):171-206。
install
---
:
><~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
您可以从通过使用逻辑运算和(&;)或(\)、异或(^)和非(—)组合布尔函数的常量和变量。代码::python
from pyddlib.bdd import bdd
zero=bdd.zero()
print("==true==")
print(one)
print("==false=="
print(zero)
x1=bdd.variable(1)
x2=bdd.variable(2)
x3d=变量(3)
print(==x1=="
print(x1)
print(==非x1=="
print(==x1和x2=="
print(x1&;x2)
打印("==x1或x2=="
打印(x1 x2)
打印("==x1 xor x2==")
打印(x1 ^x2)
bdd1=~x1(x2 ^~x3)
如果(bdd1&;one)==bdd1:
打印(true是操作的中性元素!')
bdd2=~(~x2)^(~(x1 x3))
如果(bdd2零)==bdd2:
打印('false是or操作的中性元素!')
bdd3=x1&;~x1
bdd4=x1 ~x1
bdd5=~(x1 ~(x2&;~x3))
如果(bdd5^bdd5).is_zero():
print('您可以检查与xor的等价性!')
如果(x1&x2)=(x2&x1):
print('交换律对布尔函数有效!')
如果x1&;x2&x3)=(x1&x2)&x3:
print('关联定律适用于布尔函数!')
如果(x1&;x2 x3))=((x1&x2)(x1&x3)):
打印('分配律起作用:并且分布于或!')
如果(x1(x2&x3))=((x1 x2)&;(x1 x3)):
打印("分配律起作用:或分配到and!")
bdd6=~(x1&;~(~x2 x3))
valuation1={1:true,2:true,3:false}
valuation2={1:true}
如果bdd6.restrict(valuation2)=(~x2 x3):
print('您也可以使用restrict对函数进行部分求值!')
代数决策图(加法)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
通过组合算术运算函数+、-、*、/。
代码::python
=附加变量(2)
x3=添加变量(3)
打印(==x1=="
打印(x1)
打印(===not x1=="
打印(~x1)
打印(==x1*x2*c1=="
打印(x1*x2*c2)
打印(==(x1+x2)*c2=="
打印((x1+x2)*c2)
=="
打印(x1-x2)
add1=~x1+(x2*~x3)
如果(add1*c1)==add1:
打印(add.constant(1.0)是乘法的中性元素!')
add2=~(~x2)*(~(x1+x3))
如果(add2+c0)==add2:
打印('add.constant(0.0)是要添加的中性元素!')
add3=x1*~x1
如果add3==c0:
print('您可以通过与add.constant(0.0)比较来检查矛盾!')
add4=x1+~x1
如果add4==c1:
print('您可以通过与add.constant(1.0)进行比较来检查同义重言式!')
如果(x1*x2)=(x2*x1)和(x1+x2)=(x2+x1):
print('交换定律适用于乘法和加法!')
如果x1*(x2*x3)==(x1*x2)*x3和x1+(x2+x3)==(x1+x2)+x3:
print('结合定律适用于乘法和加法!')
如果(x1*(x2+x3))==((x1*x2)+(x1*x3)):
打印("分布规律有效:乘法分布在加法上!")
add5=x1*x2+x3*c2
valuation={1:true,2:false,3:true}
if add5.restrict(valuation).value==2.0:
print('您可以使用restrict!')计算函数)
valuation2={1:true}
如果add5.restrict(valuation2)=(x2+x3*c2):
print('您也可以使用restrict对函数进行部分求值!')
BR/>许可证
-BR/> Copyright(C)2017蒂亚戈·佩雷拉BueNo保留所有权利。
BR/> PyDLIB是免费软件:您可以在
< BR/>自由软件基金会发布的GNU小通用公共许可证的条款下重新分发和/或修改它。许可证的第3版,或(由您选择)任何更高版本。
保证;甚至没有对适销性或特定用途的适用性的暗示保证。有关详细信息,请参阅gnu less general public
许可证。
如果没有,请参见http://www.gnu.org/licenses/
功能
操作**。计算机,ieee交易100,第8期(1986年):
677-691.
[2]Brace,Karl S.,Richard L.Rudell和Randal E.Bryant。**高效
实现bdd包**。第27届acm/ieee设计自动化会议记录,第40-45页。ACM,1991年。
[3]巴哈尔,R.艾里斯,埃里卡A.弗洛姆,查尔斯M.高纳,加里D.哈切特尔,
Enrico Macii,Abelardo Pardo和Fabio Somenzi。**代数决策
图及其应用**。系统设计中的形式化方法10,
2-3号(1997年):171-206。
install
---
:
><~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
您可以从通过使用逻辑运算和(&;)或(\)、异或(^)和非(—)组合布尔函数的常量和变量。代码::python
from pyddlib.bdd import bdd
print("==true==")
print(one)
print("==false=="
print(zero)
x1=bdd.variable(1)
x2=bdd.variable(2)
x3d=变量(3)
print(==x1=="
print(x1)
print(==非x1=="
print(==x1和x2=="
print(x1&;x2)
打印("==x1或x2=="
打印(x1 x2)
打印("==x1 xor x2==")
打印(x1 ^x2)
bdd1=~x1(x2 ^~x3)
如果(bdd1&;one)==bdd1:
打印(true是操作的中性元素!')
bdd2=~(~x2)^(~(x1 x3))
如果(bdd2零)==bdd2:
打印('false是or操作的中性元素!')
bdd3=x1&;~x1
bdd4=x1 ~x1
bdd5=~(x1 ~(x2&;~x3))
如果(bdd5^bdd5).is_zero():
print('您可以检查与xor的等价性!')
如果(x1&x2)=(x2&x1):
print('交换律对布尔函数有效!')
如果x1&;x2&x3)=(x1&x2)&x3:
print('关联定律适用于布尔函数!')
如果(x1&;x2 x3))=((x1&x2)(x1&x3)):
打印('分配律起作用:并且分布于或!')
如果(x1(x2&x3))=((x1 x2)&;(x1 x3)):
打印("分配律起作用:或分配到and!")
bdd6=~(x1&;~(~x2 x3))
valuation1={1:true,2:true,3:false}
valuation2={1:true}
如果bdd6.restrict(valuation2)=(~x2 x3):
print('您也可以使用restrict对函数进行部分求值!')
代数决策图(加法)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
通过组合算术运算函数+、-、*、/。
代码::python
=附加变量(2)
x3=添加变量(3)
打印(==x1=="
打印(x1)
打印(===not x1=="
打印(~x1)
打印(==x1*x2*c1=="
打印(x1*x2*c2)
打印(==(x1+x2)*c2=="
打印((x1+x2)*c2)
=="
打印(x1-x2)
add1=~x1+(x2*~x3)
如果(add1*c1)==add1:
打印(add.constant(1.0)是乘法的中性元素!')
add2=~(~x2)*(~(x1+x3))
如果(add2+c0)==add2:
打印('add.constant(0.0)是要添加的中性元素!')
add3=x1*~x1
如果add3==c0:
print('您可以通过与add.constant(0.0)比较来检查矛盾!')
add4=x1+~x1
如果add4==c1:
print('您可以通过与add.constant(1.0)进行比较来检查同义重言式!')
如果(x1*x2)=(x2*x1)和(x1+x2)=(x2+x1):
print('交换定律适用于乘法和加法!')
如果x1*(x2*x3)==(x1*x2)*x3和x1+(x2+x3)==(x1+x2)+x3:
print('结合定律适用于乘法和加法!')
如果(x1*(x2+x3))==((x1*x2)+(x1*x3)):
打印("分布规律有效:乘法分布在加法上!")
add5=x1*x2+x3*c2
valuation={1:true,2:false,3:true}
if add5.restrict(valuation).value==2.0:
print('您可以使用restrict!')计算函数)
valuation2={1:true}
如果add5.restrict(valuation2)=(x2+x3*c2):
print('您也可以使用restrict对函数进行部分求值!')
BR/>许可证
-BR/> Copyright(C)2017蒂亚戈·佩雷拉BueNo保留所有权利。
BR/> PyDLIB是免费软件:您可以在
< BR/>自由软件基金会发布的GNU小通用公共许可证的条款下重新分发和/或修改它。许可证的第3版,或(由您选择)任何更高版本。
许可证。
如果没有,请参见http://www.gnu.org/licenses/