二元关系

本文前2章内容基本都来自我的大学老师(费老师)给我们的课件,感谢~~

目录

一,二元关系的5个主要性质

1,自反性

2,反自反性

3,对称性

4,反对称性

5,传递性

6,连通性

二,4种序关系

1,偏序(即小于等于)

2,拟序(即小于)

3,偏序和拟序的关系

4,偏序集中的极大极小元、最大最小元

5,全序

6,良序

7,良基关系

三,另外3种序关系

1,弱序关系(weak ordering)

2,严格弱序关系(strict weak ordering)

3,预序(preorder)

四,2种等价关系

1,等价关系

2,部分等价关系

五,二元关系总结

1,二元关系分类依据

2,二元关系分类

(1)非传递关系

(2)对称反对称传递关系(I关系及其子关系)

(3)对称传递关系(部分等价关系及其子关系)

(4)反对称传递关系(序关系)

(5)其他关系

3,关系的范畴的补充说明

4,关系的实例

5,传递连通关系

6,传递关系

六,二元关系统计验证

1,关系实体

2,特性判定

3,关系分类

4,关系统计

5,关系数量的诠释

6,总结


一,二元关系的5个主要性质

PS:每个都是可选性质,也存在二元关系,没有这5个性质中的任何一个。

1,自反性

2,反自反性

3,对称性

4,反对称性

5,传递性

6,连通性

对于满足对称性的二元关系,用无向图表示,关系的连通性和无向图的连通性含义一致。

否则用有向图表示,关系的连通性和有向图的半连通性含义一致。

换句话说,二元关系中的连通性指的是,对于任意2个不同元素a、b,要么a到b有一条边,要么b到a有一条边(不分有向无向)。

二,4种序关系

从外延来说,偏序和拟序是互斥的(除了空集),全序是偏序里面的一部分,良序是全序里面的一部分。

1,偏序(即小于等于)

偏序的数量参考https://oeis.org/A001035

前几项是1, 1, 3, 19, 219, 4231, 130023, 6129859, 431723379

这个数列没有简单的通项公式。

2,拟序(即小于)

3,偏序和拟序的关系

4,偏序集中的极大极小元、最大最小元

5,全序

6,良序

PS:整数集是全序集不是良序集,正整数集是良序集

7,良基关系

设R为集合(或类)U上的一个二元关系,若U的每个非空子集均有R极小元,则称R为U上的一个良基关系。

一个二元关系是良序,当且仅当,它是全序且是良基关系。

PS:有限集合上的二元关系都是良基关系,因为肯定有极小元。

三,另外3种序关系

1,弱序关系(weak ordering)

弱序关系指集合A中的自反的、传递的、连通的二元关系R。A称为弱序集,

全序是一种弱序,弱序若还是反对称的,则就是全序。

n个元素的严格弱序有n!种

2,严格弱序关系(strict weak ordering)

严格弱序关系指集合A中的反自反的、反对称的、传递的、连通的二元关系R。

严格弱序关系是拟序的一种,拟序如果连通就是严格弱序关系。

严格弱序 = 全序 - I ,全序 = 严格弱序 + I

PS:严格弱序关系形如<,全序形如<=

n个元素的弱序,和有序贝尔数是同构的。4个元素之间的弱序关系有OB4=75种。

3,预序(preorder)

满足自反、传递的关系,叫预序关系。

根据偏序的数量可以算出预序的数量:

pre(n)=\sum_{k=0}^nS(n,k)*p(k),其中p是偏序的数量,S是第二类斯特林数

如n=4,pre(4)是第二类斯特林数(0 1 7 6 1)和偏序的数量(1 1 3 19  219)的卷积,等于355

四,2种等价关系

1,等价关系

满足自反性、对称性、传递性的关系,叫等价关系。

等价关系其实就是集合的划分,以5个元素为例,一共有52种等价关系:

The 52 equivalence relations on a 5-element set depicted as 5×5 logical matrices (colored fields, including those in light gray, stand for ones; white fields for zeros). The row and column indices of nonwhite cells are the related elements, while the different colors, other than light gray, indicate the equivalence classes (each light gray cell is its own equivalence class).

其实等价关系和贝尔数是同构的,所以5个元素之间的等价关系有B5=52种。

4个元素之间的等价关系有B4=15种。

2,部分等价关系

满足对称性、传递性的关系,叫部分等价关系。

满足部分等价关系但不满足等价关系的示例:

对于自然数集,定义关系R:所有正整数和正整数之间都等价,0和所有数之间都不等价。

也就是说,在部分等价关系中,存在若干元素,他们不和任何元素等价,关系图中去掉这些元素之后得到的关系子图,对应的就是等价关系

n个元素的部分等价关系,和贝尔数B n+1 也是同构的。

所以4个元素之间的部分等价关系有B5=52种。

五,二元关系总结

下文默认只讨论元素个数>1的情况

1,二元关系分类依据

按照连通性,分为连通、不连通
按照自反性,分为自反、反自反、既不满足自反也不满足反自反
按照对称性,分为对称性,反对称性,既对称又反对称,即不满足对称也不满足反对称
按照传递性,分为传递、不满足传递性

其中,非传递性关系应该是没有任何研究价值,所以我们主要讨论传递性关系。

其他分类依据:

(1)满足反自反、传递的关系(即拟序)一定是反对称的。

(2)自反和反自反不可能同时满足

(3)同时满足对称和反对称的一定是I关系及其子关系,他们都满足传递和不连通

(4)对称、传递、连通的非空关系,一定满足自反

所以一共可以分为17种:

这17种两两互斥,且包含了所有二元关系

2,二元关系分类

(1)非传递关系

1号,应该是没有任何研究价值

(2)对称反对称传递关系(I关系及其子关系)

2号,I关系:自反、对称、反对称、传递、不连通,也叫恒等关系

3号,空关系:反自反、对称、反对称、传递、不连通

4号,I关系的非空真子关系:不自反也不反自反、对称、反对称、传递、不连通

(3)对称传递关系(部分等价关系及其子关系)

5号,平凡等价关系:自反、对称、传递、连通,任意2个元素都等价,也叫全关系

6号,非平凡的非恒等的等价关系:自反、对称、传递、不连通

7号,非“I关系及其子关系”非等价关系的部分等价关系:既不自反也不反自反、对称、传递、不连通

(4)反对称传递关系(序关系)

8号,全序:自反、反对称、传递、连通

9号,非全序的非恒等的偏序:自反、反对称、传递、不连通,等于非严格弱序的拟序加上I关系

10号, 严格弱序:反自反、反对称、传递、连通

11号 ,非严格弱序的拟序:反自反、反对称、传递、不连通

12号,严格弱序拓展关系:既不自反也不反自反、反对称、传递、连通,等于严格弱序加上I关系的非空真子关系

13号,拟序扩展关系:既不自反也不反自反、反对称、传递、不连通,等于非严格弱序的拟序加上I关系的非空真子关系

(5)其他关系

14号,非平凡等价关系非全序的弱序:自反、既不对称也不反对称、传递、连通,等于在全序的基础之上,增加一些边。

15号,非等价的非偏序的非弱序的预序:自反、既不对称也不反对称、传递、不连通,等于在非全序的偏序的基础之上,增加一些边。

16号,无名关系:既不自反也不反自反、既不对称也不反对称、传递、连通,等于在严格弱序拓展关系的基础之上,增加一些边。

17号,无名关系:既不自反也不反自反、既不对称也不反对称、传递、不连通,等于在拟序扩展关系的基础之上,增加一些边。

3,关系的范畴的补充说明

(1)良序关系是全序中满足每一非空子集都有有最小元的关系,是8号里面的一部分

(2)等价关系是2号+5号+6号

(3)部分等价关系是2号+3号+4号+5号+6号+7号

(4)偏序关系是2号+8号+9号

(5)拟序是10号+11号

(6)弱序是5号+8号+14号

(7)预序是2号+5号+6号+8号+9号+14号+15号

4,关系的实例

以集合A={1,2,3,4}为例,17种关系的实例:

R1={<1,2>,<2,3>}
R2={<1,1>,<2,2>,<3,3>,<4,4>}
R3={}
R4={<1,1>,<2,2>}
R5={<1,1>,<1,2>,<1,3>,<1,4>,<2,1>,<2,2>,<2,3>,<2,4>,<3,1>,<3,2>,<3,3>,<3,4>,<4,1>,<4,2>,<4,3>,<4,4>}
R6={<1,1>,<2,2>,<1,2>,<2,1>,<3,3><4,4>}
R7={<1,1>,<2,2>,<1,2>,<2,1>,<3,3>}
R8={<1,1>,<1,2>,<1,3>,<1,4>,<2,2>,<2,3>,<2,4>,<3,3>,<3,4>,<4,4>}
R9={<1,1>,<2,2>,<3,3>,<4,4>,<1,2>,<1,3>,<1,4>}
R10={<1,2>,<1,3>,<1,4>,<2,3>,<2,4>,<3,4>}
R11={<1,2>,<1,3>,<1,4>}       R111={<4,3>}      R112={<2,1>}
R12={<1,1>,<2,2>,<1,2>,<1,3>,<1,4>,<2,3>,<2,4>,<3,4>}      
R13={<1,1>,<2,2>,<1,2>,<1,3>,<1,4>}      
R14={<1,1>,<1,2>,<1,3>,<1,4>,<2,2>,<2,3>,<2,4>,<3,3>,<3,4>,<4,4>,<4,3>}
R15={<1,1>,<2,2>,<3,3>,<4,4>,<1,2>,<1,3>,<1,4>,<4,3>}
R16={<1,1>,<2,2>,<1,2>,<1,3>,<1,4>,<2,3>,<2,4>,<3,4>,<2,1>}      
R17={<1,1>,<2,2>,<1,2>,<1,3>,<1,4>,<4,3>}   

其中非严格弱序的拟序我举了3个例子,即多了R111和R112

关系之间的关系,在这个例子中也得到了体现,我把他们都表示成1个关系集刚好等于2个不相交的关系集的合集:

R9=R2+R11
R12=R4+R10
R13=R4+R11
R14=R8+R111
R15=R9+R111
R16=R12+R112
R17=R13+R111

5,传递连通关系

假设n个元素有an种传递连通关系,则递推式为:

a_n=na_{n-1}+\sum_{k=0}^{n-1}\binom{n}{k}a_k

a0=1,a1=2,a2=9,a3=61......

递推式很好理解,因为传递连通关系里面其实是有一条路径能把所有元素串起来,分情况讨论,讨论有多少元素存在边指向该路径的第一个元素。

如果有,则所有指向该路径的第一个元素的元素之间构成一个全关系,如果没有,则该元素是否满足自反有2种情况。

https://oeis.org/A006155中还指出,这个数列可以表示成e.g.f. 1/(2-x-e^x).

1=(2-x-e^x)(1+2x+9\frac{x^2}{2!}+61\frac{x^3}{3!}+...)

这个式子怎么来的我还没研究过,只验证了前面几项确实成立。

6,传递关系

https://oeis.org/A006905中给出了传递关系的数量和偏序关系的数量的关系,也是给了2种。

一种是求和式a(n)=sum(k=0, n, P[k+1]*sum(s=0, k, binomial(n, s)*stirling(n-s, k-s))),其中P是偏序的数量,stirling是第二类斯特林数

一种是指数生成式:E.g.f.: A(x + exp(x) - 1) where A(x) is the e.g.f. for P,其中P是偏序的数量。

这2个式子我还没研究过。

六,二元关系统计验证

以集合A={0,1,2,3}为例,我们统计一下每一种二元关系的数量,顺便验证一下这17种两两互斥,且包含了所有二元关系

1,关系实体

const int n = 4; // A={0,1,2,3}
const int nn = n*n;
struct A {
	int rid = 0; // 0 <= rid < 2^nn
	bool R(int a, int b) const { //0<=a<n, 0<=b<n
		return (rid >> (a * n + b)) & 1;
	}
};

A上一共有2^16种二元关系,只需要遍历rid即可。

2,特性判定


bool reflexivity(A r) {
	for (int i = 0; i < n; i++)if (!r.R(i, i))return false;
	return true;
}
bool irreflexivity(A r) {
	for (int i = 0; i < n; i++)if (r.R(i, i))return false;
	return true;
}
bool symmetry(A r, int a, int b) {
	if (r.R(a, b))return r.R(b, a);
	return true;
}
bool symmetry(A r) {
	for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)if (!symmetry(r, i, j))return false;
	return true;
}
bool antisymmetry(A r, int a, int b) {
	if (r.R(a, b) && r.R(b, a))return a==b;
	return true;
}
bool antisymmetry(A r) {
	for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)if (!antisymmetry(r, i, j))return false;
	return true;
}
bool transitivity(A r, int a, int b, int c) {
	if (r.R(a, b) && r.R(b, c))return r.R(a, c);
	return true;
}
bool transitivity(A r) {
	for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)for (int k = 0; k < n; k++)
		if (!transitivity(r, i, j, k))return false;
	return true;
}
bool connectivity(A r, int a,int b) {
	return r.R(a, b) || r.R(b, a);
}
bool connectivity(A r) {
	for (int i = 0; i < n; i++)for (int j = i + 1; j < n; j++)if (!connectivity(r, i, j))return false;
	return true;
}

3,关系分类

struct R {
	R(int rid) {
		A r;
		r.rid = rid;
		bool ref = reflexivity(r);
		bool irref = irreflexivity(r);
		if (ref && irref) {
			cout << "!!!!!error!!!!!"; // both is impossible
		}
		reflex = 2;
		if (ref)reflex = 0;
		if (irref)reflex = 1;
		bool sym = symmetry(r);
		bool antisym = antisymmetry(r);
		symm = 3;
		if (sym && antisym)symm = 2;
		else if (sym)symm = 0;
		else if (antisym)symm = 1;
		trans = 1;
		if (transitivity(r))trans = 0;
		con = 1;
		if (connectivity(r))con = 0;
	}
	int reflex; // 0 reflexivity 1 irreflexivity 2 neither  // both is impossible
	int symm; // 0 symmetry 1 antisymmetry 2 both 3 neither
	int trans; // 0 transitivity 1 else
	int con; // 0 connectivity 1 else
};
int classify(R r) {
	if (r.trans == 1)return 1;
	// r.trans == 0
	if (r.symm == 2) {
		if (r.con == 0)return 0;
		return r.reflex + 2; // 2 3 4
	}
	if (r.symm == 0) {
		if (r.reflex == 0 && r.con == 0)return 5;
		if (r.reflex == 0 && r.con == 1)return 6;
		if (r.reflex == 2 && r.con == 1)return 7;
		return 0;
	}
	if (r.symm == 1) {
		return r.reflex * 2 + r.con + 8; // 8 9 10 11 12 13
	}
	// r.symm == 3
	if (r.reflex == 0)return r.con + 14; // 14 15
	if (r.reflex == 2)return r.con + 16; // 16 17
	return 0;
}

其实只有自反性和反自反性不能同时成立可以验证一下,这17种关系显然是两两互斥的。

这个分类代码主要验证的是,这17种关系包含了所有关系。

4,关系统计

int main()
{
	map<int, int>m;
	for (int rid = 0; rid < (1 << nn); rid++) {
		int ret = classify(R(rid));
		m[ret]++;
	}
	for (int i = 0; i <= 17; i++)cout <<"R"<<i<<" "<< m[i] << "\n";
	return 0;
}

输出:

R0 0
R1 61542
R2 1
R3 1
R4 14
R5 1
R6 13
R7 22
R8 24
R9 194
R10 24
R11 194
R12 336
R13 2716
R14 50
R15 72
R16 116
R17 216

可以看到,自反性和反自反性不能同时得到了验证,R0是不存在的即这17种关系包含了所有关系。

其中,非传递关系有61542种,传递性关系有3994种,一共65536种。

5,关系数量的诠释

R2=1是必然的,I关系是必然存在且唯一的。

R3=1是必然的,空关系是必然存在且唯一的。

R2+R3+R4 = n*n是必然的,即I关系的子关系一共4*4=16种。

R5=1是必然的,平凡等价关系是必然存在且唯一的。

R2+R5+R6=Bn是必然的,即等价关系一共B4=15种。

R2+R3+R4+R5+R6+R7=B_{n+1} 是必然的,即部分等价关系一共B5=52种

R8=n!是必然的,即全序一共4!=24种,因为全序和全排列是同构的。

R2+R8+R9=219,即一共有219种偏序,符合预期。

R10=n!是必然的,即严格弱序一共4!=24种,因为严格弱序和全排列是同构的。

R11=R9 是必然的,因为非全序的偏序和非严格弱序的拟序是同构的。

R12=R10*R4是必然的,即336=24*14,这是一个正交组合关系。

R13=R11*R4是必然的,即2716=194*14,这是一个正交组合关系。

R5+R8+R14=OBn是必然的,即弱序一共OB4=75种。

R2+R5+R6+R8+R9+R14+R15=pre(n)是必然的,即预序一共355种。

R5+R8+R10+R12+R14+R16是传递连通关系,一共等于551,符合预期。

从R2到R17全部加起来是传递关系,一共等于3994

6,总结

除了偏序没有简单的公式,其他的全都有递推公式。

也就是说,除了R9不太好算,其他的都可以用公式或者递推式算出来(只有R17是用R9算出来的,R1是最后算出来的,其他的都可以直接算出来)

  • 6
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值