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 相关文章推荐
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
php中取得文件的后缀名?
Feb 20 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
php使用unset()删除数组中某个单元(键)的方法
Feb 17 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
PHP折半(二分)查找算法实例分析
May 12 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 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判断浏览器的类型和语言的函数代码
2013/02/28 PHP
php批量上传的实现代码
2013/06/09 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
php的4种常见运行方式
2015/03/20 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
新闻学专业应届生求职信
2013/11/08 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
自我评价200字分享
2013/12/17 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书