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

目录

图篇

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

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

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

  • 矩阵引入

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

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

这里写图片描述

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

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

基于空间运算的封闭性,我们得出该方程式存在的完备空间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,所以我们完全可以将如上形式化为如下:

这里写图片描述
即以逻辑值来代表是否存在连接。

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

节点 \ 边->e1e2e3e4e5e6e7
V11001001
V21110000
V30111110
V40000111

边的表示和读取:

这里写图片描述

点的表示和读取:

这里写图片描述

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

通常我们不写表格,主要原因麻烦,我们通常直接写为矩阵:
这里写图片描述

图论的基本概念

  • 1、有向图

    顾名思义,就是有方向的图呗。
    这里写图片描述

  • 2、无向图

    就是没有有方向的图呗,也可以叫双向图。像前面的例子,七桥问题都是无向图。
    这里写图片描述

  • 3、有限图

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

  • 4、简单图

    就是没有环和多重边的图,
    因为环独立且封闭,可产生自由变量,导致问题变复杂。多重边可分解为 边+环。
    反例:
    这里写图片描述

  • 5、完全图

    就是任意两个点都有一条边相连的图。
    这里写图片描述
    P s:有一种结构叫拓扑

  • 6、二分图
    这里写图片描述

    可以把顶点集分成两组,并且同组顶点不相邻的图。如:
    这里写图片描述

  • 7、子图与母图

    如果原图叫母图,那么从其中抠一份下来,那就叫它的子图。
    这里写图片描述

  • 8、顶点v的度:

    就是顶点的边数(环算两条边)。
    这里写图片描述
    这里写图片描述
    这里写图片描述

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

即:这里写图片描述
任意图必然可由N个1笔画完成,而每一笔在图中产生的奇顶点数要么2个,要么0个,所以任意图的奇顶点数必然是偶数个,这是很显然的。

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

若是途径中没有重复的顶点,我们称为
这里写图片描述
如果没有重复的边,我们称为
这里写图片描述

10、边与弧

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

图的表示引入

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

这里写图片描述
这里写图片描述

\e1e2e3e4e5e6e7
V11001001
V21110000
V30111110
V40000111

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

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

1、具体要素

2、具体要素间的联系

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

节点集 记为:
这里写图片描述
弧集 记为:
这里写图片描述

我们尝试另外一种表示:

这里写图片描述
我们不再用连接的边来定义节点,而用邻接节点来定义节点。如:
这里写图片描述
这里写图片描述

以下图为例:

这里写图片描述
(可达的通路)的记为1。
这里写图片描述

额。。。。 V3 = 。。。

这里写图片描述

我们还是以下图为例吧:

刚才你们什么都没看见
这里写图片描述
其中(可达的通路)的记为1。
这里写图片描述

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

\
V1V2V3V4
V1
V20
V3
V40

我们做如下约定:

这里写图片描述
于是,该矩阵定义了顶点之间的联系。
即表示出了弧集

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

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

图的表示法

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

    我们不妨叫做邻接矩阵法
    这里写图片描述

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

    我们不妨叫关联矩阵法
    这里写图片描述
    事实上,我们用关联矩阵也可以表示有向图,只要约定入节点为-1,出节点为1即可。

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

如,直接用弧集来表示图:
这里写图片描述
即用二维数组的方法表示。
这种用弧集表来表示图的方法,
我们不妨叫弧表表示法

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

这里写图片描述
对了,忘了讲一件事,
通常我们增加一行,用来放弧的权重。对于邻接矩阵和关联矩阵,直接把例中的1改成相应权重即可。

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

结语

  • 146
    点赞
  • 380
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值