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数据缓存技术
Feb 14 PHP
理解PHP5中static和const关键字的区别
Mar 19 PHP
php 获取mysql数据库信息代码
Mar 12 PHP
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
php通过文件头判断格式的方法
May 28 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP中cookie知识点学习
May 06 PHP
详解php协程知识点
Sep 21 PHP
PHP7 echo和print语句实例用法
Feb 15 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
一个简易需要注册的留言版程序
2006/10/09 PHP
php 上传功能实例代码
2010/04/13 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
jquery tools之tabs 选项卡/页签
2009/07/25 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
复制粘贴功能的Python程序
2008/04/04 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
python任务调度实例分析
2015/05/19 Python
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python清除函数占用的内存方法
2018/06/25 Python
Python创建或生成列表的操作方法
2019/06/19 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python
APP界面设计技巧和注意事项
2022/04/29 杂记