Finding the Reachability Count for all vertices of a DAG

Posted by ChrisH on Stack Overflow See other posts from Stack Overflow or by ChrisH
Published on 2010-03-06T07:08:08Z Indexed on 2010/03/11 4:55 UTC
Read the original article Hit count: 388

I am trying to find a fast algorithm with modest space requirements to solve the following problem.

For each vertex of a DAG find the sum of its in-degree and out-degree in the DAG's transitive closure.

Given this DAG:

DAG from Wikipedia

I expect the following result:

Vertex #   Reacability Count  Reachable Vertices in closure
   7             5            (11, 8, 2, 9, 10)
   5             4            (11, 2, 9, 10)
   3             3            (8, 9, 10)
  11             5            (7, 5, 2, 9, 10)
   8             3            (7, 3, 9)
   2             3            (7, 5, 11)
   9             5            (7, 5, 11, 8, 3)
  10             4            (7, 5, 11, 3)

It seems to me that this should be possible without actually constructing the transitive closure. I haven't been able to find anything on the net that exactly describes this problem. I've got some ideas about how to do this, but I wanted to see what the SO crowd could come up with.

© Stack Overflow or respective owner

Related posts about algorithm

Related posts about graph-theory