离散数学实验二柏超宇重点.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实 验 报 告 (20 / 2016 学年 第 学期) 课程名称 实验名称 实验时间 年 月 日 指导单位 系 指导教师 学生姓名 班级学号 学院 系 专 业 实 验 报 告 实验名称 指导教师 实验类型 实验学时 实验时间 实验目的和要求 二、实验环境 实验设备 三、实验原理及内容 1、问题引入   一个有n个顶点的有向图的传递闭包为:有向图中的初始路径可达情况可以参见其邻接矩阵A,邻接矩阵中A[i,j]表示i到j是否直接可达,若直接可达,则A[i,j]记为1,否则记为0;两个有向图中i到j有路径表示从i点开始经过其他点(或者不经过其他点)能够到达j点,如果i到j有路径,则将T[i,j]设置为1,否则设置为0;有向图的传递闭包表示从邻接矩阵A出发,求的所有节点间的路径可达情况,该矩阵就为所要求的传递闭包矩阵。。。 例如: 有向图为: 由该有向图可以得到初始的邻接矩阵为: 那么warshall传递闭包算法的目的就是由邻接矩阵出发,进行探索求出最终的传递闭包: 2、动态规划求解思路   动态规划将问题分段,本例warshall算法是通过一系列n阶矩阵r(k)来构造最终阶段n阶传递闭包矩阵r(n) R k 由它的前趋 R k-1 计算得到(分级推进计算)。 R 0 ?——该矩阵不允许它的路径中包含任何中间顶点,即从该矩阵的任意顶点出发的路径不含有中间顶点,此即邻接矩阵。 R 1 ?——允许路径中包含第1个顶点(本例编号 1)作为中间顶点。 R 2 ?——允许路径中包含前2个顶点(本例编号1 2)作为中间顶点。 R k ?——允许路径中包含前k个顶点作为中间顶点。 R n ?——允许路径中包含全部 n 个顶点作为中间顶点。 每个后继矩阵 R k ?对其前趋 R k-1 来说,在路径上允许增加一个顶点,?因此有可能包含更多的1(增加前为1的在增加后依然为1)。 3、具体的算法描述 1 warshall(A[1...n,1...n] 2 r 0 -A; 3 for k 1;k n;k++ 4 for i 1;i n;i++ 5 for j 1;j n;j++ 6 r k [i,j] r k-1 [i,j] or r k-1 [i,k] and r k-1 [k,j] ; 7 return r n ; 其他几个性质的代码 : int zifan int flag1 1; for i 1;i n;i++ if a[i][i]! 1 flag1 0; break; return flag1; int fanzifan int flag2 1; for i 1;i n;i++ if a[i][i] 1 flag2 0; break; return flag2; int duichen int flag3 1; for i 1;i n;i++ for j 1;j n;j++ if a[i][j]! a[j][i] flag3 0; break; return flag3; 最后我们可以通过返回flag来确定该矩阵具有的相应性质。 四、实验小结(包括问题和解决方法、心得体会、意见与建议等) 关于warshell算法的理解需要很久,其实是一种分段的计算,其他四个性质要严格按照定义来,有的关系可能既有对称性又有反对称性。 五、指导教师评语 成 绩 批阅人 日 期 6

文档评论(0)

335415 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档