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 年龄计算函数(精确到天)
Jun 07 PHP
解析php利用正则表达式解决采集内容排版的问题
Jun 20 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
php查询ip所在地的方法
Dec 05 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
php 表单数据的获取代码
2009/03/10 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
php基本函数汇总
2015/07/09 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
js实现一个简易计算器
2020/03/30 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
python rsa 加密解密
2017/03/20 Python
python基本语法练习实例
2017/09/19 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
Linux的文件类型
2016/07/05 面试题
物业工作计划书
2014/01/10 职场文书
公司端午节活动方案
2014/02/04 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
清洁工个人工作总结
2015/03/05 职场文书
个性发展自我评价2015
2015/03/09 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
JS 基本概念详细介绍
2021/10/16 Javascript
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL