【图论】图论基础

图论不同地方讲的不太一样,本文仅限作者的理解

定义

图一般由点集 V V V 和边集 E E E 组成。
对于 v ∈ V v\in V vV,称 v v v 为该图的一个节点。
对于 e ∈ E e\in E eE,一般用二元组 ( u , v ) (u,v) (u,v) 表示 e e e,其中 u , v ∈ V u,v\in V u,vV。在无向图中,该二元组无序,即边为双向;在有向图中,该二元组有序,即边为单向。
一个带有边权(边的长度)的图称为带权图,此时边一般记为 ( u , v , w ) (u,v,w) (u,v,w)
下面分别是一个无向图和一个有向图的例子:
一个无向图
一个有向图

连通性

从一个图中选出一些节点和边,构成一个合法的新图,称做原图的子图。
扩展至最大的符合某一要求的子图被称为分量。
通过图中的边可以使节点之间联通(单向联通也算)的图称做连通图。
节点之间两两可以互相到达的有向图被称做强联通图。
如果一个图中某一个点及其边被删去后,图将不再联通,则称该点为原图的一个割点。
没有割点的图被称为点双连通图。
如果一个图中某一条边被删去后,图将不再联通,则称该边为原图的一个割边。
没有割边的图被称为边双连通图。
读者可以自行理解联通子图、联通分量、强连通子图、强连通分量、点双联通子图、点双联通分量、边双联通子图、边双联通分量等概念。

树与环

一个没有环的图称为无环图。
一个没有环的有向图称为有向无环图(DAG)。
一个没有环且联通的无向图称为树。
一个有恰一个环且联通的无向图称为基环树。
一个是树且包含所有节点的子图称为原图的生成树。

存储

一般有两种存储方式,邻接矩阵和邻接表。

邻接矩阵

使用一个矩阵来存储图,对于矩阵中的一个元素 G u , v G_{u,v} Gu,v
在无权图中, u , v u,v u,v 之间有边为 1 1 1,无边为 0 0 0
在带权图中, u , v u,v u,v 之间有边为 w w w,无边为 inf ⁡ \inf inf

邻接表

使用多个数组来存储图,对于每一个数组 G u G_u Gu
在无权图中, u , v u,v u,v 间有边则加入 v v v
在带权图中, u , v u,v u,v 间有边则加入有序二元组 ( v , w ) (v,w) (v,w)

代码

分为定义,输入和遍历三部分

  • 邻接矩阵
int G[N][N];
memset(G,0,sizeof(G));//无权
memset(G,INF,sizeof(G));//带权
for (int i=1;i<=m;i++){//无权int u,v;cin>>u>>v;G[u][v]=1;G[v][u]=1;//仅限无向图//带权int u,v,w;cin>>u>>v>>w;G[u][v]=w;G[v][u]=w;//仅限无向图
}
for (int u=1;u<=n;u++) for (int v=1;v<=n;v++)if (G[u][v])//无权if (G{u][v]!=INF)//带权
  • 邻接表
vector<int> G[N];//无权
//带权
struct edge{int v,w;};
vector<edge> G[N];
for (int i=1;i<=m;i++){//无权int u,v;cin>>u>>v;G[u].push_back(v);G[v].push_back(u);//仅限无向图//带权int u,v,w;cin>>u>>v>>w;G[u].push_back({v,w});G[v].push_back({u,w});//仅限无向图
}
for (int u=1;u<=n;u++)for (int v:G[u])//无权for (edge e:G[u])//带权

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661303.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何批量修改文件的时间属性?修改创建时间,修改时间和访问时间

一&#xff0c;前言 在Excel中&#xff0c;修改文件的访问时间、创建时间和修改时间通常不是一个直接的功能。但是&#xff0c;我们可以通过一些间接的方法和工具来实现这一目标。请注意&#xff0c;直接修改这些时间戳可能会影响文件的完整性和安全性&#xff0c;因此在进行任…

交通运输智慧监管平台---强化物流安全与效率的新举措

一、建设背景 随着社会对于交通安全和环境保护的要求不断提高&#xff0c;对卡车运输的监管和合规性要求也逐渐加强。为了满足快速发展的物流需求&#xff0c;提高供应链协同和可追溯性、解决安全问题、提高运输效率和降低成本&#xff0c;我们利用现代技术和信息化手段着力建设…

Systemback Ubuntu14.04 制作自定义系统ISO镜像

工作需要&#xff0c;要基于ubuntu自定义一些编译环境并将自己配置好的ubuntu做成镜像。 硬件准备 ​ 为保证能够顺利完成系统iso镜像的制作与系统还原&#xff0c;推荐准备一个较大容量的U盘或者移动固态硬盘&#xff0c;同时确保自己的Ubuntu系统还有比较大的可用空间。 1 S…

Javascript基础(三)

Javascript基础&#xff08;一&#xff09; Javascript基础&#xff08;二&#xff09; 引用数据类型 在之前的文章中&#xff0c;我们提及了与基本数据类型并列的引用数据类型&#xff0c;当时提到引用数据类型大致分为三类&#xff1a;数组Array&#xff0c;函数Function&a…

c#数据库: 9.删除和添加新字段/数据更新

先把原来数据表的sexy字段删除,然后重新在添加字段sexy,如果添加成功,sexy列的随机内容会更新.原数据表如下: using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; using System.…

基于单片机公交语音报站系统设计 含源码,Proteus仿真原理图

资料下载地址&#xff1a;基于单片机公交语音报站系统设计 含源码,Proteus仿真原理图 1、前言 系统的总体设计需要充分运用STC单片机作为主控控制芯片&#xff0c;完成主控控制电路的基本设计&#xff0c;辅助控制电路是语音控制电路、12864显示电路、按键控制电路、…

Apache POI 在java中处理excel

介绍: Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 Excel 文件。 如何使用: 1.maven坐标引入 <depend…

java-常量池

public class ConstantTest {public static final String s1 "我爱北京天安门";public static final String s2 "我爱北京天安门";public static void main(String[] args) {ConstantTest constantTest new ConstantTest();} }

Kubernetes 弃用Docker后 Kubelet切换到Containerd

containerd 是一个高级容器运行时&#xff0c;又名 容器管理器。简单来说&#xff0c;它是一个守护进程&#xff0c;在单个主机上管理完整的容器生命周期&#xff1a;创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等。 containerd 旨在轻松嵌入到更大的系统中。Docke…

stable diffusion controlnet前处理中的图像resize

在SD controlnet应用中&#xff0c;一般都要先安装controlnet_aux&#xff0c;并在项目代码中import相关前处理模块&#xff0c;如下所示。 在对control image进行前处理&#xff08;比如找边缘&#xff0c;人体特征点&#xff09;之前&#xff0c;往往会图像进行resize&#x…

【Linux系统编程】30.pthread_exit、pthread_join、pthread_cancel

目录 pthread_exit 参数retval 测试代码1 测试结果 pthread_join 参数thread 参数retvsl 返回值 测试代码2 测试结果 pthread_cancel 参数thread 返回值 测试代码3 测试结果 pthread_exit 退出当前线程。 man 3 pthread_exit 参数retval 退出值。 NULL&#xf…

JAVA面试专题-Redis

你在最近的项目中哪些场景使用了Redis 缓存 缓存穿透 缓存穿透&#xff1a;查询一个不存在的数据&#xff0c;mysql查询不到数据也不好直接写入缓存&#xff0c;导致每次请求都查数据库。 解决方案一&#xff1a;缓存空数据&#xff0c;即使查询返回的数据为空&#xff0c;也把…