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 相关文章推荐
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
Feb 09 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
May 15 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
Apr 04 PHP
PHP类的特性实例分析
Sep 28 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 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
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
Position属性之relative用法
2015/12/14 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
python 自动去除空行的实例
2018/07/24 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
为什么要用EJB
2014/04/17 面试题
编辑求职信样本
2013/12/16 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技