news 2026/10/19 11:23:39

代码随想录算法训练营第五十天|图论理论基础,深搜理论基础,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/10/19 7:35:40

45、大容量存储结构详解

大容量存储结构详解 在当今数字化时代,大容量存储结构对于计算机系统的高效运行至关重要。本文将深入探讨网络附加存储、存储区域网络、磁盘调度以及磁盘管理等方面的内容。 网络附加存储(NAS) 网络附加存储(NAS)为局域网(LAN)上的所有计算机提供了一种便捷的方式,使…

作者头像 李华
网站建设 2026/10/18 13:52:11

63、Windows 7 操作系统深度解析

Windows 7 操作系统深度解析 1. 引言 Windows 7 是一款 32 位/64 位的抢占式多任务客户端操作系统,适用于采用 Intel IA32 和 AMD64 指令集架构的微处理器。其对应的服务器操作系统 Windows Server 2008 R2 基于与 Windows 7 相同的代码,但仅支持 64 位的 AMD64 和 IA64(安…

作者头像 李华
网站建设 2026/10/18 12:46:27

开源界黑马!EmotiVoice成最有潜力的TTS模型之一

开源界黑马!EmotiVoice成最有潜力的TTS模型之一 在语音助手仍机械地念着“导航已开启”的时候,游戏NPC却能因剧情紧张而声音发颤;当有声书还在用同一语调讲完三小时内容时,虚拟主播已经能用你亲人的声音说“晚安”。这种差异背后&…

作者头像 李华
网站建设 2026/10/18 18:39:22

Java并发编程全解析:从线程安全到JUC容器实战

在Java后端开发中,并发编程是处理高并发场景的核心能力,也是面试的高频考点。线程安全的本质是解决多线程对共享资源的竞争问题,而Java从基础的 synchronized 到JUC(java.util.concurrent)容器,提供了多层次…

作者头像 李华
网站建设 2026/10/18 18:36:48

EmotiVoice语音合成在心理咨询机器人中的应用设想

EmotiVoice语音合成在心理咨询机器人中的应用设想 在深夜的某个时刻,一个年轻人蜷缩在房间角落,轻声说出那句“我撑不下去了”。如果此时有一个声音能温柔回应:“我知道你现在很难受,但你并不孤单”,哪怕它来自一台机器…

作者头像 李华
网站建设 2026/10/19 6:35:07

EmotiVoice深度解析:支持多情感表达的中文TTS引擎

EmotiVoice深度解析:支持多情感表达的中文TTS引擎 在语音交互日益普及的今天,用户早已不再满足于“能说话”的机器。我们期待智能助手能温柔地提醒日程,游戏角色能在战斗中怒吼反击,有声书旁白能随着情节紧张而语气低沉——这些需…

作者头像 李华