当前位置: 首页 > article >正文

初赛-图的概念

图的概念

一、什么是图?

点用边连起来就叫做图,严格意义上讲,图是一种数据结构,定义为:graph=VE)。

V是一个非空有限集合,代表顶点(结点),E代表边的集合。

  二、图的一些定义和概念

1. 有向图:图的边有方向,只能按箭头方向从一点到另一点。(a)就是一个有向图。

2. 无向图:图的边没有方向,可以双向。(b)就是一个无向图。

 

3.结点的度:无向图中与结点相连的边的数目,称为结点的度。          

4.结点的入度:在有向图中,以这个结点为终点的有向边的数目。 

5.结点的出度:在有向图中,以这个结点为起点的有向边的数目。

6.权值:边的“费用”,可以形象地理解为边的长度。

 7.连通:如果图中结点UV之间存在一条从U通过若干条边、点到达V的通路,则称U是连通的。如果图中任意两点都是连通的,那么图被称作连通图。

8.回路:起点和终点相同的路径,称为回路,或“环”。

9.完全图:一个阶的完全无向图含有n*(n-1)/2 条边;一个阶的完全有向图含有n*(n-1)条边; 

10.强连通分量:有向图中任意两点都连通的最大子图。下图中1-2-5构成一个强连通分量


 
图的存储

1.二维数组邻接矩阵存储

定义int  G[101][101];

G[i][j]的值,表示从点i到点j的边的权值,定义如下:

 

 

上图中的3个图对应的邻接矩阵分别如下:

图的深搜和广搜

图的遍历分为深度优先遍历和广度优先遍历两种方法。

1.深度优先遍历

  深度优先遍历与深搜DFS相似,从一个点A出发,将这个点标为已访问visited[i]:=true;,然后再访问所有与之相连,且未被访问过的点。当A的所有邻接点都被访问过后,再退回到A的上一个点(假设是B),再从B的另一个未被访问的邻接点出发,继续遍历。

  例如对右边的这个无向图深度优先遍历,假定先从1出发,程序以如下顺序遍历:

  125,然后退回到2,退回到1

  从1开始再访问未被访问过的点3没有未访问的邻接点,退回1

  再从1开始访问未被访问过的点4,再退回

  起点1的所有邻接点都已访问,遍历结束。

2.广度优先遍历

   广度优先遍历并不常用,从编程复杂度的角度考虑,通常采用的是深度优先遍历。

   广度优先遍历和广搜BFS相似,因此使用广度优先遍历一张图并不需要掌握什么新的知识,在原有的广度优先搜索的基础上,做一点小小的修改,就成了广度优先遍历算法。


 

 


 


http://www.kler.cn/a/5769.html

相关文章:

  • PyTorch动态图 vs. TensorFlow静态图:深度学习框架之争
  • 网站是怎么屏蔽脏话的呢:简单学会SpringBoot项目敏感词、违规词过滤方案
  • 信创办公–基于WPS的PPT最佳实践系列 (将幻灯片组织成节的形式)
  • 【语音唤醒】TC-ResNet:移动设备上实时关键词检测的时间卷积算法
  • RK3568 JDK RXTX-JAVA串口485开发
  • python 基础知识复习之元祖
  • 小驰私房菜_05_camx 添加水印信息
  • 如何使用LaTeX中的命令【ChatGPT 3.5 vs. ChatGPT 4】
  • chatGPT身份指令
  • 开启元宇宙新时代,VR全景,体验虚拟展厅
  • 遗传算法 |运筹优化
  • 2023-3-30刷题情况
  • 【JavaScript】toLocaleString()数字格式化
  • gcc编译器与Makefile入门
  • 【MySQL】深入浅出主从复制数据同步原理
  • 从零开始,我是如何学习Python自动化测试的?
  • postgresql pg_rewind 类似oracle的flashback+基于scn的恢复
  • 【Python】【进阶篇】七、Pygame的Rect区域位置
  • RabbitMQ中死信队列和延迟队列
  • ThreeJS-纹理(十)