Mercurial > latex
changeset 151:59e62bb8c8dd
first part of the paper
author | Markus Kaiser <markus.kaiser@in.tum.de> |
---|---|
date | Tue, 29 Jul 2014 13:56:00 +0200 |
parents | 8c10f9532afc |
children | 492a4baaeb86 |
files | minimum_bisection/paper/preamble.tex minimum_bisection/paper/term_paper.bib minimum_bisection/paper/term_paper.tex |
diffstat | 3 files changed, 116 insertions(+), 72 deletions(-) [+] |
line wrap: on
line diff
--- a/minimum_bisection/paper/preamble.tex Sat Jul 05 22:50:50 2014 +0200 +++ b/minimum_bisection/paper/preamble.tex Tue Jul 29 13:56:00 2014 +0200 @@ -27,6 +27,7 @@ \usepackage[math]{blindtext} \newcommand{\R}{\mathbb{R}} +\newcommand{\Rnn}{\mathbb{R}^+_0} \newcommand{\Oh}{\mathcal{O}} \newcommand{\Ih}{\mathcal{I}} \newcommand{\Ell}{\mathcal{L}} @@ -49,6 +50,7 @@ \xdefinecolor{tumorange} {RGB}{227,114, 34} \xdefinecolor{tumlightblue}{RGB}{152,198,234} +\newcommand{\define}[1]{\emph{#1}} % Dummy commands to reuse beamer code \newcommand{\structure}[1]{#1} \newcommand{\alert}[1]{#1}
--- a/minimum_bisection/paper/term_paper.bib Sat Jul 05 22:50:50 2014 +0200 +++ b/minimum_bisection/paper/term_paper.bib Tue Jul 29 13:56:00 2014 +0200 @@ -32,3 +32,16 @@ publisher={Cambridge University Press}, pages={376--385} } + +@book{intro, + added-at = {2012-02-12T20:02:28.000+0100}, + author = {Cormen, Thomas H. and Leiserson, Charles E. and Rivest, Ronald L. and Stein, Clifford}, + biburl = {http://www.bibsonomy.org/bibtex/2225d42638921bee01b4ac8ff991b0a6a/pvortex3}, + edition = 2, + interhash = {dcdeb0ec50a6798abf1724056982b543}, + intrahash = {225d42638921bee01b4ac8ff991b0a6a}, + keywords = {}, + publisher = {The MIT Press}, + title = {Introduction to Algorithms}, + year = 2001 +}
--- a/minimum_bisection/paper/term_paper.tex Sat Jul 05 22:50:50 2014 +0200 +++ b/minimum_bisection/paper/term_paper.tex Tue Jul 29 13:56:00 2014 +0200 @@ -17,33 +17,30 @@ \section{Oblivious Routing} \label{sec:oblivious_routing} -\blindtext -\blindtext +\define{Maximum Flow} is a well understood algorithmic problem. +Given a \define{directed graph $G = (V, E)$}, a mapping $c : E \to \Rnn$ denoted by $c_e \defeq c(e)$ assigning a maximum non-negative capacity to every edge and a \define{source} and \define{target} node $s, t \in V$, we are asked to find a flow of maximum value from $s$ to $t$. +For simplicity, we assume that $G$ is complete, which can be achieved by adding edges of capacity $0$. + +\begin{definition}[Flow \cite{intro}] + A function $f : E \to \Rnn$ assigning a throughput to every edge. + It satisfies the following two properties: + \begin{description} + \item[Capacity Constraint:] For all $e \in E$, we have $f_e \leq c_e$. + \item[Flow Conservation:] For all $v \in V \setminus \left\{ s, t \right\}$, we have + \[\sum_{(u, v) \in E} f_{uv} = \sum_{(v, w) \in E} f_{vw}.\] + \end{description} + We denote $f_e \defeq f(e)$ for $e \in E$ and $f_{uv} \defeq f(u, v)$ for $u, v \in V$. +\end{definition} + +Maximum Flow problem can be solved in polynomial time using a number of algorithms, for example the Ford-Fulkerson method or Push-relabel algorithms, both of which are described in \cite{intro}. + +This paper will introduce a generalization of this problem known as \define{Oblivious Routing} and proof the existence of an $\Oh(\log n)$ approximation scheme based on \cite{racke2008optimal} and described in \cite{approx}. +After giving a definition of the problem, it is formulated as a linear problem and rewritten to yield the desired algorithm using a theorem giving an $\Oh(\log n)$ approximation of arbitrary metrics using tree metrics. +Finally, the result is applied to give an $\Oh(\log n)$ approximation of the \define{Minimum Bisection} problem. \subsection{Problem definition} \label{sub:or_problem} -\begin{definition}[Flow] - A function $f : E \to \R^+$ assigning a throughput to every edge. -\end{definition} - -\blindtext - -\begin{definition}[Congestion] - \begin{align} - \rho = \max{e \in E} \frac{f_e}{c_e} - \end{align} -\end{definition} - -\blindtext - -\begin{problem}[Oblivious Routing] - Given an undirected Graph $G = (V, E)$ and an edge capacity function $c : E \to \R^+$. - Calculate a combination of paths for each $(u, v) \in V^2$ such that for any demand function the congestion will be as small as possible. -\end{problem} - -\blindtext - \begin{figure}[tb] \centering \begin{tikzpicture}[flow graph] @@ -80,44 +77,107 @@ \node at (-0.25, 2.4) {$\lambda_{green} = 0.25 \qquad \lambda_{blue} = 0.5 \qquad \lambda_{red} = 0.25$}; \end{tikzpicture} - \caption{Oblivious Routing} + \caption{A solution to the oblivious flow problem gives a set of paths and an associated convex combination for any two nodes $u, v \in V$. In this case, we are given the green, blue and red path from $u$ to $v$. The dashed demand $d_{uv}$ gets routed along these three paths, split according to the factors $\lambda_i$.} \label{fig:oblivous_routing} \end{figure} +To define Oblivious Routing, we first consider a simpler generalization of Maximum Flow, the \define{Multi-Commodity Flow} problem. +Instead of a single source and target node, we now allow and arbitrary number of nonnegative flow demands between two nodes given by a \define{demand function $d : V^2 \to \Rnn$} on a now undirected graph. +Every such demand $d(u, v)$ must be routed from $u$ to $v$ using a set of $u$-$v$-paths and the total flow $f_e$ on an edge $e \in E$ is the sum of all demands routed through it. +The task of is now to find a flow satisfying all demands while exceeding the capacities of all edges as little as possible. +This excess is called \define{congestion}. + +\begin{definition}[Congestion] + The congestion $\rho$ attributed to a flow $f$ denotes the smallest factor $\rho$ such that for all edges $e \in E$ we have $f_e \leq \rho \cdot c_e$. + \begin{align} + \rho = \max_{e \in E} \frac{f_e}{c_e} + \end{align} +\end{definition} + +This problem is still solvable in polynomial time using linear programming \cite{approx}. +One more generalization leads to the oblivious routing problem. +We now want to find flow solutions without knowing the demands beforehand, i.e. we want to find a set of $u$-$v$-paths and associated fractions of demands for all $u, v \in V$ such that for any demand function this set of paths performs well. + +\begin{problem}[Oblivious Routing] + Given an undirected Graph $G = (V, E)$ and an edge capacity function $c : E \to \R^+$. + Calculate a convex combination of paths for each $(u, v) \in V^2$ such that for any demand function the congestion of the resulting flow will be as small as possible. +\end{problem} + \subsection{Formulation as a linear program} \label{sub:or_lp} -\blindtext + +\begin{figure}[tb] + \centering + \begin{tikzpicture}[flow graph] + \flownodes + \flowedges + \flowtreeedges + + \begin{pgfonlayer}{background} + \node[draw=tumblue, fill=tumblue!20, thick, ellipse, rotate fit=30, fit=(n)(l)(m), inner sep=8pt] (el) {}; + \end{pgfonlayer} + + \path (el) + ++ (200:1) + ++ (0, -0.5) coordinate (label); + \node[below of = label] {\structure{$S(\alert{e_T})$}}; + + \begin{pgfonlayer}{marked} + \foreach \source/ \dest in {l/h,m/e,m/f,n/b} + \draw[tree edge, tumorange] (\source.center) edge (\dest.center); + \end{pgfonlayer} + + \begin{pgfonlayer}{marked} + \draw[tree edge, tumblue] (m.center) edge (e.center); + \end{pgfonlayer} + \path (m) -- node[flow capacity]{$e_T$} (e); + \end{tikzpicture} + + \caption{Removing the edge $e_T$ from the green spanning tree introduces a tree split. One of the two vertex sets we denote as $S(e_T)$ and define the capacity ot the split as the sum of all capacities of edges crossing the boundary of $S(e_T)$, the blue and orange edges.} + \label{fig:tree_splits} +\end{figure} + +To find the desired approximation algorithm, we must first develop some lower bound for the optimal solution. +A simple idea to create a valid (but probably not optimal) solution is to find any spanning tree $T = (V, E_T)$ of $G$ and route any demand along its edges. + +Since it is a spanning tree, there is a unique path from any vertex $u$ to any vertex $v$ in $T$ which will be used to satisfy the complete demand. +For any edge $e_T \in E_T$ the resulting flow $f_{e_T}$ will be the sum of all demands between two nodes connected by this tree edge. +These are exactly the nodes in different connected components created by removing the edge $e_T$. \begin{definition}[Tree Split] + Given a tree $T = (V, E_T)$ and an edge $e_T \in E_T$. + Removing $e_T$ from $T$ splits it into two connected components, one of which we call $S(e_T)$ and the other one being $V \setminus S(e_T)$. + + We call $C(e_T)$ the capacity and $D(e_T)$ the demand of this split given by the sum of all capacities and demands connecting nodes in different connected components. \begin{align} C(e_T) &= \sum_{\substack{u \in S(e_T), \\ v \not\in S(e_T)}} c_{uv}\\ D(e_T) &= \sum_{\substack{u \in S(e_T), \\ v \not\in S(e_T)}} c_{uv} \end{align} \end{definition} -Routing with a spanning tree. -\begin{align} - f(e) &= D(e) -\end{align} -Suppose we find +This definition allows us to write the flow generated by a simple solution to oblivious routing using a spanning tree $T$ as $f_{e_T} = D(e_T)$ for all $e_T \in T$ and $0$ otherwise. We now observe that for a given demand function any solution to the resulting multi-commodity flow problem will be bounded below by all tree splits. + +\begin{lemma} + \label{lem:optimal} + For any tree $T$ and any tree edge $e_T$, any routing in $G$ must contain an edge $e$ with congestion + \begin{align} + \rho_e \geq \frac{D(e_T)}{C(e_T)}. + \end{align} + Therefore, the optimal congestion $\rho^\ast$ of the flow problem can be no better. +\end{lemma} + +We will use this observation to proof our approximation guarantee. +Suppose we find a spanning tree such that every edge has capacity of the capacity of the corresponding tree split times some factor $\alpha \geq 1$. \begin{align} \forall e_T \in E_T.\quad c_{e_T} &\geq \frac{1}{\alpha} C(e_T) - \intertext{Then we have} + \intertext{Using \cref{lem:optimal} we can bound the congestion of this spanning tree in relation to the optimal solution.} \structure{\rho_T} &= \max_{e_T} \frac{D(e_T)}{c_{e_T}}\\ &\structure{\leq} \alpha \max_{e_T} \frac{D(e_T)}{C(e_T)}\\ &\leq \structure{\alpha \rho^\ast} \end{align} +Note that this factor $\alpha$ is a property of the tree and not any specific demand function, thus we know that this tree yields a solution of cost at most $\alpha$ times the optimal solution for any demand. -\begin{lemma} - For any tree $T$ and any tree edge $e_T$, we know that for any routing in $G$ there must be an edge with congestion - \begin{align} - \rho_e \geq \frac{D(e_T)}{C(e_T)} - \end{align} - And therefore the optimal solution $\rho^\ast$ can be no better. -\end{lemma} -\begin{proof} - \blindtext -\end{proof} +This tree does not have to exist however and therefore this approach will not yield any approximation guarantee. Routing with Spanning Trees. \begin{align} @@ -153,37 +213,6 @@ \begin{tikzpicture}[flow graph] \flownodes \flowedges - \flowtreeedges - - \begin{pgfonlayer}{background} - \node[draw=tumblue, fill=tumblue!20, thick, ellipse, rotate fit=30, fit=(n)(l)(m), inner sep=8pt] (el) {}; - \end{pgfonlayer} - - \path (el) - ++ (200:1) - ++ (0, -0.5) coordinate (label); - \node[below of = label] {\structure{$S(\alert{e_T})$}}; - - \begin{pgfonlayer}{marked} - \foreach \source/ \dest in {l/h,m/e,m/f,n/b} - \draw[tree edge, tumorange] (\source.center) edge (\dest.center); - \end{pgfonlayer} - - \begin{pgfonlayer}{marked} - \draw[tree edge, tumblue] (m.center) edge (e.center); - \end{pgfonlayer} - \path (m) -- node[flow capacity]{$e_T$} (e); - \end{tikzpicture} - - \caption{Tree splits} - \label{fig:tree_splits} -\end{figure} - -\begin{figure}[tb] - \centering - \begin{tikzpicture}[flow graph] - \flownodes - \flowedges \draw (l) node[above=3] {\structure{u}}