離散數學圖論習題解析,歐拉,哈密頓,powell着色,Prim與Kruskal最小生成樹

1題目

在這裏插入圖片描述

解析

節點 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=[001011001110110010010010111101100010] 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}
從第1列開始,因爲第3行有數,所以將第1行加到第3行
計爲 因a(3,1)=1,所以將第1行加到第3行
A=[001011001110111011010010111101100010] 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(5,1)=a(6,1)=1,將第1行加到第5,6行
A=[001011001110111011010010111111101011] 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}
對於第2列,因爲a(3,2)=a(4,2)=a(5,2)=1,將第2行加到第3,4,5行
A=[001011001110111111011110111111101011] 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}
對於第3列,由於全爲1,所以將第3行加到其他行
A=[111111111111111111111111111111111111] 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矩陣已經全爲1,所以圖是連通的

上述解法僅爲複習,由於題目中指出要算任意兩點間的長度來判斷,這裏使用矩陣的乘方
這是跨越一條邊的矩陣
A=[001011001110110010010010111101100010] 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}
跨越兩條邊的矩陣
A2=[001011001110110010010010111101100010][001011001110110010010010111101100010]=[321121231121113222112211222151112112] 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}
由於計算繁雜,本文使用網頁計算器
次方數決定跨越的邊數,第一行第一列爲3,表示A節點跨越2條邊回到原點的路有3條
跨越3條邊的的矩陣
A3=[321121231121113222112211222151112112][001011001110110010010010111101100010]=[447485447584774393453272889787543272] 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}

跨越4條邊的矩陣
A4=[447485447584774393453272889787543272][001011001110110010010010111101100010]=[201916122412192016122412161623162416121216121611242424163916121216111612] 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}

跨越5條邊的矩陣
A5=[201916122412192016122412161623162416121216121611242424163916121216111612][001011001110110010010010111101100010]=[5252634379445252634479436363564087404344402863287979876310463444340286328] 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}
計算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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章