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获取网卡地址的代码
Apr 09 PHP
php adodb连接带密码access数据库实例,测试成功
May 14 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
深入PHP数据加密详解
Jun 18 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
php生成txt文件标题及内容的方法
Jan 16 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
php 输入输出流详解及示例代码
Aug 25 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 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内嵌函数用法实例
2015/03/20 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
javascript从作用域链谈闭包
2020/07/29 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python 12306抢火车票脚本
2018/02/07 Python
基于Python List的赋值方法
2018/06/23 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
自我评价中英文语句
2013/11/30 职场文书
yy结婚证婚词
2014/01/10 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
质量整改报告范文
2014/11/08 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
安全保证书怎么写
2015/02/28 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
运动会宣传稿100字
2015/07/23 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL