初高中數學競賽訓練----圖論初步2

例題中有2019年羅馬尼亞大師賽第3試題

樹:一個連通圖,如果沒有一個環,則叫樹。

森林:若干個獨立的樹形成一個森林。

鏈:一個特殊的樹是節點中,除去兩個節點的度為1,其它均為2,叫做鏈。

二叉樹:如果一個樹只有一個節點的度為2,其它的節點的度要麼為3,要麼為1,那這樣的樹叫二叉樹。

樹,鏈,二叉樹之所以重要是因為這些圖可以靈活表達計算機內部基本數據結構。例如我們打開一個應用軟件,按下一個功能鍵,會有菜單彈出或者窗口彈出,管理這些菜單與窗口最好的辦法是將其組織成樹結構。鏈是計算機內部維護一個動態數組的最佳結構,通過插入,刪除節點,只需要修改邊指針,而不需要真實移動數據。二叉樹可以做分類,編譯。能夠靈活運用這些基本結構,並用程序語言表達出來,是程序員的基本功。那些年薪幾十萬,上百萬的程序員對此都有相關的知識與運用經驗,而習得這些經驗與做數學習題差不多,也許更簡單一點,就是要多編寫程序,但題量會大一點,要求格式更嚴謹一點而已。

不論是樹還是鏈,其頂點數如果是n的話,邊數一定是n-1.

定理:n個頂點,n-1條邊的圖一定是樹。

證明:用歸納法

n=1,命題成立

假設

n=k時命題也成立,我們看n=k+1的情況,考慮k+1個頂點,k+1條邊這樣的圖中的一條最長路徑,如果有一個端點a,如果d(d)>1,則必然有環,因為否則的話,可以添加一條邊到這條最長路徑中,使得新路徑長度為增加1.刪去節點a,設與a相鄰的一個節點為b,同時刪除邊{a,b},就剩下k個節點,k-1條邊的連通圖了,按歸納假設這是棵樹,故n=k+1時命題成立。

例題1.考慮平面的若干點,任意兩點之間的直線段長度都不相同,如果將每個點與其距離最近的點連成一條直線段,求證:所畫出的線段不會形成一個封閉的多邊形。

證明:

首先將這些點當成一個圖的頂點,按題設的辦法將做了的直線段對應成圖的一條邊,形成圖G,假設G中有環。

如下圖

初高中數學競賽訓練----圖論初步2

由於任意兩點之間的直線距離最短,故這個環路上所有邊對應的直線段長度均不相同,不妨設最長的線段長度為D,對應邊為{a,b},設a1是與a相鄰的頂點,a2是與b相鄰的頂點,邊{a,a1},{b,b2}對應的線段長度分別為D1,D2,則D>D1,D2.故從a出發做出的直線段不能為b,從b出發的直線段也不能為a。也就是說按題設根本做不出邊{a,b}來。因此這個圖中沒有環路。

但即使沒有環路,也可能有如下圖這樣兩種方式形成閉合的圖形。

初高中數學競賽訓練----圖論初步2

我們接下來證明,按題目要求做出的直線段是不能出現交叉現象的。

反證法

假設作出的線段,如下圖出現了交叉

初高中數學競賽訓練----圖論初步2

虛線連接a,d;d,b;b,c;c,a

初高中數學競賽訓練----圖論初步2

則按照題設直線段的做法有:

ab

4ab2ab+2dc

另一方面,設ab,cd相交於w點

則:

wa+cw>ac,wc+wb>cb,wb+wd>bd,wd+wc>ad

相加得

2ab+2cd>ab+bc+cd+da矛盾

這就證明本題。

割邊:如果一個連通圖中去掉一個邊,就成為非連通的了,這條邊叫連通圖的一條割邊。對於樹來說,沒條邊都是割邊。

生成樹:若圖G的的一個子圖T包含所有的頂點,且為一棵樹,則稱T為圖G的生成樹。

在圖G中而不在生成樹T中的邊,稱為對應於樹T的弦,所有弦的集合是樹T的補,弦的數目就是圖G的圈數,記作N(G),樹枝的數目稱為圖的秩,記作及R(G)。如果G有n個結點m條邊,則R(G)=n-1,N(G)=m-n+l。R(G)+ N(G)=m。

生成樹的算法

去圈法:

如果連通圖G無迴路,根據的定義,則G本身就是一棵生成樹。如果連通圖G有迴路,去掉迴路的任一條邊得到生

成子圖G1,顯然G1仍然是連通的,如果G1不含迴路,則G1就是G的生成樹,否則又可去掉迴路的任一條邊得到另一個生成子圖,只要生成圖還有迴路,就去掉迴路的一條邊,由於圖的有限性,最後一定得到不含迴路的生成子圖T,由於每次去掉迴路的一條邊,並不破壞圖的連通性,所以T是G的生成樹。這種辦法可以產生圖的生成樹。

生長法:在G中任找一條邊e1,然後找一條不與e1形成迴路的邊e2,再找一條不與邊集合(e1,e2)形成迴路的邊e3,如此繼續下去使找的邊都不與已找到的邊集合形成迴路,直到過程不能進行下去為止,則所有找到的邊集

合{e1,e2,e3,...,em}構成的圖就是G的一棵生成樹。

設T是圖G的一棵生成樹,由T的樹枝和一條弦構成的迴路稱為對應於這條弦的基本回路,基本回路的集合,稱為基本回路集。如左圖是右圖的一棵生成樹則對應於

弦e1的基本回路是C(e1)={e1,e6,e7}

對應於弦e2的基本回路是C(e2)={e2,e7,e8}

對應於弦e4的基本回路是C(e4)={e4,e3,e8,e9}

對應於弦e5基本回路是C(e5)={e5 e6 e9}

樹T的基本回路集是C={C(e1)C(e2)C(e3)C(e4)}

初高中數學競賽訓練----圖論初步2

如果我們給圖上的每個邊賦權,那麼就得到一個賦權的圖。例如結點是城市,邊的權表示兩個城市間的距離,

從一個城市出發走遍各個城市,如何選擇最優的旅行路線.又如城市間的通信網絡問題,如何佈線,使得總的線路長度最短,等等就是要找一棵生成樹,且使得生成樹的邊權的和最小。這樣的生成樹叫最小生成樹。

最小生成樹的Kruskal算法:

設G是有n個結點,m條邊(m≥n-1)的連通圖.

1.將所有邊按照權升序排序:e1, e2, e3,… ,em,T=Φ

2.i=1.。。。。。m做如下操作

如果T∪{ ei }有迴路,則去掉ei,返回2

T=T∪{ ei };

如果i=n,T就是最小生成樹,結束

否則i++,返回2.

例題2.連通圖G中每條邊賦予一個數,設c為最小值,如果G中存在一個具有s條邊的基本回路,求證:這個圖至少有s個不同的最小生成樹。

證明:利用上面的kruskal算法,中間 的支撐樹集合T,在選前s-1條邊時,必然都是從這個基本回路中選出的邊,從s個邊中,每次選s-1條邊,總計有s種不同的選法。而這s個s-1條邊的集合各不相同,所以最終生成的最小生成樹至少也有s個。

做為高中聯賽題目,不說kruskal算法,直接求證本題,應該是不算太難的題。那就需要把kruskal算法的基本思想先說清楚,然後再填上上面的答案,才能得分。這是常見的高聯出題方法。

一個連通圖G的頂點數為n,邊數為e,則生成樹的邊為n-1,故弦數為e-(n-1)=e-n+1,每個弦對應於一個基本回路。

所以有定理:頂點數+基本回路數=n-1+e-n+1=e。

線性電路基本分析方程

假設一個電路圖,只有電池與電阻元件,總計為e個,電路圖上的每個元件對應於圖的一條邊,直連不同元件的線路端點,收縮為成一個頂點,總計有n個頂點。下圖表達簡單的電路圖變換成圖論中的圖。

初高中數學競賽訓練----圖論初步2

根據基爾霍夫定律,流入流出一個節點(頂點)的電流代數和為0,任意一個電路迴路的電壓代數和為0。注意到一個樹中,每個節點連出的邊不完全相同,可以形成n-1個獨立的電流方程。每個基本回路都有一條弦是唯一的,可以形成e-n+1個獨立的迴路電壓方程,用電阻乘以電流代表一個電阻元件的電壓,只要這些電阻阻值確定,電池電壓確定,就可得到e個獨立的以流過每個元件電流為變量的一次方程組,這個方程組是有唯一解的。這就是電路分析的基本方法,也是圖論理論的一個來源,而現今是現代集成電路CAD軟件分析中,研究電路電氣響應特性的核心方法。

樹搜索算法

深度優先搜索算法(DFS)

深度優先搜索的基本思想是在搜索其它他頂點之前,儘可能深地滲透到樹的深層中。這個想法可以描述如下:

初高中數學競賽訓練----圖論初步2

處理次序:a -> b --> d --> i -> j -> k -> e -> c -> f -> i -> g -> h

寬度優先搜索算法(BFS)

寬度優先搜索的基本思想是在深入到樹中之前,儘可能多地處理上層頂點。這個想法可以描述如下:

初高中數學競賽訓練----圖論初步2

初高中數學競賽訓練----圖論初步2

初高中數學競賽訓練----圖論初步2

初高中數學競賽訓練----圖論初步2

初高中數學競賽訓練----圖論初步2

初高中數學競賽訓練----圖論初步2


分享到:


相關文章: