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 相关文章推荐
用Flash图形化数据(一)
Oct 09 PHP
PHP SQLite类
May 07 PHP
Linux下php5.4启动脚本
Aug 03 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
php基础教程
Aug 26 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
php htmlentities()函数的定义和用法
May 13 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
Laravel下生成验证码的类
Nov 15 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 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实现mysql同步的实现方法
2009/10/21 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
javascript中的this详解
2014/12/08 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
Vue.js对象转换实例
2017/06/07 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
python抓取网页中的图片示例
2014/02/28 Python
Python中的jquery PyQuery库使用小结
2014/05/13 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Python实现图片拼接的代码
2018/07/02 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
村党支部书记承诺书
2014/05/29 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
团队会宣传标语
2014/10/09 职场文书
实习单位指导教师评语
2014/12/30 职场文书
天鹅湖观后感
2015/06/09 职场文书