Compare commits

...

12 Commits

Author SHA1 Message Date
dfdc10893d change template 2025-06-21 20:40:06 +08:00
c74a801c2f wrong conj 2025-05-11 17:09:16 +08:00
dd3a210ef4 gap is not constant 2025-05-06 19:48:43 +08:00
19eb1b8d09 gap 4 2025-04-28 20:15:33 +08:00
ff2dc7d1ee linear relaxation is wrong. 2025-04-28 17:28:04 +08:00
5609db649d lp for normalized mincut cont'd 2025-04-28 17:08:04 +08:00
f222382508 lp for normalized mincut 2025-04-28 15:42:20 +08:00
93c1055de8 add λ_i properties 2025-04-28 11:37:26 +08:00
6612a1d920 ... 2025-04-27 12:02:52 +08:00
98f7757670 change ref name and paper size 2025-04-26 23:55:46 +08:00
ae0853cee4 optimal λ 2025-04-22 20:55:34 +08:00
290e0ed4e5 remove a conjecture 2025-04-22 13:51:34 +08:00
7 changed files with 656 additions and 37 deletions

3
.gitignore vendored
View File

@@ -1,3 +1,6 @@
.vscode/
*.sage.py
## Core latex/pdflatex auxiliary files: ## Core latex/pdflatex auxiliary files:
*.aux *.aux
*.lof *.lof

1
.latexmkrc Normal file
View File

@@ -0,0 +1 @@
$pdflatex=q/xelatex -synctex=1 %O %S/

BIN
main.pdf

Binary file not shown.

View File

@@ -1,24 +1,27 @@
\documentclass[12pt]{article} \documentclass[12pt]{article}
\usepackage{chao} \usepackage[sans]{myctex}
\usepackage[breakable, theorems, skins]{tcolorbox}
\tcbset{enhanced}
\DeclareRobustCommand{\note}[2][blue]{% \geometry{a4paper,margin=2cm}
\begin{tcolorbox}[ % \usepackage[breakable, theorems, skins]{tcolorbox}
breakable, % \tcbset{enhanced}
left=0pt, % \DeclareRobustCommand{\note}[2][blue]{%
right=0pt, % \begin{tcolorbox}[
top=0pt, % breakable,
bottom=0pt, % left=0pt,
colback=white, % right=0pt,
colframe=#1, % top=0pt,
width=\dimexpr\textwidth\relax, % bottom=0pt,
enlarge left by=0mm, % colback=white,
boxsep=5pt, % colframe=#1,
arc=0pt,outer arc=0pt, % width=\dimexpr\textwidth\relax,
] % enlarge left by=0mm,
#2 % boxsep=5pt,
\end{tcolorbox} % arc=0pt,outer arc=0pt,
} % ]
% #2
% \end{tcolorbox}
% }
\title{connectivity interdiction} \title{connectivity interdiction}
\author{} \author{}
@@ -102,7 +105,7 @@ where the second inequality uses \autoref{lem:conditionalLB}.
One can see that if $\alpha>2$, $\frac{w(C^N\setminus F^N)}{w(C^*\setminus F^*)}\leq \frac{B}{\alpha B-b} <1$ which implies $(C^*,F^*)$ is not optimal. Thus for $\alpha >2$, $X^*$ must be a $2$-approximate solution to $\min_{X\in\mathcal F} w_\tau(X)$. One can see that if $\alpha>2$, $\frac{w(C^N\setminus F^N)}{w(C^*\setminus F^*)}\leq \frac{B}{\alpha B-b} <1$ which implies $(C^*,F^*)$ is not optimal. Thus for $\alpha >2$, $X^*$ must be a $2$-approximate solution to $\min_{X\in\mathcal F} w_\tau(X)$.
Finally we get a knapsack version of Theorem 4: Finally we get a knapsack version of Theorem 4:
\begin{theorem}[Theorem 4 in \cite{vygen_fptas_2024}] \begin{theorem}[Theorem 4 in \cite{vygen_fptas_2024}]\label{thm:main}
Let $X^{\min}$ be the optimal solution to $\min_{X\in\mathcal F} w_\tau(X)$. Let $X^{\min}$ be the optimal solution to $\min_{X\in\mathcal F} w_\tau(X)$.
The optimal set $X^*$ in \autoref{bfreeknap} is a The optimal set $X^*$ in \autoref{bfreeknap} is a
2-approximation to $X^{\min}$. 2-approximation to $X^{\min}$.
@@ -174,11 +177,11 @@ Now this LP looks similar to the normalized min-cut problem.
A further reformulation (the new $x$ is $x-y$) gives us the following, A further reformulation (the new $x$ is $x-y$) gives us the following,
\begin{equation}\label{lp:cutinterdict} \begin{equation}\label{lp:conninterdict}
\begin{aligned} \begin{aligned}
\min& & \sum_{e} x_e w(e) & & \\ \min& & \sum_{e} x_e w(e) & & \\
s.t.& & \sum_{e\in T} x_e+y_e&\geq 1 & &\forall T\quad \text{($x+y$ is a cut)}\\ s.t.& & \sum_{e\in T} x_e+y_e&\geq 1 & &\forall T\quad \text{($x+y$ is a cut)}\\
& & \sum_{e} y_e c(e) &\leq B & &\text{(budget for $F$)}\\ & & \sum_{e} y_e c(e) &\leq b & &\text{(budget for $F$)}\\
% & & x_e&\geq y_e & &\forall e\quad(F\subset C)\\ % & & x_e&\geq y_e & &\forall e\quad(F\subset C)\\
& & y_e,x_e&\in\{0,1\} & &\forall e & & y_e,x_e&\in\{0,1\} & &\forall e
\end{aligned} \end{aligned}
@@ -225,15 +228,16 @@ Now we focus on $L(\lambda)=\min \{w(C\setminus F)-\lambda(b-c(F)) | \forall \te
Let $B$ be the minimum cost of cuts in $G$. Let $B$ be the minimum cost of cuts in $G$.
We have $-\lambda(b-B)\leq w(C\setminus F)-\lambda(b-c(F))$ for any cut $C$ and $F\subsetneq C$. Thus the upperbound is $\e=\min \frac{w(C\setminus F)}{B-c(F)}$. We have $-\lambda(b-B)\leq w(C\setminus F)-\lambda(b-c(F))$ for any cut $C$ and $F\subsetneq C$. Thus the upperbound is $\e=\min \frac{w(C\setminus F)}{B-c(F)}$.
\note{It remains to show that the optimal solution at $\e$ guarantees $c(F)\leq b$? or maybe we don't need this for normalized mincut. I think normalized min-cut should not require $c(F)\leq b$. Further checks are needed. What we can guarantee is that $c(F)\leq B$.} % \note{It remains to show that the optimal solution at $\e$ guarantees $c(F)\leq b$? or maybe we don't need this for normalized mincut. I think normalized min-cut should not require $c(F)\leq b$. Further checks are needed. What we can guarantee is that $c(F)\leq B$.}
\subsection{differences}
Consider $L(\lambda)$ for cut problem. One can see that the optimal $\lambda$ is clearly 0 since $L(\lambda)$ is pwl concave and the slope is negative at $\lambda=0$. What we are really interested in is the first segment on $L$. At the left end, $L(0)$ is exactly the weight of minimum cut. (the complementary slackness condition is satisfied.) At the right end, as we have shown in the previous paragraph, $\lambda$ equals to the value of the strength (which is the optimum of the linear relaxation of the cut IP). However, for cut interdiction problems $L(0)$ is not the optimum.
\subsection{a fundamental difference}
Consider $L(\lambda)$ for cut problem. One can see that the optimal $\lambda$ is clearly 0 since $L(\lambda)$ is pwl concave and the slope is negative at $\lambda=0$. What we are really interested in is the first segment on $L$. At the left end, $L(0)$ is exactly the weight of minimum cut. (the complementary slackness condition is satisfied.) At the right end, as we have shown in the previous paragraph, $\lambda$ equals to the value of the strength (which is the optimum of the linear relaxation of the cut IP). However, for cut interdiction problems $L(0)$ is not the optimum. Need to understand this better...
\subsection{integrality gap} \subsection{integrality gap}
I guess the 2-approximate min-cut enumeration algorithm implies an integrality gap of 2 for cut interdiction problem. I guess the 2-approximate min-cut enumeration algorithm implies an integrality gap of 2 for cut interdiction problem.
First consider the dual of linear relaxation of \autoref{lp:cutinterdict}. First consider the dual of linear relaxation of \autoref{lp:conninterdict}.
\begin{equation}\label{lp:dualcutint} \begin{equation}\label{lp:dualcutint}
\begin{aligned} \begin{aligned}
@@ -248,17 +252,39 @@ We want to prove something like tree packing theorem for \autoref{lp:dualcutint}
The optimum of \autoref{lp:dualcutint} is $\min \set{\frac{w(C\setminus F)}{B-c(F)}| \forall \text{cut $C$}, c(F)\leq b}$, where $B$ is the cost of mincut in $G$ and $b$ is the budget. The optimum of \autoref{lp:dualcutint} is $\min \set{\frac{w(C\setminus F)}{B-c(F)}| \forall \text{cut $C$}, c(F)\leq b}$, where $B$ is the cost of mincut in $G$ and $b$ is the budget.
\end{conjecture} \end{conjecture}
I believe the previous conjecture is not likely to be true. This one seems better, I believe the previous conjecture is not likely to be true.
\begin{conjecture}\label{conj:optimaldual} \paragraph{Weight truncation} Assuming we know the optimal $\lambda$ to the LP dual, \autoref{lp:dualcutint} in fact gives the idea of weight truncation. The capacity of each edge $e$ in the ``tree packing'' is $\min\{c(e)\lambda,w(e)\}$. Therefore, the optimum of \autoref{lp:dualcutint} is $\Lambda_{w_\tau}^{fr}-b\lambda$, where $\Lambda_{w_\tau}^{fr}$ is the fractional mincut on $G$ with weights $w_\tau$.
$\lambda=\min \frac{w(C\setminus F)}{B-c(F)}$ is optimal for \autoref{lp:dualcutint}.
\paragraph{The optimal $\lambda$} Denote by $\lambda^*$ the optimal $\lambda$ that maximizes $L(\lambda)$. From the previous argument on the first segment of $L(\lambda)$ we know that $\lambda^* \geq \min \frac{w(C\setminus F)}{B-c(F)}$. Now assume $\lambda^* > \min_{c(F)\leq b} \frac{w(C\setminus F)}{b-c(F)}$. We have $\min w(C\setminus F)-\lambda^*(b-c(F))<w(C\setminus F)-\min_{c(F)\leq b} \frac{w(C\setminus F)}{b-c(F)}(b-c(F))=0$ since the optimum must be achieved by $F$ such that $0\leq b-c(F)$(the slope). The negative optimum of $L(\lambda)$ contradicts the fact that $L(0)=0$ and $L$ is concave. Hence, the optimal solution $\lambda^*$ is in the range $[\min\frac{w(C\setminus F)}{B-c(F)},\min_{c(F)\leq b}\frac{w(C\setminus F)}{b-c(F)}]$.
It would be nice if we can prove that any breakpoint is of the form $\min \frac{w(C\setminus F)}{b'-c(F)}$ for some $b'\in [b,B]$. However, this seems incorrect. Let $\{(C_0,F_0),\dots,(C_h,F_h)\}$ be the sequence of solutions for each segment on $L(\lambda)$ and let $\lambda_1< \dots <\lambda_{h}$ be the sequence of breakpoints. ($\lambda_i$ is the intersection of the corresponding segments of $(C_{i-1},F_{i-1})$ and $(C_i,F_i)$.)
\begin{lemma}
$\lambda_i=\min \frac{w(C\setminus F)-w(C_{i-1}\setminus F_{i-1})}{c(F_{i-1})-c(F)}$, where the minimum is taken over all cut $C$ and $F\subset C$ such that both the numerator and denominator are positive.
\end{lemma}
The proof is using the argument for showing $\lambda_1=\min \frac{w(C\setminus F)}{B-c(F)}$ and induction. $\lambda_i$ looks similar to normalized mincut but is related to the slope and vertical intercept of a previous segment.
\begin{conjecture}\label{conj:intgap}
\autoref{lp:conninterdict} has an integrality gap of 4.
\end{conjecture} \end{conjecture}
Assuming \autoref{conj:optimaldual} is true, \autoref{lp:dualcutint} in fact gives the idea of weight truncation. The capacity of each edge $e$ in the ``tree packing'' is $\min\{c(e)\lambda,w(e)\}$. However, \autoref{conj:intgap} is wrong. The integrality gap is unbounded. Consider a cycle $C_n$ of $n$ vertices with two special edges $e_1,e_2$. Let $L$ be a large number.
\[
w(e)=\begin{cases}
1 & e=e_1\\
L & e=e_2\\
2 & \text{else}
\end{cases},\quad
c(e)=\begin{cases}
L & e=e_1\\
1 & \text{else}
\end{cases}, \quad b=2-\epsilon
\]
\begin{conjecture} For IP, it is clear that $F=\{e_2\}, C\setminus F=\{e_1\}$ and the optimum is 1\newline
\autoref{lp:cutinterdict} has an integrality gap of 2. For LP, we assign $x=0$ and $y_e=\frac{1}{n-2}$ for every edge except $e_1$. The optimum is 0.
\end{conjecture}
What is the gap if we only relax $\lambda$ in the Lagrangian dual?
\section{Random Stuff} \section{Random Stuff}

492
myctex.sty Normal file
View File

@@ -0,0 +1,492 @@
\ProvidesPackage{myctex}
\RequirePackage[fontset=none, scheme=plain]{ctex}
\RequirePackage{fontspec}
\newif\ifmyctex@sans
\myctex@sansfalse % Default is serif
% Declare and process options
\DeclareOption{sans}{\myctex@sanstrue}
\DeclareOption*{\PackageWarning{myctex}{Unknown option `\CurrentOption'}}
\ProcessOptions\relax
% Now use the conditional
\ifmyctex@sans
\setCJKmainfont{Source Han Sans SC}
\setCJKsansfont{Source Han Sans SC}
\setCJKmonofont{Source Han Sans SC}
\RequirePackage[fira]{fontsetup}
\RequirePackage{FiraMono}
\setmathfont{Fira Math}[range=\setminus]
\else
\setCJKmainfont{Source Han Serif SC}
\setCJKsansfont{Source Han Serif SC}
\setCJKmonofont{Source Han Serif SC}
\RequirePackage[charter]{mathdesign} % math font only for serif mode
\fi
% \setCJKmainfont{SourceHanSerifSC-Regular.otf}[BoldFont={SourceHanSerifSC-Bold.otf}, ItalicFont=SourceHanSerifSC-Regular.otf]
\RequirePackage[margin=1in]{geometry}
\RequirePackage{latexsym,amsmath}
\RequirePackage[dvipsnames]{xcolor}
\RequirePackage[colorlinks=true,urlcolor=Blue,citecolor=Green,linkcolor=BrickRed,unicode]{hyperref}
\RequirePackage[hyperref]{ntheorem} % theorem numbering
\RequirePackage{aliascnt}
\RequirePackage{xspace}
% \RequirePackage{minted}
\RequirePackage{graphicx} % essentials
% \RequirePackage{microtype}
\RequirePackage{eucal}
\RequirePackage[nocompress]{cite} % other convenient stuff
\RequirePackage{enumerate}
%\usepackage{pgf,tikz}
\RequirePackage{wrapfig}
\RequirePackage[medium,compact]{titlesec}
\RequirePackage{verbatim}
\newtheorem{theorem}{Theorem}[section]
\newaliascnt{lemma}{theorem}
\newaliascnt{corollary}{theorem}
\newaliascnt{conjecture}{theorem}
\newaliascnt{proposition}{theorem}
\newtheorem{lemma}{Lemma}[section]
\newtheorem{corollary}{Corollary}[section]
\newtheorem{conjecture}{Conjecture}[section]
\newtheorem{proposition}{Proposition}[section]
\newtheorem{problem}{Problem}
\newcommand{\lemmaautorefname}{Lemma}
\newcommand{\corollaryautorefname}{Corollary}
\newcommand{\conjectureautorefname}{Conjecture}
\newcommand{\propositionautorefname}{Proposition}
\newcommand{\problemautorefname}{Problem}
\newenvironment{definition}[1][Definition]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}}
\newenvironment{example}[1][Example]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}}
\newenvironment{remark}[1][Remark]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}}
\widowpenalty 5000
\clubpenalty 5000
\numberwithin{figure}{section}
\pagenumbering{arabic}
\urlstyle{same} % dammit
\hyphenation{co-or-din-ate co-or-din-ates half-plane half-space stereo-iso-mers stereo-iso-mer Round-table homol-ogous homol-ogy poly-hedron poly-hedra homeo-morphic homeo-morph-ism}
\pdfstringdefDisableCommands{\let\boldmath\relax} % allow \boldmath in section titles
\let\subsectionautorefname\sectionautorefname
\let\subsubsectionautorefname\sectionautorefname
% ----------------------------------------------------------------------
% Common Latin abbreviations, only one of which is actually kosher
% ----------------------------------------------------------------------
\def\etal{\emph{et~al.}} % and others
\def\ie{\emph{i.e.}} % that is
% \def\ie{\textcolor{red}{that is}}
\def\eg{\emph{e.g.}} % for example
% \def\eg{\textcolor{red}{for example}}
% -----------------------
% Common Names
% -----------------------
\def\Mobius{M\"obius\xspace}
% -----------------------
% useful shortcuts
% -----------------------
% \def\cost{\cent}
% ----------------------------------------------------------------------
% Simple math stuff
% ----------------------------------------------------------------------
% \renewcommand{\subset}{\subseteq}
% ---- SYMBOLS ----
\let\e\epsilon % a ``real'' epsilon — better yet, just use Unicode ε.
%
% I give up. These are in the wrong font, but my kludged versions
% LOOK like kludges, especially \Z, \Q, and \C.
%
\def\Real{\mathbb{R}}
\def\Proj{\mathbb{P}}
\def\Hyper{\mathbb{H}}
\def\Integer{\mathbb{Z}}
\def\Natural{\mathbb{N}}
\def\Complex{\mathbb{C}}
\def\Rational{\mathbb{Q}}
\let\N\Natural
\let\Q\Rational
\let\R\Real
\let\Z\Integer
\def\Rd{\Real^d}
\def\RP{\Real\Proj}
\def\CP{\Complex\Proj}
% ---- OPERATORS (requires amsmath) ----
\def\aff{\operatorname{aff}}
\def\area{\operatorname{area}}
\def\argmax{\operatornamewithlimits{arg\,max}}
\def\argmin{\operatornamewithlimits{arg\,min}}
\def\Aut{\operatorname{Aut}} % Automorphism group
\def\card{\operatorname{card}} % cardinality, deprecated for \abs
\def\conv{\operatorname{conv}}
\def\E{\operatorname{E}} % Expectation: $\E[X]$ (like \Pr)
\def\EE{\operatornamewithlimits{E}}
\def\Hom{\operatorname{Hom}} % Homomorphism group
\def\id{\operatorname{id}} % identity
\def\im{\operatorname{im}} % image
\def\lcm{\operatorname{lcm}}
\def\lfs{\operatorname{lfs}} % local feature size
\def\poly{\operatorname{poly}}
\def\polylog{\operatorname{polylog}}
\def\rank{\operatorname{rank}}
\def\rel{\operatorname{rel\,}} % relative (interior, boundary, etc.)
\def\sgn{\operatorname{sgn}}
\def\vol{\operatorname{vol}} % volume
\def\fp#1{^{\underline{#1}}} % falling powers: $n\fp{d}$
\def\rp#1{^{\overline{#1}}} % rising powers: $n\rp{d}$
\def\setsymdiff{\operatorname{\triangle}}
% --- Darts and fences ---
% less nice replacements for stmaryrd characters
\@ifundefined{shortrightarrow}{\let\shortrightarrow\rightarrow}{}
\@ifundefined{shortleftarrow}{\let\shortleftarrow\leftarrow}{}
\@ifundefined{shortuparrow}{\let\shortuparrow\uparrow}{}
\@ifundefined{shortdownarrow}{\let\shortdownarrow\downarrow}{}
\def\arcto{\mathord\shortrightarrow}
\def\arcfrom{\mathord\shortleftarrow}
\def\arc#1#2{#1\arcto#2}
\def\cra#1#2{#1\mathord\shortleftarrow#2}
\def\fence#1#2{#1\mathord\shortuparrow#2}
\def\ecnef#1#2{#1\mathord\shortdownarrow#2}
% --- Cheap displaystyle operators ---
\def\Frac#1#2{{\displaystyle\frac{#1}{#2}}}
\def\Sum{\sum\limits}
\def\Prod{\prod\limits}
\def\Union{\bigcup\limits}
\def\Inter{\bigcap\limits}
\def\Lor{\bigvee\limits}
\def\Land{\bigwedge\limits}
\def\Lim{\lim\limits}
\def\Max{\max\limits}
\def\Min{\min\limits}
% ---- RELATORS ----
\def\deq{\stackrel{\scriptscriptstyle\triangle}{=}} % Use := instead.
\def\into{\DOTSB\hookrightarrow} % = one-to-one
\def\onto{\DOTSB\twoheadrightarrow}
\def\inonto{\DOTSB\lhook\joinrel\twoheadrightarrow}
\def\from{\leftarrow}
\def\tofrom{\leftrightarrow}
\def\mapsfrom{\mathrel{\reflectbox{$\mapsto$}}}
\def\longmapsfrom{\mathrel{\reflectbox{$\longmapsto$}}}
% ---- DELIMITER PAIRS ----
% --- always self-scaling delmiter pairs ---
\def\set#1{\left\{ #1 \right\}}
\def\floor#1{\left\lfloor #1 \right\rfloor}
\def\ceil#1{\left\lceil #1 \right\rceil}
\def\seq#1{\left\langle #1 \right\rangle}
\def\abs#1{\left| #1 \right|}
\def\norm#1{\left\| #1 \right\|}
\def\paren#1{\left( #1 \right)} % need better macro name!
\def\brack#1{\left[ #1 \right]} % need better macro name!
\def\indic#1{\left[ #1 \right]} % indicator variable; Iverson notation
%
% Macros to typeset sets like {foo|bar} with all three delimiters
% correctly scaled to fit. What I *really* want is a \middle macro
% that acts just like \left and \right. Grumble.
%
% Set version is handled by package braket.
\def\Bigbar#1{\mathrel{\left|\vphantom{#1}\right.\n@space}}
\def\Seqbar#1#2{\Seq{#1 \Bigbar{#1 #2} #2}}
\def\Brackbar#1#2{\Brack{#1 \Bigbar{#1 #2} #2}}
% Math mode fbox
\def\mfbox#1{\mathchoice{{\fbox{\ensuremath{\displaystyle #1}}}}
{{\fbox{\ensuremath{\textstyle #1}}}}
{{\fbox{\ensuremath{\scriptstyle #1}}}}
{{\fbox{\ensuremath{\scriptscriptstyle #1}}}}}
% ---- ``ACCENTS'' ----
% NB: Commands equivalent to \lrarrowfill and \overlrarrow are
% already defined in amstex!
\def\lrarrowfill{$\m@th\mathord\leftarrow\mkern-6mu%
\cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
\mkern-6mu\mathord\rightarrow$}
\def\overlrarrow#1{\vbox{\ialign{##\crcr
\lrarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
$\hfil\displaystyle{#1}\hfil$\crcr}}}
\def\Line#1{\!\overlrarrow{\vphantom{t}\smash{\,#1\,}}\!}
\def\Ray#1{\overrightarrow{\vphantom{t}#1\,}\!}
\def\Seg#1{\overline{\vphantom{t}#1}}
% ---- TEXT STYLES ----
\def\mathsc#1{\text{\textsc{#1}}}
\def\mathbs#1{\text{\boldmath\ensuremath{#1}}}
\def\EMPH#1{\textbf{\emph{\boldmath #1}}}
% ----------------------------------------------------------------------
% \begin{bigabstract}...\end{bigabstract}
% For use in documents with title pages. Use normal-sized text in
% the abstract!
% ----------------------------------------------------------------------
\newenvironment{bigabstract}%
{\begin{center}\large\textbf{\abstractname}\end{center}\begin{quotation}}%
{\end{quotation}}
% ----------------------------------------------------------------------
% Make captions smaller than the text, make their titles bold.
% Arguments: #1 == figure name: "Figure 5"
% #2 == caption: "Papers by \Erdos, 1900--2000 (projected)"
% Less space after floats and before caption, since captions are smaller
% ----------------------------------------------------------------------
\@ifundefined{abovecaptionskip}{\newlength\abovecaptionskip}
\long\def\@makecaption#1#2{
\vskip \abovecaptionskip
\setbox\@tempboxa\hbox{{\sffamily\footnotesize \textbf{#1.} #2}}
\ifdim \wd\@tempboxa >\hsize % if more than one line,
{\sffamily\footnotesize \textbf{#1.} #2\par} % typeset normally
\else % else
\hbox to\hsize{\hfil\box\@tempboxa\hfil} % center
\fi}
\dbltextfloatsep 18pt plus 2pt minus 4pt % was 20pt plus 2pt minus 4pt
\textfloatsep 18pt plus 2pt minus 4pt % was 20pt plus 2pt minus 4pt
\abovecaptionskip 6pt % was 10pt
% ----------------------------------------------------------------------
% Revised theorem environment:
% Add a period after the theorem number, and make theorems slanted
% instead of italic to help distinguish text from math. Use
% \boldmath in theorem label in case it includes math.
% ----------------------------------------------------------------------
\def\@opargbegintheorem#1#2#3{\trivlist
\item[\hskip\labelsep{\bfseries\boldmath #1\ #2\ (#3).}]\slshape}
\def\@begintheorem#1#2{\trivlist
\item[\hskip\labelsep{\bfseries\boldmath #1\ #2.}]\slshape}
% ----------------------------------------------------------------------
% \newproof{type}{text}(style)[post]:
% Define a new type of unnumbered ``theorem'' environment. The last
% two arguments are optional; most environments will not use them.
%
% To change label style, put new style command in label:
% \newproof{comment}{\textsf{Comment}}
% ----------------------------------------------------------------------
\def\newproof#1#2{\@ifnextchar({\@snproof{#1}{#2}}{\@snproof{#1}{#2}()}}
\def\@snproof#1#2(#3){\@ifnextchar[{\@xnproof{#1}{#2}{#3}}
{\@xnproof{#1}{#2}{#3}[]}}
\def\@xnproof#1#2#3[#4]{%\expandafter\@ifdefinable\csname #1\endcsname
{\global\@namedef{#1}{\@prf{#2}{#3}}\global\@namedef{end#1}{\@endprf{#4}}}}
\def\@prf#1#2{\@ifnextchar[{\@xprf{#1}{#2}}{\@yprf{#1}{#2}}}
\def\@xprf#1#2[#3]{\@yprf{#1\ (#3)}{#2}}
\def\@yprf#1#2{\begin{trivlist}\item[\hskip\labelsep{\bfseries\boldmath #1:}]#2}
\def\@endprf#1{#1\end{trivlist}}
%
% Standard proof envrionment: last line has a halmos at the right margin.
% Insert \qed to override default halmos placement.
% Incompatible with amsprf package!
%
\newif\ifneedqed
\global\needqedfalse
\@ifundefined{square}{\let\square\Box}{} % grumble latex2e
% \def\QED{\ensuremath{{\square}}}
\def\markatright#1{\leavevmode\unskip\nobreak\quad\hspace*{\fill}{#1}}
\def\qed{\ifneedqed\markatright{\ensuremath{{\square}}}\global\needqedfalse\else\null\fi}
\newproof{proof}{Proof\global\needqedtrue}[\qed]
\newproof{sketch}{Proof Sketch\global\needqedtrue}[\qed]
%
% 'Fake' proof environment, for use with wrapfig and similar packages
%
\newenvironment{rawproof}%
{\begin{trivlist}\item[\hskip\labelsep\textbf{Proof:}\global\needqedtrue]}%
{\qed\end{trivlist}}
%
% If the proof ends with a displayed equation, use \aftermath just
% before \end{proof} to put the halmos in the ``right'' place.
% Doesn't work worth a damn.
%
\def\aftermath{\par\vspace{-\belowdisplayskip}\vspace{-\parskip}\vspace{-\baselineskip}}
% ----------------------------------------------------------------------
% One-shot theoremish environment. For named things like ``Zorn's
% Lemma'' or ``The Death Leap Principle'' or ``The Zone Theorem''.
% To get one-shot proofish environment, put \normalfont inside.
% New improved version stolen from Erik Demaine.
% ----------------------------------------------------------------------
\newenvironment{oneshot}[1]{\@begintheorem{#1}{\unskip}}{\@endtheorem}
% Meh.
\def\Comment#1{\textsf{\textsl{$\langle\!\langle$#1\/$\rangle\!\rangle$}}}
\def\beginc@de{\noindent\begin{center}\begin{minipage}{1in}\tt
\begin{tabbing}~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=\kill}
\def\endc@de{\end{tabbing}\end{minipage}\end{center}}
\newenvironment{code}{\beginc@de}{\endc@de}
%
% These only work with <1 line of text. Use sparingly!!
%
\def\textul#1{\underline{\smash{#1}\vphantom{.}}}
\def\strike#1{\ensuremath{\overline{\text{\smash{#1}\vphantom{.}}}}}
% ----------------------------------------------------------------------
% Include a file verbatim. Searches the TEXINPUTS path for the file,
% even though that's probably not what you really want. Stolen from
% ``verbatimfiles.sty'' by Chris Rowley and others. [Don't use their
% \vertbatimlisting macro; it has some bizarre side-effects!]
% ----------------------------------------------------------------------
\def\verbinput#1{
\begingroup\@verbatim\frenchspacing\@vobeyspaces\input#1\endgroup
}
% ----------------------------------------------------------------------
% \now -- Current time in h:mm AM/PM format
% \mdyy -- Today's date in m/d/yy format. Forget Y2K; this is for humans!
% ----------------------------------------------------------------------
\newcount\timehh\timehh=\time
\divide\timehh by 60
\newcount\timemm\timemm=\time
\count255=\timehh
\multiply\count255 by -60
\advance\timemm by \count255
\newif\iftimePM
\ifnum\timehh>11 \timePMtrue\else\timePMfalse\fi
\ifnum\timehh<1 \advance\timehh by 12\fi
\ifnum\timehh>12 \advance\timehh by -12\fi
\def\now{\number\timehh:\ifnum\timemm<10 0\fi\number\timemm
\iftimePM pm\else am\fi}
\newcount\mdYY\mdYY=\year
\count255=\year
\divide\count255 by 100
\multiply\count255 by 100
\advance\mdYY by -\count255
\def\mdyy{\number\month/\number\day/\ifnum\mdYY<10 0\fi\number\mdYY}
% ----------------------------------------------------------------------
% Notes to myself. The margin flags are broken, thanks to an
% incompatibility with the geometry package.
% ----------------------------------------------------------------------
\def\n@te#1{\textsf{\boldmath \textbf{$\langle\!\langle$#1$\rangle\!\rangle$}}\leavevmode}
\def\n@tew@rn{\GenericWarning{}{AUTHOR WARNING: Unresolved \protect\note}}
\def\n@ten@te#1{\marginpar
[\hfill\llap{\textcolor{red}{{#1}$\!\Longrightarrow$}}]
{\rlap{\textcolor{red}{$\Longleftarrow\!${#1}}}}}
% Warning: The textcomp and mathdesign packages are incompatible!
%\def\n@tedingb@t{\@ifundefined{textmusicalnote}
% {$\maltese$} % if you don't have textcomp
% {\textmusicalnote}} % if you do have textcomp
\def\n@tedingb@t{\textcircled{$\maltese$}}
\def\note#1{\textcolor{red}{\n@tew@rn\n@te{\n@ten@te{\n@tedingb@t}#1}}}
\def\sidenote#1{\marginpar{\tiny\textsf{#1}}}
\setlength{\marginparsep}{0.1in}
\setlength{\marginparwidth}{\paperwidth}
\addtolength{\marginparwidth}{-\oddsidemargin}
\addtolength{\marginparwidth}{-\textwidth}
\addtolength{\marginparwidth}{-1.0\marginparsep}
\addtolength{\marginparwidth}{-1.0in}
%----------------------------------------------------------------------
% TODO sets enclosed text in a gray rectangle with a red border
% with small sans-serif text.
%----------------------------------------------------------------------
\definecolor{TODOcolor}{cmyk}{0.05,0,0,0}
\definecolor{TODOtxtcolor}{cmyk}{0,1,1,0}
\newenvironment{TODO}
{\fboxrule1.5pt\begin{lrbox}{\@tempboxa}
\begin{minipage}{0.9\columnwidth}\small\sffamily\color{TODOtxtcolor}}
{\end{minipage}
\end{lrbox}
\medskip\centerline{\fcolorbox{TODOtxtcolor}{TODOcolor}{\usebox{\@tempboxa}}}
\sidenote{\LARGE\color{Red}$\bigstar\bigstar\bigstar$}\medskip}
%----------------------------------------------------------------------
% Bibliography aliases, so I can use mnemonic citation keys and
% geom.bib at the same time. \bibalias{foo}{bar} makes \cite{foo}
% act (almost) exactly like \cite{bar}. I dont actually use this.
%----------------------------------------------------------------------
\def\bibalias#1#2{%
\global\@namedef{b@#1}{%
{\@ifundefined{b@#2}{\textsf{?}}{}\csname b@#2\endcsname}}}
% ----------------------------------------------------------------------
% Draft notice. Put \DRAFT on the title page, in place of \date.
% ----------------------------------------------------------------------
\def\draftnotice{Preliminary draft --- \mdyy\ --- Not for distribution}
\def\DRAFT{
\date{\fbox{\textsf{\textbf{\draftnotice}}}}
\def\@oddfoot{\footnotesize\hss\fbox{\textbf{\textsf{\draftnotice}}}\hss}
\let\@evenfoot\@oddfoot
}
%----------------------------------------------------------------------
% 'cramped' list style, stolen from Jeff Vitter. Doesn't always work.
%----------------------------------------------------------------------
\def\cramped
{\parskip\@outerparskip\@topsep\parskip\@topsepadd2pt\itemsep0pt
}
%----------------------------------------------------------------------
% More footnote symbols, please.
%----------------------------------------------------------------------
\def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
\mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger
\or \ddagger\ddagger \or \mathsection\mathsection \or
\mathparagraph\mathparagraph \else\@ctrerr\fi}}
%----------------------------------------------------------------------
% TeXbook style quotations -- I should really use the right font, tho.
%----------------------------------------------------------------------
\newenvironment{rightquote}[1]
{\flushright\begin{minipage}{#1\textwidth}
\parskip0pt\footnotesize\sffamily\slshape}
{\end{minipage}\par\bigskip}
\def\quotee#1{\par\vspace{0.5ex}\begin{flushright}\unskip\textup{--- #1}\end{flushright}\unskip}
%----------------------------------------------------------------------
% Creative Commons license
%----------------------------------------------------------------------
\def\CCLicense#1{\vfill\vbox to 0pt{\centering\tiny\sffamily \textcopyright\ Copyright \number\year\ Chao Xu.\\ This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (\url{http://creativecommons.org/licenses/by-nc-sa/4.0/}).\\ Free distribution is strongly encouraged; commercial distribution is expressly forbidden.\quad See {#1} for the most recent revision.\vss}}

View File

@@ -53,7 +53,6 @@ abstract = { This paper considers the problem of designing fast, approximate, co
issn = {0004-5411, 1557-735X}, issn = {0004-5411, 1557-735X},
url = {https://dl.acm.org/doi/10.1145/3828.3829}, url = {https://dl.acm.org/doi/10.1145/3828.3829},
doi = {10.1145/3828.3829}, doi = {10.1145/3828.3829},
abstract = {In a nonnegative edge-weighted network, the weight of an edge represents the effort required by an attacker to destroy the edge, and the attacker derives a benefit for each new component created by destroying edges.The attacker may want to minimize over subsetsof edgesthe difference between (or the ratio of) the effort incurred and the benefit received. This idea leads to the definition of the “strength” of the network, a measure of the resistanceof the network to such attacks. Efficient algorithms for the optimal attack problem, the problem of computing the strength, and the problem of finding a minimum cost “reinforcement” to achieve a desired strength are given. These problems are also solved for a different model, in which the attacker wants to separate vertices from a fixed central vertex.},
language = {en}, language = {en},
number = {3}, number = {3},
urldate = {2025-04-11}, urldate = {2025-04-11},
@@ -66,12 +65,11 @@ abstract = { This paper considers the problem of designing fast, approximate, co
@article{chekuri_lp_2020, @article{chekuri_lp_2020,
title = {{LP} {Relaxation} and {Tree} {Packing} for {Minimum} \$k\$-{Cut}}, title = {{LP} {Relaxation} and {Tree} {Packing} for {Minimum} $k$-{Cut}},
volume = {34}, volume = {34},
issn = {0895-4801, 1095-7146}, issn = {0895-4801, 1095-7146},
url = {https://epubs.siam.org/doi/10.1137/19M1299359}, url = {https://epubs.siam.org/doi/10.1137/19M1299359},
doi = {10.1137/19M1299359}, doi = {10.1137/19M1299359},
abstract = {Karger used spanning tree packings [D. R. Karger, J. ACM, 47 (2000), pp. 46-76] to derive a near linear-time randomized algorithm for the global minimum cut problem as well as a bound on the number of approximate minimum cuts. This is a different approach from his well-known random contraction algorithm [D. R. Karger, Random Sampling in Graph Optimization Problems, Ph.D. thesis, Stanford University, Stanford, CA, 1995, D. R. Karger and C. Stein, J. ACM, 43 (1996), pp. 601--640]. Thorup developed a fast deterministic algorithm for the minimum k-cut problem via greedy recursive tree packings [M. Thorup, Minimum k-way cuts via deterministic greedy tree packing, in Proceedings of the Fortieth Annual ACM Symposium on Theory of Computing, ACM, 2008, pp. 159--166]. In this paper we revisit properties of an LP relaxation for k-Cut proposed by Naor and Rabani [Tree packing and approximating k-cuts, in Proceedings of the Twelfth Annual ACM-SIAM Symposium on Discrete Algorithms, Vol. 103, SIAM, Philadelphia, 2001, pp. 26--27], and analyzed in [C. Chekuri, S. Guha, and J. Naor, SIAM J. Discrete Math., 20 (2006), pp. 261--271]. We show that the dual of the LP yields a tree packing that, when combined with an upper bound on the integrality gap for the LP, easily and transparently extends Karger's analysis for mincut to the k-cut problem. In addition to the simplicity of the algorithm and its analysis, this allows us to improve the running time of Thorup's algorithm by a factor of n. We also improve the bound on the number of {\textbackslash}alpha -approximate k-cuts. Second, we give a simple proof that the integrality gap of the LP is 2(1 - 1/n). Third, we show that an optimum solution to the LP relaxation, for all values of k, is fully determined by the principal sequence of partitions of the input graph. This allows us to relate the LP relaxation to the Lagrangean relaxation approach of Barahona [Oper. Res. Lett., 26 (2000), pp. 99--105] and Ravi and Sinha [European J. Oper. Res., 186 (2008), pp. 77--90]; it also shows that the idealized recursive tree packing considered by Thorup gives an optimum dual solution to the LP.},
language = {en}, language = {en},
number = {2}, number = {2},
urldate = {2022-04-10}, urldate = {2022-04-10},

99
test.sage Normal file
View File

@@ -0,0 +1,99 @@
'''
gap is not constant.
OPT(IP): 3.0
OPT(LP): 0.6000000000000003
gap: 4.999999999999997
w: {(0, 2): 7, (0, 3): 6, (1, 2): 3, (1, 3): 9}
c: {(0, 2): 8, (0, 3): 9, (1, 2): 10, (1, 3): 3}
b: 8.0
edges: [(0, 2), (0, 3), (1, 2), (1, 3)]
IP solution: [('x[0,2]', 0.0), ('x[0,3]', 0.0), ('x[1,2]', 1.0), ('x[1,3]', 0.0), ('y[0,2]', 0.0), ('y[0,3]', 0.0), ('y[1,2]', 0.0), ('y[1,3]', 1.0)]
LP solution: [('x[0,2]', 0.0), ('x[0,3]', 0.0), ('x[1,2]', 0.20000000000000012), ('x[1,3]', 0.0), ('y[0,2]', 0.39999999999999997), ('y[0,3]', 0.39999999999999997), ('y[1,2]', 0.0), ('y[1,3]', 0.39999999999999997)]
'''
from random import randint
from sage.all import *
from sage.matroids.all import *
import gurobipy as gp
from gurobipy import GRB
def interdiction(G, w, c, b, vartype=GRB.BINARY):
"""
Interdiction problem on a graph G with cut weights w, interdiction costs c
and budget b.
"""
model = gp.Model("mip1")
# model.Params.LogToConsole = 0
edges=G.edges(labels=False)
# Variables
x = model.addVars(edges, vtype=vartype, name="x", lb=0)
y = model.addVars(edges, vtype=vartype, name="y", lb=0)
# Objective
model.setObjective(gp.quicksum(w[e] * x[e] for e in edges),
GRB.MINIMIZE)
# Constraints
# knapsack
model.addConstr(gp.quicksum(c[e] * y[e] for e in edges) <= b)
# cut
M=Matroid(G)
for b in M.bases():
model.addConstr(gp.quicksum(x[e]+y[e] for e in b) >= 1)
# Solve
model.optimize()
solutions = []
for v in model.getVars():
solutions.append((v.varName, v.x))
return model.ObjVal,solutions
def mincut(G, c, vartype=GRB.BINARY):
model = gp.Model("mip1")
# model.Params.LogToConsole = 0
edges=G.edges(labels=False)
# Variables
x = model.addVars(edges, vtype=vartype, name="x", lb=0)
# Objective
model.setObjective(gp.quicksum(c[e] * x[e] for e in edges),
GRB.MINIMIZE)
# Constraints
M=Matroid(G)
for b in M.bases():
model.addConstr(gp.quicksum(x[e] for e in b) >= 1)
# Solve
model.optimize()
return model.ObjVal
## enumerate all graphs
lb = 4
ub = 6
f = lambda G: G.is_connected()
for n in range(lb, ub + 1):
for G in filter(f, graphs(n)):
for _ in range(10): # use 10 random weights
# generate w,c,b
edges=G.edges(labels=False)
w = {e: randint(1, 10) for e in edges}
c = {e: randint(1, 10) for e in edges}
b = mincut(G, c)-randint(1, 5)
if b < 0: continue
IP,solIP=interdiction(G, w, c, b, GRB.BINARY)
LP,solLP=interdiction(G, w, c, b, GRB.CONTINUOUS)
print(f"OPT(IP): {IP}")
print(f"OPT(LP): {LP}")
print(f"gap: {IP/LP}")
if IP/LP > 4:
print(f"w: {w}")
print(f"c: {c}")
print(f"b: {b}")
print("edges:", G.edges(labels=False))
print("IP solution:", solIP)
print("LP solution:", solLP)
exit()