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的header和asp中的redirect比较
Oct 09 PHP
php zend解密软件绿色版测试可用
Apr 14 PHP
PHP 分页类(模仿google)-面试题目解答
Sep 13 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
yii框架中的Url生产问题小结
Jan 16 PHP
php分页代码学习示例分享
Feb 20 PHP
php常用文件操作函数汇总
Nov 22 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
PHP 对象接口简单实现方法示例
Apr 13 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
杏林同学录(二)
2006/10/09 PHP
基于PHP文件操作的详解
2013/06/05 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
python 实现矩阵填充0的例子
2019/11/29 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
平面设计师的工作职责
2013/11/21 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers