图—搜索——DFS

图的DFS依然和树的DFS思想是一样的。
这是树的DFS文章:
http://blog.csdn.net/karry_zzj/article/details/68951349

记住DFS的核心是递归

接下来我将对《算法导论》中对于DFS的分析进行概述。

  • 思想:它从某个结点v的出发边开始进行探索,直到该结点的所有出发边都被发现为止,然后”回溯“到前一步的状态即v的前驱结点,继续探索转移到前驱结点的出发边,如此不断重复,直至找到最终的解。

  • 过程:如果在对已被发现的结点u的邻接矩阵或链表进行扫描时,每当发现一个结点v时,将v的前驱属性v.π设置为u。除此之外,还在每个结点上加一个时间戳。每个结点有两个时间戳:第一个v.d记录v第一次被发现的时间,第二个v.f记录搜索完成对v的邻接矩阵或链表扫描的时间。其中u.d < u.f

  • 伪代码:
DFS(G)
{
    for each vertex u∈G.v
       u.color = WHITE
       u.π= NIL
     time = 0
     for each vertex u∈G.v
        if u.color == WHITE
            DFS-VISIT(G,u)
}

DFS-VISIT(G,u)
{
    time = time + 1
    u.d = time
    u.color = GRAY
    for each u∈G:Adj[u]
        if v.color == WHITE
            v.π= u
            DFS-VISIT(G,v)
    u.color = BLACK
    time = time + 1
    u.f = time 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值