在无向完全图中寻找边不重复的汉密尔顿回路-Read.docVIP

在无向完全图中寻找边不重复的汉密尔顿回路-Read.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在无向完全图中寻找边不重复的汉密尔顿回路-Read

在无向完全图中寻找边不重复的汉密尔顿回路 摘要:汉密尔顿回路以它可以遍历所有结点的特征,常常被用来解决邮路,架建网络等问题。在带限制条件的路径选择等应用上,常常需要在无向完全图中找出多个边不重复的汉密尔顿回路。结合实际情况,对每个汉密尔顿图进行分析,可以方便的解决最佳路径问题。 关键词:图论;无向完全图;边不重复的汉密尔顿回路 英文翻译:(略) 正文: 图论是近年来发展迅速而又应用广泛的一门新兴学科,它以结点代表事物,连线代表关系可以描述现实世界中的许多状态。随着近十几年来电子计算机的发展,图论算法也充分得到利用,它在计算机科学,电路网络,信息论,控制论,数值分类学甚至于社会科学的一些方面都可称为得力的工具。而图论最早的起源是一些数学游戏中的难题研究,如七桥问题,迷宫问题,匿门博弈问题,以及四色猜想,汉密尔顿(环游世界)数学难题。 针对在无向完全图中寻找边不重复的汉密尔顿回路,为便于理解程序的算法,现在引入一个背景问题:N个人参加一个会议,在会议期间,每天都要在一只圆桌上共进晚餐,如果要求每次晚餐就座时,每个人相邻就座者都不相同,问这样的晚餐最多能进行多少次?如果给定N的值,问该如何排列?问题分析如下:N个人在圆桌上共进晚餐,可以看作在一个圆周上排列N个结点,两人相邻而坐,就可看作两点之间有边相连,因此任意一人与其他人相邻就坐的所有情况,就是N个结点的无向完全图,在KN中任意一个汉密尔顿回路,就表示一次晚餐的就座方式。对KN中任意两个汉密尔顿回路只要没有公共边,这就表示两次晚餐的就座中,每个人相邻就座者都不相同。于是晚餐最多能进行的次数就是KN中无公共边的汉密尔顿回路的个数。由完全图的性质可知,KN中共有[N(N-1)/2]条边,每个汉密尔顿回路有N条边,因此,边不重复的汉密尔顿回路最多有[(N-1)/2]条。 一.相关名词解释: 1.简单图:不含有平行边和环的图叫做简单图。 2.完全图:简单图G=V,E中,若每一对结点间都有边相连,则称该图为完全图。(有N个结点的无向完全图记作KN)例:下图为有五个结点的无向完全图: 3.汉密尔顿回路:给定图G,若G中存在一条回路,经过图中的每个结点恰好一次,这条回路称作汉密尔顿回路。例:在下图中存在一条汉密尔顿回路: 二.构造算法: 1.基本思想:结合实例,对于N个人每次用餐的坐法,只由他们之间的相邻关系决定,排成圆形时,只与排列顺序有关。因此对各种坐法,可认为一人的座位不变,于是可将其设作1号,并不妨将其放于圆心,其余N-1人可放在圆周上。于是边不重复的汉密尔顿回路,可由圆周上不同编号的旋转而得到。 当N为奇数的情况,可做出图1所示: 图1 显然,(1,2,3,4,……,N-2,N-1,N,1)是KN中的一条汉密尔顿回路。现将圆周上的点的编号依次顺时针旋转[360/(N-1)],[2*360/(N-1)],……,[(N-3)/2]*[360/(N-1)],它们分别对应边不相重的汉密尔顿回路: (1,4,2,6,3,8,……,N-1,N-4,N,N-2,1) 图2 即对N-1为奇数的情况,在结点3,结点5的边上添加结点4。 显然,(1,2,3,4,……,N-2,N-1,N,1)是KN中的一条汉密尔顿回路。现将圆周上的点的编号依次顺时针旋转[360/(N-2)],[2*360/(N-2)],……,[(N-4)/2]*[360/(N-2)],它们分别对应边不相重的汉密尔顿回路: (1,5,2,4,7,3,……,N-1,N-4,N,N-2,1) #includeiostream.h class queue{ //定义一个整型队列类 int q[51]; //用数组q来存放队列中的各个元素 int sloc,rloc; //sloc表示队列尾,rloc表示队列头 public: queue(); //声明构造函数 void qput(int i); //往队列中增加元素并排序的函数 void qout(); }a; //声明对象a queue::queue() { sloc=1; rloc=0; //给队列中的两个私有变量赋初值 } vo

文档评论(0)

18273502 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档