This package provides Relation class as an complement to sympy package.
Project description
hawksoft.relation package
hawksoft.relation包提供了一个Relation类,是对sympy的补充。该类可以生成一个二元关系对象,实现关系的表示,包括集合,图和矩阵;实现关系的运算,包括逆关系,关系的幂,关系的自反闭包,关系的对称闭包,关系的传递闭包。同时,由于关系本来就是集合,因此也支持集合的所有运算,包括交,并和补以及子集等。
安装
命令:
pip install hawksoft.relation
或者:
pip install hawksoft.relation -i https://pypi.tuna.tsinghua.edu.cn/simple
该包需要sympy和networkx两个包,如果系统没有,则会自动安装。
使用
记住: 关系是定义在集合A(称为论域discourse)上的序偶的集合。
使用过程如下:
1 导入包
from hawksoft.relation import Relation
2 定义论域集合A:
Relation.setA(1,2,3) # 该集合可以以任何对象作为元素。
3 创建关系对象:
r1 = Relation((1,2),(1,3))
r2 = Relation.getUniversal() #生成一个全关系,即$A\timesA$
r3 = Realtion.getIdendity() #生成一个恒等关系
4 关系的表示
r1.showSet() # 将关系显示为集合
r1.showMatrix()# 将关系显示为矩阵
r1.showGraph() # 将关系显示为图
5 关系运算
r5 = r2 - r1 # 关系的差
r6 = r1 + r3 # 关系的并
r7 = r1 ** -1 # 关系的逆关系
r8 = r1 ** 2 # 关系的2次幂,即关系的复合。
r9 = r1 ** 3 # 关系的3次幂
r10 = r1.reflectiveClosure() # 关系的自反闭包
r10 = r1.symmetricClosure() # 关系的对称闭包
r10 = r1.transitiveClosure() # 关系的传递闭包
举例
例1:给定关系R,将R转化为一个最小的等价关系。
from hawksoft.relation import Relation
Relation.setA(1,2,3,4,5,6,7)
r1 = Relation((1,2),(2,3),(4,5),(5,6))
r2 = r1.reflectiveClosure().symmetricClosure().transitiveClosure()
r2.showSet()
r2.showGraph()
{(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3), (4, 4
), (4, 5), (4, 6), (5, 4), (5, 5), (5, 6), (6, 4), (6, 5), (6, 6), (7, 7)}
例2: 判断一个关系是满足传递性
根据定理:一个关系R是传递的,当且仅当R的2次幂是R的子集。
from hawksoft.relation import Relation
Relation.setA(1,2,3,4,5,6,7)
r1 = Relation((1,2),(2,3),(4,5),(5,6))
r2 = r1 ** 2
if r1.contains(r2):
print('it is transitive')
else:
print('it is not transitive')
it is not transitive
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file hawksoft.relation-1.0.3.tar.gz.
File metadata
- Download URL: hawksoft.relation-1.0.3.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.0 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.55.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8873281fedcac921a7a2e7abcadde6ac1574aeef828d3119f2a2fa4be241a087
|
|
| MD5 |
f40bcd14e0e02d8b2a70190b332f514d
|
|
| BLAKE2b-256 |
02f62b05862f3fb416db8a8c2f65103f34ea7d435da24554e3b21e2545e36193
|