用于操作有限格元素的python库

python-lattice的Python项目详细描述


python格
====
python库操作有限格的元素




有限格是一种代数结构,其中任何两个元素都有一个
唯一上确界和一个下确界。更多信息请访问维基百科页面元素类中没有
限制(支持不可更改的类型),可以创建一个hasse图
。欢迎任何形式的评论。
用法和示例1
----
给定按包含部分排序的{x,y,z}的幂集。
在本例中,join和meet操作分别是
集之间的并集和交集。
>;>;power set=[set(),set(['x']),set(['y']),set(['z']),set(['x','y']),集合(['x','z'])、集合(['y','z'])、集合(['x','y','z'])]
>>gt;def intersection(a,b):返回a&b

>;>def union(a,b):返回a | b



点阵可以定义如下:从点阵导入点阵
>gt;L=lattice(powerset,union,intersection)
>gt;L
>gt;L
>点阵(powerset,union,union,intersection)
gt;L
>点阵([set([[[]]、set(['x'])、set(['x','x']])、set(['y','z']])、set(['y','z']]、set(['y','x','x']]))、set(['x','x','x']]])))、set(['x','x','x','z']]0x7f41e3d4ede8>;,在0x7f41e3d4EC08gt)函数交集
BR/>元素可以通过引用原始对象或通过在
格式化单元中的索引来创建。可以通过
lattice.topElement和lattice.bottonElement和lattice.bottonElement访问晶格的顶部和底部。bottonElement:
>>gt;gt;set_x=l.wrap(set(['x'])
>;gt;gt;gt;set_x
latticElement(l,set(['x']))
>>gt;set_x.unwrap
set(['x'])
>>>gt;gt;emptyset=l.wrap(set([[[[[[[[[['x']]]]]]]]]set(['x'''']))))
>br/>)
>;>;emptyset==l.bottonelement
true
>;>;l.topeelement
latticeeelement(l,set(['y','x','z'])
>;>;set_with_y=l.wrap(set(['y'])
>;>;set_with_yz=l.wrap(set(['y','z'])

lattice元素支持以下操作:
>;set_with_x | set_with_yz # join
LatticeElement(L, set(['y', 'x', 'z']))
>>> set_with_y & set_with_yz # meet
LatticeElement(L, set(['y']))
>>> set_with_x & set_with_yz == emptyset # equal
True
>>> set_with_y <= set_with_yz #partial order relation
True
>>> set_with_x<;=set_with_yz偏序关系
false


以基于创建的晶格运行晶格.hasse()绘制hasse图。这将返回graphviz代码。如果安装了scapy(这种情况将在未来被删除
),它将出现在图形中。打印l.hasse()
有向图g{
splines=“line”
rankdir=bt
“集(['y','x','z'])”[shape=box];
“集([])”[shape=box];
“集(['x']]->;“集(['x'])”;
“集([])”;
“集([])”->;“集(['x']))”;
“集([])”;
“集([]))”;
“集([]))”y']“;
”设置([])“->;"set(['z'])";
"set(['x'])" -> "set(['y', 'x'])";
"set(['x'])" -> "set(['x', 'z'])";
"set(['y'])" -> "set(['y', 'x'])";
"set(['y'])" -> "set(['y', 'z'])";
"set(['z'])" -> "set(['x', 'z'])";
"set(['z'])" -> "set(['y', 'z'])";
"set(['y', 'x'])" -> "set(['y', 'x', 'z'])";
"set(['x', “z'])”—>;“设置(['y','x','z'])”;
“设置(['y','z'])”—>;“设置(['y','x','z'])”;
}





示例2
——
>;
而b>;0:a,b=b,a%b
…返回a

>>>定义lcm(a,b):
返回a*b/gcd(a,b)

>>gt;L=点阵([1,2,3,3,4,5,5,6,10,12,15,20,30,60],LCM,LCM,GCD)
>;L.hasse()
有向图G{
splines=“line”
rankdir=bt
“60”[shape=box];
“1”[shape=box];
“1”->;“2”;
“1”->;“3”;
“1”->;“5”;
“1”->;“5”;
1”->;“5”;
5”;

“2”->;“4”;
“2”->;“6”;
“2”->;“10”;
“3”->;“6”;
“3”->;“15”;
“4”->;“12”;
“4”->;` 20';<
5>5”>;;` 10';
5<5”>;;` 15';
6”>;;` 12';
6”->;;` 30';
` 10'、>;;` 20';
10->;;;;` 30;;;;>12/>1;;;;;;>12/>1;;;;;;;;;;;;;;;;>12/>12/>6;;;;;;;;;;;;;;;;;;;;;;;;1.本附件所载的《公约》附件一所列缔约方(非附件一缔约方)的国家信息通报:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用相同的模型、颜色、字体和侦听器创建JTable的副本?   JavaSpring+Thymeleaf:用户时区中的时间   java HTTP请求返回非法状态异常安卓   java xml验证JDK 1.5 JDK 1.6差异   junit如何使用Parasoft从java文件生成测试文件   java使用getSpans方法获取可扩展文件中的所有跨距   javascript无法使用bindingResult设置表单元素   java RCP应用程序活动   获取Java类中泛型字段的类型   java更新查询,从一个依赖于另一个表的表中更改字段   java错误:GWT类型中的方法setBridge(GWTBridge)不适用于参数(GWTBridge)   为什么java/安卓需要在XML元素的开头有一个空格来解析它?   java通用代码,用于将字符串转换为任何所需的类   java如何创建Liferay钩子以扩展购物车portlet的功能   java Selected()方法存在漏洞   java新行附加在我的加密字符串上   使用NaN值的指数平滑的java   使用飞碟和iText发行的java XHTML到PDF   java如何在不使用HTMLDocument的情况下在JTextPane中显示两列文本?