小朋友都会的图论
相比前面的抽代,这里总算是休闲难度了
图的很多有关定义
Section titled “图的很多有关定义”我觉得吧,实在没有必要说什么是图了,计算机专业不懂图的话确实有点难办
图的结点数叫做图的阶数,阶数是几就叫几阶图;序偶是有序的,但是专家还是了发明一种无序序偶,记作 ,无序积则是两个集合中的元素分别组成的无序序偶的集合,记作 ,
有向边,无向边都是老生常谈的东西的,一个端点连着的边叫做它的关联边
如果一条边两头连在一个点上面,那这条边叫这个点的自环,如果两个点之间有重复的边,那这些边叫平行边或重复边,其数量叫做边的重数,有平行边的图叫多重图,没有平行边和自环的图叫简单图,如果简单图的任意两个点都有边连接,那这个图又叫完全图
无向图,有向图,无向简单图,有向简单图,无向完全图,有向完全图都是一看就懂什么意思的,混合图指的是同时有有向边和无向边的图
如果图 是图 的一部分,那 就是 的子图,如果 有 的全部结点,那 是 的生成子图 ,还有个东西叫导出子图,就是拿一组点或者一组边,然后加上那些点之间的边或者那些边连的点,得到的子图就是导出子图了
一个结点连了几条边,那它的度数就是几,记作 ,如果是有向边,还要分为入度和出度,记作 和
度数为 的结点叫做悬挂节点,对应的边叫做悬挂边
显然,图的总度数是边数的两倍,在所有图中度数是奇数的点都是偶数个
如果你有两个分子,这两个分子虽然画出的结构式不一样,但实际上是完全相同的物质,那我们可以说这两个分子的图同构 (虽然但是这是我能想到最简单表示同构概念的方法了 ,写作
[!tip] 代数系统的同构也是用这个全等符号表示(不知道为什么专家没加上去
所以啊,同构就是全等
一个点到另一个点的路径就是通路,没有相同边的叫简单通路,没有相同点的叫初级通路或者基本通路
一个大学生应该能猜出什么是回路,回路同样有简单回路和初级回路或基本回路
有一些非常显然的结论就不写了
学过语文的应该都知道一个点到另一个点是可达的是什么意思
如果图里面每个点都可以去到任何一个点,那这个图叫连通图
无向图里面每一块连通的部分导出的子图叫做它的连通分支,连通分支的数量叫做连通分支数
对于有向图,如果只是把每个点连起来但不一定通,那这就是个弱连通图或者直接叫连通图,如果任何两个点之间至少有一个点能去另一个点,这就是个单向连通图,如果像无向图那样畅通无阻的话就叫强连通图
显然一个有向图只要有一条能经过全部结点的回路就是强连通图了,如果只是通路那就是单向连通图
如果有向图 的子图 是弱连通的,且 的其他子图 都不是弱连通的,那 就是 的极大弱连通子图,同理也有极大单向连通子图和极大强连通子图
对图删除边和删除结点应该都会,而收缩边指的是两个连在一起的点合二为一 (唉我懒得画图了
计算机如何看图
Section titled “计算机如何看图”图可以用图形,可以用集合,也可以用矩阵
首先上场的是关联矩阵,记作 ,它的每列都代表一条边,每行代表一个点,值为 表示这条边在这个点上,下面是一个关联矩阵的例子
真是又臭又长呢
接下来登场的是 OI 选手最熟悉的邻接矩阵,记作 ,就是说一个点到另一个点有几条边连接,具体点就是行所对应的点到列所对应的点的边数
还有一位是可达矩阵,记作 ,顾名思义就是行所对应的点是否能到列所对应的点
额这样是不是不太好(
算了就这样吧(
当脚下的路有了距离
Section titled “当脚下的路有了距离”如果图的每条边都有了对应的长度,那这个图就是赋权图,还有个东西叫边权矩阵,记作 ,如果行代表的点能到列所代表的点,那数值就是对应的边权,否则是
↑这是个无向图的边权矩阵,很容易发现它是对称矩阵
Dijkstra 算法(唉这名字怎么这么怪)是拿来求一个点到图上其他点的最短路径的算法,其过程是非常的贪心啊
过程如下:
- 开两个数组,一个 存已遍历的结点,一个 存到各点的距离, 的所有项(除了开始那个点)都初始化为
- 最开始的点距离初始化为 ,更新与其邻接的点的距离,对应
L[i]新值为min(正在遍历的点的距离 + 边权, L[i]),然后把现在这个点加入 - 之后继续遍历未遍历的点中
L[i]最小的点,一个一个看直到所有点都到了 里面 - 这时 里面的值都是最小的了
代码以后再补
小学生都知道什么是欧拉图,就是一个有不重复走完全部边的回路的图,也就是有欧拉回路的图,如果一个图只有欧拉通路,这个图只能叫半欧拉图
只有无向连通图的奇度数结点为 或 个时,这个图才有欧拉通路
如果全部结点度数都是偶数,那这个图有欧拉回路
如果一个有向连通图每个结点的入度等于出度,那这个图也有欧拉回路
Fleury 算法是用来求欧拉图里面的欧拉回路的,其思想要领是:从某个点开始走,走过哪条边就删掉那条边,优先走不会改变图的连通性的边。等到所有边都走完了就可以输出路径了
就这么简单
有时间可以整个代码(?
哈密顿:你好吗
Section titled “哈密顿:你好吗”小学生也应该知道什么是哈密顿图,就是一个有不重复走完全部点的回路的图,也就是有哈密顿回路的图,如果一个图只有哈密顿通路,这个图只能叫半哈密顿图
这玩意比欧拉图难判断多了,怎么才能简单地拿下,专家也说不准
如果一个 阶无向简单图中随便两个不相邻点的度数和 ,那它有哈密顿通路,如果 ,那它有哈密顿回路
如果图中每个点都有 ,那它也有哈密顿回路
这玩意……应该不太会考吧(