图的广度优先搜索算法GFS
为了记录搜索的轨迹,广度优先搜索将每个顶点都找色为白色、灰色和黑色。算法开始时,所有的顶点都是白色的。伴随着搜索的进行,各顶点会逐渐变成灰色,然后成为黑色。与黑色顶点相邻的所有定点都是已经被发现的。灰色顶点可能会有一些白色的相邻顶点,他们代表了已发现与未发现顶点之间的边界。
对于每一个顶点u,其色彩存储于变量color[u]中,u的父母存于变量pai[u]中。
具体代码如下所示(python实现)
def GFS(G, s):
print s
color = {}
d = {}
pai = {}
V = G.keys()
V.remove(s)
for u in V:
color[u] = 'WHITE'
d[u] = '∞'
pai[u] = 'NIL'
d[s] = 0
pai[s] = 'NIL'
Q = []
Q.append(s)
while Q != []:
u = Q.pop();
for v in G[u]:
if color[v] == 'WHITE':
color[v] = 'GRAY'
print v
d[v] = d[u] + 1
pai[v] = u
Q.append(v)
color[u] = 'BLACK'
G ={'A':['B','C'], 'B':['D'], 'C':['E'], 'D':['C','E'], 'E':[]}
GFS(G,'A')

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小橋流水(包含链接)。如您有任何疑问或者授权方面的协商,请给我发邮件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述