Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1309029
  • 博文数量: 92
  • 博客积分: 10389
  • 博客等级: 上将
  • 技术积分: 1918
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-10 16:13
文章存档

2014年(1)

2012年(15)

2009年(6)

2008年(37)

2007年(72)

2006年(54)

我的朋友

分类: LINUX

2007-08-07 17:36:44

深度算发:
 
 
 
 

縱向優先搜尋 (depth-first search)


depth-first search 是以某一節點為出發點,不斷地前進拜訪未曾被拜訪過的節點,直到無路可走或是所有相鄰的節點都已經拜訪過為止,然後再退回前一個節點,尋找沒有拜訪過的節點,直到所有相鄰的節點都已被拜訪過。因此,進行 depth-first search 時,需要使用 stack ,以便記錄所走過的路徑。


  1. 起始。


  2. 假設從 a 開始拜訪,我們將 a 放進stack。

    STACK
    stack top a

    a 有三個節點可以拜訪 (b, c, d)。

  3. 假設我們選擇拜訪 b ,我們將 b 放進stack。

    STACK
    stack top b
    a

    b 有三個節點可以拜訪 (c, e, f)。

  4. 假設我們選擇拜訪 c ,我們將 c 放進stack。

    STACK
    stack top c
    b
    a

    c 只能拜訪 f。

  5. 我們選擇拜訪 f ,我們將 f 放進stack。

    STACK
    stack top f
    c
    b
    a

    由於 f 沒有節點可以拜訪,我們把 f 從stack取出。
    STACK
    stack top c
    b
    a

    由於 c 也沒有節點可以拜訪,我們也把 c 從stack取出。
    STACK
    stack top b
    a

    b 可以拜訪 e。

  6. 我們選擇拜訪 e ,我們將 e 放進stack。

    STACK
    stack top e
    b
    a

    由於 e 沒有節點可以拜訪,我們把 e 從stack取出。
    STACK
    stack top b
    a

    由於 b 也沒有節點可以拜訪,我們也把 b 從stack取出。
    STACK
    stack top a

    a 可以拜訪 d。

  7. 我們選擇拜訪 d ,我們將 d 放進stack。

    STACK
    stack top d
    a

    d 只能拜訪 g。

  8. 我們選擇拜訪 g ,我們將 g 放進stack。

    STACK
    stack top g
    d
    a

    由於 g 沒有節點可以拜訪,我們把 g 從stack取出。
    STACK
    stack top d
    a

    由於 d 也沒有節點可以拜訪,我們也把 d 從stack取出。
    STACK
    stack top a

    由於 a 也沒有節點可以拜訪,我們也把 a 從stack取出。
    此時 stack 已經全部清空,depth-first search完成。
阅读(1441) | 评论(1) | 转发(0) |
0

上一篇:fs type 概要

下一篇:和广度算法

给主人留下些什么吧!~~

chinaunix网友2010-02-02 10:35:31

sdfdsf