本文实例讲述了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).'
';

//记录已访问的顶点

$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 mysql搜索算法_PHP实现深度优先搜索算法(DFS,Depth First Search)详解相关推荐

  1. 数据结构与算法(python):广度优先搜索(Breadth First Search,BFS)和深度优先算法(Depth First Search,DFS)

    参考自 MOOC数据结构与算法Python版 目录 一.广度优先搜索 1.1 BFS算法过程 1.2 广度优先搜索算法分析 二.深度优先搜索 2.1 骑士周游 2.1.1 问题定义 2.1.2 构建骑 ...

  2. 图的深度优先遍历(Depth First Search)

    图的深度优先遍历(Depth First Search) 基本思想 类似于二叉树的先序遍历 假设图中所有结点均未被访问,从初始结点访问,访问其第一个邻接结点,接着以被访问的邻接结点作为初始结点,访问它 ...

  3. mysql5.7.11 linux_CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解...

    MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定发行版安装包(如 .rpm)以及二进制通用版安装包(.tar.gz).一般情况下,很多项目都倾向于采用二进制通用安装包形式来进行安 ...

  4. 双向搜索算法(基于深度优先搜索算法的优化)

    最近在整理搜索算法相关内容,今天来介绍一下双向搜索算法 传统的深度优先算法,通过不断寻找子状态和回溯,来达到遍历所有状态的目的,存在不少缺点. 1. 可能会陷入死循环:如果图中存在环路,深度优先算法可 ...

  5. mysql的聚合函数综合案例_MySQL常用聚合函数详解

    一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...

  6. mysql 6.5安装_RedHat6.5安装MySQL5.7教程详解

    RedHat6.5安装MySQL5.7教程分享,供大家参考,具体内容如下 安装环境:RedHat6.5 第一步:下载 下载MySQL5.7:http://dev.mysql.com/get/Downl ...

  7. mysql二进制文件复制_MySQL 主从复制:基于二进制文件复制配置详解

    ##MySQL-主从复制:基于二进制文件复制详解 ###前言 主从复制是指把一个MySQL的数据库服务器作为主服务器(master),然后把master的数据复制到一个或者多个MySQL数据库服务器作 ...

  8. mysql 创建删除表_mysql创建删除表的实例详解

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name ...

  9. mysql添加两种数据类型_MySQL入门(二) 数据库数据类型详解

    序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...

最新文章

  1. 没错,使用 Nacos 踩坑了
  2. 不用精子就能繁育后代,科学家只用1个卵细胞就培育出健康小鼠,来自上交医学院 | PNAS...
  3. 紫书搜索 例题7-10 UVA - 11212 Editing a Book 迭代加深搜索 IDA*
  4. elasticsearch启动错误解决
  5. 二维数组求平均值(指针的使用)
  6. 双三次插值图像旋转_4K/8K电视中的超分辨率技术到底是啥?让我来告诉你(二-插值篇)...
  7. 【华为云技术分享】敏捷开发落地不实际?原因可能在于你的 IDE 工具
  8. linux python指向python3_linux下切换python2和python3(转)
  9. 美团面试一道场景设计题
  10. python闭包函数的必要条件_Python闭包函数
  11. Vue_(组件)实例属性
  12. matlab单位采样序列程序,matlab产生pn序列
  13. css+html实现时间轴
  14. 服务器创建文件失败是什么意思,网站提示无法创建文件错误解决详情(图文)...
  15. python画水平线和垂直线横线 纵线
  16. 苏州地区--校招IT公司
  17. properties的配置信息出现\u7684\u6570\u636e\u5e93\u914d\u7f6e
  18. 自制的百度输入法皮肤
  19. 计算机术语rander是什么意思,Rendering Engine,呈现引擎还是渲染引擎?
  20. WPF 实现简易北京地铁效果图

热门文章

  1. 快速切换目录软件推荐——autojump
  2. Asp.Net 导出数据格式为Excel 数据的9种方案
  3. load control template file /_controltemplates/taxonomypicker.ascx failed
  4. 千呼万唤始出来 ===Visual Studio Team System 2008 Team Suite 中文版 Out!!!
  5. 10-1-Spring Boot综合项目实战-准备工作
  6. java 的 provider_Java里的Provider是什么?
  7. java restcontroller_Spring框架:@RestController与@Controller
  8. python时间戳_Python-强大的模块功能库-No11
  9. python测量镜头到目标距离_摄像头单目测距原理及实现
  10. python 开闭原则_Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】