欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

图论入门及基础概念(图篇)

程序员文章站 2022-03-26 10:36:59
...

目录

图篇

这是第一次写博客,为了下载积分而来。
随便写些,各位大佬们多多指。

本次内容是关于图论的引入的,内容如下:

  • 矩阵引入
  • 什么是图?其如何表示?
  • 图论起源之七桥问题
  • 图论引入
  • 图论相关基本概念
  • 图论的表示引入
  • 图的表示法

  • 矩阵引入

线性代数学的好的可以直接跳过,
当然,看不懂的也可以直接跳过,这部分引入只是计为了后面计算上方便,

矩阵可以用在生活的方方面面,出现在各个学科中,
例如,我们如何用矩阵(向量)来描述化学反应方程式:

图论入门及基础概念(图篇)

首先,用向量描述一个物体必须先划分维度

由于原子守恒原理我们知道氧原子氢原子相互独立,互不相关
所以我们假设两个维度空间氧空间氢空间
并且这两个空间相互垂直(即线性无关)

基于空间运算的封闭性,我们得出该方程式存在的完备空间S为:

图论入门及基础概念(图篇)

由于向量空间运算的封闭性,我们有:

图论入门及基础概念(图篇)

我们分别将氧气氢气表示为该空间下的向量点

图论入门及基础概念(图篇)图论入门及基础概念(图篇)图论入门及基础概念(图篇)

于是化学方程式配平便变成了向量之间的运算:

图论入门及基础概念(图篇)

由于氧气和氢气是该完备空间的基,即单质。
容易运算出答案:

图论入门及基础概念(图篇)

图及其表示

  • 什么是

    要说什么是图,这个有点不太好说,概念的东西太抽象,我还是直接说图的表示吧,知道图的表示形式,自然也就知道什么是图了。

·图的表示一般是分为两块的:

(1)某类具体事物
(2)这些事物之间的联系

·而在图论中,只存在两种形态:

节点

这两种形态通常这样对应:

图论入门及基础概念(图篇)

由于这种对应关系,我们通常把这种关系转化为矩阵描述,在前言中我们提到了一个例子:

图论入门及基础概念(图篇)

在这里,具体事物即:

图论入门及基础概念(图篇)图论入门及基础概念(图篇)图论入门及基础概念(图篇)

抽象事物(事物间的联系)即其中的数量关系

于是我们将化学方程改为如下矩阵式:

图论入门及基础概念(图篇)

我们可以看到,矩阵分为两块:

图论入门及基础概念(图篇)图论入门及基础概念(图篇)
PS: 所以说,用矩阵描述问题能使描述过程更加清晰化,建议采用。

图论起源之七桥问题

图论入门及基础概念(图篇)
七桥问题很经典,我们都知道大数学家欧拉将其转为一笔画的问题,并顺利解决,由此开创了图论的先河。

用下图举个例子:

图论入门及基础概念(图篇)

若将其看做画线问题:

对于任意非起始点,我们要一笔通过他只有如下两种可能:

(1)两条路线:

有进必有出,必然是能够一笔完成的
图论入门及基础概念(图篇)

(2)四条路线:

图论入门及基础概念(图篇)
由于通过外界一圈以后又回来所以对于这种偶数条线路,
可以等效为如下形式:

图论入门及基础概念(图篇)
即将该节点视为另外一个圈起始点,其中的闭圈必然能够由一笔画完成,由于该圈可以独立出去,我们将该圈等效为不存在,便将偶数边节点等效为如下一进一出的两条边节点:
图论入门及基础概念(图篇)

三条路线:

三条线路相对复杂,但它的进出也只有如下两种可能形式:
图论入门及基础概念(图篇)
同样,我们运用等效原理将其等效为如下形式:
图论入门及基础概念(图篇)
我们将其中的闭圈化简去掉,即等效为:
图论入门及基础概念(图篇)
所以,该节点必然是一笔画的起点(右图形式)或者终点(左图形式)

所以,我们得出了如下的基本结论:

拥有偶数边的节点
可以等效为只有一进一出两条边的点。
即该点等效为过程点。
拥有奇数边的节点
可以等效为要么进,要么出的单边的节点。
即该点等效为起始点。

唧唧歪歪了这么多,我们还是回到七桥问题吧:

图论入门及基础概念(图篇)

那么问题来了:

问:该图能否由一笔画完成,并说明理由。

首先我给出答案不能,理由是:

A、C、D、B节点均为奇数边
故等效为4个起始点,而一个一笔画的图最多只能有两个起始点

PS:若要求一笔画的终点和起点重合,则图节点中必然全为偶数边,这就是十分显然的了。

图论引入

图论,顾名思义,必然是关于图的理论咯
由于图的表示分为两块:

节点

我们不妨假设对于图 图论入门及基础概念(图篇)

①节点集 记为:
图论入门及基础概念(图篇)
② 边集 记为:
图论入门及基础概念(图篇)

那么问题来了:

我们该如何去表示其中的某个节点或边呢?
PS:马克思说:“人的本质不是单个人所固有的抽象物,在其现实性上,它是一切社会关系的总和。”(《马克思恩格斯选集》第2版第1卷第60页)
图论入门及基础概念(图篇)
附即兴打油词一首:
《如果说》—妖米
如果说人类是一个集合,那么某个人便由他的社会关系总和来定义。
如果说节点集是一个集合,那么某个节点便由他的边的总和来定义。
如果说边集是一个集合,那么某条边便由他连接的点的总和来定义。
2018-9-4 —— 23:12

图论入门及基础概念(图篇)

图的表示:

图论入门及基础概念(图篇)
图论入门及基础概念(图篇)

对于任意某条边,以边e1为例:

图论入门及基础概念(图篇)

由于任意边节点只有两个,我们不妨记为

图论入门及基础概念(图篇)

对于任意某个节点,分别以v3,v4为例:

图论入门及基础概念(图篇)
对于v3,我们记为:
图论入门及基础概念(图篇)
对于v4,我们记为:
图论入门及基础概念(图篇)

但是,这么记虽然没错,但是我们想能不能用一种统一的格式去表示,将其任意点化为统一的标准格式
于是,我们灵光一闪想了一个办法 :

图论入门及基础概念(图篇)
还记得前面提到的原子守恒那边的完备空间
图论入门及基础概念(图篇)
图论入门及基础概念(图篇)

事实上,由于我们约定俗成,比如说第一行就表示v1,第二行就表示v2,所以我们完全可以将如上形式化为如下:

图论入门及基础概念(图篇)
即以逻辑值来代表是否存在连接。

事实上,由于标准化的约定,我们可以将如上形式整理成表格:

节点 \ 边-> e1 e2 e3 e4 e5 e6 e7
V1 1 0 0 1 0 0 1
V2 1 1 1 0 0 0 0
V3 0 1 1 1 1 1 0
V4 0 0 0 0 1 1 1

边的表示和读取:

图论入门及基础概念(图篇)

点的表示和读取:

图论入门及基础概念(图篇)

由于如上表格中,既有包含所有点的表示,由包含所有边的表示,所以那个表格便是一个图。

通常我们不写表格,主要原因麻烦,我们通常直接写为矩阵:
图论入门及基础概念(图篇)

图论的基本概念

  • 1、有向图

    顾名思义,就是有方向的图呗。
    图论入门及基础概念(图篇)

  • 2、无向图

    就是没有有方向的图呗,也可以叫双向图。像前面的例子,七桥问题都是无向图。
    图论入门及基础概念(图篇)

  • 3、有限图

    就是节点和边都有限的图呗。

  • 4、简单图

    就是没有环和多重边的图,
    因为环独立且封闭,可产生*变量,导致问题变复杂。多重边可分解为 边+环。
    反例:
    图论入门及基础概念(图篇)

  • 5、完全图

    就是任意两个点都有一条边相连的图。
    图论入门及基础概念(图篇)
    P s:有一种结构叫拓扑

  • 6、二分图
    图论入门及基础概念(图篇)

    可以把顶点集分成两组,并且同组顶点不相邻的图。如:
    图论入门及基础概念(图篇)

  • 7、子图与母图

    如果原图叫母图,那么从其中抠一份下来,那就叫它的子图。
    图论入门及基础概念(图篇)

  • 8、顶点v的度:

    就是顶点的边数(环算两条边)。
    图论入门及基础概念(图篇)
    图论入门及基础概念(图篇)
    图论入门及基础概念(图篇)

由于每条边都连接两个顶点,所以一个图的顶点度之和必然是边的两倍。

即:图论入门及基础概念(图篇)
任意图必然可由N个1笔画完成,而每一笔在图中产生的奇顶点数要么2个,要么0个,所以任意图的奇顶点数必然是偶数个,这是很显然的。

9、 途径
两个顶点之间的通路我们称为途径

若是途径中没有重复的顶点,我们称为
图论入门及基础概念(图篇)
如果没有重复的边,我们称为
图论入门及基础概念(图篇)

10、边与弧

为了区分边是否有方向,通常
有方向的叫,没方向的叫

图的表示引入

前面我们以七桥问题(无向图)讲了图的表示:

图论入门及基础概念(图篇)
图论入门及基础概念(图篇)

\ e1 e2 e3 e4 e5 e6 e7
V1 1 0 0 1 0 0 1
V2 1 1 1 0 0 0 0
V3 0 1 1 1 1 1 0
V4 0 0 0 0 1 1 1

那么问题来了,用这种方式表示有向图该怎么表示?

对于一个图,有两个要素:

1、具体要素

2、具体要素间的联系

由于具体要素(顶点集)肯定没法变:

节点集 记为:
图论入门及基础概念(图篇)
弧集 记为:
图论入门及基础概念(图篇)

我们尝试另外一种表示:

图论入门及基础概念(图篇)
我们不再用连接的边来定义节点,而用邻接节点来定义节点。如:
图论入门及基础概念(图篇)
图论入门及基础概念(图篇)

以下图为例:

图论入门及基础概念(图篇)
(可达的通路)的记为1。
图论入门及基础概念(图篇)

额。。。。 V3 = 。。。

图论入门及基础概念(图篇)

我们还是以下图为例吧:

刚才你们什么都没看见
图论入门及基础概念(图篇)
其中(可达的通路)的记为1。
图论入门及基础概念(图篇)

于是我们整理成矩阵表格:

\
V1 V2 V3 V4
V1
V2 0
V3
V4 0

我们做如下约定:

图论入门及基础概念(图篇)
于是,该矩阵定义了顶点之间的联系。
即表示出了弧集

我们发现,这种矩阵定义的方式,既可以表示有向图,又可以表示无向图,而且貌似还比原来的表示方法更节省空间。

但是这种方法的缺点很明显就是,当出现多重边时无法表示,反正你们刚才什么都没看到就对了。

图的表示法

  • 这种用邻接节点定义其他节点的方法:

    我们不妨叫做邻接矩阵法
    图论入门及基础概念(图篇)

  • 而那种用边将两个顶点关联起来的方法,

    我们不妨叫关联矩阵法
    图论入门及基础概念(图篇)
    事实上,我们用关联矩阵也可以表示有向图,只要约定入节点为-1,出节点为1即可。

  • 当然,还有其他方法可以表示图,在计算机中,只要方便于运算的表示方法都可以。

如,直接用弧集来表示图:
图论入门及基础概念(图篇)
即用二维数组的方法表示。
这种用弧集表来表示图的方法,
我们不妨叫弧表表示法

当然,还可以整理成有序的:

图论入门及基础概念(图篇)
对了,忘了讲一件事,
通常我们增加一行,用来放弧的权重。对于邻接矩阵和关联矩阵,直接把例中的1改成相应权重即可。

  • 还有一种方法,就是用程序把图画出来。
    熟悉C语言的童鞋可能知道指针和结构体
    如果接触过数据结构可能知道链表
    如:
    struct point
    {
    point * P;
    int Data;
    };
    然后将数据挂在链表上。
    图论入门及基础概念(图篇)
    这种方法提一下,懂的自然懂。
    不懂也没关系,反正我也不多讲了。

结语