《机器狗问题 课程设计报告》文档.docVIP

  • 53
  • 0
  • 约6.21千字
  • 约 10页
  • 2018-04-10 发布于河南
  • 举报
《机器狗问题 课程设计报告》文档

合肥学院 计算机科学与技术系 课程设计报告 20 ~20 学年第 学期 课程 数据结构与算法 课程设计题目名称 学生姓名 学号 专业班级 指导教师 1、题目 机器狗问题 新一代机器狗(一种通过网络在计算机之间传播的病毒)刚刚被研制出来,它通过网线从一台机转移到另一台机,并破坏掉它所经过的网线(网线被破坏后它自己也不能再次经过),这种机器狗只能通过计算机进入网络。 现有一个网络布局的无向图,包括n台计算机和m条网线,想要该网络彻底瘫痪至少需要放出多少条机器狗。病毒网络布局的无向图,包括n台计算机和m条网线,该网络彻底瘫痪Vexdata为数据域,存放顶点位置,first为链域,指向单链表的第一个结点。 利用深度优先搜索算法(递归调用)遍历整个网络图,每一个连通子图都要从头开始执行该算法,遍历本连通子图的所有结点。定义a为计数变量,初始a=0,每次遍历一个连通子图,a++,统计连通子图个数。 详细设计 存储结构 新建邻接表 连通图的深度优先搜索: 至少的机器狗个数: 5、测试用例和运行结构及算法性能分析 用例1:图1 图2: 1 2 3 1 2 3 4 5 6 4 5 6 邻接表1 1 2 5 ∧ 2 1 ∧ 3 5 6 ∧ 4 5 ∧ 5 1 4 3 6 6 5 3 ∧ 邻接表2: 1 2 5 ∧ 2 1 ∧ 3 4 5 ∧ 5 1 4 6 ∧ 6 5 ∧ 算法性能分析: 在进行深度优先搜索时,我们需要调用dfs_trave()函数。在dfs_trave()中,针对每个没有被访问的顶点调用dfs()函数,它是一个递归函数,完成从该顶点开始的深度优先搜索。如果图是一个连通图,那么完成对visited数组的初始化后,在dfs_trave()中只需调用dfs()函数一次即可完成对图的遍历。当图不是连通图时,则在dfs_trave()中需要针对每个连通分量分别调用dfs()函数。 在图的遍历过程中,对图中的每个顶点之多只调用一次dfs(),使破坏掉的网线无法连通。在当链表中查找邻接点的时间复杂度为O(e),e为图中边的数目,加上访问顶点的时间,就是深度优先遍历图的时间复杂度O(n+e)。 6、用户使用说明 输入图的邻接表时,采用的是头结点插入法,所以在输入时先输入邻接表后面的结点,因为是无相图,据要求一条边只能输入一次,所以输入一条边程序自动生成两条有向边存储在邻接表中。 (1)、输入结点数和边数 (2)、输入具体的边,以输入0,0作为结束标志 (3)、输出每个机器狗破坏网线所经过的结点 (4)、输出至少所需要的机器狗的数量 7、课程设计体会 课程设计中我感到最麻烦的就是问题分析这个环节,首先要将现实生活中的问题转变成数据结构问题,确定用什么结构存储数据最合适,采用什么算法,将这

文档评论(0)

1亿VIP精品文档

相关文档