2

I'm trying to find the common nodes that are always visited by each and every possible path in a cyclic directed graph. My idea would be to compute all possible paths and then search for the common elements. However, a) that does not seem to be very efficient and b) it does not account for cycles.

The goal: is to implement oblivious hashing perimeter as a tamper-resistance method. For that I need to identify a set of common basic blocks that are input agnostic in a control flow graph. Put another way, I want to find deterministic chunks of a program (set of basic blocks) that will be executed for any given input.

mr-ma
  • 199
  • 13
  • 2
    `I'm trying to find the common nodes that are always visited by **each and every possible path** in a cyclic directed graph` That's a problematic statement. An empty path (length 0, from a node to itself) is also a path, and according to this, no node (maybe except a graph with |V|<=1) has any node that meets that condition. You need to refine the "each and every path" condition. – amit Sep 02 '16 at 16:16

1 Answers1

1

To do what you want to do, you need to provide a set of start vertices and end vertices for the paths. So your statement would be:

Find all vertices that are always passed when traversing from any vertex in set S to any vertex in set E.

Then you will notice that the vertices you are searching for are Vertex Separators. Algorithms exist to compute a minimum vertex separator.

ypnos
  • 50,202
  • 14
  • 95
  • 141