Algorithm 有人能解释一下广度优先搜索吗?

Algorithm 有人能解释一下广度优先搜索吗?,algorithm,graph-theory,breadth-first-search,Algorithm,Graph Theory,Breadth First Search,有人能解释广度优先搜索解决以下问题吗 我需要找到4和7之间的所有路径,查看与起始节点相邻的所有节点。然后查看与这些节点相邻的所有节点(不返回到已查看的节点)。重复此操作,直到找到满意的节点或不再有节点 对于您指出的问题类型,您可以使用上述过程构建一组路径,终止任何到达所需目标节点的路径,当图形用尽时,终止的路径集就是您的解决方案集。您可以测试连接到根节点的每个节点。然后测试连接到先前节点的每个节点。继续,直到你找到答案 基本上,每次迭代都测试距离根节点相同的节点。广度优先搜索(BFS)意味着您

有人能解释广度优先搜索解决以下问题吗


我需要找到4和7之间的所有路径,查看与起始节点相邻的所有节点。然后查看与这些节点相邻的所有节点(不返回到已查看的节点)。重复此操作,直到找到满意的节点或不再有节点


对于您指出的问题类型,您可以使用上述过程构建一组路径,终止任何到达所需目标节点的路径,当图形用尽时,终止的路径集就是您的解决方案集。

您可以测试连接到根节点的每个节点。然后测试连接到先前节点的每个节点。继续,直到你找到答案

基本上,每次迭代都测试距离根节点相同的节点。

广度优先搜索(BFS)意味着您在进入更深层次之前处理所有起始节点的直接子节点。BFS使用一个队列实现,该队列存储需要处理的节点列表

您可以通过将开始节点添加到队列来启动算法。然后继续运行算法,直到队列中没有任何可处理的内容

当您将一个元素从队列中出列时,它将成为您的活动节点。处理活动节点时,将其所有子节点添加到队列的后面。当队列为空时,终止算法

因为处理的是图形而不是树,所以需要存储已处理节点的列表,这样就不会进入循环

一旦到达节点7,您就有了一个匹配的路径,您可以停止对该递归路径执行BFS。这意味着您只是不将其子级添加到队列中。为了避免循环并知道您访问过的确切路径,在执行递归BFS调用时,请向上传递已访问的节点。

BEGIN

四,

4,2

4,2,1;4,2,3; 4,2,5;

4,2,1;(不合格)4,2,3,6;4,2,5,6; 4,2,5,11;

4,2,3,6,7;(通过)4,2,3,6,8;4,2,5,6,7;(通过)4,2,5,6,8;4,2,5,11,12;

4,2,3,6,8,9;4,2,3,6,8,10; 4,2,5,6,8,9; 4,2,5,6,8,10; 4,2,5,11,12;(失败)

4,2,3,6,8,9;(不合格)4,2,3,6,8,10;(不合格)4,2,5,6,8,9;(不合格)4,2,5,6,8,10;(失败)


结束

将其视为带有指向其他网站链接的网站。让A成为我们的根节点或起始网站

A is the starting page (Layer 1) A links to AA, AB, AC (Layer 2) AA links to AAA, AAB, AAC (Layer 3) AB links to ABA, ABB, ABC (Layer 3) AC links to ACA, ACB, ACC (Layer 3) A是起始页(第1层) A链接到AA、AB、AC(第2层) AA链接到AAA、AAB、AAC(第3层) AB链接到ABA、ABB、ABC(第3层) 连接ACA、ACB、ACC的交流链路(第3层) 这只有三层深。一次搜索一个图层。因此,在本例中,您将从A层开始。如果不匹配,则转到下一层,即AA、AB和AC。如果这些网站都不是您正在搜索的网站,则您将按照链接转到下一层。换句话说,一次只看一层


深度优先搜索(它的补充)可以从A到AA再到AAA。换句话说,你应该先深入再深入。

最好在作业问题上加上这样的标签,以避免投反对票。我不是cs学生。在我的日常工作中,我想用这个算法来解决一些问题,以找到所有的路径。在这种情况下,你用扫描的作业问题作为例子会误导人们。我真的不介意把它标记为作业或不作为作业。但我想尽快学习和应用…“一旦你达到”:不正确。他需要找到从4开始到7结束的所有路径,而不仅仅是一条。@chaos:不,因为BFS是递归的,当你停止时,你只停止了那一次迭代。我所说的“停止”是指不将其子对象添加到队列中。您仍然需要处理队列的其余部分。@chaos:我的措辞可能不太清楚,所以我进一步澄清了。谢谢你指出这一点。你能用伪代码/C++代码解释,这样我就可以学会如何做取决于你在做什么。你真的不能编写伪代码来对点进行广度优先搜索。这没有多大意义。网站将是一个很好的思考方式。想想网页上的链接列表。用其他答案中描述的方式遍历图表。