Skip to main content

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)}

png

例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

hawksoft.relation-1.0.3.tar.gz (4.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page