五、关于图

这节课开始就是陈越姥姥的课了,开心~~
图作为一个抽象概念,在生活中有很多应用实例:
图书管理、社交网络等
一些如最短路径和最小生成树问题也给我们很大的帮助
图是一种多对多的结构,类似为线性表+树的综合
一些概念
一组顶点 V vertex的集合
一组边 E edge的集合
一条边=顶点对 (v,w)无向 <v,w>有向
不考虑重边和自回路
Graph的抽象数据类型G(V,E)由非空有限顶点集合V+有限边集合E
如果带上边的权值 => 网络
操作集
创建
插入顶点
插入变
DFS
BFS
最短距离
MST最小生成树
程序实现
1.邻接矩阵
G[N][N]二维数组存储
若<vi,vj>有边=> G[i][j]=1 否则为0
最后生成一个N*N的数组
特点
①对角都是0
②对称,因为存了2次造成了浪费
我们把他化为一维数组,长度为n(n+1)/2,只存下三角矩阵的元素
原某点的位置Gij->G(i(i+2)/2+j)
网络的实现,把原来G的值由1定义为边的权重,没有边为0,但对于网络而言,这并不是好的表现方法
好处:
①直观
②方便查边
③方便查邻接点
④方便计算度(相关边的个数)
无向=非0个数
有向=非0个数 行(出度) 列(入度)
缺点:
①浪费空间 -对于稀疏图而言,边少
②浪费时间
2.邻接表
G[N]数组指针,非0元素存成链表
特点:
①一条边被存了2遍
②每个结点都是编号+指针,占位置
③带权重的话处理很麻烦
和邻接矩阵比要够稀疏的话才合算
好处:
①好找邻接点,链表遍历
②节约稀疏图空间 N个头结点+2E个结点(每个结点有2个域)
③算顶点的度
无向 好算
有向 麻烦 出度(好算) 入度(重新构造逆邻接表..麻烦)
是否方便检查任两点是否有边?NO!
3.图的其他表示方法
具体问题具体分析

图的遍历
DFS
类似先序遍历
复杂度:
邻接表O(N+E)
邻接矩阵O(NN)
BFS
类似层次遍历
邻接表O(N+E)
邻接矩阵O(N
N)

图不连通问题
几个概念
连通:
路径:
连通图:
连通分量:
这一节开始听得迷迷糊糊的,包括下面的两个例子也都听得似懂非懂,需要去看书,加深理解

两个例子
拯救007
六度空间理论

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,834评论 0 19
  • https://zh.visualgo.net/graphds 浅谈图形结构https://zh.visualgo...
    狼之独步阅读 4,258评论 0 0
  • VisuAlgo!一,Date Structure的核心技术是分解和抽象二,基本概念和常用术语 三,逻辑结构1,逻...
    斜杠青年许晏铭阅读 936评论 0 0
  • 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合...
    开心糖果的夏天阅读 903评论 0 9
  • 话说妖魔时代大门已关,当下已是和平科技年代。科学知识就是这样——它们让你相信如今这个世界,即使有很多用科学解释不了...
    于天泛青光阅读 492评论 2 1