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 22 PHP
php反弹shell实现代码
Apr 22 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
php include和require的区别深入解析
Jun 17 PHP
php旋转图片90度的方法
Nov 07 PHP
php输出xml必须header的解决方法
Oct 17 PHP
php短址转换实现方法
Feb 25 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
php文件上传、下载和删除示例
Aug 28 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
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下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
python 实现归并排序算法
2012/06/05 Python
python使用递归解决全排列数字示例
2014/02/11 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
国外软件测试工程师面试题
2016/12/09 面试题
中专生自荐信
2013/10/12 职场文书
毕业自荐书
2013/12/09 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
英语教育专业自荐信
2014/05/29 职场文书
学生偷窃检讨书
2014/09/25 职场文书
单位授权委托书范本
2014/09/26 职场文书
学习心理学心得体会
2016/01/22 职场文书