news 2026/6/15 12:14:02

代码随想录算法训练营第五十天|图论理论基础,深搜理论基础,98. 所有可达路径,广搜理论基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
代码随想录算法训练营第五十天|图论理论基础,深搜理论基础,98. 所有可达路径,广搜理论基础

图论理论基础:邻接矩阵、邻接表??-写不出来 = 没入门

而且图论应用广泛,在大家做项目开发的时候,或多或少都会用到图论相关知识。例如:通信网络(拓扑排序、最短路算法),社交网络(深搜、广搜),路径优化(最短路算法),任务调度(拓扑排序),生物信息学(基因为节点,基因关系为边),游戏开发(A * 算法等)等等

图的种类(有向图、无向图、权重)

度:有多少条边连接这个节点,出度&入度(only make sense when有向图)

连通图(在无向图中,任何两个节点都是可以到达的,我们称之为连通图) & 非连通图

强连通图(在有向图中,任何两个节点是可以相互到达的,我们称之为 强连通图)

连通分量

强连通分量

图的构造

朴素存储(n*2 array)

邻接矩阵(n*n矩阵,内存空间比较大)

邻接表(增量 在于 边 的数量)

图的遍历(之前在“二叉树”学过DFS & BFS-有印象学过,但现在应该不会写了😭)

DFS深搜

BFS广搜

深度优先搜索理论基础Depth First Search

recall: 回溯算法(本质也是dfs)

深搜三部曲:1.确定函数 & 参数,2.确定终止条件,3. for(选择本节点连接的节点) - 处理节点 - dfs(图,选择的节点) - 回溯,撤销处理结果

卡码网:98.可达路径

对AMC真的没招了😮‍💨

Broad First Search广度优先搜索

对于matrix的BFS理解:只能上下左右的方向进行搜索(不能斜着)(队列:先入先出/栈:先进后出/数组)

试着跟着写python pseudo-code:

#使用邻接矩阵存图,遍历过的节点不能再次遍历visited

定义全局变量(四个方向的遍历那个)dir = [[0, 1], [1, 0], [-1,0], [0,-1]]

def bfs(graph, visited, x, y):

#以下是把起点加入队列queue

queue #这是起点坐标

queue.append(x, y)

visited[x][y] = 1 #表示已经访问过

while len(queue) != 0:#队列不为空

#取出队列中的首元素

cur = queue[-1]?还是queue[0]

queue.pop()

for i in range(0, 4):

nextx = cur[0] + dir[i][0]

nexty = cur[1] + dir[i][1]

if nextx, nexty >=#越界了就不能处理

continue

if visited[nextx][nexty] == 1#之前访问过也不能重复加入到队列里:

continue

queue.append([nextx, nexty])

visited[nextx][nexty] == 1

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 22:38:58

53、计算机系统访问权限管理与保护机制解析

计算机系统访问权限管理与保护机制解析 1. 访问权限撤销相关问题 在动态保护系统中,有时需要撤销不同用户对共享对象的访问权限,这会引发一系列问题: - 即时与延迟 :撤销是立即执行,还是会延迟?若延迟,能否知晓何时执行? - 选择性与一般性 :撤销对象的访问权限…

作者头像 李华
网站建设 2026/6/13 7:03:29

64、Windows 7系统组件详解

Windows 7系统组件详解 1. 设备动态配置支持 Windows系统对设备动态配置的支持不断发展。外部磁盘、拇指驱动器、相机等设备不断地插拔,系统能在设备插入时自动识别,找到、安装并加载合适的驱动程序,且通常无需用户干预。当设备拔出时,驱动程序自动卸载,系统继续执行而不…

作者头像 李华
网站建设 2026/6/14 20:52:37

如何将idea最上方的工具栏,最上方的菜单显示出来?

问题描述我发现我的idea的菜单是无法自己显示出来的。必须通过我主动去点击左上方的四条杠(如果菜单没有显示出来会有四条杠的)才能正确地显示出来。解决点击file,找到setting在Appearance&Behavior中找到Appearance,再在其中找到UI Opti…

作者头像 李华
网站建设 2026/6/10 17:11:40

15、Go语言构建Web服务器全解析

Go语言构建Web服务器全解析 1. Web服务器概述 Web服务器应用程序是一种软件,可通过TCP/IP网络使用HTTP协议(以及其他相关协议)提供内容。常见的Web服务器应用有Apache、NGINX和Microsoft IIS等。其常见用例场景如下: - 提供静态文件,如网站及其相关资源,包括HTML页面、…

作者头像 李华
网站建设 2026/6/12 22:54:17

20、Go语言中通道与协程的高级应用

Go语言中通道与协程的高级应用 1. 单向通道 在处理通道变量时,可以指定它们是仅用于发送数据还是仅用于接收数据。这通过 <- 箭头来表示,如果仅用于接收,箭头会在 chan 之前;如果仅用于发送,箭头会在 chan 之后。 func main() {var a = make(chan int)s, r :…

作者头像 李华
网站建设 2026/6/14 20:52:00

27、Go语言反射机制:从接口断言到函数调用的全面解析

Go语言反射机制:从接口断言到函数调用的全面解析 1. 接口断言 接口断言可以在不同接口之间进行。假设有两个不同的接口: type Fooer interface {Foo() } type Barer interface {Bar() }定义两个类型,一个实现其中一个接口,另一个实现两个接口: type A int func (A) …

作者头像 李华