We have a network flow problem with a given directed graph $G=(V,E)$, for each arc $(i,j) \in E$, there is a cost $c_{ij}$ and upper and lower capacity $u_{ij}$ and $l_{ij}$ for the flow $f_{ij}$ through it. The min-cost flow to minimize $\sum_{(i,j) \in E}{c_{ij}f_{ij}}$ is well known to be solved in polynomial time. But now we are given opportunities to improve the cost on the arcs. Suppose we know in advance that after improvement on an arc, its cost will be reduced by $\Delta_{ij}$. My problem is given an integer $K$ ($K<|E|$), how to select the $K$ arcs to improve so that the resulting min-cost objective function is minimized?
Currently, I can formulate the problem as:
$\min{\sum_{(i,j) \in E}{(c_{ij}-x_{ij}\Delta_{ij})f_{ij}}}$
subject to
- $\sum{f_{ij}} - \sum{f_{ji}}=b_i, \quad i \in V$
- $l_{ij} \leq f_{ij} \leq u_{ij}, \quad (i,j) \in E$
- $\sum{x_{ij}}=K, \quad (i,j) \in E$
- $x_{ij} \in \{0,1\}, \quad (i,j) \in E$
Constraints 1. and 2. are just normal flow constraints while 3. and 4. are like packing constraints. With the introduce of 0/1 variable $x_{ij}$, this problem seems to be hard to solve. So I'm wondering what is the complexity of this problem? Thanks.