节点 | A | B | C | D | E | F |
---|---|---|---|---|---|---|
度数 | 3 | 3 | 3 | 2 | 5 | 2 |
满足握手定理
握手定理为 各点度数和=边数*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种颜色即可
图是连通的
邻接矩阵
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
A | 0 | 0 | 1 | 0 | 1 | 1 |
B | 0 | 0 | 1 | 1 | 1 | 0 |
C | 1 | 1 | 0 | 0 | 1 | 0 |
D | 0 | 1 | 0 | 0 | 1 | 0 |
E | 1 | 1 | 1 | 1 | 0 | 1 |
F | 1 | 0 | 0 | 0 | 1 | 0 |
无向图连通的定义为:从任意节点触发,能达到所有节点
在邻接矩阵中,可以用到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=⎣⎢⎢⎢⎢⎢⎢⎡001011001110110010010010111101100010⎦⎥⎥⎥⎥⎥⎥⎤∗⎣⎢⎢⎢⎢⎢⎢⎡001011001110110010010010111101100010⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡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=⎣⎢⎢⎢⎢⎢⎢⎡321121231121113222112211222151112112⎦⎥⎥⎥⎥⎥⎥⎤∗⎣⎢⎢⎢⎢⎢⎢⎡001011001110110010010010111101100010⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡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=⎣⎢⎢⎢⎢⎢⎢⎡447485447584774393453272889787543272⎦⎥⎥⎥⎥⎥⎥⎤∗⎣⎢⎢⎢⎢⎢⎢⎡001011001110110010010010111101100010⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡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=⎣⎢⎢⎢⎢⎢⎢⎡201916122412192016122412161623162416121216121611242424163916121216111612⎦⎥⎥⎥⎥⎥⎥⎤∗⎣⎢⎢⎢⎢⎢⎢⎡001011001110110010010010111101100010⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡5252634379445252634479436363564087404344402863287979876310463444340286328⎦⎥⎥⎥⎥⎥⎥⎤
计算A+A2+A3+A4+A5,如果没有为零的,也可以判断连通性。
最小生成树
Prim 方法
Prim方法是从点的角度,找到最小邻接边,一个点一个点的扩展,直到点全被包含为止
kruskal方法
kruskal方法,从边的角度,找到最小权值的边,如果不构成回路,则可选取,如果边总数为n-1,最小生成树完成