一.前言
我在之前的文章中带大家学习了DFS,BFS算法。我提到过,用BFS算法求最短路径存在一些局限性—》
图论的基本算法是BFS和DFS,大多数图论高级算法都是从BFS和DFS发展出来的。从本篇文章开始,我们将一起学习数据结构——图的有关知识,并掌握更高阶的最短路径算法。
二.图的基础概念
👉在线性表中,数据元素是一对一的关系,如链表,如同手牵手一样,除了首元素后尾元素,中间的元素都有自己唯一的前驱和后驱。而在树形结构中,数据元素是一对多的关系,一个结点都有唯一的父结点,而可以有多个孩子。
👥对于图来说,则是多对多的关系。任何两个元素都可能有关系,每个节点可以有多个前驱和后继,但也有可能都没有。
图这种抽象模型由点(vertex)和连接点的边(edge)构成,为一个网状结构。
三.有向图和无向图理论基础
1.有向图
有向图,简写为digraph(即directgraph),是由一个有限的称为顶点的元素集合以及一个有限的连接每对顶点的有向弧或有向边的集合构成的。如图所示:
如:节点2可以到5,6,节点135也都可到2(但2到不了1,3)。
⭐️对于以上图,节点一二间,箭头从1出发指向2,那么这条边对1来说是出向边,对节点二来说为入向边。 同时,一个节点也可以自己指向自己,那么这条边既是入向边又是出向边。
2.无向图
1.边没有出向边和入向边之分。即两个节点间如果有边连接,则1可以到2,2可以到1。
2.顶点没有到达自己顶点位置的边。
3.顶点的度
有向图:分为顶点的出度,顶点的入度。
出度:即从这个顶点出去的边有几条。对上图的节点1,它的出度就是3.
入度:到达该节点的边有几条。对于上图的节点5,它的入度就是2.。
无向图:顶点的度。
即该顶点关联的边有几条。
四.图的表示方式:邻接矩阵
1.知识讲解
✨将有向图中所有的顶点编号为1&