从哈密尔顿图到旅行货郎问题.docVIP

  • 7
  • 0
  • 约6.86千字
  • 约 12页
  • 2017-03-27 发布于河南
  • 举报
从哈密尔顿图到旅行货郎问题

从哈密尔顿图到旅行货郎问题 在这点上这记者是说对了。“旅行货郎问题”目前是许多国家(如西德、日本、苏联、英国、美国、法国)的运筹学工作者研究的热烈课题。为了要了解这问题,我们可要知道目前在图论(Graph Theory)上许多人正在研究一种图──哈密尔顿图(Hemilton graphs)。 一、哈密尔顿图的由来 在17—18世纪时,欧洲宫庭及一些贵族很喜欢玩西洋象棋,西洋象棋中的骑士(knight)是对应我们中国象棋的“马”,而它通常是刻成一个马头,跑法也是和中国象棋的“马”一样,走“日”线──即从日的一角沿着对角线跃到另一角。 在1771年,就有一位名叫范德蒙(A.Vandermonde)的法国数学家,写了一篇文章研究所谓“棋盘的骑士问题”。这问题是这样:在8×8的棋盘格的随意一个位置,我放一个骑士,然后我想法子使他跑遍棋盘的所有的格子,走过的不许再走,我能不能使骑士最后回到原来的位置? 这个问题并不简单,许多象棋爱好者及数学家曾坐下来研究这个问题。我这里列出一个情形的解(见图一),我将棋盘的左下角的格选为起始位置,把它定为1,读者可以验证根据图一的跑法,骑士最后是能跑回1的。 56 41 58 35 50 39 60 33 47 44 55 40 59 34 51 38 42 57 46 49 36 53 32 61 45 48 43 54 31 62 37 52 20 5 30 63 22 11 16 13 29 64 21 4 17 14 25 10 6 19 2 27 8 23 12 15 1 28 7 18 3 26 9 24 图一 “棋盘骑士问题”的一个解法 18世纪的大数学家欧拉(Euler),在1759年就系统地研究过这个问题,也得到了一些结果。以后德国数学家高斯也曾对这问题发生兴趣,花过一些时间研究它及另外一个棋盘的“皇后问题”。 我们现在把棋盘上的格子对应在一个平面上的一个小圆点,这样我们在平面上就有64个小圆点。从一个格子用骑士的走法我们可以抵达不同数目的格子:如果是处在棋盘的四个角,只能有两种跑法;在其他边缘的格子就有三种跑法;一般当中的格子,就有四种可能的跑法。我们把平面上的点用弧线连接,两个点有一条弧线连起当且仅当(if and only if)我们可以从它们所对应的格子将骑士移动。我们得到了一个图( graph)。 在图中取一个顶点v0,如果我们有一个弧线把它和另外一个点v1联起来,我们就用(v0,v1)来表示这个弧线。假定我有一系列点v0,v1,v2,…,vn其中没有两个相同以及一序列的弧线存在(v0,v1),(v1,v2),…,(vn-1,vn),(vn,v0),使到我从v0出发可以经过v1,v2,…,vn最后由vn回到v0,我就说这些弧线组成一个回路(circuit),为了方便,我们用下面的记号表示这回路:(v0,v1,v2,…,vn,v0)。 如果我有一个图G有n+1个顶点(vertices) v0,v1,v2,…,vn ,而我能找到一个回路(v0,v1,v2,…,vn,v0),那么我就说这个图是哈密尔顿图(Hamilton graph),这个回路称为哈密尔顿回路(Hamilton circuit)。 因此,“棋盘的骑士问题”实际上就是要判断它所对应的图是否是哈密尔顿图的问题。 为什么叫哈密尔顿图?哈密尔顿是谁呢? 哈密尔顿是爱尔兰的一位数学家和天文学家。他的一生是多姿多彩的,我在《数学和数学家的故事》第一集里有详细介绍他的工作和生平,读者可以找来一读。 自从哈密尔顿发现“四元数”之后,他又发现了另外一种他命名为“The Icosian Calculus”的代数系统,这系统有加和乘的运算子(operators),可是乘法不满足交换律(Commutative law即xy yx这个规律)。 他发现这代数系统是和正则20面体(regularicosion polybedron)有关系。他想到一个游戏,怎样跑遍正则多面体上的所有顶点,而最后又能回到起点的问题。在1857年他把这个游戏的想法以25英镑的价钱卖给一位玩具和游戏制造商。这25英镑在124年前是很好用,在今天拿去伦敦的“唐人区”买“牛腩面”吃可能连十碗都吃不到。 这玩具商把这游戏制造出来了(见图二),在圆盘上有20个代表城市的圆孔,你必须把20个上面标有1,2,3,…,20的木条顺序插进去,代表你经过不同的城市,最后回到原出发点。这个游戏叫“环游世界”,很可惜玩具商人没有从这游戏上赚到钱。 以后人们因这游戏就称这类图为哈密尔顿图。 THE ICOSIAN GAME 二、怎么样的图是哈密尔顿图 给你一个图,你怎么知道它是否是哈密尔顿图呢?当然如果图的顶点不多,你可以试试找哈密尔顿回路就可以解决和判断。你用的是最古老的“尝试和错误

文档评论(0)

1亿VIP精品文档

相关文档