由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - CLRS算法书中BFS的疑问
相关主题
如何实现binary tree的从下到上的分层打印?share 面试题
求救: 打印binary tree这个用stack实现queue
A家来两道电面题如何用JAVA中的circular array of queue 解决Josephus problem? (转载)
检查graph里面是否有circle,是用BFS,还是DFS?M$ screening coding题2道
[电话面试] 非死不可问个题:get max value from Queue, with O(1)?
昨天被面试的问题贡献一道G家电面题
一道面试题面试题
请教一个系统设计问题 (转载)问个OO题 (转载)
相关话题的讨论汇总
话题: bfs话题: 结点话题: gray话题: white话题: black
进入JobHunting版参与讨论
1 (共1页)
h****e
发帖数: 928
1
书中声称结点不涂成灰色也不会影响算法的正确性。
我觉得这是有问题的:最短路径的长度不会有问题,但是要是
要打印出最短路径就会有问题。如下是一个简单的3个结点的
有向图:
R
/ \
/ \
v v
Y <----- U
假定BFS开始,所有结点都是白色。
从R开始,R->U, 然后R->Y,R涂成黑色。Y和U的父结点都是R。
现在到U,因为U没有涂成灰色,Y的父结点就变成U了。最后
在打印R到U的最短路径就变成R->U->Y。这显然是错的。
各位大虾看看我什么地方想错了吗?
h****e
发帖数: 928
2
自己顶一下。没有人帮忙看看吗?
l*********8
发帖数: 4642
3
我觉得你说的没问题。

【在 h****e 的大作中提到】
: 书中声称结点不涂成灰色也不会影响算法的正确性。
: 我觉得这是有问题的:最短路径的长度不会有问题,但是要是
: 要打印出最短路径就会有问题。如下是一个简单的3个结点的
: 有向图:
: R
: / \
: / \
: v v
: Y <----- U
: 假定BFS开始,所有结点都是白色。

f**********2
发帖数: 2401
4
没看太明白。。。详细说说书中原话?
h****e
发帖数: 928
5
谢谢longway2008的支持。
flyinocean12,下面是书中的BFS算法,s是开始结点。
BFS(G, s)
1 for each vertex u in G.V - {s}
2 u.color = WHITE
3 u.d = INFINITY
4 u.parent = NIL
5 s.color = GRAY
6 s.d = 0
7 s.parent = NIL
8 Q = {};
9 ENQUEUE(Q, s)
10 while Q<>{}
11 u = DEQUEUE(Q)
12 for each v in G.Adj[u]
13 if v.color==WHITE
14 v.color = GRAY
15 v.d = u.d + 1
16 v.parent = u
17 ENQUEUE(Q,v)
18 u.color = BLACK
然后练习题是这么说的:
Ex 22.2-3
Show that using a single bit to store each vertex color suffices by arguing
that the BFS procedure would produce the same result if lines 5 and 14 were
removed.
l*********8
发帖数: 4642
6
只需要 BLACK and WHITE. GRAY can be replaced by BLACK.

【在 h****e 的大作中提到】
: 谢谢longway2008的支持。
: flyinocean12,下面是书中的BFS算法,s是开始结点。
: BFS(G, s)
: 1 for each vertex u in G.V - {s}
: 2 u.color = WHITE
: 3 u.d = INFINITY
: 4 u.parent = NIL
: 5 s.color = GRAY
: 6 s.d = 0
: 7 s.parent = NIL

h****e
发帖数: 928
7
明白了。多谢!

【在 l*********8 的大作中提到】
: 只需要 BLACK and WHITE. GRAY can be replaced by BLACK.
l*********8
发帖数: 4642
8
you're welcome

【在 h****e 的大作中提到】
: 明白了。多谢!
r****l
发帖数: 50
9
my solution:
When line 5 and 14 are removed. Only need a bool value u.color;
Algorithm can modify as described, and also give the same result: (only
changes in the line numbered shows below)
2 u.color = True
5 u.color = False
13 if v.color == True
18 u.color = False
c********t
发帖数: 5706
10
ls各位,如果vertex没有color field,是不是需要用visited hashset 代替?

【在 r****l 的大作中提到】
: my solution:
: When line 5 and 14 are removed. Only need a bool value u.color;
: Algorithm can modify as described, and also give the same result: (only
: changes in the line numbered shows below)
: 2 u.color = True
: 5 u.color = False
: 13 if v.color == True
: 18 u.color = False

s*w
发帖数: 729
11
我看有人的 code 里面用 set visited;只保存 visited

【在 c********t 的大作中提到】
: ls各位,如果vertex没有color field,是不是需要用visited hashset 代替?
c********t
发帖数: 5706
12
嗯,俺就是那个意思。

【在 s*w 的大作中提到】
: 我看有人的 code 里面用 set visited;只保存 visited
1 (共1页)
进入JobHunting版参与讨论
相关主题
问个OO题 (转载)[电话面试] 非死不可
一道很难的面试题昨天被面试的问题
A第一轮电面,求建议,面完必update一道面试题
Two programming questions...请教一个系统设计问题 (转载)
如何实现binary tree的从下到上的分层打印?share 面试题
求救: 打印binary tree这个用stack实现queue
A家来两道电面题如何用JAVA中的circular array of queue 解决Josephus problem? (转载)
检查graph里面是否有circle,是用BFS,还是DFS?M$ screening coding题2道
相关话题的讨论汇总
话题: bfs话题: 结点话题: gray话题: white话题: black