Decreasing a digraph's edge-weights while keeping net weights of edges at each vertex constant Given a directed weighted graph, is there an algorithm that does the following:


Removes as many edges possible.
Reduces as many weights as possible.


Given the constraint that the net weight of all edges connected to the vertex (sum of incoming edge weights minus sum of outgoing edge weights) remains the same and every edge weight remains non-negative.

Examples:

The graph "A -10-> B -10-> C" could be reduced to "A-10->C" since vertex B has net zero weights (10 incoming and 10 outgoing)

The graph "A -10-> B -3-> A" could be reduced to "A-7->B".

Thanks.
The second objective is just a simple circulation problem http://en.wikipedia.org/wiki/Circulation_problem
as the maximum circulation gives the highest reduction in weight. This problem is basically equivalent to max flow for which efficient algorithms are well known. 

Not so sure about trading of the first and second objective. You might achieve something like this by modelling it as a min concave-cost network flow problem with capacities, e.g. by some cost function that is nearly flat at arc saturation, such that it favours saturating arcs once they are close, but this is NP-hard:
http://link.springer.com/article/10.1007/BF02283688

Maybe there is a more efficient way depending on what you are trying to achieve,  but the constraint that net edge weights remain the same indicate that you are looking for some network flow type algorithm. 

Do you have an application for this in mind?