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设计模式之命令模式的深入解析
Jun 13 PHP
php后门URL的防范
Nov 12 PHP
php获取根域名方法汇总
Oct 28 PHP
PHP中require和include路径问题详解
Dec 25 PHP
详解php中 === 的使用
Oct 24 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
Dec 02 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
PHP中include和require的区别实例分析
May 07 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 PHP
PHP如何使用cURL实现Get和Post请求
Jul 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
php将字符串转换成16进制的方法
2015/03/17 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
报关简历自我评价怎么写
2013/09/19 职场文书
现代化办公人员工作的自我评价
2013/10/16 职场文书
公司员工检讨书
2014/02/08 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
科技节口号
2014/06/19 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
户外亲子活动总结
2015/05/08 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
golang import自定义包方式
2021/04/29 Golang
vue使用echarts实现折线图
2022/03/21 Vue.js