相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
PHP實(shí)現(xiàn)深度優(yōu)先搜索算法(DFS,Depth First Search)詳解

本文實(shí)例講述了PHP實(shí)現(xiàn)深度優(yōu)先搜索算法。分享給大家供大家參考,具體如下:
深度優(yōu)先搜索的實(shí)現(xiàn)原理:
實(shí)現(xiàn)代碼:
<?php class Search_Method { //無(wú)向圖的數(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)先搜索的遞歸實(shí)現(xiàn)方法 public function dfs($v) { //對(duì)頂點(diǎn)做一些操作 echo str_repeat("-",$this->k); echo 'V'.($v+1).'<br>'; //記錄已訪問(wèn)的頂點(diǎn) $this->arr[]= $v; //查找與頂點(diǎn)相連接的頂點(diǎn),如果存在就繼續(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; } } ?>