美文网首页
深度优先算法DFS

深度优先算法DFS

作者: lifefruity | 来源:发表于2020-11-24 13:10 被阅读0次

    与BFS的区别就是一个是取先放的array_shift,一个是取后放的array_pop

    <?php 
    
    //DFS,深度优先算法
    /*
    
    例子中的图
    
            B   *****   D   *****  F
          * *         * *
       *    *        *  *
    A       *      *    *
       *    *    *      *
         *  *  *        *
            c   *****   E
    
    */
    
    
    $graph = [
        'A' => ['B', 'C'],
        'B' => ['A', 'C', 'D'],
        'C' => ['A', 'B', 'D', 'E'],
        'D' => ['B', 'C', 'E', 'F'],
        'E' => ['C', 'D'],
        'F' => ['D'],
    ];
    
    //深度优先算法 是栈
    function DFS($graph, $s){//$s为开始的点
        $stack = [];
        $in = [];
        $in[$s] = 1;
        array_push($stack, $s);
        while(count($stack) > 0){
            $vertex = array_pop($stack);//消耗最后面的点,先进后出
            $nodes = $graph[$vertex];
            foreach($nodes as $w){
                if(!isset($in[$w])){//没有插入过
                    array_push($stack, $w);
                    $in[$w] = 1;
                }
            }
            echo $vertex;
        }
    }
    
    DFS($graph, 'E');
    
    

    相关文章

      网友评论

          本文标题:深度优先算法DFS

          本文链接:https://www.haomeiwen.com/subject/zryiiktx.html