Directed Graphs

1 / 8

# Directed Graphs - PowerPoint PPT Presentation

Directed Graphs. Types of Edges. Forward, back, cross and tree edges. DAGs. Odd to mention them now, but they will come up later and now’s as good a place as any. They have unique search characteristics. acyclic == linearizability == no back edges. Strongly Connected Components.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Directed Graphs' - shandi

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Directed Graphs

Types of Edges

Forward, back, cross and tree edges.

DAGs
• Odd to mention them now, but they will come up later and now’s as good a place as any.
• They have unique search characteristics.

acyclic == linearizability == no back edges.

Strongly Connected Components

Set of vertices such that each vertex is reachable from every other vertex—including itself.

Directed analogue of a biconnected component.

Finding SCCs
• Book assumes you know G^R
• We’ll assume you don’t.
Tarjan’s Algorithm

Input: Graph G = (V, E)

index = 0 // DFS node number counter

S = empty // An empty stack of nodes

forall v in V do

if (v.index is undefined) // Start a DFS at each node

tarjan(v) // we haven't visited yet

procedure tarjan(v)

v.index = index // Set the depth index for v

index = index + 1

S.push(v) // Push v on the stack

forall (v, v') in E do // Consider successors of v

if (v'.index is undefined) // Was successor v' visited?

tarjan(v') // Recurse

else if (v' is in S) // Was successor v' in stack S?

if (v.lowlink == v.index) // Is v the root of an SCC?

print "SCC:"

repeat

v' = S.pop

print v'

until (v' == v)

Tarjan’s Algorithm
• Does it work?
• How fast is it?
• Can we do better?
• Is it parallelizable?