离散数学图论习题解析,欧拉,哈密顿,powell着色,Prim与Kruskal最小生成树

1题目

在这里插入图片描述

解析

节点ABCDEF
度数333252

满足握手定理

握手定理为 各点度数和=边数*2

度数和为3+3+3+2+5+2=18

边数为9

不是欧拉图

存在欧拉回路的图称为欧拉图,而无向图存在欧拉回路的充要条件是图中所有节点度数均为偶数或者只有两个节点为奇数,发现图中A,B,C,E都为奇数,所以没有欧拉回路。

不满足哈密顿的充分条件

哈密顿图的充分条件是具有n节点的简单图G,如果G中每一对结点度数和不小于b则则存在一条哈密顿回路

图中有6个节点,但是发现deg(D)+deg(F)=4<6,所以不满足

Powell着色方法
在这里插入图片描述
显然,着色的顺序是E,C,B,A,F,D

对偶图如下
在这里插入图片描述
显然,这里节点的着色顺序是
e,c,b.d,a
效果如下图在这里插入图片描述
发现,只需要4种颜色即可
图是连通的
邻接矩阵

ABCDEF
A001011
B001110
C110010
D010010
E111101
F100010

无向图连通的定义为:从任意节点触发,能达到所有节点

在邻接矩阵中,可以用到warShall算法,求传递闭包的方法判断连通性

warShall算法为,从i列开始计算,如果第j行有数,那么将第i行加到第j行,结束后如果全为1,则连通

方法如下
A = [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 ] A=\begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&0&0&1&0\\ 0&1&0&0&1&0\\ 1&1&1&1&0&1\\ 1&0&0&0&1&0\\ \end{bmatrix} A=001011001110110010010010111101100010
从第1列开始,因为第3行有数,所以将第1行加到第3行
计为 因a(3,1)=1,所以将第1行加到第3行
A = [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 ] A=\begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&1&0&1&1\\ 0&1&0&0&1&0\\ 1&1&1&1&0&1\\ 1&0&0&0&1&0\\ \end{bmatrix} A=001011001110111010010010111101101010
继续,因为a(5,1)=a(6,1)=1,将第1行加到第5,6行
A = [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 ] A=\begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&1&0&1&1\\ 0&1&0&0&1&0\\ 1&1&1&1&1&1\\ 1&0&1&0&1&1\\ \end{bmatrix} A=001011001110111011010010111111101011
对于第2列,因为a(3,2)=a(4,2)=a(5,2)=1,将第2行加到第3,4,5行
A = [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 ] A=\begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&1&1&1&1\\ 0&1&1&1&1&0\\ 1&1&1&1&1&1\\ 1&0&1&0&1&1\\ \end{bmatrix} A=001011001110111111011110111111101011
对于第3列,由于全为1,所以将第3行加到其他行
A = [ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ] A=\begin{bmatrix} 1&1&1&1&1&1\\ 1&1&1&1&1&1\\ 1&1&1&1&1&1\\ 1&1&1&1&1&1\\ 1&1&1&1&1&1\\ 1&1&1&1&1&1\\ \end{bmatrix} A=111111111111111111111111111111111111
发现A矩阵已经全为1,所以图是连通的

上述解法仅为复习,由于题目中指出要算任意两点间的长度来判断,这里使用矩阵的乘方
这是跨越一条边的矩阵
A = [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 ] A=\begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&0&0&1&0\\ 0&1&0&0&1&0\\ 1&1&1&1&0&1\\ 1&0&0&0&1&0\\ \end{bmatrix} A=001011001110110010010010111101100010
跨越两条边的矩阵
A 2 = [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 ] ∗ [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 ] = [ 3 2 1 1 2 1 2 3 1 1 2 1 1 1 3 2 2 2 1 1 2 2 1 1 2 2 2 1 5 1 1 1 2 1 1 2 ] A^2=\begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&0&0&1&0\\ 0&1&0&0&1&0\\ 1&1&1&1&0&1\\ 1&0&0&0&1&0\\ \end{bmatrix}* \begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&0&0&1&0\\ 0&1&0&0&1&0\\ 1&1&1&1&0&1\\ 1&0&0&0&1&0\\ \end{bmatrix}= \begin{bmatrix} 3&2&1&1&2&1\\ 2&3&1&1&2&1\\ 1&1&3&2&2&2\\ 1&1&2&2&1&1\\ 2&2&2&1&5&1\\ 1&1&2&1&1&2\\ \end{bmatrix} A2=001011001110110010010010111101100010001011001110110010010010111101100010=321121231121113222112211222151112112
由于计算繁杂,本文使用网页计算器
次方数决定跨越的边数,第一行第一列为3,表示A节点跨越2条边回到原点的路有3条
跨越3条边的的矩阵
A 3 = [ 3 2 1 1 2 1 2 3 1 1 2 1 1 1 3 2 2 2 1 1 2 2 1 1 2 2 2 1 5 1 1 1 2 1 1 2 ] ∗ [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 ] = [ 4 4 7 4 8 5 4 4 7 5 8 4 7 7 4 3 9 3 4 5 3 2 7 2 8 8 9 7 8 7 5 4 3 2 7 2 ] A^3=\begin{bmatrix} 3&2&1&1&2&1\\ 2&3&1&1&2&1\\ 1&1&3&2&2&2\\ 1&1&2&2&1&1\\ 2&2&2&1&5&1\\ 1&1&2&1&1&2\\ \end{bmatrix}* \begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&0&0&1&0\\ 0&1&0&0&1&0\\ 1&1&1&1&0&1\\ 1&0&0&0&1&0\\ \end{bmatrix}= \begin{bmatrix} 4&4&7&4&8&5\\ 4&4&7&5&8&4\\ 7&7&4&3&9&3\\ 4&5&3&2&7&2\\ 8&8&9&7&8&7\\ 5&4&3&2&7&2\\ \end{bmatrix} A3=321121231121113222112211222151112112001011001110110010010010111101100010=447485447584774393453272889787543272

跨越4条边的矩阵
A 4 = [ 4 4 7 4 8 5 4 4 7 5 8 4 7 7 4 3 9 3 4 5 3 2 7 2 8 8 9 7 8 7 5 4 3 2 7 2 ] ∗ [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 ] = [ 20 19 16 12 24 12 19 20 16 12 24 12 16 16 23 16 24 16 12 12 16 12 16 11 24 24 24 16 39 16 12 12 16 11 16 12 ] A^4=\begin{bmatrix} 4&4&7&4&8&5\\ 4&4&7&5&8&4\\ 7&7&4&3&9&3\\ 4&5&3&2&7&2\\ 8&8&9&7&8&7\\ 5&4&3&2&7&2\\ \end{bmatrix}* \begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&0&0&1&0\\ 0&1&0&0&1&0\\ 1&1&1&1&0&1\\ 1&0&0&0&1&0\\ \end{bmatrix}= \begin{bmatrix} 20&19&16&12&24&12\\ 19&20&16&12&24&12\\ 16&16&23&16&24&16\\ 12&12&16&12&16&11\\ 24&24&24&16&39&16\\ 12&12&16&11&16&12\\ \end{bmatrix} A4=447485447584774393453272889787543272001011001110110010010010111101100010=201916122412192016122412161623162416121216121611242424163916121216111612

跨越5条边的矩阵
A 5 = [ 20 19 16 12 24 12 19 20 16 12 24 12 16 16 23 16 24 16 12 12 16 12 16 11 24 24 24 16 39 16 12 12 16 11 16 12 ] ∗ [ 0 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 ] = [ 52 52 63 43 79 44 52 52 63 44 79 43 63 63 56 40 87 40 43 44 40 28 63 28 79 79 87 63 104 63 44 43 40 28 63 28 ] A^5=\begin{bmatrix} 20&19&16&12&24&12\\ 19&20&16&12&24&12\\ 16&16&23&16&24&16\\ 12&12&16&12&16&11\\ 24&24&24&16&39&16\\ 12&12&16&11&16&12\\ \end{bmatrix}* \begin{bmatrix} 0&0&1&0&1&1\\ 0&0&1&1&1&0\\ 1&1&0&0&1&0\\ 0&1&0&0&1&0\\ 1&1&1&1&0&1\\ 1&0&0&0&1&0\\ \end{bmatrix}= \begin{bmatrix} 52&52&63&43&79&44\\ 52&52&63&44&79&43\\ 63&63&56&40&87&40\\ 43&44&40&28&63&28\\ 79&79&87&63&104&63\\ 44&43&40&28&63&28\\ \end{bmatrix} A5=201916122412192016122412161623162416121216121611242424163916121216111612001011001110110010010010111101100010=5252634379445252634479436363564087404344402863287979876310463444340286328
计算A+A2+A3+A4+A5,如果没有为零的,也可以判断连通性。

最小生成树
Prim 方法

Prim方法是从点的角度,找到最小邻接边,一个点一个点的扩展,直到点全被包含为止

  1. 从A点开始,构成U,U={A} T={}
  2. 找到A周围的最短边(A,F)长为3,T={(A,F)}
  3. U={A,F},到U最短边(E,F)长为4,T={(A,F),(F,E)}
  4. U={A,F,E},到U最短边(E,D)长为1,T={(A,F),(F,E),(E,D)}
  5. U={A,F,E,D},到U最短边(E,C)长为2,T={(A,F),(F,E),(E,D),(E,C)}
  6. U={A,F,E,D,C},到U最短边(C,B)长为2,T={(A,F),(F,E),(E,D),(E,C),(C,B)}
  7. U={A,F,E,D,C,B}最小生成树完成,长度和为14

kruskal方法

kruskal方法,从边的角度,找到最小权值的边,如果不构成回路,则可选取,如果边总数为n-1,最小生成树完成

  1. 选取权最小的边(E,D),置i=1
  2. 选择长为2的(E,C),i=2
  3. 选择长为3的(A,F),i=3
  4. 选择长为4的(E,F),(B,C) ,i=5
  5. 此时i=6-1=5,满足最小生成树条件,总长度和为14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值