用于操作有限格元素的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如何在Salesforce中查询自定义对象?   RichFaces 4中的java ExtendedDataTable:数据模型处理   java Android类层次结构和带有片段的接口   java如何在文件中保存JLabel的颜色/大小?   java编辑类中的返回值而不修改类本身?   安卓如何替换字符串java中的ï»   1.3.7.发布>1.4.1。发布| java。lang.NoSuchMethodError:org。springframework。靴子建设者SpringApplicationBuilder。展示横幅   java列表保存在模型中,而不在setter中进行设置   java如何打开一个窗口。windows中的ks文件?   Java HashMap获取值(其中大部分值)   vps的javascript Websocketurl?   使用byte buddy或某些库进行java评测   java Dom4j获取单节点文本值