Is there an established algorithm for finding redundant edges in a graph?
For example, I\'d like to find that a->d and a->e are redundant, and then get rid of them,
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.