图论的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图论的应用
摘 要
图论从诞生至今已近300年,但很多问题一直没有很好地解决。随着计算机科学的发展,图论又重新成为了人们研究讨论的热点,图形是一种描述和解决问题直观有效的手段,这里给出图论在现实生活中的一些应用。 关键词:图论;应用;最小生成树;最短行程
1 引言
图论起源于18世纪。第一篇图论论文是瑞士数学家欧拉于1736 年发表的“哥尼斯堡的七座桥”。1847年,克希霍夫为了给出电网络方程而引进了“树”的概念。1857年,凯莱在计数烷22n n C H 的同分异构物时,也发现了“树”。哈
密尔顿于1859年提出“周游世界”游戏,用图论的术语,就是如何找出一个连通图中的生成圈,近几十年来,由于计算机技术和科学的飞速发展,大大地促进了图论研究和应用,图论的理论和方法已经渗透到物理、化学、通讯科学、建筑学、生物遗传学、心理学、经济学、社会学等学科中。
图论中所谓的“图”是指某类具体事物和这些事物之间的联系。如果我们用点表示这些具体事物,用连接两点的线段(直的或曲的)表示两个事物的特定的联系,就得到了描述这个“图”的几何形象。图论为任何一个包含了一种二元关系的离散系统提供了一个数学模型,借助于图论的概念、理论和方法,可以对该模型求解。哥尼斯堡七桥问题(如图1)就是一个典型的例子。在哥尼斯堡有七座桥将普莱格尔河中的两个岛及岛与河岸联结起来问题是要从这四块陆地中的任何一块开始通过每一座桥正好一次,再回到起点。当然可以通过试验去尝试解决这个问题,但该城居民的任何尝试均未成功。欧拉为了解决这个问题,采用了建立数学模型的方法。他将每一块陆地用一个点来代替,将每一座桥用连接相应两点的一条线来代替,从而得到一个有四个“点”,七条“线”的“图”。问题成为从任一点出发一笔画出七条线再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画的一个判定法则:这个图是连通的,且每个点都与偶数线相关联,将这个判定法则应用于七桥问题,得到了“不可能走通”的结果,不但彻底解决了这
个问题,而且开创了图论研究的先河。
图1 哥尼斯堡七桥问题
2几个有趣的问题
1.1 四色问题
为了能够迅速地区分一个平面地图或球面地图上的各个国家(假设这些国家在地图上都是连通的),需要用若干种颜色对这些国家着色,使得具有公共边界的两个国家涂染不同的颜色.那么,要保证每张地图都能如此着色,最少需要多少种颜色?这个问题是1850年被一名刚毕业的大学生Francis Guthrie首先提出的,直到1976年,四色问题被美国Illinois大学的K.Appel和W.Haken用计算机证明是正确的,这个证明令数学界震惊,它用了1200多小时,作出100亿个独立的逻辑判断.尽管有了这个机器证明,但它仍然是数学上未解决的问题之一。
1.2 Hamilton问题
Hamilton问题是图论中一直悬而未解的一大问题。它起源于1856年,当时英国数学家Hamilton设计了一种名为周游世界的游戏。他在一个实心的正十二面体的十二个顶点上标以世界上著名的二十座城市的名字,要求游戏者沿十二面体的棱从一个城市出发,经过每座城市恰好一次,然后返回到出发点,即“绕行世界”。
正十二面体的顶点与棱的关系可以用平面上的图表示,把正十二面体的顶点与棱分别对应图的顶点与边,就得到正十二面体图(如图2)。
图2 正十二面体Peterson图
1.3 旅行售货员问题
给出城市之间的距离,要求一位推销员从某一城市出发,周游每个城市一次,然后回到出发的城市,并且选的路径最短。
这是一个图论优化问题,最早由美国数学家威特涅于1934年在普林斯顿一次讨论班上提出。1954年几位美国数学家写了第一篇论文,用线性方程的方法解决了49个城市的旅行售货员问题。后来也有不少论文讨论这个问题,在理论和应用上都很有价值。
3最小生成树
有一个石油公司计划为它拥有的许多存储站设计一个管道连接系统,它共有九个存储站,如果两个存储站之间可以修管道,我们就用一条边连接起来,用一个数表示修这两站之间的管道所需的费用,这样这个公司所有的存储站和可能修管道的情况完全可以通过下面这个图表示。
图3 可能修管道的情况
公司设计计划要求:管道网可以把任何两个存储站都连接起来,且装修费用
最小.从图论的角度来说,图3是一个连通图,每一个边都被赋予了一个数,通常我们称之为赋权图.我们的目的是确定出另一个连通图,其顶点集与原图的顶点集一样,仅保留原图中的一部分边,通常我们把这样确定的新图称作原图的生成子图,并且使子图的所有边的权之和最小。我们来简单分析一下子图的属性.首先,我们要找的子图必须是连通的,直观地说子图具有的边应尽量地少,即这个子图不能含有任何回路,因为去掉回路中的任何边都不会影响它的连通性质,我们把不包含回路的生成子图称为原图的生成树。下面的图(如图4)都是不含回路的连通图,又称为树。
图4 不含回路的连通图(树)
很容易看出树中的顶点有两类,一类是度数为1的顶点,称为悬挂点,另一类是度数大于1的顶点,称为割点.一旦去掉割点及与之相联的边,图就不连通了.
我们很容易得出这样一些结论:一个具有n个顶点的连通图,(1)连通子图是生成树的充要条件为它具有n-1条边.(2)子图是生成树的充要条件为它有n -1条边且无回路.
简述一下(1)和(2)的证明,实际上只需做这样一循环的推理:
从一个树即无回路的连通图推出它具有n-1条边,可以用数学归纳法来证明.n=2时结论是显然的.假设对有n个顶点的树结论正确.我们可任取一条边,由于过这条边的两个端点只能有一条边(否则会出现回路),我们可去掉这条边,而把那两个端点看做一个点,这样就得到一个具有k个顶点的树,而它具有k-1条边,所以具有k+1个顶点的树有k条边.
若一个仅有n-1条边的连通图有回路,我们可从回路中去掉一条边,并不妨碍其连通性,这样就得到了一个边数少于n-1的具有n个顶点的树,这与上一个结果是矛盾的。
若图不连通,至少它可以分解为两个连通分支,由于它们都无回路,故每一个分支都是树,而它们的边数一定少于n-2条,这与具有n-1条边矛盾.我们开始的问题变成了求权重最小的生成树了,我们简称为最小生成树.下面我们来介绍一个求最小生成树的算法:
第一步:我们把所有的边按其权重从小到大排列起来.
第二步:先选定第一条边.
第三步:边序列中选择下一条边的原则是此边与前面的边全在一起不构成回路.
第四步:直至选出n-1条边.
这样就得到了一个生成树,关于它一定是最小生成树的证明这里省略.这个算法是1956年由Kruskal提出的又称做Kruskal算法.由于在不出现回路的前提下取权小的边,故又称做“贪婪算法”.下面我们用Kruskal算法讨论本节的例子.
第一步:我们按权重从小到大把边排列为:h(90)→g(90)→f(90)→e(100)→a(100)→b(100)→d(100)→i(150)→c(200)→j(200)→l(200)→p(300)→n(300)→m(400)→o(400)→k(500).
第二步:确定h为第一条边.
第三步:h(90)→g(90)→t(90)→e(100)→a(100)→b(100)→d(100)→i(150).第四步:上面八条边组成了最小生成树.
4最短行程问题
例1 下面给出的是一个城市(用大写字母表示)和道路(用小写字母表示)的分布图(如图4—6),道路的长度附在道路字母的括弧里.问题是如何确定任意两个城市之间的最短道路?