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 set_time_limit(0)长连接的实现分析
Mar 02 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
基于Zend的Config机制的应用分析
May 02 PHP
Zend studio文件注释模板设置方法
Sep 29 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
深入浅出讲解:php的socket通信原理
Dec 03 PHP
PHP实现的简单操作SQLite数据库类与用法示例
Jun 19 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 PHP
详解PHP中curl_multi并发的实现
Jun 08 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
2006/12/13 PHP
相对路径转化成绝对路径
2007/04/10 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
在Python中使用next()方法操作文件的教程
2015/05/24 Python
django框架如何集成celery进行开发
2017/05/24 Python
python 检查文件mime类型的方法
2018/12/08 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Python类如何定义私有变量
2020/02/03 Python
Pycharm github配置实现过程图解
2020/10/13 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
历史专业个人求职信分享
2013/12/20 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
公司聘任书模板
2014/03/29 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
Django实现聊天机器人
2021/05/31 Python
使用JS实现简易计算器
2021/06/14 Javascript
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android