BFS算法框架

这里给出BFS基本算法框架,核心就是借助队列这种数据结构,每次遍历将一个节点的所有邻居节点加入到队列,然后按照队列 FIFO 的特性,实现BFS算法。

python 复制代码
# BFS 算法框架
#  计算从起点 start 到终点 target 的最近距离
def bfs(start, traget):
    step = 0
    # 核心数据结构
    queue = []
    # 避免走回头路
    visited = []
    # 将起点加入队列中
    queue.append(start)
    visited[start] = True

    while queue:
        sz = len(queue)
        for i in range(sz):
            cur = queue.pop()
            # 划重点:这⾥判断是否到达终点
            if cur == traget:
                return step

            for neighbor in cur.adj():
                if not visited[neighbor]:
                    queue.append(neighbor)
                    visited[neighbor] = True

        step += 1
    
    return step
相关推荐
qq_419563094 天前
ToT 的 BFS/DFS 有个致命缺口:蒙特卡洛树搜索(MCTS)用「随机试错+统计」让大模型想得更深,小模型 + 它竟超过 GPT-4
算法·深度优先·宽度优先
不会就选b4 天前
算法日常・每日刷题--<BFS&&最短路径>4
算法·宽度优先
不会就选b9 天前
算法日常・每日刷题--<BFS>4
算法·宽度优先
科学实验家11 天前
DFS,BFS
算法·深度优先·宽度优先
2501_9423895512 天前
时钟组件支持自由拖拽缩放
人工智能·散列表·启发式算法·宽度优先·图搜索算法
No8g攻城狮12 天前
【算法】什么是 DFS 与 BFS 及他们的区别
算法·深度优先·宽度优先
gbase_lmax15 天前
深度递归与广度递归(DFS,BFS)实现
算法·深度优先·宽度优先
有点。16 天前
C++广度优先搜索(二)-练习题
c++·算法·宽度优先
间歇性努力持续性发呆的野生快乐选手20 天前
dfs回溯,bfs枚举,完全背包
c++·算法·深度优先·宽度优先
起个破名想半天了1 个月前
算法与数据结构之BFS广度优先遍历
数据结构·算法·bfs·宽度优先