图算法:深度优先搜索

来源:互联网 发布:淘宝贷款被骗了怎么办 编辑:程序博客网 时间:2024/06/05 18:05

深度优先搜索

数学原理:括号化定理、白色路径定理
树边:
前向边:
后向边:
横向边:

算法伪代码

非递归(使用栈代替递归)

DFS-VISIT:    STACK.push(u)    while ! STACK.empty        u = STACK.top        if u.color == GRAY            u.color = BLACK            time = time + 1            u.f = time            STACK.pop            continue        if u.color == WHITE            u.color = GRAY            time = time + 1            u.d = time        for each v ∈ G:Adj[u]            v.π = u            STACK.push(u)

递归型DFS

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.pre = time   // 开始访问    u.color = GRAY    for each v ∈ G:Adj[u]        if v.color == WHITE            v.π = u            DFS-VISIT(G,v)    u.color = BLACK    time = time + 1    u.post = time  //访问离开
原创粉丝点击