|
| 1 | +\documentclass{article} |
| 2 | + |
| 3 | +\usepackage{xspace,amsmath,amssymb,amsthm,fullpage} |
| 4 | + |
| 5 | +\newcommand{\R}{\mathbb{R}} |
| 6 | + |
| 7 | + |
| 8 | +\begin{document} |
| 9 | + |
| 10 | +\section{Overview} |
| 11 | + |
| 12 | +Instead of maximizing $(\sum \mathrm{ANCH})^3+(\sum \mathrm{ANSH})^3$, we maximized $M(\sum \mathrm{ANCH})+(\sum \mathrm{ANSH})$ for a very huge constant $M$. |
| 13 | +If we ignore the triple/twin constraints, the problem can be solved by using a minimum-cost flow algorithm. |
| 14 | +Using this relaxation lower bound, we solved the original problem by the branch-and-bound method. |
| 15 | + |
| 16 | +\section{Details} |
| 17 | + |
| 18 | +\subsection{Problem} |
| 19 | + |
| 20 | +The problem can be formulated as follows. |
| 21 | +Given a bipartite graph $G=(U\cup V,E)$, an edge-weight function $w:E\to\R$, a multiplicity function $d:U\to\R_{> 0}$, and a capacity function $c:V\to\R_{> 0}$, |
| 22 | +find a minimum-weight subset $M\subseteq E$ satisfying (i) $|M\cap \delta(u)|=1$ and (ii) $\sum_{uv\in M\cap\delta(v)}d(u)=c(v)$. |
| 23 | + |
| 24 | +\subsection{Relaxation} |
| 25 | + |
| 26 | +The LP relaxation of this problem is the minimum-cost flow problem, which can be solved in polynomial time. |
| 27 | +More particularly, we construct a network as follows. |
| 28 | +Each edge $uv\in E$ has capacity $d(u)$ and cost $w(uv)/d(u)$. |
| 29 | +Each vertex $u\in U$ has supply $d(u)$, and each vertex $v\in V$ has demand $c(v)$. |
| 30 | +In the original problem, we have additional constraints that, for every edge $uv\in E$, its flow value must be either $0$ or $d(u)$. |
| 31 | + |
| 32 | +\subsection{Branch and Bound} |
| 33 | + |
| 34 | +For solving the original problem, we use a branch-and-bound method. |
| 35 | +For every node of the search tree, we do as follows. |
| 36 | + |
| 37 | +First, we compute a relaxed solution by solving the minimum-cost flow problem (we implemented a cost-scaling algorithm by Goldberg and Tarjan). |
| 38 | +At the root node, we need to solve the relaxed problem from scratch, but for the other nodes, we can obtain a relaxed solution in $O(|E|\log |V|)$ time by modifying the relaxed solution for the parent node by searching an augmenting path. |
| 39 | + |
| 40 | +If the obtained relaxed solution is larger than the solution for the original problem we have found so far, we quit the subsequent search and backtrack to the parent node. |
| 41 | +Otherwise, we choose an edge $uv$ whose flow value $f(uv)$ is neither $0$ nor $d(u)$. |
| 42 | +If there are no such edges, we obtain an improved solution for the original problem and backtrack to the parent node. |
| 43 | +Otherwise, we branch into two cases: $f(uv)=0$ or $f(uv)=d(u)$. |
| 44 | +In order to make the search space smaller, we compute a relaxed solution for every unsatisfying edge and choose the one with the largest lower bound. |
| 45 | + |
| 46 | +\subsection{Reductions} |
| 47 | + |
| 48 | +Because the input is very large, we cannot solve it directly. |
| 49 | +First, we remove all the edges of weight zero and relax the constraints (i) and (ii) to (i') $|M\cap \delta(u)|\leq 1$ and (ii') $\sum_{uv\in M\cap\delta(v)}d(u)\leq c(v)$. |
| 50 | +From the solution for this relaxed problem, we construct a solution for the original problem by solving the knapsack problem. |
| 51 | + |
| 52 | +Second, we apply the reduced-cost fixing as follows. |
| 53 | +Let $D$ be the difference between a known upper bound and the current lower bound. |
| 54 | +Let $f$ be the minimum-cost flow and let $p:U\cup V\to\R$ be the dual variables (i.e., potentials). |
| 55 | + |
| 56 | +For edge $uv\in E$ with $f(uv)<d(uv)$, the increase of the cost for fixing $f(uv)=d(u)$ is at least $(w(uv)+p(u)-p(v))(d(u)-f(uv))$. |
| 57 | +Therefore, if this value is larger than $D$, we can fix $f(uv)=0$. |
| 58 | + |
| 59 | +For edge $uv\in E$ with $f(uv)>0$, the increase of the cost for fixing $f(uv)=0$ is at least $f(uv)\ell(u,v)$, where $\ell(u,v)$ is the shortest-path distance from $u$ to $v$ in the residual graph. |
| 60 | +Therefore, if this value is larger than $D$, we can fix $f(uv)=d(u)$. |
| 61 | +Because $|V|$ is small (1000), we can compute all the distances $\ell(u,v)$ by using the Dijkstra's algorithm against the reversed graph. |
| 62 | + |
| 63 | +\end{document} |
0 commit comments