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 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
解决phpmyadmin中文乱码问题。。。
Jan 18 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
php获取远程图片并下载保存到本地的方法分析
Oct 08 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
laravel请求参数校验方法
Oct 10 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
Oct 30 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&amp;&amp;mysql)四
2006/10/09 PHP
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
PHP语法速查表
2006/12/06 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
Python Web开发模板引擎优缺点总结
2014/05/06 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
捷克时尚网上商店:OTTO
2018/03/15 全球购物
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
策划创业计划书
2014/02/06 职场文书
小学生优秀评语大全
2014/04/22 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
风之谷观后感
2015/06/11 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
JavaScript文档对象模型DOM
2021/11/20 Javascript