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 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 PHP
PHP通过引用传递参数用法分析
Dec 01 PHP
PHP写的简单数字验证码实例
May 23 PHP
Yii框架核心组件类实例详解
Aug 06 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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
thinkphp分页实现效果
2016/10/13 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
Vue单文件组件基础模板小结
2017/08/10 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
名片管理系统python版
2018/01/11 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
Linux常见面试题
2016/10/04 面试题
2013年入党人员的自我鉴定
2013/10/25 职场文书
2015年派出所工作总结
2015/04/24 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
Python中相见恨晚的技巧
2021/04/13 Python