The site http://web.eecs.utk.edu/~huangj/CS302S04/notes/graph-searching.html describes that when an adjacency list is used then, DFS and BFS have complexity O(V+E), and if an adjacency matrix is used, the complexity is O(V2). Why is this?
相关问题
- C++ a class with an array of structs, without know
- How to determine +/- sign when calculating diagona
- Character.getNumericvalue in char Frequency table
- Seaborn HeatMap - How to set colour grading throug
- Quickest method for matching nested XML data again
相关文章
- Mercurial Commit Charts / Graphs [closed]
- Is there an existing solution for these particular
- Systematically applying a function to all fields o
- Why can we add null elements to a java LinkedList?
- Is Heap considered an Abstract Data Type?
- Is there any function that is in o(1)?
- Scala variadic functions and Seq
- Sankey diagrams in Python
You must note that for exploring each vertex time required for exploring it is only equal to c*x where x is the indegree of the vertex.Since we are interested in finding the overall complexity, the overall time would be c1*x1+c2*x2...cnxn for n nodes.Taking max(ci)=d,we see that the overall time is <=d(sum of indegrees of all vertices)=d*2m=O(m).Here we have computed the time for not one vertex, but all the vertices taken together.But the enqueuing operation takes time O(n), so overalll O(n+m).
In both cases, the runtime depends on how long it takes to iterate across the outgoing edges of a given node. With an adjacency list, the runtime is directly proportional to the number of outgoing edges. Since each node is visited once, the cost is the number of nodes plus the number of edges, which is O(m + n). With am adjacency matrix, the time required to find all outgoing edges is O(n) because all n columns in the row for a node must be inspected. Summing up across all n nodes, this works out to O(n2).
Hope this helps!