7.图

定义

在这里插入图片描述

  • 顶点集合V有穷非空
  • 任意两个顶点之间都可能有关系,顶点之间的逻辑关系用边来表示。
  • 无向图中的极大连通子图称为连通分量,有向的则称强连通分量。
  1. 要是子图
  2. 子图要是连通的
  3. 连通子图含有极大顶点数
  4. 具有极大顶点数的连通子图包含依附于这些顶点的所有边
  • 无向图中连通且n个顶点n-1条边叫生成树。有向图中一顶点入度为0其余项点入度为1的叫有向树。
    类型
    (1)简单图:不存在顶点到其自身的边,且同一条边不重复出现
    (2)无向完全图:无向图中,任意两个顶点之间都存在边
    (3)有向完全图:有向图中,任意两个顶点之间都存在方向互为相反的两条弧
    (4)有很少条边或弧的图称为稀疏图,反之称为稠密图

抽象数据类型

在这里插入图片描述

存储结构

邻接矩阵


在这里插入图片描述

邻接表

在这里插入图片描述

图的遍历与连通性

深度优先遍历(DFS)

  • 它从图中某个顶点V出发,访问此顶点,然后从v的未被访问的邻接点出发深度优先遍历图,直到图中所有和v有路径相通的顶点都被访问到。
  • 若图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点做起始点,重复上述过程,直至图中所有顶点都被访问到为止。
    在这里插入图片描述

    对于n个顶点e条边的图来说:
    邻接矩阵:O(n*n)
    邻接表:O(n+e)
    对于点多边少的稀疏图来说,邻接表结构使得算法在时间效率上大大提高。

广度优先遍历(BFS)

在这里插入图片描述
在这里插入图片描述
深度优先更适合目标比较明确,以找到目标为主要目的的情况,而广度优先更适合在不断扩大遍历范围时找到相对最优解的情况。

最小生成树

把构造连通网的最小代价生成树称为最小生成树。

Prim

Prim算法是以某顶点为起点,逐步找各顶点上最小权值的边来构建最小生成树。
在这里插入图片描述
O(n*n)

Kruskal

在这里插入图片描述
Kruskal算法主要是针对边来展开,边数少时效率会非常高,所以对于稀疏图有很大的优势;
而Prim算法对于稠密图,即边数非常多的情况会更好一些。

最短路径

Dijkstra算法

每一对顶点之间的最短路径

Floyd算法

拓扑排序

基本概念

在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的图为顶点表示活动的网,我们称为AOV网(Activity On Vertex Network)

  • AOV网中的弧表示活动之间存在某种制约关系
  • AOV网中不能存在回路

在这里插入图片描述

基本思路

从AOV网中选择一个入度为0的顶点输出,然后删除此顶点,并删除以此顶点为尾的弧,继续重复此步骤,直至输出全部顶点或者AOV网中不存在入度为0的顶点为止。

关键路径

基本概念

  • 在表示一个工程的带权有向图中,用顶点表示事件,用有向边表示活动,用边上的权值表示活动的持续时间,这种有向图的边表示活动的网,我们称之为AOE网(Activity On Edge Network)
  • 路径上各个活动所持续的时间之和称为路径长度,从源点到汇点具有最大长度的路径叫关键路径,在关键路径上的活动叫关键活动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值