Routing Data
The internet is modelled as a directed network $G = (V, E)$, where the vertices are data
centers, and edges represent connections between data centers. There are $k$ types of data,
and for the $i$th type of data, there is a source data center $s_i$, a destination data center $t_i$,
and we want to transfer at least $r_i$ units of this type of data through the network from $s_i$ to
$t_i$ (we are allowed to transfer more). Using edge $e = (u, v)$, we can transfer at most $c_e$ total
units of data from $u$ to $v$. For example, if $c_e = 2$, we could use $e$ to transfer 2 units of type
1 data, or 1 unit of each of type 1 and type 2 data. Our goal is to come up with a plan for
routing each type of data, so that the total amount of data transferred is maximized.
Let $f_{i,e} \ge 0$ denote the number of units of the $i$th type of data we transfer using edge $e$.
Describe how to write each of the following aspects of this problem as linear programming
constraints or objectives in terms of these variables.
(a) For any vertex besides $s_i, t_i$, the amount of data type $i$ arriving at that vertex is the same
as the amount leaving.
(b) The total amount of any kind of data being transferred through edge $e$ is at most $c_e$ units.
(c) At least $r_i$ units of data type $i$ leave $s_i$ (and arrive at $t_i$).
(d) The total amount of data being transferred (i.e., the sum over the source data centers of
the amount of data leaving them) is as large as possible.