使用BFS检测循环运行的线性时间算法?

时间:2018-06-15 02:32:52

标签: java pseudocode cycle breadth-first-search

这是一种算法,我使用psedocode格式使用广度优先搜索来检测图表中的周期:



Select any vertex v0 of G; initialize a queue with v0; mark v0 as visited; set T[v0] := null
 while queue is non-empty do
   v := front vertex of queue
 for each neighbor w of v do
   if w is unvisited then
     mark w as visited; add w to the queue; T[w] := v
else
  if T[v] != w then return ”Cross Edge: Cycle!”
    remove front vertex from queue
return ”Graph has no cycles!!"




由于BFS以线性时间运行,这也是线性时间算法吗?我唯一担心的是,由于我们有n-1个边,我们在一个周期中检查n个顶点,这将是一个二次时间算法。我想确保在此之前我能抓住这个循环。

0 个答案:

没有答案