由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 检查graph里面是否有circle,是用BFS,还是DFS?
相关主题
报个Google电面面经LC dp dfs bfs 中等难度题目已经刷完了大概能搞定哪种档次公司
CLRS算法书中BFS的疑问GM面经
求教google 电面 answer贴点面试题, ms和google的
A家电面题贡献一道G家onsite题吧
A家电面被拒贡献个题攒人品吧再问个amazon面试题
Amazon电面纪实请教一个题目
上道图论的吧Amazon电面经
求一个老帖子 amazon面试FAQgraph如何找最短路径?
相关话题的讨论汇总
话题: bfs话题: dfs话题: graph话题: circle话题: vertex
进入JobHunting版参与讨论
1 (共1页)
b*********n
发帖数: 1258
1
是不是mark一下访问过的就可以了
g*******y
发帖数: 1930
2
DFS肯定是可以的,DFS用来找back edge,一个back edge就一定是回路
BFS对于有向图貌似不行,BFS只能找到cross edge,但是cross edge不一定构成回路。
不过对于无向图的话,cross edge就是回路了。
w********p
发帖数: 948
3
DFS可以用back edge来判断是否有loop
BFS 稍微改点code, 对有向图,无向图也都可以
k***e
发帖数: 556
4
你平常是在哪找到的这些题目?能告知一下吗?我只知道careercup。
bfs can be used only for the undirected graph. it is easy to give a counter
example of directly graph that bfs did not work.
dfs works in both cases.
marking is definitely needed.

【在 b*********n 的大作中提到】
: 是不是mark一下访问过的就可以了
w********p
发帖数: 948
5
我也想知道大家都做些啥题
check circle in direct Graph G by BFS
If any logic error, please correct me
BFSCheckCircleDirectedGraph(G, s) { O(V+E)
For all vertex i in vertex[G] –s
color[i] = white
parent[i]=Null;
degree[i]=0;
color[s]=Gray;
parent[s]=Null;
degree[i]=0;
Enqueue (root s);
while Queue != 0
i = head of Queue
for each adjacency vertex j of vertex i
if color[j] == while then
color[j] = Gray;
degree[j] = degree[i]+1;
parent[j] = i;
k***e
发帖数: 556
6
你加了一个checkCircle,对于每个新grey的点再做bfs于已变色的vertices上,看是否
会回到该点。应该是正确的,时间复杂度为O(V^2).
ps,你说下伪码就可以了,我最怕读别人的代码来 :)
w********p
发帖数: 948
7
谢谢你指出时间复杂度。
g*******y
发帖数: 1930
8
check circle有问题。你check circle中,怎么能用BFS里标记的颜色呢。
另外,一个check circle本质就是一个DFS(按照你的递归写法)。你想想,你的程序里
面得调用多少次check circle

【在 w********p 的大作中提到】
: 我也想知道大家都做些啥题
: check circle in direct Graph G by BFS
: If any logic error, please correct me
: BFSCheckCircleDirectedGraph(G, s) { O(V+E)
: For all vertex i in vertex[G] –s
: color[i] = white
: parent[i]=Null;
: degree[i]=0;
: color[s]=Gray;
: parent[s]=Null;

H*M
发帖数: 1268
9
你们为什么非得用BFS?
DFS不是很简单很standard的吗?

【在 g*******y 的大作中提到】
: check circle有问题。你check circle中,怎么能用BFS里标记的颜色呢。
: 另外,一个check circle本质就是一个DFS(按照你的递归写法)。你想想,你的程序里
: 面得调用多少次check circle

g*******y
发帖数: 1930
10
我前面的回帖就说了,DFS做这个挺好的,BFS不合适。

【在 H*M 的大作中提到】
: 你们为什么非得用BFS?
: DFS不是很简单很standard的吗?

H*M
发帖数: 1268
11
就是啊 DFS一个经典用处不就是这个吗
难道interviewer故意为难同学们用BFS...也太令人发指了吧

【在 g*******y 的大作中提到】
: 我前面的回帖就说了,DFS做这个挺好的,BFS不合适。
w********p
发帖数: 948
12
这个额也没法子,n 年前,被面试 问道如何用bfs, dfs, 找circle。 反正答得乱的很

【在 g*******y 的大作中提到】
: check circle有问题。你check circle中,怎么能用BFS里标记的颜色呢。
: 另外,一个check circle本质就是一个DFS(按照你的递归写法)。你想想,你的程序里
: 面得调用多少次check circle

a****n
发帖数: 1887
13
两周前的一个电话面试有这道题
1 (共1页)
进入JobHunting版参与讨论
相关主题
graph如何找最短路径?A家电面被拒贡献个题攒人品吧
Graph DFS IterativeAmazon电面纪实
请问一道题上道图论的吧
F家一题求一个老帖子 amazon面试FAQ
报个Google电面面经LC dp dfs bfs 中等难度题目已经刷完了大概能搞定哪种档次公司
CLRS算法书中BFS的疑问GM面经
求教google 电面 answer贴点面试题, ms和google的
A家电面题贡献一道G家onsite题吧
相关话题的讨论汇总
话题: bfs话题: dfs话题: graph话题: circle话题: vertex