一、代数系统
代数系统是数学中的一个重要概念,它涉及一组对象以及定义在这些对象上的运算规则。代数系统可以是抽象的,也可以是具体的。
在抽象代数中,代数系统通常由一组元素和一组操作(或称为运算)组成。这些操作可以是二元的(例如加法和乘法)或一元的(例如取负)。代数系统的运算必须符合一定的性质,例如结合律、交换律、单位元和逆元等。常见的抽象代数系统包括群、环、域和向量空间等。
本文中关于代数系统的讨论部分和前文《代数入门》很相似,主要做了一些拓展和案例补充。
(〇)代数系统
只要满足两个条件就是一个代数系统:
- 集合非空
- 运算封闭
(一)广群
满足最低要求的代数系统,就是广群。
(二)半群
满足结合律的广群就是半群。
半群的性质:
- 如果 S 是一个有限半群,那么 S 中一定有等幂元;
- 如果 S 是一个含幺半群(独异点),则运算表中没有两行或者两列是相同的;
(三)含幺半群
集合中对于运算*存在幺元 e 的半群就是含幺半群,也叫独异点。
(四)群
对于每一个元素都存在逆元的含幺半群,就是群。
可以看到,群是具有最严格的定义:
- 封闭性
- 结合性
- 含有幺元
- 含有逆元
常见的一个群为:<P(S),对称差>
是一个群,幺元为空集,每个元素的逆元都是自己。
群的性质:
- 群无零元;
- 群G 中,ax=b的解是唯一的,因为每个元素都有逆元,x = a^-1b;
- 群的计算满足消去律,或者群中的元素都是可约的;
- 如果一个有限含幺半群,满足可约,那么一定是一个群。(可约去就暗示了该群含有幺元,那么自然就是一个群了);
- 群众的等幂元素一定是幺元。证明: xx=x=xe,则 x = e;
- 有限群运算表中每一行或每一列都是群 G 中的元素一个置换;(两行元素如果双射,就是一个置换)
- 如果 S 是 G 的子集,且 S 是有限的,只要运算*在 S 中封闭,那么 S 一定是一个子群;
- 如果 S 是 G 的子集,S中的任意两个元素a、b,只要满足 a*b^-1也属于 S,那么 S 就是一个子群。注意这里没有对集合 S 是否有限作出限制。
这就是最基本的群的部分性质,底下的讨论相较于群,增加了部分性质。
(五)阿贝尔群
如果群中的元素对于操作*是可交换的,就称为阿贝尔群或者交换群,也叫加法群。
(六)循环群
群中的所有的元素都可由一个元素 x 通过不断地*运算生成,则称为循环群,x 被称为生成元,事实上生成元往往不止一个。
这里有几个重要的结论:
- 由拉格朗日定理,n 阶群的子群,其阶数一定是 n 的因数;
- 素数阶的群一定是循环群,由拉格朗日定理,素数阶的群一定只有两个平凡子群;
- 四阶群按照分类,只能分为克莱因四元群和四阶循环群;
- 循环群是加法群;
- 对于n 阶循环群 G,如果 a 是一个生成元,则:a^n=e;
- 对于无限循环群 G,如果 a 是一个生成元,那么另一个唯一一个生成元为 a^-1;
(七)置换群
任何一个有限群,事实上都可由一个置换群表示。
置换群(Permutation Group)是群论中的一个重要概念,它研究的是一组对象的排列及其上的运算。在置换群中,对象的排列通过置换操作来描述,而置换群则是由这些置换构成的群。
具体来说,给定一个有限集合X,一个置换是对X中元素的重新排列。每个置换可以表示为一个映射,将集合X中的元素映射到另一个元素上。这种映射可以用一个有序的元素列表来表示,其中列表中的第i个元素表示将原始集合中的第i个元素映射到的新位置。
置换群是由所有可能的置换组成的群,它的运算是置换的复合。换句话说,对于两个置换,可以将它们按照给定的顺序,依次执行,得到一个新的置换。这个复合运算满足结合律、单位元和逆元的群性质。
(八)环
环(Ring)是抽象代数中的一个重要的代数结构。它由一个非空集合R和两个二元运算(加法和乘法)组成,分别记作"+“和”·"。
可以看到,对于乘法运算(·)并没有要求交换律和逆元。因此,环(Ring)可以定义为:
- 加法运算(+)是交换群;
- 乘法运算(·),可结合,也是含幺半群
- 后者对前者满足分配率。
一个经典的例子就是<A,+,· >
,其中 A 是矩阵。显然矩阵(方阵)加法是一个交换群
,矩阵乘法是一个半群
(可结合,有幺元,也是含幺半群),,乘法对加法满足分配率。因此**<A,+,· >就是一个经典的环**。
事实上,矩阵运算还是一个含幺环,因为乘法具有幺元 E。
环有以下分类:
- 如果乘法存在幺元,则为含幺环;
- 如果乘法满足交换律,则为交换环;
- 对于任意的 a*b=0,一定有 a=0或者 b=0,则为无零因子环;
- 如果都满足上面三个条件,则是整环!
(九)域
域的定义比环更加严格,可定义为:
- 加法运算<F,+ > 是交换群;
- 乘法运算<F-{0},· > 是交换群;
- 后者对前者满足分配率。
比如**<R, +, * >**就是一个经典的域。它满足加法交换群,去除0后,也是交换群,同时后者对于前者满足分配率。域一定是环,且是整环。
二、图论导论
(一)图的分类
图是由结点和边构成,又分为有向图、无向图、带权图、无权图、混合图等等,这些概念很简单,不再赘述。
完全图:任意两个节(结)点之间都有边,记为 Kn图,n 为节点数目;
节点的度:连接的边的个数,细分为出度、入度;
1、结点的度
一些定理:
- 握手定理,结点的度的和等于边的两倍;
- 对于有向图:度数之和为 0;
- 奇数度的结点的个数一定为偶数个。
2、子图与生成子图
生成子图结点构成的集合不变,子图没有要求,真子图结点会少一些。
3、图的同构
拓扑结构不变的图,就是互为同构。
目前没有一个通用的方法来判断两个图是否同构,只能得到同构的图的一些必要的性质:
- 同构的图的结点数目相同;
- 同构的图的边的数目相同;
- 同构的图度数相同的结点的数目相同。
这些必要条件都是简单的易于理解的,但是没有一个充分条件能用来判断两个图是否同构。这里给出一个尝试,就是按照顺序分别算出两个图的矩阵表示,然后判断两个矩阵是否相等,如果相等就同构。但是这个过程的难点在于无法按照顺序算出矩阵表示,尤其当结点数目很大时。
(二)图的连通性
1、路与回路
有以下基本概念:
- 如果边没有重复,就是简单路径,(简单回路),称为迹;
- 如果点没有重复,就是基本路径,(基本回路),称为通路;
路的性质和推论:
- 如果n个节点的图存在一条通路,那么这条通路最长不会超过 n-1;
- 图中任何一个圈的长度都不会超过 n;
2、无向图的连通性
这里牵扯到一点割集、割点、边割集、割边或者桥的概念,很简单。
常见的结论有:
- 如果 v 是连通图G 的一个割点,那么
G-{v}
是一个非连通图; - 完全图没有点割集,也没有割边(有边割集,注意区别);
- 非连通图的点割集和边割集都是空集,这是人为规定。
3、有向图的可达性
对于有向图的可达性,有以下定义:
- 如果任意两个点,至少从一个点到另一个点可达,那么 G 就是单侧连通的;
- 如果任意两个节点之间都是可达的,则是强连通图;
- 如果略去所有方向后,有向图成为了一个连通无向图,则有向图 G 是弱连通的;
一些性质:
- 如果强连通图只有一条回路,那么这个回路至少包含每个节点一次;
- 如果 P是 G 的一个子图,并且 P 是强连通的,且不存在包含 P 的更大强连通子图,那么 P就是 G 的强分图。
- 在有向图 G 中,每个节点只能存在于一个强分图中。如果存在于两个,那么这个这个节点就是两个强分图的枢纽,那么这两个图就成为一个图,因此矛盾。
(三)图的矩阵表示
矩阵表示的图,具有诸多的特点,能更简单的存储在计算机中,被各种算法计算,也更简洁,可以压缩。
1、邻接矩阵
对于一个无向图:
- 邻接矩阵一定是对阵的;
- 邻接矩阵主对角线元素为 0,因为自己与自己不邻接;
- 某行(列) 1 的个数为该结点的度
对于一个有向图,则有出度和入度概念。
2、计算两个节点之间的路的数目
定理:设图 G 的邻接矩阵为 A,则结点 v i v_i vi、 v j v_j vj 之间长度为 k 的路的数量为矩阵 A k A^{k} Ak 的 a i , j a_i,_j ai,j。这个定理的证明很有意思,比较简单,不再赘述。
这个定理有以下几个简单推论:
- 如果对于
m = 1,2,3,...,n-1
都有 A m A^{m} Am 中 a i , j a_i,_j ai,j = 0,则说明结点 v i v_i vi、 v j v_j vj之间没有路,它们必定位于不同的连通分支; - 结点
v
i
v_i
vi、
v
j
v_j
vj之间的最小距离就是使得
A
m
A^{m}
Am 中
a
i
,
j
a_i,_j
ai,j = 1 成立的最小值
m
; -
A
m
A^{m}
Am 的元素
a
i
,
i
a_i,_i
ai,i就是开始并结束于
v
i
v_i
vi的长度为
m
的回路的数量。
3、可达性矩阵
可达矩阵研究的是结点 v i v_i vi、 v j v_j vj之间有没有路的问题,这个问题很好解决。
- 方法一:我们只需要把上面的 A m A^{m} Am进行逻辑求和,不等于 0 的元素置为 1,就得到了可达性矩阵。 a i , j a_i,_j ai,j = 1 就意味着结点 v i v_i vi、 v j v_j vj之间可达。
- 方法二:假设关系<
v
i
v_i
vi、
v
j
v_j
vj> 意味着可达,我们很容易得到一个矩阵 A ,矩阵中
a
i
,
j
a_i,_j
ai,j = 1 就意味着两点距离为 1,可达。但是有时候,存在两个节点之间没有长度为 1 的路,但是有长度等于 m 的路,因此我们需要对 A 进行不断的复合,得到长度为
2、3、... 、m
的路,之后再进行逻辑加。仔细一想,这就是再求传递闭包!因此,整个过程本质上就是在求传递闭包。
因此,最简单的方法就是利用 Warshall 算法进行求解!
怎么判断一个关系矩阵A是否具有对称性?
- 计算对称闭包,如果等于 A 就具有对称性
怎么判断一个关系矩阵 A 是否具有传递性?
- 计算传递闭包,如果等于 A 就具有传递性
计算传递闭包本质上是在干什么?
- 计算关系 A 中所有元素的关系,直接的间接的。这点与可达矩阵如出一辙,因为图描述的本来就是结点之间的拓扑关系!
4、有向图的可达矩阵
有向图和无向图的可达性矩阵计算方式一模一样。但是有向图的强分图怎么算呢?
定理: 有向图 G 是强连通的当且仅当其可达性矩阵 P 的所有元素均为1。
是这么理解的:设 P 是图 G 的可达性矩阵,其元素为 p i , j p_i,_j pi,j, P T P^{T} PT是 P 的转置矩阵。则图G的强分图可由P∧ P T P^{T} PT求得。因为从 v i v_i vi到 v j v_j vj可达,则 p i , j p_i,_j pi,j=1;从 v j v_j vj到 v i v_i vi可达,则 p i , j p_i,_j pi,j=1。于是当且仅当vi与vj相互可达时,P∧ P T P^{T} PT的第(i,j)元素的值为1。
例1:求出下图所示图的强分图。
求出它的可达矩阵与可达矩阵的转置,然后进行逻辑乘:
例2:设 t 时刻的相关资源集为R={r1, r2, r3, r4}
,进程集为P={p1, p2, p3, p4}
,进程占据资源的情况为:
- p1占据资源r4且请求资源r1;
- p2占据资源r1且请求资源r2和r3;
- p3占据资源r2且请求资源r3;
- p4占据资源r3且请求资源r1和r4。
对应的资源分布图如上图所示。这样我们就能根据这个有向图得到一个矩阵 A,再求出它的可达矩阵,得到强分图。只要这个强分图不是 E(大于 E),那么就是死锁的。解决办法就是挂掉某些进程,使得可达矩阵某些元素为 0,这就会导致强分图为 E(自己到自己默认可达),从而解决死锁。
全文完,感谢阅读!