PHP实现深度优先搜索算法(DFS,Depth First Search)详解


Posted in PHP onSeptember 16, 2017

本文实例讲述了PHP实现深度优先搜索算法。分享给大家供大家参考,具体如下:

深度优先搜索的实现原理:

PHP实现深度优先搜索算法(DFS,Depth First Search)详解

实现代码:

<?php
class Search_Method
{
  //无向图的数组描述
  private $dfs_save;
  //全局记录数组
  private $arr;
  //控制分支-
  private $k = 0;
  public function __construct()
  {
    $this->dfs_save = array(
      array(0,1,1,1,0,0,0,0,0),
      array(1,0,0,0,1,0,0,0,0),
      array(1,0,0,0,0,1,0,0,0),
      array(1,0,0,0,0,0,1,0,0),
      array(0,1,0,0,0,1,0,0,1),
      array(0,0,1,0,1,0,0,1,0),
      array(0,0,0,1,0,0,0,0,0),
      array(0,0,0,0,0,1,0,0,0),
      array(0,0,0,0,1,0,0,0,0),
    );
    $this->arr = array();
  }
  //深度优先搜索的递归实现方法
  public function dfs($v)
  {
    //对顶点做一些操作
    echo str_repeat("-",$this->k);
    echo 'V'.($v+1).'<br>';
    //记录已访问的顶点
    $this->arr[]= $v;
    //查找与顶点相连接的顶点,如果存在就继续深度优先搜索
    for($i=0;$i<9;$i++)
    {
      if(!in_array($i,$this->arr)&&$this->dfs_save[$v][$i]==1)
      {
        $this->k++;
        $this->dfs($i);
      }
    }
    $this->k--;
    return;
  }
}
?>

实现输出结果:

V1
-V2
--V5
---V6
----V3
----V8
---V9
-V4
--V7

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
php学习之数据类型之间的转换介绍
Jun 09 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
根据中文裁减字符串函数的php代码
Dec 03 PHP
PHP采集类Snoopy抓取图片实例
Jun 19 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
PHP字符串与数组处理函数用法小结
Jan 07 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 #PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 #PHP
PHP环形链表实现方法示例
Sep 15 #PHP
PHP实现的链式队列结构示例
Sep 15 #PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 #PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 #PHP
visual studio code 调试php方法(图文详解)
Sep 15 #PHP
You might like
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
Python 初始化多维数组代码
2008/09/06 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
pytorch之添加BN的实现
2020/01/06 Python
Python实现自动访问网页的例子
2020/02/21 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
中东最大的在线宠物店:Dubai Pet Food
2020/06/11 全球购物
新锐科技Java程序员面试题
2016/07/25 面试题
学生请假条格式
2014/04/11 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
医学求职信
2014/05/28 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
房产协议书范本
2014/10/18 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
文艺演出主持词
2015/07/01 职场文书
导游词之青岛太清宫
2019/12/13 职场文书