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邮件专题
Oct 09 PHP
ExtJS与PHP、MySQL实现存储的方法
Apr 02 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
php实现的一个很好用HTML解析器类可用于采集数据
Sep 23 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 PHP
php检查字符串中是否包含7位GSM字符的方法
Mar 17 PHP
php给图片加文字水印
Jul 31 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
写了个监控nginx进程的Python脚本
2012/05/10 Python
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
Python中的类与对象之描述符详解
2015/03/27 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
python cumsum函数的具体使用
2019/07/29 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
保险经纪人求职信
2014/03/11 职场文书
公司承诺书怎么写
2014/05/24 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python