5.数据结构期末复习之图以及相关算法

1.应用:

  1. 教学计划(先修什么才能修什么课程)
  2. 社交网络
  3. 地图导航

2.什么是图? 顶点(有穷非空个)+顶点的边 ,抽象为G=(V,E) =(Vert,Edge)

1.无向图: 点到点都可以到达 表示为(vi,vj)
2.有向图 只能一个点到另外一个点 表示为<vi,vj>

在这里插入图片描述
又分为:

1.非带权图(上面的例子就是)
2.带权图(网图)

在这里插入图片描述
又又分为:

1.稠密图(边多) 只是相对概念
2.稀疏图(边少)
在这里插入图片描述

3.几个概念
1.邻接(从本节点可以到达另外一个节点) 邻接点(可到达的点),依附(与邻接相反的概念) 如图

无向图: A 邻接C和B
有向图: A邻接B和C D邻接A

在这里插入图片描述

  1. 完全图
    1. 无向完全图 任意两个点有边
    边数=n*(n-1)/2 (n是节点数)
    2. 有向完全图 任意两点有方向相反的两条弧
    边数=n*(n-1)

在这里插入图片描述

  1. 度(无向图):边数
    入度(有向图) 进入弧头有多少个
    出度(有向图) 出去弧头有多少个

4,在这里插入图片描述

  1. 路径:顶点的序列
    简单路径: 点不重复走
    回路:成一个环形
    简单回路:成环状但是点不重复
    在这里插入图片描述

5.路径长度(边的权相加)
在这里插入图片描述
6.子图 G’(V’,E;) 属于 G(V,E)这个图
在这里插入图片描述
7.连通顶点:之间有路径
连通图: 任两点可以访问(可以间接通过其他节点)
非连通图: 任两点不能连通
连通分量: 连通 后 里面的元素 (是图的极大连通子图)
极大连通子图: 加一个点连通 去边不连通
(有向)强连通分量: ^同理
在这里插入图片描述
在这里插入图片描述
请添加图片描述
在这里插入图片描述

4.图的深度优先遍历(需要stack栈辅助) dfs一边入栈一边访问 如果访问完了出栈访问 (DFS deep first search)

在这里插入图片描述
5.图的广度优先遍历(像树层次遍历)(需要队列辅助) 先访问相邻的全部节点后访问,相邻的相邻(BFS breath first search 流动优先)在这里插入图片描述

//从a出发
在这里插入图片描述

6.图的邻接矩阵(顺序存储存储图)(一维数组)(稠密图)

1.一维(存顶点)+二维(顶点之间的关系)
edge[i][j]=1 连接的 ------如果----- =0 不连接
在这里插入图片描述2.怎么求每个节点的度?(无向图) 一行的值相加即可 如: 上面 v0的度为2 v1的度为3
(有向图) j是出度 i是入度
在这里插入图片描述
3.网图的(带权)(需要多一个存全都二维[])
在这里插入图片描述

7.图的邻接表(数组+链表)(改进了连接矩阵空间复杂度为O(n^2) 存稀疏图大量浪费空间)

1.无向 空间复杂度为O(n+e) 有n个顶点 e条边
在这里插入图片描述2.有向的(链表的的指向,代表图箭头的方向)
在这里插入图片描述3.带权的(2的基础上链表加个权值字段)
在这里插入图片描述

8.最小生成树(实际运用)(把图转换为树)

1.定义 (是极小连通子图 含 n-1条边)
在这里插入图片描述
2.代价: 权之和最小
在这里插入图片描述
3.在实际的应用(光纤布线,需要最短的距离,物流站点的设置)

9.最小生成树值Prim算法(无向图)(加入节点作为一个整体)必须访问全部节点结束
关键字: 整体

  1. 步骤:
    1. 从任意一点出发
    2. 找(包含进来节点周围)最短边!!!,然后加入节点作为一个整体!!!(不能为环)
    例如:

在这里插入图片描述

第二个例子 (好办法,使用圈圈辅助,容纳为一个整体)

在这里插入图片描述
10.最小生成树值Kruskal算法(无向图)(全部点作为整体,分别在点与点直接连接)(适合边多的)(两个算法,生成树可能不一样,但权值加起来是一样的)
关键字: 部分

步骤:
1.画出全部点
2.全部边的权值放到一个数组里面从小到大排序
3.找到这个图最小权值的边连接,如果成环,剔除这个边
4.不停做3…
在这里插入图片描述

11.最小生成树之Dijkstra算法(上面两种算法是给你一个图生成树,求任意两点的最短距离)(不用于负权值) (不必访问所有顶点)复杂度O(n^2) 关键字: 以前
在这里插入图片描述
下面是求1->3的最短路径(需要从以前路径比较[看看是否到达这个点])

在这里插入图片描述
12.Floyd算法(和dj一样求任意两点的最短距离)(适合负权值)(不必访问所有顶点)(!!!遍历全部节点作为中转节点,如果中转后更小改值) 关键字: 中转

在这里插入图片描述

13.AOV网(activity on vertex network)(不一定有起点和终点)

  1. 工程:所有工程有子工程,必须完成子过程才能完成工程(说人话就是,一件事情有他的前提条件,必须先做完切菜洗菜,才能炒菜)
  2. 使用拓扑排序(有向无环图)(topology拓扑学 位置学的英译)(一个点在path不重复出现)判断AOV网是否有回路
    在这里插入图片描述
    14.AOE网(AOE+权[时间] ) 边上的每个活动都有持续时间 activity on edge network(一定有源点[入度为0]和终点[出度为0])
    1.解决的问题: 总工程最长(短)要多少时间, 缩短工期加快哪些活动更有效
    2.关键路径(最长的路径,不同方案下)

在这里插入图片描述

3.(算法过程而不是肉眼看到的)
在这里插入图片描述
//核心是最早开始时间是 路径最长的, 然后反推相同的就是关键路径
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值