欧拉路径

合集下载

欧拉路径和欧拉回路

欧拉路径和欧拉回路

来自USACO上的例子 来自USACO上的例子 USACO
Stack: 1 4 2 5 6 2 7 3 4 6 Location: 7 Circuit: 1
来自USACO上的例子 来自USACO上的例子 USACO
Stack: 1 4 2 5 6 2 7 3 4 67 Location: 5 Circuit: 1
来自USACO上的例子 来自USACO上的例子 USACO
Stack: Location: 1 Circuit: 1 5 7 6 4 3 7 2 6 524
来自USACO上的例子 来自USACO上的例子 USACO
Stack: Location: Circuit: 1 5 7 6 4 3 7 2 6 5241
Stack: 1 4 2 5 6 2 7 Location: 3 Circuit: 1
来自USACO上的例子 来自USACO上的例子 USACO
Stack: 1 4 2 5 6 2 7 3 Location: 4 Circuit: 1
来自USACO上的例子 来自USACO上的例子 USACO
Stack: 1 4 2 5 6 2 7 3 4 Location: 6 Circuit: 1
具体步骤
如果此时与该点无相连的点,那么就加入路径 中. 如果该点有相连的点,那么就列一张表,遍历 这些点,直到没有相连的点. 处理当前的点,删出走过的这条边,并在其相 临的点上进行同样的操作.并把删除的点加入 到路径中去. 其实这就是一个递归过程.
但选择起点时要注意.如果所有点的度数为偶 数,那么可以依题意随意选择,都可得到一条 欧拉回路. 如果有的点度数为奇数,那么先判定是否存在 欧拉路径,如果存在,那么起点必须从度数为 奇数的点开始.

欧拉路径——精选推荐

欧拉路径——精选推荐

欧拉路径貌似很多博客都喜欢⽤⼀笔画来引⼊欧拉路径,但像您这样的强者时⽆需那些繁琐的东西,我们直接进⼊正题。

定义:图中经过所有边恰好⼀次的路径叫做欧拉路径。

如果起点和终点⼀样,那它就是欧拉回路。

判定:判定当前图中是否存在欧拉路径其实⽐寻找更⿇烦显然,欧拉回路也是欧拉路径,但为了⽅便区分,下⽂判定中的欧拉路径特指起点和终点不同。

判定⽅法:⾸先,当且仅当这张图将有向边视为⽆向边时联通。

1. 有向图欧拉路径:图中恰好存在⼀个点(起点)出度⽐⼊度多1,恰好⼀个点(终点)⼊度⽐出度多1,剩下所有点⼊度等于出度。

2. 有向图欧拉回路:图中所有点⼊度等于出度(任⼀点都可以做起点和终点)。

3. ⽆向图欧拉路径:图中恰好有两个点的度数为奇数(起点和终点),其他所有点的度数为偶数。

4. ⽆向图欧拉回路:图中所有点的度数都为偶数(任⼀点都可以做起点和终点)。

寻找:算法⼀:Fluery 算法。

时间复杂度O(m2),不常⽤。

算法⼆:Hierholzer 算法。

时间复杂度O(m),常⽤。

只写 Hierholzer 算法,做法⾮常简单。

1. 从起点开始dfs,标记选了的边不能重复选,这⾥⽤类似Dinic的当前弧优化。

2. 当前点不存在出边时回退,并将当前点⼊栈P。

3. 当dfs结束时倒序输出栈P中的节点即可。

算法导论上似乎有该算法证明。

例题:题⽬保证联通,所以直接判断⼊度和出度即可。

要求字典序最⼩,那么每次都要选能到达的最⼩的点。

可以将边离线下来按v从⼤到⼩排序,然后依次插⼊到链式前向星⾥,这样可以保证每次选到的都是最⼩的。

当前弧优化不加复杂度就假了。

code:#include<bits/stdc++.h>using namespace std;#define int long long#define in read()inline int read(){int p=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){p=p*10+c-'0';c=getchar();}return p*f;}const int N=1e5+5;const int M=2e5+5;int n,m;struct edge{int v,nxt;}e[M];inline void insert(int u,int v){e[++en].v=v;e[en].nxt=head[u];head[u]=en;}struct QWQ{int u,v;}E[M];inline bool cmp(QWQ a,QWQ b){return a.v>b.v;}int p[M],pn;void dfs(int u){for(int i=head[u];i;i=head[u]){int v=e[i].v;head[u]=e[i].nxt;dfs(v);}p[++pn]=u;}int flagin,flagout,flag;int ind[N],outd[N];int S=1;signed main(){n=in,m=in;for(int i=1;i<=m;i++)E[i].u=in,E[i].v=in,outd[E[i].u]++,ind[E[i].v]++;sort(E+1,E+1+m,cmp);for(int i=1;i<=m;i++)insert(E[i].u,E[i].v);for(int i=1;i<=n;i++){if(ind[i]!=outd[i])flag++;if(ind[i]==outd[i]+1)flagout++;if(ind[i]+1==outd[i])flagin++,S=i;}if(flag==0||(flag==2&&flagout==1&&flagin==1)){dfs(S);for(int i=pn;i>=1;i--)cout<<p[i]<<' ';}else cout<<"No";return 0;}练习:将每个字母视为点,单词视为边,就和上⾯差不多了,注意欧拉路径的起始点。

第十三章 欧拉图

第十三章 欧拉图

第十三章欧拉图与哈密顿图欧拉图产生的背景就是前面介绍的七桥问题。

1736年,瑞士数学家欧拉发表了图论的第一篇著名论文“哥尼斯堡七桥问题”。

欧拉在这篇论文中提出了一条简单准则,确定七桥问题是不能解的。

下面给出有关定义及定理。

定义2-1.1 设是无向连通图或有向弱连通图。

通过G的每条边一次且仅一次的路径(循环)称为G的欧拉路径(循环)。

具有欧拉循环的图称为欧拉图(规定平凡图是欧拉图)。

例2-1.1图2-1.1,有欧拉路径,,无欧拉路径和欧拉循环,,是欧拉图。

如何判断一个无向连通图或有向弱连通图是否为欧拉图?是否有欧拉路径?定理2-1.1 设是无向连通图,则1)当且仅当G的每个顶点都是偶顶点时,G才是欧拉图。

2)当且仅当G除两个顶点是奇顶点外,其他顶点都是偶顶点时,G才有欧拉路径。

证明 1)设是欧拉图:当时,G只含一个顶点,这个顶点显然是偶顶点。

当时,由所给条件知有G的欧拉循环,因为G的每条边在中出现且仅出现一次,故必通过G的每个顶点,且通过顶点时,此顶点的度就增加2,从而G的每个顶点都是偶顶点。

设G的每个顶点都是偶顶点:当时,G显然是欧拉图。

当时,由所给条件,G中必有循环,故也必有基本循环,从G中去掉各边后得生成子图,中每个顶点仍为偶顶点。

若是零图,则就是G的欧拉循环。

即G是欧拉图;若不是零图,即还有边,则必有与有一公共顶点的基本循环。

由于两条有一公共顶点的简单循环通过这个公共顶点可合并成一条简单循环,故和可合并成一条简单循环。

再从中去掉各边后得;最后得出一条通过G每条边的简单循环,这就是G的欧拉循环,故G是欧拉图。

2)设和是G有欧拉路径当且仅当有欧拉循环(即是欧拉图),故由1)即得结论。

★用上面定理就能判断一个无向连通图是否为欧拉图,是否有欧拉路径。

例2-1.2 对于图2-1.2图2-1.2根据定理2-1.1中1)的结论知是欧拉图。

还可由其证明方法具体找出一条欧拉循环。

先将和合并成简单循环,再将和合并成简单循环,这就是G的一条欧拉循环。

欧拉路径和欧拉回路课件

欧拉路径和欧拉回路课件

04
欧拉路径和欧拉回路的比较
概念与性质的比较
总结词
欧拉路径和欧拉回路是图论中的重要概 念,它们在定义和性质上有一些不同之 处。
VS
详细描述
欧拉路径是指连接图中所有顶点的路径, 且每条边仅被遍历一次;而欧拉回路是指 连接图中所有顶点的闭合路径,即起点和 终点是同一个顶点。欧拉路径要求每条边 仅被遍历一次,而欧拉回路则要求所有边 至少被遍历一次。此外,欧拉路径不一定 是唯一的,但欧拉回路一定是唯一的。
03
欧拉回路
定义与性质
定义
欧拉回路是指一条路径,该路径在图 中经过每条边恰好一次,并且起点和 终点重合。
性质
欧拉回路是图论中的一个基本概念, 它具有一些重要的性质,如连通性、 闭合性等。
计算方法与技巧
计算方法
欧拉回路的计算方法主要有穷举法和动态规划法。穷举法是通过搜索所有可能 的路径来找到欧拉回路,而动态规划法是通过将问题分解为子问题,并利用子 问题的解来求解原问题。
欧拉路径和欧拉回路课件

CONTENCT

• 引言 • 欧拉路径 • 欧拉回路 • 欧拉路径和欧拉回路的比较 • 欧拉路径和欧拉回路的扩展 • 结论与展望
01
引言
定义与概念
欧拉路径
一个图形中所有边的端点被访问 一次且仅一次的路径。
欧拉回路
一个图形中所有边的端点被访问 一次且仅一次的闭环路径。
研究历史与现状
应用实例
要点一
总结词
欧拉路径在图论、计算机科学、生物信息学等领域都有广 泛的应用。
要点二
详细描述
1)图论:欧拉路径是图论中的一个重要概念,它可以用于 解决许多图论问题,如最短路径、连通性等。2)计算机科 学:在计算机科学中,欧拉路径被用于研究图的遍历算法 和图的复杂性理论。3)生物信息学:在生物信息学中,欧 拉路径被用于研பைடு நூலகம்基因序列的比对和分析,以及蛋白质相 互作用网络的分析。

七桥问题的通用规则

七桥问题的通用规则

七桥问题的通用规则七桥问题,也被称为哥尼斯堡七桥问题,是一道著名的数学难题。

该问题最早由瑞士数学家欧拉在18世纪提出,并成为图论的开端之一。

七桥问题描述了一个位于哥尼斯堡的岛屿上的一系列桥梁以及这些桥梁连接的方式。

解决这个问题需要运用到图论中的一些基本原理和规则。

在七桥问题中,岛屿上有一些桥梁,而我们的目标是从一个起点开始,遍历每一座桥且仅经过一次,最终回到起点。

然而,这个问题的挑战在于,岛屿上的桥梁连接方式并不是一个简单的环,而是一个复杂的图。

因此,我们需要运用一些通用规则来解决这个问题。

首先,我们需要了解一些图论的基本概念。

在图论中,桥梁被表示为图中的边,而岛屿则被表示为图中的顶点。

七桥问题中的桥梁连接方式可以被看作是一个图,我们需要将其转化为数学模型,以便进行分析和解决。

在这个过程中,我们可以使用图的邻接矩阵或邻接表来表示桥梁和岛屿之间的连接关系。

接下来,我们可以运用欧拉路径的概念来解决七桥问题。

欧拉路径是指一条路径,该路径恰好经过图中的每一条边一次。

对于七桥问题,我们的目标是找到一条欧拉路径,使得我们可以从一个起点开始,遍历每一座桥且仅经过一次,最终回到起点。

根据欧拉路径的特性,我们可以得出以下的通用规则。

首先,欧拉路径存在的条件是:图中所有顶点的度数为偶数,或者恰好有两个顶点的度数为奇数,其余顶点的度数为偶数。

度数是指与顶点相连的边的数量。

因此,在七桥问题中,如果岛屿上的每一座桥的连接点的度数都是偶数,或者有且只有两座桥的连接点的度数为奇数,我们就可以找到一条欧拉路径。

其次,如果图中存在度数为奇数的顶点,那么我们的欧拉路径的起点和终点一定是这些顶点中的一个。

因为每条桥梁的连接点度数为偶数,除了起点和终点外,其余所有顶点的度数一定是偶数,无法成为欧拉路径的起点和终点。

因此,在七桥问题中,如果岛屿上存在两座或更多的桥梁连接点的度数为奇数,我们就可以从其中一个度数为奇数的连接点出发,找到一条欧拉路径。

欧拉图和哈密尔顿图

欧拉图和哈密尔顿图
欧拉回路是指不重复地走过所有路 径的回路,而哈密尔顿环是指不重复地
走过所有的点,并且最后还能回到起点的回 路
哈密尔顿图
定义:通过图G的每个结点一次且仅一次的环称为哈密尔顿环。具 有哈密尔顿环的图称为哈密尔顿图。通过图G的每个结点一次且仅 一次的开路称为哈密尔顿路。具有哈密尔顿路的图称为半哈密尔 顿图。
f:说法语、日语和俄语;
g:说法语和德语.
c f
g
解 设7个人为7个结点, 将两个懂同一语言的人之间连一条边
(即他们能直接交谈), 这样就得到一个简单图G, 问题就转化为
G是否连通. 如图所示, 因为G的任意两个结点是连通的, 所以
G是连通图. 因此, 上述7个人中任意两个人能交谈.
解二
c


e
a

半哈密尔顿图
哈密尔顿图 哈密尔顿图
N
周游世界的游戏——的解
哈密顿图
哈密顿图
无哈密顿 通路
哈密顿图
存在哈密 顿通路
实例
在上图中, (1),(2) 是哈密顿图;
实例
已知有关人员a, b, c, d, e, f, g 的有关信息
a:说英语;
b:说英语或西班牙语;
c;说英语,意大利语和俄语;
a:说英语; b:说英语或西班牙语;


c;说英语,意大利 语和俄语;
b
g
d:说日语和西班牙语 e:说德语和意大利语; f:说法语、日语和俄语; g:说法语和德语.
西
d


f
如果题目改为:试问这7个人应如何安排座位, 才能使每个人都能与
他身边的人交谈?
解:用结点表示人,用边表示连接的两个人能说讲一种语言,够造

欧拉回路构造算法

欧拉回路构造算法

欧拉回路构造算法全文共四篇示例,供读者参考第一篇示例:欧拉回路是图论中的一个重要概念,在一幅图中指的是一条包含图中每一条边且经过每一条边仅一次的闭合路径。

欧拉回路构造算法是指寻找一条欧拉回路的方法,即将给定的图转化为满足欧拉回路性质的路径。

欧拉回路构造算法有多种,其中最为经典和常用的算法是Fleury 算法和Hierholzer算法。

Fleury算法是一种基于贪心思想的算法,其基本思路是每次选择一条不是桥的边,通过DFS搜索来构造欧拉回路。

具体步骤如下:1. 从图中任选一个顶点作为起点。

2. 找到可以走的一条不是桥的边,并走向该边所连接的顶点。

3. 如果该边是割边,则在走完该边后,必须选择一条不是割边的边继续前进。

4. 重复步骤2和步骤3,直到不能走为止。

Fleury算法的时间复杂度为O(E^2),其中E为图中的边数。

Hierholzer算法是另一种求解欧拉回路的经典算法,其基本思想是通过遍历所有的边来构造欧拉回路。

具体步骤如下:1. 从图中任意一个顶点开始,选择一条边进行遍历。

2. 如果走到某个节点时无法继续行走,则回退到之前分叉点重新选择一条边继续遍历。

3. 直到遍历完所有的边,形成一个闭合回路即为欧拉回路。

欧拉回路构造算法的应用十分广泛,例如在网络设计、图像处理、数据压缩等领域都有着重要的作用。

通过欧拉回路构造算法,我们可以快速有效地找到一条经过所有边的闭合路径,从而解决一系列实际问题。

欧拉回路构造算法是解决图论中欧拉回路问题的重要工具。

不同的算法适用于不同的情况,可以根据具体问题的要求选择合适的算法。

通过学习和了解欧拉回路构造算法,我们可以更好地运用图论知识解决实际问题,提高问题解决的效率和准确性。

希望本文对读者有所帮助,欢迎大家进一步深入学习和探讨。

第二篇示例:欧拉回路构造算法是图论中一种重要的算法,用于寻找图中存在的欧拉回路。

欧拉回路是指一条包含所有边且不重复经过任何边的闭合路径。

在很多实际应用中,欧拉回路是一个非常有用的概念,比如在电子电路的布线设计、网络路由、以及城市旅行等领域都有很多应用。

欧拉路径

欧拉路径

混合图


混合图的定义: 有的边是有向的,有的边是无向的。例如城市 里的交通网络,有的路是单行道,有的路是双 行道。 找到一个给每条无向的边定向的策略,使得每 个顶点的入度等于出度,这样就能转换成上面 第二种情况。
关于欧拉路径

源点与汇点不为同一点. 判定一个图是否有欧拉路径. 一个无向图中除源点与汇点的度数为奇数 外,其于点的度数都为偶数,那么则存在欧拉 路径.
来自USACO上的例子

Stack: Location: 1 Circuit: 1 5 7 6 4 3 7 2 6 524
来自USACO上的例子

Stack: Location: Circuit: 1 5 7 6 4 3 7 2 6 5241
伪代码
find_circuit(node i) { 如果当前结点没有边 将其加入到路径中 否则:while(node i 没有相连的边) { j是与i相临的顶点(即i,j之间有一条边) find_circuit(j); 删除i和j之间的边 } 将i加入路径中去 }
怎么样求欧拉回路

就是循环地找到出发点. 一个解决此类问题基本的想法是从某个节点开 始,然后查出一个从这个点出发回到这个点的 环路径。这种方法保证每个边都被遍历.如果 有某个点的边没有被遍历就让这个点为起点, 这条边为起始边,把它和当前的环衔接上。这 样直至所有的边都被遍历。这样,整个图就被 连接到一起了。
浅谈欧拉路径
5050309760 李冰
欧拉路径和欧拉回路的定义:

一副图,寻找一条只通过每条边一次的路径叫 做欧拉路径.如果这条路径的起点和终点是同 一点,那么这条路径叫做欧拉回路.
怎么样判断是否存在欧拉回路
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


漢米爾頓環道這個數學名詞來自 一個稱為Icosian Puzzle的遊戲, 於西元1857年由愛爾蘭數學家威 廉漢米爾頓爵士所發明。遊戲的 道具是一個木製的十二面體,每 個面都是個五邊形如右圖所示。 在十二面體的二十個頂點上各有 一個木釘,分別以世界上二十個 城市命名。遊戲的方法是由任何 一個城市出發,經由十二面體的 邊逐次經過其他十九個城市,最 後再回到出發點。



迪瑞克定理則可視為歐芮定理的推論,因為迪瑞克定理的 條件必然使歐芮定理的假設成立。 此二定理都提供了漢米爾頓環道存在的充分條件,但都不 為必要條件。 圖形C5中包含了一個漢米爾頓環道,但圖形並不滿足 兩定理中的假設。 現今所知找出漢米爾頓環道或是判別漢米爾頓環道不存在 的最佳演算法,其時間複雜度為頂點數目指數。若能找出 時間複雜度為頂點的多項式將會是個巨大的突破,因為已 經證明出此問題為NP複雜。

這個問題能抽象化成:在較複雜的圖形(如權數圖)中, 找出漢米爾頓環道,使得總權數越小愈好。
最短路徑問題
距離 飛行時間
丹佛 芝加哥 亞特蘭大 紐約
舊金山 349 1:15 洛杉磯
邁阿密
表示飛行系統的權數圖
權數圖
將一個數字附加在邊上的圖形稱作權數圖 (weighted graph)。它可用來模型化電腦網路。通 訊成本(如電話線路之月租費)、電腦連線間所 需的反應時間,或是兩電腦間的距離等,都有可 能是想要研究的對象。上頁圖形表現的即為將兩 種不同權數附加於飛行系統網路圖之圖學模型。 有越來越多的問題牽涉到權數圖。判斷圖形兩頂 點間的最短路徑便是這類的問題。
推銷員問題不論在實際或是理論上的探討都相當 重要,因此值得投入精力找尋一個有效的演算法 來求解。 目前尚未發現複雜度為多項式的演算法。 一旦這個問題能夠解決,還有許多其他相對的問 題也能同時被求出 。


歐拉、牛頓與萊布尼茲都是屬於新數學理論的開拓者,有 人將歐拉、高斯、黎斯,也有人將歐拉比擬為數學界 的莎士比亞: 普世性、鉅細靡遺、取之不盡、用之不竭。

Read Euler, read Euler, he is the master of us all. P.-S.de Laplace
2 3 2 4 4 2
3
2
3
4 3 3 3
3
存在一個歐拉路徑
3 3 3
存在一個歐拉路徑
6
沒有歐拉路徑
一筆畫問題

試試看能不能用一筆畫畫出這樣的圖形?
A
B

這樣的圖形呢?
A
B
A
B
A
B

能不能用一筆畫畫出這樣的圖形?

怎麼樣的圖才能一筆畫呢?
漢米爾頓路徑
漢米爾頓路徑與環道



定義:一個通過圖形G中所有頂點恰巧一次的簡單路徑, 稱作漢米爾頓路徑(Hamilton path);而一個通過圖形G中所 有頂點恰巧一次的簡單環道,稱作漢米爾頓環道(Hamilton circuit)。 也就是說,圖形G = (V, E)中的簡單路徑x0, x1, …, xn1, xn是 個漢米爾頓路徑,如果V = {x0, x1, …, xn1, xn},且xixj, 0 i, j n。 簡單環道x0, x1, …, xn1, xn, x0 (n > 0)是個漢米爾頓環道,如 果x0, x1, …, xn1, xn是個漢米爾頓路徑。
例:當n 3時,證明Kn存在漢米爾頓環道。 解:我們能由Kn中任何一個頂點開始製造一個漢 米爾頓環道。此環道能以任意選擇之頂點順序來 進行。因為Kn中任意兩頂點都有邊相連結。


雖然沒有可使用的充要條件來判斷漢米爾頓環道的存在與 否。但是目前已找到了一些充份條件。


當圖形中的邊數愈多時,便愈有可能形成漢米爾頓環道。 對於已經存在漢米爾頓環道的圖形而言,增加邊(不增加頂點) 所形成的新圖形中會存在相同的漢米爾頓環道。所以,有理由相 信,當圖形增加新的邊於原有之頂點上時,漢米爾頓環道存在的 可能性也會增加。 只要頂點的分支度相當大時,應該能找到判斷漢米爾頓環道存在 的充分條件。
定義: 一個圖形G的歐拉環道(Euler circuit)是個包 含圖形G所有邊之簡單環道。 一個圖形G的歐拉路徑(Euler path)是個包含圖形G 所有邊之簡單路徑。

例:下面圖形中哪一個無向圖存在歐拉環道?沒 有歐拉環道的圖形中,何者存在著歐拉路徑? 解:

圖形有尤拉環道,因此有尤拉路徑 圖形沒有尤拉環道,但有一個尤拉路徑


歐拉一生都是在科學院度過。首先是在俄國的聖彼得堡科學院,1740 年後則在柏林科學院待到59歲。由於與腓特列大帝相處的問題,離開 柏林,接受凱薩琳女皇二世邀請再次前往聖彼得堡,一直到他過世( 1783年)。科學院的工作讓他可以專心研究數學,全心全意地將整個 生命投入,就好像牧師將生命奉獻給上帝一般。 相對於牛頓的內向、退縮、神經質,歐拉則是樂觀且仁慈寬厚,甚至 在1771年眼睛完全瞎掉,仍保有樂觀的性格,在幾乎完全失明之下, 仍藉由口述給他的助理(實際上就是他的兒子),來繼續數學創作。 (其中包括需要煩瑣計算之航海天文學的貢獻)在後續的17年間歐拉 繼續發展著數學,如果說有什麼不同,那就是他比以前做得更多。他 的智慧使他巧妙地把握各種概念和想法而無需將它們書寫在紙上,他 非凡的記憶力,使他的頭腦有如一個堆滿知識的圖書館。
歐拉路徑
七橋問題


坎尼斯堡(Kö nigsberg)的一個城鎮普魯西亞(Prussia,現在 是俄羅斯共和國的一部份),被培瑞垓河(pregel river)與其 支流切割成四個部份。在十八世紀的時候,有七座橋連通 這四個區域,如下圖所示。 星期天時,城裡的人們想要在城裡散步。他們想知道,是 否有可能從城裡的某地出發,經過所有的橋恰巧一次,然 後又回到出發點?


例:證明下面所示的圖形皆不存在漢米爾頓環道。 解:圖G不存在漢米爾頓環道,因為它有個分支度為1的頂 點e。就圖形H而言,頂點a、b、d和e的分支度都是2,所 以每個接合這些頂點的邊都必須被使用在漢米爾頓環道中。 如此一來,很明顯的不存在漢米爾頓環道,因為接合於頂 點c的四個邊都被使用到了,而這是不可能的。


瑞士數學家歐拉解決了這個問題。其解法 發表於1739年,可能是第一個使用圖學理 論解決的題目。歐拉利用到多重圖,以頂 點代表四個區域,邊表示橋。此多重圖如 下圖所示。 這個經過所有的橋恰巧一次的問題,透過 圖學模型可以看成:在此多重圖中,是否 存在一個包含所有邊的簡單環道?
A B C
D
歐拉路徑與環道
a b a b a b g
e
c
d
c
d
c
e
f
不存在漢米爾頓環道(因為任何一個包含所有 不存在漢米爾頓環道,也不存在漢米爾頓路徑 頂點的環道一定會經過邊{a, b}兩次)。但是存 (因為任何包含所有頂點的路徑一定會經過邊 存在漢米爾頓環道 {a, b}、{e, f}或是{c, d}兩次)。 在漢米爾頓路徑

由於無法提供每位讀者一個十二面體的木球,因此考慮下 面是個等價的問題:在下面的圖形中,是否存在一個經過 所有頂點恰巧一次的環道?因為此圖形同構於十二面體, 所以解出此問題自然就能達到遊戲的目的。有色線條標示 了一個漢米爾頓謎題的解法。

例:下面所示的簡單圖形中,哪些有漢米爾頓環 道?沒有漢米爾頓環道的圖形中是否存在漢米爾 頓路徑?

距離 飛行時間
丹佛 芝加哥 亞特蘭大 紐約
舊金山 349 1:15 洛杉磯
由丹佛經芝加哥到亞特蘭大的路徑,在 距離(飛行時間)權數圖中的長度為何? 908 + 606 =1514. (2:10 and 1:40 is 3:50.)
邁阿密
推銷員問題

有個推銷員打算造訪n個城市各一次,然後再回到原先出 發之地。他必須選擇怎樣的順序方能使整個行程的距離最 短?
d


是否有個簡易的方法來判定某個圖形中存在著漢米爾頓 環道或是路徑呢?讓人很意外的是,至今還沒找出一個 充分必要的判定準則。不過,還是有些定理提供我們決 定漢米爾頓環道存在與否的充分條件。 有些特殊的條件能用來證明圖形中不會存在漢米爾頓環 道。



圖形中若有分支度為1的頂點就不會有漢米爾頓環道。因為在漢 米爾頓環道中,任一個頂點都與兩個邊接合。 若存在一個分支度為2的頂點,則與此頂點鄰接的頂點必須都出 現於漢米爾頓環道中。 當找出一個漢米爾頓環道時,若與某頂點接合的邊超過2,刪除 環道使用之二邊並不會影響結果,而且一個漢米爾頓環道中不可 能還存在著較小的環道。
圖形既無尤拉環道,也沒有尤拉路徑
歐拉環道和路徑的充分必要條件

定理:一個包含兩個頂點以上的連通多重圖中存 在一個歐拉環道,若且唯若圖形之每個頂點的分 支度數都是偶數。
定理:一個多重圖中存在歐拉路徑,但不存在歐 拉環道,若且唯若圖形中只恰巧有兩個頂點的分 支度是奇數的。

例:下列圖形何者有歐拉路徑?

下面將陳述兩個非常重要的充分條件,分別由迪瑞克 (Gabriel A. Dirac)和歐芮(Oystein Ore)於1952和1960年提出。
迪瑞克定理 若G為包含n (n 3)個頂點的簡單圖,其中每個 頂點的分支度都大於 n/2,則G中存在一個漢米 爾頓環道。

歐芮定理 令G為包含n (n 3)個頂點的簡單圖。若任意不 鄰接的頂點對u和v都使得deg(u) + deg(v) n,則 G中存在一個漢米爾頓環道。

漢米爾頓路徑和環道能用來解決某些特定的問題。

在許多應用中希望能知道是否能找到一個路徑或是環道經過城中 每個交叉路口 否能找到一個路徑或是環道經過每個晶格圖的交點恰巧一次 否能找到一個路徑或是環道經過通訊網路中的節點恰巧一次 例如著名的推銷員問題(traveling salesman problem)便希望能為推銷 員在一組城市中,找出造訪所有的城市的最短路徑。
相关文档
最新文档