Stable flows generalize the well-known concept of stable matchings to markets in which transactions may involve several agents, forwarding flow from one to another. An instance of the problem consists of a capacitated directed network in which vertices express their preferences over their incident edges. A network flow is stable if there is no group of vertices that all could benefit from rerouting the flow along a walk. Fleiner [13] established that a stable flow always exists by reducing it to the stable allocation problem. We present an augmenting path algorithm for computing a stable flow, the first algorithm that achieves polynomial running time for this problem without using stable allocations as a blackbox subroutine. We further consider the problem of finding a stable flow such that the flow value on every edge is within a given interval. For this problem, we present an elegant graph transformation and based on this, we devise a simple and fast algorithm, which also can be used to find a solution to the stable marriage problem with forced and forbidden edges. Finally, we study the stable multicommodity flow model introduced by Király and Pap [27]. The original model is highly involved and allows for commodity-dependent preference lists at the vertices and commodityspecific edge capacities. We present several graph-based reductions that show equivalence to a significantly simpler model. We further show that it is NP-complete to decide whether an integral solution exists.it is without loss of generality to assume that no commodity-specific preferences at the vertices and no commodity-specific capacities on the edges exist. Then, we reduce 3-sat to the integral stable multicommodity flow problem and show that it is NP-complete to decide whether an integral solution exists even if the network in the input has integral capacities only.
PreliminariesA network (D, c) consists of a directed graph D = (V, E) and a capacity function c : E → R ≥0 on its edges. The vertex set of D has two distinct elements, also called terminal vertices: a source s, which has outgoing edges only and a sink t, which has incoming edges only. Besides differentiating between the source and the sink, we will assume that D does not contain loops or parallel edges, and every vertex v ∈ V \ {s, t} has both incoming and outgoing edges. These three assumptions are without loss of generality and only for notational convenience. We denote the set of edges leaving a vertex v by δ + (v) and the set of edges running to v by δ − (v).Definition 1 (flow). Function f : E → R ≥0 is a flow if it fulfills both of the following requirements:A stable flow instance is a triple I = (D, c, r). It comprises a network (D, c) and r, a ranking function that induces for each vertex an ordering of their incident edges. Each non-terminal vertex ranks its incoming and also its outgoing edges strictly and separately. Formally, r = (r v ) v∈V \{s,t} , contains an injective functionWe say that v prefers edge e to e ′ if r v (e) < r v (e ′ ). Terminals do not rank their e...