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通用分页类page.php[仿google分页]
Aug 31 PHP
PHP 中文处理技巧
Apr 25 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
Mar 12 PHP
php实现图片以base64显示的方法
Oct 13 PHP
laravel中命名路由的使用方法
Feb 24 PHP
Django中的cookie与session操作实例代码
Aug 17 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
python进程与线程小结实例分析
Nov 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生成随机用户名和密码的实现代码
2013/02/27 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
jQuery实现仿美橙互联两级导航菜单效果完整实例
2015/09/17 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
GWT (Google Web Toolkit)有哪些主要的原件组成?
2015/06/08 面试题
幼师自我鉴定范文
2013/10/01 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
总经理工作职责范文
2014/03/14 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
颐和园英文导游词
2015/01/30 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Python使用openpyxl批量处理数据
2021/06/23 Python
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
如何使用注解方式实现 Redis 分布式锁
2022/07/23 Redis