鄰接矩陣實現(xiàn)圖的深度優(yōu)先和廣度優(yōu)先遍歷(PHP)

圖的遍歷分為兩種
深度優(yōu)先DFS
廣度優(yōu)先BFS
概念不必多做解釋,下面上代碼,其實很簡單:

<?php

class Graph{

        public $vertexs;

        public $arc;

        public $num=5;

}

$G=new Graph();

for($i=0;$i<$G->num;$i++){

        $G->vertexs[$i]="V{$i}";

}

$G->arc[1][0]=9;

$G->arc[1][2]=3;

$G->arc[2][0]=2;

$G->arc[2][3]=5;

$G->arc[3][4]=1;

$G->arc[0][4]=6;

//廣度優(yōu)先遍歷

function BFS($G){

        $res=array();

        $queue=array();

        for($i=0;$i<$G->num;$i++){

                $visited[$i]=false;

        }   

        for($i=0;$i<$G->num;$i++){

                if($visited[$i]){

                        break;

                }   

                $visited[$i]=true;

                $res[]=$G->vertexs[$i];

                array_push($queue,$i);

                while(!empty($queue)){

                        $v=array_pop($queue);

                        for($j=0;$j<$G->num;$j++){

                                if($G->arc[$v][$j]>0 && !$visited[$j]){

                                        $visited[$j]=true;

                                        $res[]=$G->vertexs[$j];

                                        array_push($queue,$j);

                                }   

                        }   

                }   

        }   

        return $res;

}

//深度優(yōu)先遍歷

function DFS($G,$i){

        static $res;

        static $visited;

        if(!$visited[$i]){

                $visited[$i]=true;

                $res[]=$G->vertexs[$i];

        }

                for($j=0;$j<$G->num;$j++){

                        if($G->arc[$i][$j]>0 && !$visited[$j]){

                                $visited[$j]=true;

                                $res[]=$G->vertexs[$j];

                                DFS($G,$j);

                        }

                }

        return $res;

}

$b=BFS($G);

$d=DFS($G,1);

var_dump($b);

var_dump($d);

歡迎大家關(guān)注我的公眾號


半畝房頂
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容