图论(一)基本概念

小恐龙 等级 971 0 0

图(graph)是数据结构和算法学中最强大的框架之一(或许没有之一)。图几乎可以用来表现所有类型的结构或系统,从交通网络到通信网络,从下棋游戏到最优流程,从任务分配到人际交互网络,图都有广阔的用武之地。

而要进入图论的世界,清晰、准确的基本概念是必须的前提和基础。下面对其最核心和最重要的概念作出说明。关于图论的概念异乎寻常的多,先掌握下面最核心最重要的,足够开展一些工作了,其它的再到实践中不断去理解和熟悉吧。

图(graph)并不是指图形图像(image)或地图(map)。通常来说,我们会把图视为一种由“顶点”组成的抽象网络,网络中的各顶点可以通过“边”实现彼此的连接,表示两顶点有关联。注意上面图定义中的两个关键字,由此得到我们最基础最基本的2个概念,顶点(vertex)和边(edge)。直接上图吧。
图论(一)基本概念

一、顶点(vertex)

上图中黑色的带数字的点就是顶点,表示某个事物或对象。由于图的术语没有标准化,因此,称顶点为点、节点、结点、端点等都是可以的。叫什么无所谓,理解是什么才是关键。

二、边(edge)

上图中顶点之间蓝色的线条就是边,表示事物与事物之间的关系。需要注意的是边表示的是顶点之间的逻辑关系,粗细长短都无所谓的。包括上面的顶点也一样,表示逻辑事物或对象,画的时候大小形状都无所谓。

三、同构(Isomorphism )

先看看下面2张图:
图论(一)基本概念)图论(一)基本概念
首先你的感觉是这2个图肯定不一样。但从图(graph)的角度出发,这2个图是一样的,即它们是同构的。前面提到顶点和边指的是事物和事物的逻辑关系,不管顶点的位置在哪,边的粗细长短如何,只要不改变顶点代表的事物本身,不改变顶点之间的逻辑关系,那么就代表这些图拥有相同的信息,是同一个图。同构的图区别仅在于画法不同。

四、有向/无向图(Directed Graph/ Undirected Graph)

最基本的图通常被定义为“无向图”,与之对应的则被称为“有向图”。两者唯一的区别在于,有向图中的边是有方向性的。下图即是一个有向图,边的方向分别是:(1->2), (1-> 3), (3-> 1), (1->5), (2->3), (3->4), (3->5), (4->5), (1->6), (4->6)。要注意,图中的边(1->3)和(3->1)是不同的。有向图和无向图的许多原理和算法是相通的。
图论(一)基本概念

五、权重(weight)

边的权重(或者称为权值、开销、长度等),也是一个非常核心的概念,即每条边都有与之对应的值。例如当顶点代表某些物理地点时,两个顶点间边的权重可以设置为路网中的开车距离。下图中顶点为4个城市:Beijing, Shanghai, Wuhan, Guangzhou,边的权重设置为2城市之间的开车距离。有时候为了应对特殊情况,边的权重可以是零或者负数,也别忘了“图”是用来记录关联的东西,并不是真正的地图。
图论(一)基本概念

六、路径/最短路径(path/shortest path)

在图上任取两顶点,分别作为起点(start vertex)和终点(end vertex),我们可以规划许多条由起点到终点的路线。不会来来回回绕圈子、不会重复经过同一个点和同一条边的路线,就是一条“路径”。两点之间存在路径,则称这2个顶点是连通的(connected)。
还是上图的例子,北京->上海->广州,是一条路径,北京->武汉->广州,是另一条路径,北京—>武汉->上海->广州,也是一条路径。而北京->武汉->广州这条路径最短,称为最短路径。
路径也有权重。路径经过的每一条边,沿路加权重,权重总和就是路径的权重(通常只加边的权重,而不考虑顶点的权重)。在路网中,路径的权重,可以想象成路径的总长度。在有向图中,路径还必须跟随边的方向。
值得注意的是,一条路径包含了顶点和边,因此路径本身也构成了图结构,只不过是一种特殊的图结构。

七、环(loop)

环,也成为环路,是一个与路径相似的概念。在路径的终点添加一条指向起点的边,就构成一条环路。通俗点说就是绕圈。
图论(一)基本概念
上图中,北京->上海->武汉->广州->北京,就是一个环路。北京->武汉->上海->北京,也是一个环路。与路径一样,有向图中的环路也必须跟随边的方向。环本身也是一种特殊的图结构。

八、连通图/连通分量(connected graph/connected component)

如果在图G中,任意2个顶点之间都存在路径,那么称G为连通图(注意是任意2顶点)。上面那张城市之间的图,每个城市之间都有路径,因此是连通图。而下面这张图中,顶点8和顶点2之间就不存在路径,因此下图不是一个连通图,当然该图中还有很多顶点之间不存在路径。
图论(一)基本概念
上图虽然不是一个连通图,但它有多个连通子图:0,1,2顶点构成一个连通子图,0,1,2,3,4顶点构成的子图是连通图,6,7,8,9顶点构成的子图也是连通图,当然还有很多子图。我们把一个图的最大连通子图称为它的连通分量。0,1,2,3,4顶点构成的子图就是该图的最大连通子图,也就是连通分量。连通分量有如下特点:
1)是子图;
2)子图是连通的;
3)子图含有最大顶点数。
注意:“最大连通子图”指的是无法再扩展了,不能包含更多顶点和边的子图。0,1,2,3,4顶点构成的子图已经无法再扩展了。
显然,对于连通图来说,它的最大连通子图就是其本身,连通分量也是其本身。

你是不是已经对没完没了的术语感到厌烦了。是的,不能再多了!有了这些,我们可以出发探索图论的世界了!

本文转自 https://blog.csdn.net/saltriver/article/details/54428685,如有侵权,请联系删除。

收藏
评论区

相关推荐

CSS Modules 解决 react 项目 css 样式互相影响的问题
CSS Modules 解决 react 项目 css 样式互相影响的问题 CSS Modules 解决 react 项目 css 样式互相影响的问题 (http
js-Answers一
JavaScript的组成 JavaScript 由以下三部分组成: 1. ECMAScript(核心):JavaScript 语言基础 2. DOM(文档对象模型):规定了访问HTML和XML的接口 3. BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法 JS的基本数据类型和引用数据类型
爬取五大平台621款手机,告诉你双十一在哪买最便宜!
↑关注+置顶 有趣的不像个技术号 今晚0点,相约剁手大家好,我是朱小五 明天就是双十一了,看了看自己手里的卡的像IE浏览器的手机,感觉可能等不到5G普及了。 我!要!换!手!机! 去哪买呢? 作为一个机(pin)智(qiong)boy,肯定要比价啊,哪家便宜去哪家 我用Python爬取了某比价网站的手机数据,获取了其中五大平台(天猫,京东,
每日一题(一)
写在前面 刷题在北联大的BUU平台,每日一题,每日更新,嘿嘿 [HCTF 2018]WarmUp刚开始看这个题真的一点思路没有,看源码、抓包一波操作过后还是选择去找了wp。。。wp说原题是有个hint.php,扫目录也可以扫出source.phphint.php里面说真正的flag文件是ffffllllaaaagggg里source.php里面是源码,代码审
这可能是目前最全的!java开发手册嵩山版
在这里分享一份 [mybatis从入门到精通] 的强力教程,定能够助你一臂之力。 Mybatis基本介绍1. ORM和MyBatis1. 对象/关系数据库映射(ORM)1. 基本映射方式1. 流行的ORM框架简介目前流行的编程语言,例如Java、 C等,都是面向对象的编程语言;而目前主流的数据库产品,例如Oracle、DB2等,依然是关系数据库。编程语言和底
每日一问(一)Handler相关知识
1、Handler负责发送Message和处理Mesage2、Message就是消息载体,可用what区分,也可传递对象3、Message Queue消息队列,存储Message4、Looper循环取出Message Queue里的Message交给Handler处理。5、一个线程只有一个Looper和Message Queue,子线程中使用Handler一
MongoDB(一)
1.Mongodb的下载和安装,[https://www.mongodb.com/download-center?ct=false#community](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.mongodb.com%2Fdownload-center%3Fct%3Dfals
JS 返回上一步(退回上一步上一个网页)
**链接式:** <a href="javascript:history.go(-1)">返回上一步</a> <a href="<%=Request.ServerVariables("HTTP\_REFERER")%>">返回上一步</a> **按钮式:** <INPUT name="pclog" type="button" value="GO" o
Jenkins(一)
Jenkins是一个CI工具。它可以持续编译,运行你的代码;运行UT或集成测试;将运行结果发送至邮件,或展示成报告。。。 这样做的最终目的是: 让项目保持健康的状态。如果任何checkin break了build,每个人都会在最短的时间内通知到,然后问题被fix。接下来的开发将建立在一个健康正确的基础上,而不是任由问题累积,最后失控。 **最后,你的项
HTML5实现一对一视频聊天
相关技术栈 ----- 对于移动端来说,大多是视频聊天功能都是采用的Native端的代码来实现,这种方式性能好,兼容性强但是开发成本也会高一些,那么本文就来介绍一下采用纯H5的方式来实现视频聊天功能。 1. WebRTC 2. Socket.io 3. Node.js 项目截图: 体验地址:[https://app.nihaoshij
MySql(一)
### 数据库 RDBMS即关系数据库管理系统(Relational Database Management System)的特点: 1. 数据以表格的形式出现 2. 每行为各种记录名称 3. 每列为记录名称所对应的数据域 4. 许多的行和列组成一张表单 5. 若干的表单组成database ### RDBMS 术语 数据库: 数据
RabbitMQ(一)
系列说明 ---- 本系列主要讲解RabbitMQ,讲解其特性,例如消息持久化、消息TTL、消息的优先、延迟消息、消息可靠性、消费模式以及在Spring Boot中使用RabbitMQ,代码在[我的Github上](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2F
SpringMVC(一)
### SprngMVC(一) * 回顾MVC * * 什么是MVC * Model1时代 * Model2时代 * SpringMVC * * 中心控制器 * * SpringMVC原理 回顾MVC ===== 前言:框架方面容易上手,但是快上手的同时遇到麻烦就会死机,打我自己举例吧,5
这道SQL有一点...不一样?
原题目 从课程表(课程号,课程名) 学生表(学号,年龄,性别,课程号,分数)中 查询出平均分大于60分的学生的学号及课程成绩 最初尝试一开始不太会做,直接在网络上搜索答案,找到的却只有这样的题目答案sqlSELECT sid, AVG( sscore ) FROM score GROUP BY sid HAVING avg( sscore ) 60单表操作
第一梯队,增速第一
5月17日,国际权威咨询机构IDC发布的《中国公有云服务市场(2021下半年)跟踪》报告显示,2021年下半年中国公有云服务整体市场规模(IaaS/PaaS/SaaS)达到151.3亿美元,其中IaaS市场同比增速40.1%。天翼云公有云业务发展势头强劲,高于平均市场增速,天翼云2021年下半年在中国公有云市场份额占比达10.3%,比2020年下半年增加1.