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 5.0对象模型深度探索之属性和方法
Mar 27 PHP
PHP函数常用用法小结
Feb 08 PHP
php生成excel列序号代码实例
Dec 24 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
php好代码风格的阶段性总结
Jun 25 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 PHP
PHP代码覆盖率统计详解
Jul 22 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 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分页函数代码(简单实用型)
2010/12/02 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
如何编写jquery插件
2017/03/29 jQuery
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
玩转vue的slot内容分发
2018/09/22 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
使用python实现knn算法
2017/12/20 Python
Python装饰器用法实例总结
2018/05/26 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
python实现图像拼接
2020/03/05 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
HTML5之语义标签介绍
2016/07/07 HTML / CSS
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
12岁生日感言
2014/01/21 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
中学生演讲稿
2014/04/26 职场文书
搞笑车尾标语
2014/06/23 职场文书
淘宝客服工作职责
2014/07/11 职场文书