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面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 PHP
php中hashtable实现示例分享
Feb 13 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
php简单获取目录列表的方法
Mar 24 PHP
PHP多态代码实例
Jun 26 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 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常用函数总结(180多个)
2016/12/25 PHP
php 可变函数使用小结
2018/06/12 PHP
php的扩展写法总结
2019/05/14 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
解决laravel session失效的问题
2019/10/14 PHP
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python函数装饰器用法实例详解
2015/06/04 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
详解Python中的测试工具
2019/06/09 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
校园活动宣传方案
2014/03/28 职场文书
历史学专业求职信
2014/06/19 职场文书
法定代表人身份证明书
2014/09/10 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
论语读书笔记
2015/06/26 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
python+opencv实现视频抽帧示例代码
2021/06/11 Python
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python