数据结构
数据 相邻地图电子商务来源 #
边标记图,其中类型变量e(电子)
代表边缘标签。例如,相邻地图
布尔
一
同构于未标记图在顶级模块中定义代数。图表。相邻地图,其中False(错误)
和真的
表示无标记边的缺失和存在,分别是。
基本图构造基元
(-<)::a->e->(a,e)中缀5 来源 #
方便的ternary-ish运算符的左侧部分x-<e>-y
对于创建带标签的边。
x-<e>-y==边缘
e x y(e x y)
(>-):: (等式e、,单体e、,订单a) =>(a,e)->a->相邻地图电子商务中缀5 来源 #
方便的ternary-ish运算符的右侧部分x-<e>-y
对于创建带标签的边。
x-<e>-y==边缘
e x y(e x y)
边缘:: (等式e、,单体e、,订单a) =>[(e,a,a)]->相邻地图电子商务来源 #
从边列表构造图形。复杂性:O((n+m)*log(n))时间和O(n+m)内存。
边[]==空的
边[(e,x,y)]==边缘
e x y(e x y)边缘==覆盖层
.地图
(\(e,x,y)->边缘
e x y)
从相邻地图:: (等式e、,单体e、,订单a) =>[(a,地图a e)]->相邻地图电子商务来源 #
从邻接集列表构造一个图。复杂性:O((n+m)*log(n))时间和O(n+m)内存。
来自相邻地图[]==空的
从相邻地图[(x,地图。空的
)] ==顶点
x个从相邻地图[(x,地图。单子
y e)]==如果e==零
然后顶点
[x,y]其他边缘
e x y(e x y)覆盖
(from AdjacencyMaps xs)(from相邻地图ys)==来自相邻地图(xs++
年)
图上的关系
图形属性
边缘标签:: (单体e、,订单a) =>a->a->相邻地图e a->e来源 #
提取图形中指定边的标签。复杂性:O(对数(n))时间。
边缘标签x y空的
==零
边缘标签x y(顶点
z)==零
边缘标签x y(边缘
e x y)==e边缘标签(覆盖
x y)==边缘标签s t x+边缘标签
边缘列表::相邻地图e a->[(e,a,a)]来源 #
图的边列表,根据成对连接的顶点(即边标签在排序时被忽略)。复杂性:O(n+m)时间和O(米)内存。
边缘列表空的
== []边缘列表(顶点
x) ==[]边缘列表(边缘
e x y)==如果e==零
然后是[]其他[(e,x,y)]
图形转换
删除边缘::订单a=>a->a->相邻地图e a->相邻地图电子商务来源 #
从给定图形中删除边。复杂性:O(对数(n))时间。
删除边缘x y(边缘
e x y)==顶点
[x,y]移除边缘x y。removeEdge x y==删除边缘x y移除边缘x y。移除顶点
x个==移除顶点
x个removeEdge 1 1(1*1*2*2)==1*2*2removeEdge 1 2(1*1*2*2)==1*1+2*2
电子邮箱:: (等式f、,单体f) =>(e->f)->相邻地图e a->相邻地图财务报表来源 #
通过应用函数变换图形小时
每个边缘标签。复杂性:O((n+m)*log(n))时间。
功能小时
必须是同态关于标签e(电子)
.至少它必须保存零
和<+>
:
小时零
==零
高x<+>
h y==h(x<+>
年)
如果e(电子)
也是半环,那么小时
还必须保留乘法结构:
小时一
==一
高x<.>
h y==h(x<.>
年)
如果上述要求成立,那么实现将提供以下保证。
emap小时空的
==空的
emap小时(顶点
x)==顶点
x个emap小时(边缘
e x y)==边缘
(h e)x yemap小时(覆盖
x年)==覆盖
(电子邮件地址x)(电子邮件地址)emap小时(连接
e x y)==连接
(电子邮件)(电子邮件)电子邮箱身份证件
==身份证件
电子邮件。emap h==emap(g.h)
关系操作
反射闭合:: (订单a、,半环e) =>相邻地图e a->相邻地图电子商务来源 #
计算自反闭合下半环上的图的增加一个自循环重量一
到每个顶点。复杂性:O(n*log(n))时间。
反射闭合空的
==空的
反射闭合(顶点
x)==边缘
一
x x x反射闭合(边缘
e x x)==边缘
一
x x x反射闭合(边缘
e x y)==边缘
[(一
,x,x),(e,x,y)(一
,y,y)]反射性闭合。reflectiveClosure==reflective闭包
对称闭合:: (等式e、,单体e、,订单a) =>相邻地图e a->相邻地图电子商务来源 #
计算对称闭包用自己的图覆盖它转置。复杂性:O((n+m)*log(n))时间。
对称闭合空的
==空的
对称闭合(顶点
x)==顶点
x个对称闭合(边缘
e x y)==边缘
[(e,x,y),(e,y,x)]对称闭合x==覆盖
x个(转置
x)对称闭合。symmetricClosure==对称闭合
其他
一致的:: (订单a、,等式e、,单体e) =>相邻地图e a->布尔 来源 #
检查内部图形表示是否一致,即边是指现有的顶点,并且没有零
-标记的边缘。它应该不可能创建不一致的邻接图,我们使用这个测试中的功能。