学习编程中的Ben 发表于 2024-2-1 17:10:10

新手必看·BFS快速入门(鱼币~~~)

本帖最后由 学习编程中的Ben 于 2024-2-1 22:43 编辑


Hello everyone!我寒假暂时回归嘻嘻!{:10_298:} 顺手就写个BFS教程吧(其实是想赶紧升级,想到资深鱼油,多评点分吧!)
**** Hidden Message *****
**** Hidden Message *****


求大家给我评点分,谢谢啦~{:10_297:}
@陶远航 @liuhongrun2022 @Mike_python小 @歌者文明清理员 @不二如是 @小甲鱼 @cjjJasonchen

如果有听不懂的地方,或者改进我的帖子的意见,请评论区回复奥

FishC 发表于 2024-2-1 17:11:50

哈喽!欢迎来到编程的奇妙世界!BFS(广度优先搜索)是一种常用的图算法,可以用于解决许多问题。现在,让我来帮你快速入门BFS吧!

2.什么是BFS?

BFS是一种图遍历算法,它从图的某个指定顶点开始,逐层地遍历图中的所有顶点。具体来说,BFS首先遍历指定顶点的邻居顶点,然后再遍历邻居顶点的邻居顶点,以此类推。这种遍历过程类似于“波纹扩散”,所以叫做广度优先搜索。

3.如何实现BFS?

要实现BFS算法,我们需要使用一个队列来管理待遍历的顶点。具体步骤如下:

- 创建一个空队列,并将起始顶点入队。
- 创建一个空集合,用来记录已经被访问过的顶点。
- 当队列非空时,重复以下步骤:
- 从队列中取出一个顶点,并标记为已访问。
- 访问该顶点,并处理它。
- 将该顶点的未访问邻居顶点加入队列。

4.举个例子吧!

假设我们有一个图,用邻接矩阵表示:

graph = [,
         ,
         ,
         ]

其中,顶点0、1、2、3分别代表A、B、C、D。我们从顶点0(A)开始进行BFS遍历。

from collections import deque

def bfs(graph, start):
    visited = set()# 记录已访问的顶点
    queue = deque()# 创建队列
    queue.append(start)# 起始顶点入队
   
    while queue:
      vertex = queue.popleft()# 取出队首顶点
      visited.add(vertex)# 标记为已访问
      
      print("Visiting vertex:", vertex)# 处理顶点
      
      neighbors = graph# 获取邻居顶点
      for i in range(len(neighbors)):
            if neighbors == 1 and i not in visited:# 如果邻居未访问过,则入队
                queue.append(i)

# 测试代码
graph = [,
         ,
         ,
         ]
bfs(graph, 0)

上述代码会按照BFS的顺序输出访问的顶点。

希望这个简单的例子可以帮助你理解BFS算法!如果还有疑问,请随时提问哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

中英文泡椒 发表于 2024-2-1 17:12:42

这是挖坑还没写完吗{:10_256:}

学习编程中的Ben 发表于 2024-2-1 17:13:35

中英文泡椒 发表于 2024-2-1 17:12
这是挖坑还没写完吗

是......

中英文泡椒 发表于 2024-2-1 17:14:48

学习编程中的Ben 发表于 2024-2-1 17:13
是......

哈哈哈这ai好烦{:5_104:}

歌者文明清理员 发表于 2024-2-1 17:15:40

AI:我帮你写了{:10_256:}

学习编程中的Ben 发表于 2024-2-1 18:10:10

@sfqxx @~风介~ @中英文泡椒 @人造人 @isdkz @琅琊王朝 @KeyError @Ewan-Ahiouy @yinda_peng

某一个“天” 发表于 2024-2-1 18:20:20

{:10_256:}支持

yinda_peng 发表于 2024-2-1 18:24:05

学习编程中的Ben 发表于 2024-2-1 18:10
@sfqxx @~风介~ @中英文泡椒 @人造人 @isdkz @琅琊王朝 @KeyError @Ewan-Ahiouy @yinda_peng

{:10_275:}

学习编程中的Ben 发表于 2024-2-1 18:24:11

某一个“天” 发表于 2024-2-1 18:20
支持

真看懂了吗?我自己都在反思要不要多讲一两个示例

学习编程中的Ben 发表于 2024-2-1 18:26:03

yinda_peng 发表于 2024-2-1 18:24


评个分吧!我想升级{:10_254:}

不二如是 发表于 2024-2-1 18:35:35

搬好板凳,围观中

某一个“天” 发表于 2024-2-1 18:54:55

宽度优先和广度优先是一个东西

某一个“天” 发表于 2024-2-1 18:56:10

DFS是深度优先搜索

某一个“天” 发表于 2024-2-1 18:56:54

另外,有人给我也评点分吗?马上就要到中级了

中英文泡椒 发表于 2024-2-1 19:00:31

学习编程中的Ben 发表于 2024-2-1 18:10
@sfqxx @~风介~ @中英文泡椒 @人造人 @isdkz @琅琊王朝 @KeyError @Ewan-Ahiouy @yinda_peng

这么快写好啦!

学习编程中的Ben 发表于 2024-2-1 19:14:43

中英文泡椒 发表于 2024-2-1 19:00
这么快写好啦!

所以叫做快速入门

学习编程中的Ben 发表于 2024-2-1 19:15:25

中英文泡椒 发表于 2024-2-1 19:00
这么快写好啦!

包快不包会嘿嘿

中英文泡椒 发表于 2024-2-1 19:16:03

学习编程中的Ben 发表于 2024-2-1 19:15
包快不包会嘿嘿

效率忒高了,毕竟我刚刚看还是空白页哈哈

zhangchenyvn 发表于 2024-2-1 20:30:39

~来评分了~
页: [1] 2 3 4
查看完整版本: 新手必看·BFS快速入门(鱼币~~~)