news 2026/8/13 22:34:10

代码随想录算法训练营第五十天|图论理论基础,深搜理论基础,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/8/14 3:46:56

47、磁盘存储系统的全面解析与性能优化

磁盘存储系统的全面解析与性能优化 1. 磁盘存储设备概述 磁盘驱动器是大多数计算机上主要的大容量存储 I/O 设备。常见的大容量存储设备主要是磁盘和磁带。现代磁盘驱动器被构建为大型的一维逻辑磁盘块数组,通常每个逻辑块大小为 512 字节。磁盘连接到计算机系统的方式主要有…

作者头像 李华
网站建设 2026/8/13 14:54:07

54、计算机系统安全与程序威胁深度解析

计算机系统安全与程序威胁深度解析 在当今数字化时代,计算机系统的安全至关重要。计算机系统不仅要保护内部的程序和数据,还要应对外部环境带来的各种安全挑战。下面我们将深入探讨计算机系统安全的相关问题,包括安全威胁的类型、程序威胁的常见形式等。 1. 计算机系统安全…

作者头像 李华
网站建设 2026/8/12 12:54:36

58、Linux系统:架构、模块与进程管理解析

Linux系统:架构、模块与进程管理解析 1. Linux系统概述 Linux在整体设计上类似于传统的非微内核UNIX实现,是一个多用户、多任务系统,具备全套与UNIX兼容的工具。其文件系统遵循传统UNIX语义,标准UNIX网络模型也得到了充分实现。Linux的设计细节深受UNIX发展历史的影响。 …

作者头像 李华
网站建设 2026/8/12 10:53:31

59、Linux系统调度与内存管理详解

Linux系统调度与内存管理详解 1. 任务克隆与调度概述 在Linux中, clone() 系统调用是一个强大的工具,它可以根据传入的标志来决定父任务和子任务之间资源的共享情况。若传入 CLONE_FS 、 CLONE_VM 、 CLONE_SIGHAND 和 CLONE_FILES 标志,父任务和子任务将共享相…

作者头像 李华
网站建设 2026/8/13 6:32:52

67、操作系统技术解析:从线程存储到系统特性

操作系统技术解析:从线程存储到系统特性 1. 动态线程本地存储(TLS) 动态线程本地存储(TLS)是在多线程环境中确保每个线程拥有独立变量实例的重要技术。以 C 运行时函数 strtok() 为例,它使用静态变量来跟踪解析字符串时的当前位置。若要让两个并发线程正确执行 strt…

作者头像 李华
网站建设 2026/8/12 11:46:14

EmotiVoice + GPU算力:实现毫秒级高保真语音生成

EmotiVoice GPU算力:实现毫秒级高保真语音生成 在虚拟主播能实时回应粉丝调侃、游戏角色因剧情转折而声音颤抖的今天,语音合成早已不再是“把文字念出来”那么简单。用户期待的是有情绪、有个性、像真人一样的声音——而这背后,是一场模型复…

作者头像 李华