的PHP实现广度优先搜索算法的详细解决方案(BFS,广度优先搜索)

的PHP实现广度优先搜索算法的详细解决方案(BFS,广度优先搜索)
本文介绍了广度优先搜索算法的PHP实现,供大家分享,供大家参考

广度优先搜索算法的思想,Breadth FirstTraversal

广度优先遍历是连通图的遍历策略。因为它的想法从一个顶点V0,它为在更广泛的地区周围辐射优先后。

广度优先搜索遍历类似树的层次遍历。无向连通图的广度优先搜索从图的一个顶点V0。在访问V0,它搜索并且相邻节点W1,W2,V0搜索又搜索。然后W1的未访问的邻接点,并计算相邻点的W2,…从V0开始,从近到远,到路径的访问由V0和路径长连接的路径是1, 2,分别为顶点,直到在连通图的所有顶点访问一次。

只要我们按照一定的顺序访问每一层的顶点,程序就很容易实现。整个广度优先搜索的顺序是确定的,每个层的访问顺序不是唯一的。

详细描述如下:

图G是所有顶点不可访问的初始状态,可以选择一个顶点i作为初始点,广度优先搜索的基本思想是:

(1)图中顶点V的访问和记录。

(2)v的所有相邻顶点依次访问。

(3)从这些邻接点开始,依次访问它们未访问过的相邻点,直到所有顶点的相邻点都被访问为止。

(4)步骤(3)。

通过类推,直到图中的所有顶点都被访问为止。

广度优先搜索,当搜索一层接入,需要记住,已被访问的顶点,所以当访问较低的顶点,它的搜索和访问邻近的联系人已被访问的顶点。所以在广度优先搜索,您需要设置一个队列使顶点为了使被访问的队列的队列。当寻找底部的顶点,顶级已经首先访问的是从团队的头,然后相邻的点是从顶点搜索。

SearchInterface.php:
< PHP
抽象类searchinterface
{
保护的美元;
受保护的$;图的第一个节点
功能__construct(_g美元,美元_s){ $这-> G = _g美元;美元-> = $ _s;}
抽象函数搜索();
}
>

Bfs.php:
< PHP
include_once('searchinterface。php);
课堂延伸searchinterface BFS
{
私有=数组($ d);在源s和顶点u距离之间
存储在变量中的私有数组
私有=数组($访问);具有访问节点
功能__construct(_g美元,美元_s)
{
家长::__construct(_g美元,美元_s);
初始化初始值为0。
($ i = 0;$ i < 9;$ + +)
{
$ 20000;
此$;
$ >访问{ $ } = 0;
}
}
公共功能搜索()
{
访问所有节点
$队列=数组();
($ i = 0;$ i < 9;$ + +)
{
如果($ >访问$ } = 0)
{
array_push($队列,我);
而(!空($队列)
{
_s = array_shift美元($队列);
美元->访问{ $ _s } = 1;
回声($ _s + 1);
link_s美元=美元->克-> get_links($ _s);
捕获和s直接连接到顶点u
foreach(link_s美元美元美元J = U)
{
如果($ >访问$ 0)
{
array_push($队列,$ U);
$ > >访问{ $ } = 2;
}
}
}
}
}
}
}
>

使用方法uff1a
新图形;
$搜索=新BFS(G,1);
搜索(搜索);

关于PHP相关内容的更多读者感兴趣的读者可以看到特别站:PHP数据结构和算法教程

希望本文能对PHP程序设计有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部