有向グラフで BFS アルゴリズムを使用してサイクルを検出しようとしています。サイクルを検出するための私の主なアイデアは次のとおりです。BFS は各ノード (およびエッジ) を 1 回だけ訪問するため、既に訪問したノードに再び遭遇した場合。循環を引き起こします。ただし、私のコードはサイクルを見つけることもあれば、見つけないこともあります。
ウィキペディアから変更した擬似コードは次のとおりです。
1 procedure BFS(G,v):
2 create a queue Q
3 enqueue v onto Q
4 mark v
5 while Q is not empty:
6 t <- Q.dequeue()
7 if t is what we are looking for:
8 return t
9 for all edges e in G.adjacentEdges(t) do
12 u <- G.adjacentVertex(t,e)
13 if u is not marked:
14 mark u
15 enqueue u onto Q
16 else:
17 print "Cycle detected!" //since we saw this node before
私は何が欠けていますか?