PHP實現(xiàn)深度優(yōu)先搜索算法(DFS,Depth First Search)詳解
本文實例講述了PHP實現(xiàn)深度優(yōu)先搜索算法。分享給大家供大家參考,具體如下:
深度優(yōu)先搜索的實現(xiàn)原理:
實現(xiàn)代碼:
<?php class Search_Method { //無向圖的數(shù)組描述 private $dfs_save; //全局記錄數(shù)組 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(); } //深度優(yōu)先搜索的遞歸實現(xiàn)方法 public function dfs($v) { //對頂點做一些操作 echo str_repeat("-",$this->k); echo 'V'.($v+1).'<br>'; //記錄已訪問的頂點 $this->arr[]= $v; //查找與頂點相連接的頂點,如果存在就繼續(xù)深度優(yōu)先搜索 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; } } ?>
實現(xiàn)輸出結(jié)果:
V1 -V2 --V5 ---V6 ----V3 ----V8 ---V9 -V4 --V7
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》及《php程序設(shè)計算法總結(jié)》
希望本文所述對大家PHP程序設(shè)計有所幫助。
- php 大數(shù)據(jù)量及海量數(shù)據(jù)處理算法總結(jié)
- php中最簡單的字符串匹配算法
- PHP經(jīng)典算法集錦【經(jīng)典收藏】
- 關(guān)于PHP遞歸算法和應(yīng)用方法介紹
- PHP面試常用算法(推薦)
- php經(jīng)典算法集錦
- PHP常用算法和數(shù)據(jù)結(jié)構(gòu)示例(必看篇)
- php使用高斯算法實現(xiàn)圖片的模糊處理功能示例
- php實現(xiàn)的常見排序算法匯總
- PHP實現(xiàn)廣度優(yōu)先搜索算法(BFS,Broad First Search)詳解
- 基于PHP實現(xiàn)的多元線性回歸模擬曲線算法
相關(guān)文章
一個基于PDO的數(shù)據(jù)庫操作類(新) 一個PDO事務(wù)實例
原先已經(jīng)寫過一個PDO的數(shù)據(jù)庫操作類,這次只是在原先基礎(chǔ)上進(jìn)行修改。2011-07-07php 使用html5 XHR2實現(xiàn)上傳文件與進(jìn)度顯示功能示例
這篇文章主要介紹了php 使用html5 XHR2實現(xiàn)上傳文件與進(jìn)度顯示功能,結(jié)合實例形式分析了php 使用html5上傳文件過程中progress事件返回進(jìn)度信息相關(guān)操作技巧,需要的朋友可以參考下2020-03-03php動態(tài)讀取數(shù)據(jù)清除最右邊距的方法
下面小編就為大家?guī)硪黄猵hp動態(tài)讀取數(shù)據(jù)清除最右邊距的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04php使用Jpgraph繪制簡單X-Y坐標(biāo)圖的方法
這篇文章主要介紹了php使用Jpgraph繪制簡單X-Y坐標(biāo)圖的方法,實例分析了Jpgraph繪制坐標(biāo)圖及繪制曲線的相關(guān)技巧,需要的朋友可以參考下2015-06-06