图论基础理论

简介: 了解基础之后,我们要面对,深度优先搜索(dfs)、广度优先搜索(bfs)、并查集、拓扑排序、最小生成树系列、最短路径系列....热血沸腾吧!😉

 在我看来,想要掌握图的基础应用,仅需要三步走。

什么是图(基本概念)、图的构造(打地基)、图的遍历方式(应用的基础)

只要能OK的掌握这三步、就算图论入门了!!!

当然新手也不要恐惧啥的,新知识嘛,就是需要一个接受的过程。

image.gif 编辑

学术上,是这么称图的:

图由顶点(Vertex)集合和(Edge)集合组成,通常表示G(v,e)

当然,这太学术了(~﹃~)~zZ

换句话说,图,就是由顶点与边组成的。

顶点就是各个节点。边就是各个节点的关系or性质。

基本概念:

首先就是图的种类,毕竟人还分不同肤色呢,就更不用说图了。

图分无向图有向图

无向图,边之间没有方向。

image.gif 编辑

有向图,边之间存在方向。

image.gif 编辑

接下来,咱们讲讲的概念。他在有向图与无向图中,分别有不同的含义。

无向图中,只有统一的 “”(因为边无方向)

:与该节点有几条边相邻。

如图,节点1,有4条边与其相连。故度为4。

image.gif 编辑

有向图中,他分别是出度入度总度

出度: 指向其他节点的边。

入度: 其他节点指向本节点的边。

总度: 出度+入度的总和。

如图,节点1:出度(3)、入度(1)、总度(3+1=4)

image.gif 编辑

接下来就讲到,连通图强连通图的概念。

连通图是 图中的概念。意思是每个节点之间,都能相互到达。

但是如果节点之间,无法相互抵达,就是非连通图

如下所示,左侧每个节点之间,都能相互到达,为连通图,而右侧不是却不能。为非连通图。

image.gif 编辑

强连通图同样也是每个节点之间,都能相互抵达,但是有个前提条件,必须按照边的方向。

如图左侧,直接形成了闭环。故为 强连通图。

而图的右侧,为非强连通图(举例:节点4 无法到达 节点3)

image.gif 编辑

构造:

有三种构造方式。

拓扑储存邻接矩阵邻接表

拓扑储存,虽然是Carl自创的名字,但我挺认同的(。・ω・。)

image.gif 编辑

如图,一共有8个节点,如果,想要将这8个节点储存,需要8*2个单位。

如果存在二维数组中,大概需要建立一个二维数组储存。

image.gif 编辑

但是这样的前提是,想要遍历所有内容非常麻烦。(用map储存,用的是同样的效果)

邻接矩阵

邻接矩阵,通过二维数组来储存。是从节点的角度来考虑的。有多大的节点,就分配,其平方大的数组。

如图grid[2][5]=6,代表节点2与节点5之间,有一条节点,权值为6;

在有向图中,grid[2][5]=6 表示为,节点2指向节点6;

在无向图中,若向表示2与5之间有节点。grid[2][5]=6、grid[5][2]=6。

这样联动着表示。

优点:可以迅速查询,两点直接是否有联通。

缺点:适用于稠密图,若果节点变很少,会造成空间极大的浪费。

image.gif 编辑

邻接表

邻接表是通过,数组+链表来储存的。

优点:需要多少边,就申请多少节点。

缺点:若要查询两点之间,是否连通。无法很快查询到。

image.gif 编辑

应用:

其实最后一部分,叫做图的遍历方式更好。

但为啥叫做应用呢,图的应用不就是图的遍历吗,通过各种遍历解决问题。

图的遍历方式大概分为两大类:

深度优先搜索(DFS),与广度优先搜索(BFS)

其实图的遍历方式与树的遍历方式大差不差。

主要还是需要借助实战。

从下一篇博客,就要开始实战喽。

注意⚠️⚠️⚠️,用Carl的话说,图论是非常庞大的知识体系,以上只是一小部分理论基础。

更多的,还是要考刷题积累。

接下来,我们要面对,深度优先搜索(dfs)、广度优先搜索(bfs)、并查集、拓扑排序、最小生成树系列、最短路径系列....热血沸腾吧!


借鉴博客:

1、图论理论基础



目录
相关文章
|
1月前
|
算法
动态规划之完全背包
本文详解完全背包问题:作为动态规划经典题型,区别于01背包(每物限选1次),其特点是每种物品可无限次选取。文章从定义、状态转移方程(dp[i][j] = max(dp[i-1][j], dp[i][j-w]+v))、二维/一维实现到遍历顺序对组合数与排列数的影响,结合零钱兑换II、组合总和IV等5道典型例题深入剖析,助力掌握核心思想与编码技巧。
197 1
|
1月前
|
人工智能 自然语言处理 监控
【养龙虾保姆级教程】OpenClaw是什么?能做什么?怎么部署?
“养龙虾”是开发者对开源AI智能体框架OpenClaw的昵称——它能在本地运行,理解自然语言并直接操控电脑执行任务(如办公、开发、爬虫等),堪称可自托管的“数字员工”。本文带你零基础掌握其原理、能力与安全部署方法。
687 10
|
1月前
|
机器学习/深度学习 人工智能 监控
2000张人脸眼部检测数据集分享(适用于目标检测任务已标注+划分)
本数据集含2000张人脸图像,已精细标注人脸及左右眼位置,按1400/400/200划分为训练/验证/测试集;支持YOLO/VOC/COCO格式,覆盖多场景、光照、姿态与人群属性,标注误差<2像素,开箱即用,适用于疲劳检测、注意力分析等任务。
219 4
|
1月前
|
缓存 安全 测试技术
GO项目开发规范文档解读
本篇博客的目的,更多是为快速翻阅与回忆使用。
190 1
|
1月前
|
人工智能 安全 Linux
OpenClaw Skills深度解析:阿里云/本地部署+大模型api接入,构建可扩展AI Agent能力平台
OpenClaw(曾用名Clawdbot、Moltbot)是一款MIT开源协议的自托管AI Agent网关,可将Discord、Telegram、iMessage等通讯工具与主流大模型对接,实现轻量化AI助理部署。其核心竞争力在于**Skills技能系统**,截至2026年2月,ClawHub已收录超13700个社区技能,成为AI Agent生态的核心扩展载体。
528 0
|
1月前
|
存储 缓存 安全
一文带你读懂 Go 1.24 map 重构了什么?
本文聚焦 Go 1.24 map 底层重构,解释它如何从旧版 bucket + overflow 方案,演进为 Swiss Table + 局部 split 的新结构,以及它所带来的性能提升。
186 1
一文带你读懂 Go 1.24 map 重构了什么?
|
1月前
|
SQL Go
Go反射指南
反射与接口息息相关
131 2
|
1月前
|
机器学习/深度学习 存储 测试技术
DFS/BFS专练-搞定图论基础!(从海岛问题过渡至图论基础应用C/C++)
从海岛问题到图论基础:7 大经典场景 + N 个实战案例,彻底吃透 DFS/BFS 核心逻辑! 遇事不决,直接上纸,画图。
168 3
|
1月前
|
存储 数据库连接 Go
项目跑起来之前的那些事
项目运行前都需要怎么设计?做那些准备呢?本篇博客将会拆解 Go 应用启动的核心代码逻辑
92 1
|
1月前
|
设计模式 Java Go
Go中的switch的8种使用场景:没有你想的那么简单
在 Go 中灵活使用 switch,可以使代码更清晰、更易维护。 switch 是 Go 中不可或缺的控制结构之一
832 1