1. 程式人生 > >張林林|深藍(Linlin Zhang,shenlan211314) 的專欄

張林林|深藍(Linlin Zhang,shenlan211314) 的專欄

原文地址:http://www.gljpkc.com/jsjkxdl/jxwz/ynjx/1.htm

“歐拉回路”與“哈密爾頓迴路”

1.歐拉回路

17世紀的東普魯士有一座哥尼斯堡(Konigsberg)城(現為俄國的加里寧格勒(Kaliningrad)城),城中有一座奈佛夫(Kneiphof)島,普雷格爾(Pregol)河的兩條支流環繞其旁,並將整個城市分成北區、東區、南區和島區4個區域,全城共有7座橋將4個城區相連起來,如圖1所示。人們常通過這7座橋到各城區遊玩,於是產生了一個有趣的數學難題:尋找走遍這7座橋,且只許走過每座橋一次,最後又回到原出發點的路徑。該問題就是著名的“哥尼斯堡七橋問題”。

圖1  哥尼斯堡地圖

1736年,大數學家列昂納德·尤拉(L.Euler)發表了關於“哥尼斯堡七橋問題”的論文—《與位置幾何有關的一個問題的解》(Solutio Problematis ad Geomertriam Situs Pertinentis),他在文中指出,從一點出發不重複地走遍七橋,最後又回到原出發點是不可能的。

為了解決哥德斯堡七橋問題,尤拉對該問題進行了抽象,用4個字母A、B、C、D代表4個城區,用7條線表示7座橋,如圖2所示。這樣做抽象出了問題中最本質的東西,忽視問題非本質的東西(如橋的長度、寬度等),從而將哥尼斯堡七橋問題抽象為一個數學問題,即經過圖中每邊一次且僅一次的迴路問題。尤拉在論文中論證了這樣的迴路是不存在的,後來,人們把有這樣迴路的圖稱為尤拉圖。

尤拉在論文中將問題進行了一般化處理,即對給定的任意一個河道圖與任意多座橋,判定可能不可能每座橋恰好走過一次(不一定回到原出發點),並用數學方法給出了3條判定的規則:

(1)如果通奇數座橋的地方不止兩個,滿足要求的路線是找不到的。

(2)如果只有兩個地方通奇數座橋,可以從這兩個地方之一出發,找到所要求的路線。

(3)如果沒有一個地方是通奇數座橋的,則無論從哪裡出發,所要求的路線都能實現。

上述3條判定規則包含了任一連通無向圖是否存在“尤拉路徑(Euler Path)”和“歐拉回路(EulerCircuit)”的判定條件。根據判定規則(3)可以得出,任一連通無向圖存在歐拉回路的充分必要條件是圖的所有頂點均有偶數度。

圖2  圖

2.哈密爾頓迴路

“哈密爾頓迴路問題”問題是愛爾蘭著名學者威廉·哈密爾頓爵士(W.R.Hamilton)1859年提出的一個數學問題。其大意是:在任一給定的圖中,能不能找到這樣的路徑,即從一點出發不重複地走過所有的結點(不必通過圖中每一條邊),最後又回到原出發點。

3.歐拉回路與哈密爾頓迴路的區別

“哈密爾頓迴路問題”與“歐拉回路問題”看上去十分相似,然而卻是完全不同的兩個問題。“哈密爾頓迴路問題”是訪問除原出發結點以外的每個結點一次且僅一次(圖2有哈密爾頓迴路,如B到C到A到D再到B就是一個迴路),而“歐拉回路問題”是訪問每條邊一次且僅一次;對任一給定的圖是否存在“歐拉回路”尤拉已給出了充分必要條件,而對任一給定的圖是否存在“哈密爾頓迴路”至今仍未找到滿足該問題的充分必要條件。

4.例題

賽納河流經巴黎的這一段河中有兩個島,河岸與島間架設了15座橋。如下圖所示。問:(l)能否從某地出發,經過這15座橋各一次後再回到出發點?

(2)若不要求回到出發點,能否在一次散步中,穿過所有的橋各一次?若可以,請把路徑寫出。


解:將該問題進行抽象,如下圖所示.(1)就變成了是否存在歐拉回路的問題了;(2)就變成了是否存在尤拉路徑的問題了.


    A和B是通偶數座橋的地方,C和D是通奇數座橋的地方,滿足尤拉給出的判定規則(2),即如果只有兩個地方通奇數座橋,可以從這兩個地方之一出發,找到尤拉路徑;但不滿足規則(3),即不存在歐拉回路。