第六章 图 最小生成树(普里姆、克鲁斯卡尔、迪克斯特拉、拓扑排序、关键路径)

1.一个连通图的生成树:一个极小连通子图,含有全部顶点和构成一个树的n-1条边。
在这里插入图片描述
命题:如果一颗生成树上添加一条边,必定构成一个环。
1)由深度优先遍历得到的生成树称为 深度优先生成树。
2)由广度优先遍历得到的生成树称为 广度优先生成树。

连通图:仅需调用遍历过程一次,从图中任一顶点出发,便可以遍历图中的各个顶点,产生相应的生成树。
非连通图:需要多次调用遍历过程。每个连通分量中的顶点集和遍历时走过的边一起构成一颗生成树。所有连通分量的生成树组成非连通图的生成森林

   1)对于带权连通图G(权值均大于0),可能有多棵不同生成树。
   2)每颗生成树的所有边的权值之和可能不同。
   3)权值之和最小的生成树为最小生成树

一。普里姆(Prim)算法,构造最小生成树。过程:
1)初始化U={v},v到其它顶点的所有边为侯选边;
2)重复一下步骤n-1次,使得其它n-1个顶点被加入U中:
a.从候选码边中挑选 权值最小的边输出, 设该边在V-U中的顶点是k,将k加入U中
b.考察当前V-U中的所有顶点j,修改侯选边;若(j,k)的权值小于原来和顶点k关联的侯选边,则用(k,j)取代后者作为侯选边。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二。克鲁斯卡尔(Kruskal)求带权无向图的最小生成树的构造性算法。

   按  权值的递增    次序选择合适的边来构造最小生成树的方法
        1)置U的初值等于V(包含G中的全部顶点),TE的初值为空集(即图T中每一个顶点都构成一个连通分量)表示最小生成树的边集。
        2)将图G中的边按权值从小到大的顺序依次选取:
             a.若选取的边未使生成树T形成回路,则加入TE;
             b.否则舍弃,知道TE中包含n-1条边为止。

在这里插入图片描述三,最短路径 , 从一个顶点到其余各顶点的最短路径
单源最短路径问题:Dijkstra算法
迪克斯特拉算法过程:
1)初始化:S只包含源点即S={v},v的最短路径为0(本身)。U包含除v外的其它顶点,U中顶点i距离为边上的权值(若v与i有边<v,i>)或无穷(若i不是v的出边邻接点)
2)从U中选取一个距离v最小的顶点u,把u加入S 中(该选定的距离就是v-》u的最短路径长度)。
在这里插入图片描述
3)以u为新的考虑的中间点,修改U中各顶点j的最短路径长度:若从原点v->j (j属于U)的最短路径长度(经过顶点u)比原来最短路径长度(不经过顶点u)短,则修改顶点j的最短路径长度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**加粗样式
拓扑排序
设G=(V,E)是一个具有n个顶点的有向图,V中顶点序列v1,v2…vn称为一个拓扑序列,当且仅当该顶点序列满足下列条件:
若<i,j>是图中的边(或从顶点i->j有一条路径):
则在拓扑序列中顶点i必须排在顶点j之前
在这里插入图片描述
在一个有向图中找一个拓扑序列的过程称为拓扑排序。
在这里插入图片描述
课程之间的先后关系可用有向图表示:
在这里插入图片描述

拓扑排序步骤:

1)从有向图中选择一个没有前驱的顶点并且输出它。
2)从图中删去该顶点,并且删去从该顶点发出的全部有向边。
3)重复上述两步,直到剩余的图中不再存在没有前驱的顶点为止。

在这里插入图片描述
注意:都是从入度为零的点开始的,出度少的开始
在这里插入图片描述
aebcd
abecd
abced

关键路径

在这里插入图片描述
在这里插入图片描述
1)时间的最早开始和最迟开始时间
事件v的最早开始时间:规定源点事件的最早开始时间为0,定义图中任一事件v的最早开始时间ee(v)等于x,y,z到v所有路径长度的最大值
在这里插入图片描述
事件v的最迟开始时间:定义在不影响整个工程进度的前提下,事件v必须发生的时间成为v的最迟开始时间,记作le(v)。le(v)应等于ee(y)与v到会点的最长路径长度之差。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值