图的基本概念_图的定义-程序员宅基地

技术标签: 算法  图论  数据结构与算法  

前言

在计算机科学中,图是由节点(或顶点)和边组成的一种数据结构。节点表示图中的对象,边表示节点之间的关系。图可以用来表示现实世界中的许多问题,例如社交网络、电路网络、交通网络、知识图谱等等。在图论中,有许多重要的算法和问题,例如最短路径、最小生成树、最大流等等。 


一、图的定义

(Graph)G由两个集合V和E组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集。若E(G)为空,则图G只有顶点而没有边。
对于图G,若边集E(G)为有向边的集合,则称该图为有向图;若边集E(G)为无向边的集
合,则称该图为无向图。
在有向图中,顶点对<x,y>是有序的,它称为从顶点x到顶点y的一条有向边。因此,<x,y>与<y,x>是不同的两条边。顶点对用尖括号括起来,对<x,y>而言,x是有向边的始点,y是有向边的终点。<x,y>也称作一条弧,则x为弧尾,y为弧头。
在无向图中,顶点对(x,y)是无序的,它称为与顶点x和顶点y相关联的一条边。这条边没有特定的方向,(x,y)与(y,x)是同一条边。为了有别于有向图,无向图的顶点对用一对圆括号括起来。

二、图的基本术语 

用n表示图中顶点数目,用e表示边的数目。

(1)子图假设有两个图G=(v,E)和G'=(v',E),如果v'\subseteqv且E'\subseteqE,则称G'为G的子图。例如,图2是图1的子图。

(2)无向完全图和有向完全图:

有向完全图是指一个有向图,其中每对不同的顶点之间都存在一条有向边,也就是任意两个顶点之间都互相连通。因此,对于n个顶点的有向完全图,它的弧数为n(n-1)。

无向完全图是指一个无向图,其中每对不同的顶点之间都存在一条无向边,也就是任意两个顶点之间都互相连通。因此,对于n个顶点的无向完全图,它的边数为n(n-1)/2。

如图所示

(3)稀疏图和稠密图:

稀疏图和稠密图用来描述图中边的数量和节点数量之间的关系。

一个图被称为稀疏图,是指它的边数相对于节点数比较小或者少。换句话说,稀疏图中节点之间的连接比较少,大部分节点之间没有边相连。

而稠密图则相反,是指它的边数相对于节点数比较大或者多。也就是说,稠密图中节点之间的连接比较多,大部分节点之间都有边相连。例如完全图就是一种稠密图,其中每个节点都与其他节点相连。

(4)权和网:

(weight)是指每条边或每个顶点上具有的数值,称为权值,常用于表示路径的长度或者边的距离等。在最短路径、最小生成树等算法中起到重要作用。

(network)是指带有权值的图,也叫带权图。在网中,每条边都有一个权值,常用于表示距离、耗费、强度等概念。常见的网包括最短路径问题中的有向带权图、最小生成树问题中的无向带权图等。

(5)邻接点:对于无向图G,如果图的边(v,v')\inE,则称顶点v和v'互为邻接点,即v和v'相邻接。边(v,v')依附于顶点v和v'或者说边(v,v')与顶点v和v'相关联。简单的说就是图中有边相连相邻的两个顶点,它们互为邻接点

(6)度、出度和入度:顶点v的度是指与v相关联的边的数目,记作TD(v)。对于有向图,顶点v的度分为入度和出度。入度是以顶点v为头的弧的数目(箭头指向的顶点为头),记作ID(v)出度是以顶点v为尾的弧的数目,记作OD(v)。顶点v的度TD(v)=ID(v)+OD(v)。

(7)路径和路径长度:路径是指沿着图中的边从一个顶点到另一个顶点的一系列顶点。如果这个路径中的所有边都是有向的,则称为有向路径;如果这个路径中的所有边都是无向的,则称为无向路径。路径长度是指路径中经过的边或弧的数量。

  (8)回路或环:如果一个路径从一个顶点开始并以同一顶点结束,则称为回路或环

(9)简单路径、简单回路或简单环:序列中顶点不重复出现的路径称为简单路径。除了第
一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为简单回路或简单环

(10)连通、连通图和连通分量:连通是指两个顶点间存在一条路径。连通图指一个无向图中任意两个顶点之间都存在一条路径。无向图可以分成两种类型:连通的无向图、不连通的无向图。连通的无向图只有一个极大连通子图,即它本身,因为不存在另一个连通的子图包含的点和边比它本身还要多,所以叫作极大连通子图。不连通的无向图可以拆分为若干个连通的无向图,如果我们在拆分时注意把能连通的点边都放在一个连通子图中,使这个连通子图足够大,以至于再多包含一个点或边它就变成不连通的了,我们称这个连通子图为极大连通子图,也叫连通分量

(11)强连通图和强连通分量:强连通图指在有向图G中,如果对于每一对vi、vj,vi≠vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。 有向图中的极大强连通子图称做有向图的强连通分量。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_73070900/article/details/130709121

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签