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

visitedxy = 1 #表示已经访问过

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

#取出队列中的首元素

cur = queue-1?还是queue0

queue.pop()

for i in range(0, 4):

nextx = cur0 + diri0

nexty = cur1 + diri1

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

continue

if visitednextxnexty == 1 ++#之前访问过也不能重复加入到队列里++:

continue

queue.append(nextx, nexty)

visitednextxnexty == 1

相关推荐
阳明山水33 分钟前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构
别动我齐刘海2 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
zhangfeng11332 小时前
《从“人工适配“到“智能生成“:KernelSwift 跨国产芯片算子迁移全栈方案解读》 —— 强调范式跃迁和跨硬件属性,适合偏架构分析的写法
人工智能·算法·华为·ai编程·npu
0+1112 小时前
算法 --滑动窗口
c++·算法·leetcode
reikocao3 小时前
大场景下 Hessian 特征值放大与退化检测
算法
hetao17338373 小时前
2026-09-18 hetao1733837 的刷题记录
c++·算法
wuyk5553 小时前
21.计数排序:不用比较的“空间换时间”排序算法
python·算法·排序算法
Rabitebla3 小时前
【Linux系统编程】 指令(二):一条路径是怎么定位到文件的
linux·c++·笔记·学习·算法
库玛西3 小时前
数据结构与算法之美:树、森林与二叉树全解析
c语言·数据结构·笔记·考研·算法·学习方法
木井巳3 小时前
【记忆化搜索】最长递增子序列
java·算法·leetcode·深度优先·剪枝·推荐算法