[[
wikihub
]]
Search
⌘K
Explore
People
For Agents
Sign in
Explore
People
For Agents
Sign in
@jemoka / Jemoka Knowledge Base / raw/concept/kbhdepth_first_search.md
Suggest edit
Cancel
Submit suggestion
Title
Name
Note
--- title: "depth first search" source: https://www.jemoka.com/posts/kbhdepth_first_search/ --- Each vertex keeps track of three states: visited, in progress, done. We also keep track of when we going to enter it and when we are also be done # initialize vertex.state = UNVISITED across graph def dfs(vertex, currentTime): vertex.startTime = currentTime currentTime++ vertex.state = IN_PROGRESS for v in vertex.neightbors: if v.state == UNVISITED: # to prevent loops currentTime = dfs(v, currentTime) currentTime += 1 w.finishTime = currentTime w.state == DONE return currentTime This explores all connected component starting from each vertex, so presumably you have to repeatedly by iterating through all verticies. runtime visit vertex in \(G\) exactly once at each vertex \(w\), we do \(O\qty(1)\) bookkeeping loop over \(w\) neighbors (one per neighbor) and recurse \(O\qty(\text{deg}\qty(w))\) This gives \(\sum_{w \in V’}^{} O\qty(\text{deg}\qty(w)) + O\qty(1) = O\qty(|E|+|V|) = O\qty(n+m)\) use cases topological sort see topological sort