专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

什么是广度优先搜索算法

来源:小嗨整编  作者:小嗨  发布时间:2024-03-19 07:54
摘要:广度优先搜索算法又称为【宽度优先搜索】或【横向优先搜索】,简称bfs。它是用于图的查找算法(要求能用图表示出问题的关联性)。bfs是最简便的图的搜索算法之一,这一算法也是很多重要的图的搜索算法的原型。什么是广度优先搜索算法?怎么用PHP实现...

广度优先搜索算法又称为【宽度优先搜索】或【横向优先搜索】,简称bfs。它是用于图的查找算法(要求能用图表示出问题的关联性)。bfs是最简便的图的搜索算法之一,这一算法也是很多重要的图的搜索算法的原型。

什么是广度优先搜索算法

什么是广度优先搜索算法?怎么用PHP实现?下面本篇文章给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

广度优先搜索的算法(Breadth-FirstTraversal)

广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",简称BFS;BFS是用于图的查找算法(要求能用图表示出问题的关联性)。

BFS是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。

 BFS并不使用经验法则算法。从算法的观点,所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中。一般的实验里,其邻居节点尚未被检验过的节点会被放置在一个被称为 open 的容器中(例如队列或是链表),而被检验过的节点则被放置在被称为 closed 的容器中。

php如何实现广度优先搜索算法?

广度优先搜索的算法思想

广度优先遍历是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。

广度优先搜索遍历类似于树的按层次遍历。对于无向连通图,广度优先搜索是从图的某个顶点v0出发,在访问v0之后,依次搜索访问v0的各个未被访问过的邻接点w1,w2,…。然后顺序搜索访问w1的各未被访问过的邻接点,w2的各未被访问过的邻接点,…。即从v0开始,由近至远,按层次依次访问与v0有路径相通且路径长度分别为1,2,…的顶点,直至连通图中所有顶点都被访问一次。

只要按一定的次序访问各层顶点,方便程序实现,广度优先搜索的整体层次顺序一定,各层访问顺序不是唯一的。

具体描述如下:

设图G的初态是所有顶点均未访问,在G 中任选一顶点i作为初始点,则广度优先搜索的基本思想是:

(1)从图中的某个顶点V出发访问并记录。(2)依次访问V的所有邻接顶点;(3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到。(4)第(3)步。

依此类推,直到图中所有顶点都被访问完为止 。

广度优先搜索在搜索访问一层时,需要记住已被访问的顶点,以便在访问下层顶点时,从已被访问的顶点出发搜索访问其邻接点。所以在广度优先搜索中需要设置一个队列Queue,使已被访问的顶点顺序由队尾进入队列。在搜索访问下层顶点时,先从队首取出一个已被访问的上层顶点,再从该顶点出发搜索访问它的各个邻接点。

SearchInterface.php:

G = $_G;$this->s = $_s;}  public abstract function search();}?>
登录后复制

bfs.php:

d[$i] = 20000;      $this->tt[$i] = NULL;      $this->visit[$i] = 0;    }  }  public function search()  {    //访问所有节点    $queue = array();    for($i=0;$i<9;$i++)    {      if($this->visit[$i]==0)      {        array_push($queue,$i);        while(!empty($queue))        {          $_s = array_shift($queue);          $this->visit[$_s] = 1;          echo ($_s+1).'
'; $link_s = $this->G->get_links($_s); //获取和s直接相连的顶点u foreach($link_s as $j => $u) { if($this->visit[$u]==0) { array_push($queue,$u); $this->visit[$u] = 2; } } } } } }}?>
登录后复制

使用方法:

$G = new Graphic;$search = new bfs($G,1);$search->search();
登录后复制

更多相关知识,请访问 PHP中文网!!

以上就是什么是广度优先搜索算法的详细内容,更多请关注易企推科技其它相关文章!


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/1150653.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!


网络百科
小编:小嗨整编
相关文章相关阅读
  • 阴阳师辉夜姬带什么御魂(阴阳师辉夜姬值得养吗)?

    阴阳师辉夜姬带什么御魂(阴阳师辉夜姬值得养吗)?

    阴阳师辉夜姬带什么御魂(阴阳师辉夜姬值得养吗)?辉夜姬作为阴阳师中的一位强力辅助式神,凭借其独特的技能和强大的辅助能力,成为了许多玩家心仪的选择。那么辉夜姬究竟带什么御魂才能发挥最大潜力呢?本文将为您详细介绍辉夜姬的御魂搭配,并分析其值得养...

  • 阴阳师青行灯什么时候出的(阴阳师青行灯值得培养吗)?

    阴阳师青行灯什么时候出的(阴阳师青行灯值得培养吗)?

    阴阳师青行灯什么时候出的(阴阳师青行灯值得培养吗)?随着阴阳师这款手游的火热,各种式神层出不穷,其中SSR级别的式神更是备受玩家关注。青行灯作为SSR中的常青树,自出道以来便以其独特的技能和强大的实力,吸引了无数玩家的目光。阴阳师青行灯什么...

  • 阴阳师彼岸花什么时候出的(阴阳师彼岸花值得练吗)?

    阴阳师彼岸花什么时候出的(阴阳师彼岸花值得练吗)?

    阴阳师彼岸花什么时候出的(阴阳师彼岸花值得练吗)?彼岸花作为阴阳师中的SSR式神,首次出现在游戏中是在2016年。随后,官方推出了SP版本的彼岸花,名为“夜溟彼岸花”,并于2021年1月6日正式上线。阴阳师彼岸花值得练吗彼岸花的技能设计非常...

  • 魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?

    魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?

    魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?在魔兽世界中,泰兰德是魔兽世界中暗夜精灵种族的代表性角色,她以牧师职业为主。牧师在游戏中拥有强大的治疗和辅助能力,是团队中不可或缺的重要角色。泰兰德作为一名牧师,擅长使用圣光和暗影之力...

  • lol小丑的名字叫什么(lol小丑怎么分辨真假)?

    lol小丑的名字叫什么(lol小丑怎么分辨真假)?

    lol小丑的名字叫什么(lol小丑怎么分辨真假)?在lol英雄联盟中,小丑(Janna)作为一位辅助英雄,以其独特的技能和出色的辅助能力深受玩家喜爱。然而,许多玩家在游戏中可能遇到真假小丑难以辨别的问题。本文将为大家详细解析LOL小丑的名字...

  • lol老鼠叫什么(lol老鼠技能介绍)?

    lol老鼠叫什么(lol老鼠技能介绍)?

    lol老鼠叫什么(lol老鼠技能介绍)?在lol中,老鼠这位英雄正式名称为“瘟疫之源·图奇”。他以其独特的毒液技能和隐身能力,在游戏中扮演着一名出色的刺客和骚扰者。以下是关于老鼠的详细技能介绍:lol老鼠技能介绍一、被动技能——死亡毒液老鼠...

  • dnf红玉髓是干什么用的(dnf红玉髓在哪里兑换)?

    dnf红玉髓是干什么用的(dnf红玉髓在哪里兑换)?

    dnf红玉髓是干什么用的(dnf红玉髓在哪里兑换)?在dnf中,红玉髓是一种非常有用的材料,它不仅能够兑换圣物装备,还能换取各种药剂,对于玩家来说,掌握红玉髓的用途和兑换地点至关重要。dnf红玉髓是干什么用的1.兑换圣物装备:红玉髓是制作圣...

  • 闲鱼app什么时候上线的(闲鱼app官网)?

    闲鱼app什么时候上线的(闲鱼app官网)?

    闲鱼app什么时候上线的(闲鱼app官网)?闲鱼App,原名为“闲鱼二手交易”,作为阿里巴巴集团旗下的知名二手交易平台,自上线以来,受到了广大用户的喜爱。本文将揭秘闲鱼App的上线时间,带您了解闲鱼官网的起源与发展。闲鱼app上线于2015...

  • 周排行
  • 月排行
  • 年排行

精彩推荐