《数据结构[Python语言描述]》教案第14课图(7.4-7.7).docx
《《数据结构[Python语言描述]》教案第14课图(7.4-7.7).docx》由会员分享,可在线阅读,更多相关《《数据结构[Python语言描述]》教案第14课图(7.4-7.7).docx(6页珍藏版)》请在优知文库上搜索。
1、课题第14课图(7.4-7.7)课时2课时(90min)教学目标知识目标:掌握图的应用,包括最小生成树、最短路径、拓扑排序和关键路径技能目标:(1)能利用图解决实际应用中的最短路径问题(2)能利用AOE网预估一个工程的完工时间素质目标:树立全局意识,学会抓住关键,并利用关键环节掌控全局进展教学重难点教学重点:最小生成树的算法、求最短路径的算法、求解关键路径的步骤教学难点:最小生成树的算法、求最短路径的算法教学方法问答法、讨论法、讲授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:
2、什么是最小生成树?【蚂思考、传授新知【教师】通过学生的回答引入要讲的知识,介绍最小生成树、最短路径,拓扑排序和关催路径7.4最小生成树在一个无向连通网的所有生成树中,各条边权值之和最小的生成树称为该无向连通网的最小生成树.构造最小生成树时,需要遵循如下3条原则.(1)尽可能选取权值最小的边,但不能构成回路。(2)最小生成树应具有n个顶点和n-l条边。(3)最小生成树一定是连通的。常用的构造最小生成树的算法有Prim算法和Kruskal算法。7.4.1Prim算法假设N=(V,E)是一个无向连通网,其中V为顶点集,E为边集。另设置两个集合U和TE,令U为最小生成树的顶点集,TE为最小生成树的边集
3、,则使用Prim算法求最小生成树T的步骤如下。(1)令U的初始值为U=uO)(uOV),TE的初始值为TE=(2)在所有uU,vV-U的边(u,v)E中选择一条权值最小的边(U(XVO),并将其加入TE中,同时将顶点VO加入U中。(3)重复步骤(2),直到U=V。此时,TE中必含有n-l条边,T=(U,TE)即为N的最小生成树。【算法描述】详见教材【教师】讲解实例72(详见教材)【提示】在选择权值最小的边时,可能出现多条边权值相同的情况,此时可任选其一,因此无向连通网的最小生成树不一定是唯一的。7.4.2Kruskal算法假设N=(V,E)是一个无向连通网,其中V为顶点集,E为边集,则使用Kr
4、uskal算法求最小生成树T的步骤如下。(1)令N的最小生成树T的初始状态为T=(V,),即T由V中的n个顶点构成,顶点之间不存在边。(2)在E中选择权值最小的边(u.v),若该条边未使最小生成树T形成回路,则将其加入T中,否则舍去该条边。(3)重复步骤(2),直到T中所有顶点构成一个连通分量(或者包含n-1条边).KrUSkal算法的关键是判断选择一条权值最小的边后最小生成树是否会形成回路,这可以通过判断该条边的两个顶点所在的连通分量是否相同来解决。【教师】随机邀请学生回答以下问题KrUSkal算法的判断规则是什么?【学生】聆听、思考、回答判断规则为,每个连通分量用其中一个顶点的编号来标识(
5、称为连通分量编号),同一个连通分量中所有顶点的连通分量编号相同,不同连通分量中两个顶点的连通分量编号不相同。如果选择的边的两个顶点的连通分量编号相同,则一定会形成回路,此时,须舍弃该条边。【算法描述】详见教材【教师】讲解实例7-3(详见教材)7.5 最短路径计【教师】随机邀请学生回答以下问题什么是最短路径?【学生】聆听、思考、回答在带权图中,路径长度不再是一条路径中经过的边的数目,而是所经过边的权值之和。从一个顶点到另一个顶点可能存在多条路径,其中权值之和最小的路径称为最短路径。实际中很多问题都可以看作图的最短路径问题,如求城市A到城市B的最短行驶8巨离。常用的求最短路径的算法有Dijkstr
6、a算法和Floyd算法。7.5.1 Dijkstra算法Dijkstra算法可解决有向网中从源点v到其他顶点的最短路径问题。假设G=(KE)是一个有向网,其中,V为顶点集,E为边集。如果用S表示已求得最短路径的顶点集,用U表示尚未求得最短路径的顶点集,则使用Dijkstra算法求最短路径的步骤如下。(1)初始时,S中只有源点v,U中是除源点v之外的其他顶点。(2)从U中找出源点v到U中最短路径长度最小的顶点u,并将其加入S中。(3)以顶点u为中间点,此时从源点v到某个顶点(假设为顶点Vl)的最短路径有两条,一条经过顶点U;另一条不经过顶点Ue(4)重复步骤(2)和步骤(3),直到所有顶点均加入
7、S中。【算法描述】详见教材【教师】讲解实例7-4(详见教材)7.5.2 Floyd算法Floyd算法可解决有向网中任意两个顶点之间的最短路径问题。Floyd算法可以使用n阶方阵来描述,其中D-li(jl表示从顶点i出发不经过其他顶点直接到达顶点j的路径长度,D(k)i(11表示从顶点i到顶点j的中间可能经过顶点0、1、k,但不经过顶点k+1、k+2、n-1的最短路径长度。所以,Floyd算法的求解过程是按照图中顶点的顺序依次计算D(k)(0kn-l),最终得到的D(n-l)ij就是从顶点i到顶点j的最短路径长度。【算法描述】详见教材【教师】讲解实例7-5(详见教材)7.6 拓扑排序在实际生活中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构【Python语言描述 数据结构 Python 语言 描述 教案 14 课图 7.4 7.7