博客
关于我
数据结构第七章(图---总结一)
阅读量:318 次
发布时间:2019-03-04

本文共 1098 字,大约阅读时间需要 3 分钟。

首先看的是图的各种定义 一大堆 没仔细记 就看了没多久 因为性质太多了

会了
(1)图的创建保存方式
一 邻接矩阵法
用二维数组进行保存即可
二 邻接表
用了很多结构体数组保存点 然后在结构体中会有个首指针 这个指针专门用来保存 与该节点所连接的点 的各种信息
学会了邻接表的创建 虽然太多代码。。但是还是自己能敲出来
(2)图的遍历方式
一 深度优先搜索(dfs)
函数递归调用 由一个节点一直遍历到底,时间复杂度太高
二 广度优先搜索 (bfs)
使用队列实现 一层一层的遍历 时间复杂度度相对 不高
(3)最小生成树
就是构成连通图的最小代价生成的树状结构称为 最小生成树
一共分为俩个内容:
一 普里姆算法 (prim)
首先生成一个邻接矩阵,此算法就是算出从起点出发每次找出最短的路径,然后把路径记录下来 下次继续用这个最短路径找出下一个路径 直到图遍历完毕
具体分开讲
二 克鲁斯卡尔(kruskal)
与普雷姆算法不同的是 这个算法 使用的是边集数组 ,而普雷姆使用的是顶点数组,
克鲁斯卡尔 与并查集一样 只不过就是先把 每条边的权值排个序 然后 用并查集 加入图就行了
(4)最短路径
对于网图来说 最短路径指俩个顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源地 最后一个顶点是终点 ,求最短路径 一共有俩种方法:
一: 迪杰斯特拉(Dijkstra)也叫单源路径求法
此算法与最小生成树的普雷姆方法差不多 ,只不过就是用权值保存的数组 要判断路径总和之比 如果小才使用这个顶点做下一次的起始点。
二: 弗洛伊德(floyd) 多源路径法
此算法与简单的dp差不多 首先生成俩个一模一样的邻接矩阵 然后有 三重循环 第一重循环就是 表示借过这个点 然后下面俩层循环 表示起点和终点,如果从起点走到终点的距离 比从起点借过 第一重循环的那个点再到终点 距离 大 那么 我肯定是借过这个点 所以 改变 这个邻接矩阵的值
最后借过的点遍历到 最后 整个图的 最短路径就保存在邻接矩阵里面了
(5)拓扑排序
首先讲一下AOV网 AOV网:在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网 我们称为AOV网
拓扑序列 在一个具有n个顶点的有向图中,满足顶点 vi vj 之间有一条路径 ,则在顶点序列中顶点Vi必在Vj之前 ,则我们称这样的顶点为拓扑序列
拓扑排序 从AOV网中选择一个入度为0的顶点输出,然后删除此顶点,并删除以此顶点为尾的弧,重复此操作,知道输出全部顶点或者AOV网中不存在入度为0的顶点为止

转载地址:http://lxqq.baihongyu.com/

你可能感兴趣的文章
C#3.0新增功能08 Lambda 表达式
查看>>
C#开发BIMFACE系列35 服务端API之模型对比6:获取模型构建对比分类树
查看>>
C# 规范建议
查看>>
.NET 5.0正式发布,新功能特性(翻译)
查看>>
重磅推出:AutoProject Studio 自动化项目生成器
查看>>
INotifyPropertyChanged 接口
查看>>
一些有趣的线段树玩法
查看>>
Go语言中的数组与数组切片
查看>>
操作系统启动过程
查看>>
进程管理
查看>>
物理层
查看>>
内建函数
查看>>
C/C++分文件编写
查看>>
80x86指令系统-1-数据传送指令
查看>>
C语言+easyX图形库的推箱子实现
查看>>
结构体内存偏移量
查看>>
应用程序与dll的静态库通信
查看>>
反汇编-流程控制语句-2-循环控制语句分析
查看>>
调试vs2019代码的流程
查看>>
游戏外挂基础-概述
查看>>