+1  A: 

A sub-graph of a given graph which contains no "redundant edges" is called a 'spanning tree' of that graph. For any given graph, multiple spanning trees are possible.

So, in order to get rid of redundant edges, all you need to do is find any one spanning tree of your graph. You can use any depth-first-search or breadth-first-search algorithm and continue searching till you have visited every vertex in the graph.

Frederick
It is late, but is what he describes really a spanning tree?
Charlie Martin
Yes. He wants to have a sub-graph which contains all the vertices of the original graph with only one way to reach from one vertex to another. That's exactly what a spanning tree is.
Frederick
+1  A: 

Check this: Minimum Spanning Tree

Naveen
If all he needs is get rid of redundant edges, he doesn't have to worry about a _minimum_ spanning tree. Any ole spanning tree will do.
Frederick
Also remember "Given a connected, undirected graph, a spanning tree of that graph is a subgraph which is a tree and connects all the vertices together." Yet his graph isn't undirected.
Robert Gould
+1  A: 
Charlie Martin
A: 

I think the easiest way to do that, actually imagine how it would look in the real work, imagine if you have joints, Like

(A->B)(B->C)(A->C), imagine if distance between near graphs is equals 1, so

(A->B) = 1, (B->C) = 1, (A->C) = 2.

So you can remove joint (A->C).

In other words, minimize.

This is just my idea how I would think about it at start. There are various articles and sources on the net, you can look at them and go deeper.

Resources, that Will help you:

Algorithm for Removing Redundant Edges in the Dual Graph of a Non-Binary CSP

Graph Data Structure and Basic Graph Algorithms

Google Books, On finding minimal two connected Subgraphs

Graph Reduction

Redundant trees for preplanned recovery in arbitraryvertex-redundant or edge-redundant graphs

Lukas Šalkauskas
This type of graph reduction is specifically called a transitive reduction in set-theoretical terms, by the way: http://en.wikipedia.org/wiki/Transitive_reduction
Gracenotes
Yeah, but still You can use algos from various areas to solve this problem, by your needs.
Lukas Šalkauskas
+9  A: 

You want to compute the smallest graph which maintains vertex reachability.

This is called the transitive reduction of a graph. The wikipedia article should get you started down the right road.

Strilanc
Thanks, that's exactly what I'm looking for. The Wikipedia article even mentions 'tred' for Graphviz, which is especially handy, since that's what I'm working with.
Ryan Fox
There it is. I could see the transitive closure was close.
Charlie Martin