<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Talldoor</title>
        <link>https://talldoor.uk</link>
        <description><![CDATA[Articles from Yu Cong's blog]]></description>
        <atom:link href="https://talldoor.uk/rss.xml" rel="self"
                   type="application/rss+xml" />
        <lastBuildDate>Mon, 15 Dec 2025 00:00:00 UT</lastBuildDate>
        <item>
    <title>pangu.hs</title>
    <link>https://talldoor.uk/posts/pangu.hs/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on December 15, 2025
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;hakyll&#39;." href="/tags/hakyll/index.html" rel="tag">hakyll</a>
        
    </div>    
    <section class="body">
        <p></p>
<a href="https://github.com/vinta/pangu.js">pangu.js</a>
是给兼有中英文字符的文本中插入空格的工具。
<p></p>
我觉得这种工具很有用。这个网站曾经使用<a
href="https://www.npmjs.com/package/pangu.simple">一个简化版本</a> 。
不过 js
版本的工具会导致整个网页加载很慢，如果能在编译的时候运行就会变得更好。
<p></p>
最简单的办法其实是在 hakyll 生成 html 之后运行一下 pangu。 有人会想把
pangu 也变成一个 pandoc filter。在 pandoc AST
上判断中英文字符连接情况有点复杂，不过没有你想的那么复杂。 pangu
在每个段落上的工作是独立的，不会需要知道别的段落的信息，在 pandoc AST
当中，每个段落都是一个 <code>Block</code>，constructor 是
<code>Para [Inline]</code>。而 <a
href="https://hackage.haskell.org/package/pandoc-types-1.23.1/docs/Text-Pandoc-Definition.html#t:Inline"><code>Inline</code></a>
包含了所有需要考虑的其他元素。 所以只需要在一个 <code>Inline</code> list
当中检查每个 element 内部是否需要空格，以及 list
两个元素之间是否需要空格。我们并不关心遍历 AST 的时候上一个 leaf
是什么。
<h1 data-number="1" id="python-haskell"><span
class="header-section-number">1</span> Python → Haskell</h1>
<p></p>
在元旦假期终于开始写。计划是从 python 版本迁移过来，因为 vinta 实现
pangu 的那些语言里我只看得懂 python。
<p></p>
我发现貌似作者自己也没总结出什么中英文排版加空格、换全角或中文标点的规则（也可能是因为
ww 和大陆习惯也不同），而且正则表达式里漏洞很多。
<p></p>
pangu.hs
需要根据一些规则来替换字符和删减空格，所以应该把这些规则写下来然后弄一个存放规则的
list，程序根据这个 list 里的规则来调整文本，同时用户见到自己不想要的
rule 也可以直接 comment 它。
<p></p>
我没有在 Haskell 中使用正则表达式的经验，于是求助 Gemini 和
ChatGPT。相比于 regex 他们更推荐用 <a
href="https://hackage.haskell.org/package/megaparsec">megaparsec</a>。
如果要 find and replace，就需要用<a
href="https://hackage.haskell.org/package/replace-megaparsec-1.5.0.1/docs/Replace-Megaparsec.html#v:streamEdit"><code>streamEdit</code></a>.
这函数会找所有不重叠的 section，完成替换任务。
<div class="sourceCode" id="cb1"><pre
class="sourceCode haskell"><code class="sourceCode haskell"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="kw">type</span> <span class="dt">Parser</span> <span class="ot">=</span> <span class="dt">Parsec</span> <span class="dt">Void</span> <span class="dt">Text</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="kw">type</span> <span class="dt">Rule</span> <span class="ot">=</span> <span class="dt">Parser</span> <span class="dt">Text</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="kw">type</span> <span class="dt">RuleSet</span> <span class="ot">=</span> [<span class="dt">Rule</span>]</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="ot">applyUntilFixed ::</span> <span class="dt">Rule</span> <span class="ot">-&gt;</span> <span class="dt">Text</span> <span class="ot">-&gt;</span> <span class="dt">Text</span></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a>applyUntilFixed rule <span class="ot">=</span></span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a>  fix</span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a>    ( \loop current <span class="ot">-&gt;</span></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a>        <span class="kw">let</span> next <span class="ot">=</span> streamEdit (try rule) <span class="fu">id</span> current</span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a>         <span class="kw">in</span> <span class="kw">if</span> next <span class="op">==</span> current <span class="kw">then</span> next <span class="kw">else</span> loop next</span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a>    )</span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a><span class="ot">applyRulesRecursively ::</span> <span class="dt">RuleSet</span> <span class="ot">-&gt;</span> <span class="dt">Text</span> <span class="ot">-&gt;</span> <span class="dt">Text</span></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a>applyRulesRecursively rules input <span class="ot">=</span> </span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a>  <span class="fu">foldl</span> (<span class="fu">flip</span> applyUntilFixed) input rules</span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a><span class="ot">applyRules ::</span> <span class="dt">RuleSet</span> <span class="ot">-&gt;</span> <span class="dt">Text</span> <span class="ot">-&gt;</span> <span class="dt">Text</span></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a>applyRules rules input <span class="ot">=</span> <span class="fu">foldl</span> (<span class="fu">flip</span> applyOnce) input rules</span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a>  <span class="kw">where</span></span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a>    applyOnce rule <span class="ot">=</span> streamEdit (try rule) <span class="fu">id</span></span></code></pre></div>
<details>
<summary>
然后即可这样选择要启用哪些<code>Rule</code>
</summary>
<div class="sourceCode" id="cb2"><pre class="sourceCode hs"><code class="sourceCode haskell"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ot">recursiveRules ::</span> <span class="dt">RuleSet</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>recursiveRules <span class="ot">=</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>  [ fullwidthCJKsymCJK,</span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a>    fullwidthCJKsym</span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a>  ]</span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a><span class="ot">onepassRules ::</span> <span class="dt">RuleSet</span></span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a>onepassRules <span class="ot">=</span></span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true" tabindex="-1"></a>  [ dotsCJK,</span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true" tabindex="-1"></a>    fixCJKcolAN,</span>
<span id="cb2-11"><a href="#cb2-11" aria-hidden="true" tabindex="-1"></a>    cjkquote,</span>
<span id="cb2-12"><a href="#cb2-12" aria-hidden="true" tabindex="-1"></a>    quoteCJK,</span>
<span id="cb2-13"><a href="#cb2-13" aria-hidden="true" tabindex="-1"></a>    fixQuote,</span>
<span id="cb2-14"><a href="#cb2-14" aria-hidden="true" tabindex="-1"></a>    cjkpossessivequote,</span>
<span id="cb2-15"><a href="#cb2-15" aria-hidden="true" tabindex="-1"></a>    <span class="co">-- singlequoteCJK,</span></span>
<span id="cb2-16"><a href="#cb2-16" aria-hidden="true" tabindex="-1"></a>    fixPossessivequote,</span>
<span id="cb2-17"><a href="#cb2-17" aria-hidden="true" tabindex="-1"></a>    hashANSCJKhash,</span>
<span id="cb2-18"><a href="#cb2-18" aria-hidden="true" tabindex="-1"></a>    cjkhash,</span>
<span id="cb2-19"><a href="#cb2-19" aria-hidden="true" tabindex="-1"></a>    <span class="co">-- hashcjk,</span></span>
<span id="cb2-20"><a href="#cb2-20" aria-hidden="true" tabindex="-1"></a>    anscjk,</span>
<span id="cb2-21"><a href="#cb2-21" aria-hidden="true" tabindex="-1"></a>    cjkans,</span>
<span id="cb2-22"><a href="#cb2-22" aria-hidden="true" tabindex="-1"></a>    empty <span class="co">-- a dummy rule</span></span>
<span id="cb2-23"><a href="#cb2-23" aria-hidden="true" tabindex="-1"></a>  ]</span>
<span id="cb2-24"><a href="#cb2-24" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-25"><a href="#cb2-25" aria-hidden="true" tabindex="-1"></a><span class="ot">pangu ::</span> <span class="dt">Text</span> <span class="ot">-&gt;</span> <span class="dt">Text</span></span>
<span id="cb2-26"><a href="#cb2-26" aria-hidden="true" tabindex="-1"></a>pangu input <span class="ot">=</span> </span>
<span id="cb2-27"><a href="#cb2-27" aria-hidden="true" tabindex="-1"></a>  applyRules onepassRules <span class="op">$</span> applyRulesRecursively recursiveRules input</span></code></pre></div>
</details>
<p></p>
完整代码在 <a href="https://github.com/sxlxc/pangu.hs"
class="uri">https://github.com/sxlxc/pangu.hs</a> 可以看到。 功能并不和
pangu.py 完全一致
<h1 data-number="2" id="pandoc-filter"><span
class="header-section-number">2</span> Pandoc filter</h1>
<p></p>
现在想要在 hakyll 里使用这个包。
这部分很简单，只要实现上文说的想法就好了。 pandoc-types 提供了很多方便写
filter 的函数，我们实现好处理 <code>[Inline]</code> 的 filter 就好了。
<div class="sourceCode" id="cb3"><pre class="sourceCode hs"><code class="sourceCode haskell"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ot">panguFilter ::</span> <span class="dt">Pandoc</span> <span class="ot">-&gt;</span> <span class="dt">Pandoc</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>panguFilter <span class="ot">=</span> walk transformBlocks</span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>  <span class="kw">where</span></span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a><span class="ot">    transformBlocks ::</span> <span class="dt">Block</span> <span class="ot">-&gt;</span> <span class="dt">Block</span></span>
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a>    transformBlocks (<span class="dt">Para</span> inlines) <span class="ot">=</span> <span class="dt">Para</span> (panguInlines inlines)</span>
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a>    transformBlocks x <span class="ot">=</span> x</span></code></pre></div>
<p></p>
完整的实现可以看<a
href="https://github.com/sxlxc/Hakyllsite/commit/aa54a6a6014269646b190b78c708dc358c3e4fb0#diff-41a377645bcbb4f6f5b24bf5a69734635f3d75e7d0c2d6a7507ed7a4573bc7f9">这个
commit</a>。
<h1 data-number="3" id="css-text-autospace"><span
class="header-section-number">3</span> CSS
<code>text-autospace</code></h1>
<p></p>
一月九号才在<a
href="https://zhuanlan.zhihu.com/p/1990751194956723768">知乎</a>看到 CSS
也支持类似的功能: <a
href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-autospace"><code>text-autospace</code></a>
<p></p>
2025 年九月份就已经在主流浏览器上可用。
    </section>
</article>
]]></description>
    <pubDate>Mon, 15 Dec 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/pangu.hs/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Linear time linebreaker?</title>
    <link>https://talldoor.uk/posts/knuth_plass/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on October 28, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;alg&#39;." href="/tags/alg/index.html" rel="tag">alg</a>, <a title="All pages tagged &#39;typography&#39;." href="/tags/typography/index.html" rel="tag">typography</a>
        
    </div>    
    <section class="body">
        <p></p>
Recently, Typst has merged a <a
href="https://github.com/typst/typst/pull/6161">PR</a> which includes
support for <a
href="https://typst.app/blog/2025/typst-0.14#character-level-justification">character-level
justification</a>. This feature is an extension to the linebreak
algorithm. It allows changes in the inter-character space in each word
and this adjustment may affect line break decisions. For line breaking
Typst uses <a
href="https://en.wikipedia.org/wiki/Knuth%E2%80%93Plass_line-breaking_algorithm">Knuth–Plass
line-breaking algorithm</a><!--
--><label for="sn-0" class="margin-toggle sidenote-number"></label><input type="checkbox" id="sn-0" class="margin-toggle"/><div class="sidenote">See this nice <a
href="https://laurmaedje.github.io/posts/layout-models/">blog post</a>
for a comparison between the layout models of TeX and Typst.</div><!--
-->.
<p></p>
Let’s forget about typography and focus on the algorithmic part of
line-breaking problems.
<h1 data-number="1" id="line-breaking"><span
class="header-section-number">1</span> line-breaking</h1>
<div class="theorem-environment Problem" data-index="1" type="Problem"
title="line breaking">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">1</span><span class="name">line breaking</span></span>
<p></p>
Given a sequence
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
and a cost function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
mapping from contiguous subsequences (substrings) of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="double-struck">ℝ</mi><annotation encoding="application/x-tex">\mathbb{R}</annotation></semantics></math>,
divide the sequence
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
(the paragraph) into substrings
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>S</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>S</mi><mi>k</mi></msub></mrow><annotation encoding="application/x-tex">S_1,\dots,S_k</annotation></semantics></math>
(lines) such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>i</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mi>k</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub><mi>c</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>S</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sum_{i\in [k]} c(S_i)</annotation></semantics></math>
is minimized.
</div>
<p></p>
We over-simplify things here. In real typography world the cost function
not only depends on the line
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>S</mi><mi>i</mi></msub><annotation encoding="application/x-tex">S_i</annotation></semantics></math>
but also other things like the length of the line.
<p></p>
The input size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
is the number of elements in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
and for now the cost function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
is assumed to be given in an oracle.
<p></p>
This line breaking admits a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>n</mi><mn>2</mn></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(n^2)</annotation></semantics></math>
dynamic programming algorithm:
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>i</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><munder><mi mathvariant="normal">max</mi><mrow><mn>0</mn><mo>≤</mo><mi>j</mi><mo>&lt;</mo><mi>i</mi></mrow></munder><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>j</mi><mo stretchy="false" form="postfix">)</mo><mo>+</mo><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="prefix">[</mo><mi>j</mi><mi>.</mi><mi>.</mi><mi>i</mi><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">
    f(i)=\max_{0\leq j&lt;i} f(j)+c(S[j..i])
</annotation></semantics></math></span>
<h1 data-number="2" id="smawk-algorithm"><span
class="header-section-number">2</span> SMAWK algorithm</h1>
<p></p>
<a
href="https://en.wikipedia.org/wiki/Knuth-Plass_line-breaking_algorithm#Computational_complexity">Wikipedia</a>
says that this problem can be solve in linear time using SMAWK
algorithm, which finds the minimum in each row of a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>×</mo><mi>m</mi></mrow><annotation encoding="application/x-tex">n\times m</annotation></semantics></math>
totally monotone matrix in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mo>+</mo><mi>m</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(n+m)</annotation></semantics></math>
<!--
--><label for="sn-1" class="margin-toggle sidenote-number"></label><input type="checkbox" id="sn-1" class="margin-toggle"/><div class="sidenote">This is a footnote. See section 6.5 in <a
href="https://courses.grainger.illinois.edu/cs473/sp2016/notes/06-sparsedynprog.pdf">Jeff
Erickson’s lecture notes</a>).</div><!--
-->.
<p></p>
The matrix here would be
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">[</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy="false" form="postfix">]</mo><mo>=</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>j</mi><mo stretchy="false" form="postfix">)</mo><mo>+</mo><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="prefix">[</mo><mi>j</mi><mi>.</mi><mi>.</mi><mi>i</mi><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M[i,j]=f(j)+c(S[j..i])</annotation></semantics></math>.
The dynamic programming algorithm is in fact finding the minimum for
each row. If we can show this matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is totally monotone, then we can make optimal line breaking decisions in
linear time. A matrix is totally monotone, if each row’s minimum value
occurs in a column which is equal to or greater than the column of the
previous row’s minimum. A special case of totally monotone is <a
href="https://en.wikipedia.org/wiki/Monge_array">Monge array</a> which
requires
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">[</mo><mi>i</mi><mo>,</mo><mi>k</mi><mo stretchy="false" form="postfix">]</mo><mo>+</mo><mi>M</mi><mo stretchy="false" form="prefix">[</mo><mi>j</mi><mo>,</mo><mi>ℓ</mi><mo stretchy="false" form="postfix">]</mo><mo>≥</mo><mi>M</mi><mo stretchy="false" form="prefix">[</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo stretchy="false" form="postfix">]</mo><mo>+</mo><mi>M</mi><mo stretchy="false" form="prefix">[</mo><mi>i</mi><mo>,</mo><mi>ℓ</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">M[i,k]+M[j,\ell]\geq M[j,k]+M[i,\ell]</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>i</mi><mo>&lt;</mo><mi>j</mi></mrow><annotation encoding="application/x-tex">i&lt;j</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>&lt;</mo><mi>ℓ</mi></mrow><annotation encoding="application/x-tex">k&lt;\ell</annotation></semantics></math>.
Now we focus on checking Monge property of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
<p></p>
Doing some easy math, one can see that the Monge property depends on the
following inequality on the cost function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>:
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="prefix">[</mo><mi>i</mi><mi>.</mi><mi>.</mi><mi>k</mi><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="postfix">)</mo><mo>+</mo><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="prefix">[</mo><mi>j</mi><mi>.</mi><mi>.</mi><mi>ℓ</mi><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="prefix">[</mo><mi>i</mi><mi>.</mi><mi>.</mi><mi>ℓ</mi><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="postfix">)</mo><mo>+</mo><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="prefix">[</mo><mi>j</mi><mi>.</mi><mi>.</mi><mi>k</mi><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">)</mo><mspace width="1.0em"></mspace><mo>∀</mo><mi>i</mi><mo>&lt;</mo><mi>j</mi><mo>&lt;</mo><mi>k</mi><mo>&lt;</mo><mi>ℓ</mi></mrow><annotation encoding="application/x-tex">
c(S[i..k])+c(S[j..\ell])\leq c(S[i..\ell])+c(S[j..k]))\quad \forall i&lt;j&lt;k&lt;\ell
</annotation></semantics></math></span>
<p></p>
This looks like some intersecting supermodular property on set
functions, but our domain here is the collection of substrings.
<p></p>
As cited on wiki, <a
href="https://doi.org/10.1016/0196-6774(88)90032-6">this paper</a>
stated that the problem of optimally breaking up text of a paragraph
into lines can be done in linear time. The cost function is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>l</mi><mi>e</mi><mi>n</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>p</mi><mi>a</mi><mi>r</mi><mi>w</mi><mi>i</mi><mi>d</mi><mi>t</mi><mi>h</mi><msup><mo stretchy="false" form="postfix">)</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">c(X)=(len(X)-parwidth)^2</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>l</mi><mi>e</mi><mi>n</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">len(X)</annotation></semantics></math>
is the sum of character width in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>X</mi><annotation encoding="application/x-tex">X</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi><mi>a</mi><mi>r</mi><mi>w</mi><mi>i</mi><mi>d</mi><mi>t</mi><mi>h</mi></mrow><annotation encoding="application/x-tex">parwidth</annotation></semantics></math>
is the width of the paragraph. This cost function does generate a Monge
array, but this is not the cost in the <a
href="https://gwern.net/doc/design/typography/tex/1981-knuth.pdf">original
paper</a> of Knuth and Plass.
<p></p>
They introduced several cost functions: “first-fit”, “best-fit” and
“demerits”, with increasing complexity. For simplicity of analysis, we
consider the “best-fit” case, where the cost function is the sum of
badness and penalty.
<p></p>
Penalty relates to the ending character of each line. For example, we
want as few number of hyphens as possible, then the penalty for ending
hyphen should be large. Badness meansures how much do we need to
stretch/shrink the white spaces in a line to make it fit. More formally,
badness is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><msup><mrow><mo stretchy="true" form="prefix">(</mo><mfrac><mi>L</mi><mi>W</mi></mfrac><mo stretchy="true" form="postfix">)</mo></mrow><mn>3</mn></msup></mrow><annotation encoding="application/x-tex">c\left(\frac{L}{W}\right)^3</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>L</mi><annotation encoding="application/x-tex">L</annotation></semantics></math>
is the sum of default length of all characters in this line,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>W</mi><annotation encoding="application/x-tex">W</annotation></semantics></math>
is the total length of stretchable/shrinkable whitespaces and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
is some universal constant factor.
<p></p>
Note that penalties do not affect Monge property, since the number of
occurence of ending characters
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo stretchy="false" form="prefix">[</mo><mi>k</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">S[k]</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo stretchy="false" form="prefix">[</mo><mi>ℓ</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">S[\ell]</annotation></semantics></math>)
in the same on LHS and RHS. However, for badness, one can verify that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is not always a Monge array. I think total monotonicity is violated too
but don’t have a counterexample now…
<h1 data-number="3" id="character-level-operations"><span
class="header-section-number">3</span> character-level operations</h1>
<p></p>
Assume the cost function is still a parabola on line width and we
further add some character-level operations.
<ol type="1">
<li>We can break all ligatures in one line. The cost function becomes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">{</mo><msub><mi>c</mi><mn>1</mn></msub><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>c</mi><mn>2</mn></msub><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">c(X)=\min\{c_1(X),c_2(X)\}</annotation></semantics></math>.</li>
<li>Stretch/shrink font glyphs and adjust kerning.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mi>θ</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>θ</mi><msub><mrow><mrow><mi mathvariant="normal">l</mi><mo>&#8289;</mo></mrow><mi>e</mi><mi>n</mi></mrow><mn>1</mn></msub><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo>+</mo><msub><mrow><mrow><mi mathvariant="normal">l</mi><mo>&#8289;</mo></mrow><mi>e</mi><mi>n</mi></mrow><mn>2</mn></msub><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>p</mi><mi>a</mi><mi>r</mi><mi>l</mi><mi>e</mi><mi>n</mi><mi>g</mi><mi>t</mi><mi>h</mi><msup><mo stretchy="false" form="postfix">)</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">c(X)=\min_{\theta}(\theta {\operatorname{l}en}_1(X)+{\operatorname{l}en}_2(X)-parlength)^2</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mrow><mrow><mi mathvariant="normal">l</mi><mo>&#8289;</mo></mrow><mi>e</mi><mi>n</mi></mrow><mrow><mn>1</mn><mo>,</mo><mn>2</mn></mrow></msub><annotation encoding="application/x-tex">{\operatorname{l}en}_{1,2}</annotation></semantics></math>
are the total length of whitespaces and other characters in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>X</mi><annotation encoding="application/x-tex">X</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mi>l</mi><mi>b</mi><mo>,</mo><mi>u</mi><mi>b</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\theta\in [lb,ub]</annotation></semantics></math>
is the stretching factor.</li>
</ol>
<p></p>
Unfortuantely, neither of the operations preserves Monge property and i
believe they break total monotonicity as well.
    </section>
</article>
]]></description>
    <pubDate>Tue, 28 Oct 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/knuth_plass/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Matroid girth</title>
    <link>https://talldoor.uk/posts/matroidgirth/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on August 12, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;matroid&#39;." href="/tags/matroid/index.html" rel="tag">matroid</a>, <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>, <a title="All pages tagged &#39;combinatorics&#39;." href="/tags/combinatorics/index.html" rel="tag">combinatorics</a>
        
    </div>    
    <section class="body">
        <p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo>,</mo><mi mathvariant="script">ℐ</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=(E,\mathcal I)</annotation></semantics></math>
be a matroid with non-negative weights
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo>:</mo><mi>E</mi><mo>→</mo><msub><mi mathvariant="double-struck">ℝ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mrow><annotation encoding="application/x-tex">w:E\to \mathbb{R}_{\geq 0}</annotation></semantics></math>.
The girth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></munder><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>:</mo><mrow><mi>C</mi><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> is a circuit of </mtext><mspace width="0.333em"></mspace></mrow><mi>M</mi></mrow><mo stretchy="true" form="postfix">}</mo></mrow><mi>.</mi></mrow><annotation encoding="application/x-tex">
    \min \left\{ \sum_{e\in C} w(e): \text{$C$ is a circuit of $M$} \right\}.
</annotation></semantics></math></span>
<p></p>
Cogirth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is the girth of the dual matroid of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
<p></p>
Computing girth is NP-hard for binary matroids but can be done in
polynomial time for graphs. <a
href="https://en.wikipedia.org/wiki/Matroid_girth#Computational_complexity">Wikipedia</a>
lists some negative complexity results, which mainly concern more
general matroid classes than binary matroids. So here are some positive
results filling the gap between graphic matroids and binary matroids.
(Results can be found in <a href="https://matroidunion.org/?p=1106"
class="uri">https://matroidunion.org/?p=1106</a>.) Proofs that you don’t
see here can easily be found in the references.
<h1 data-number="1" id="regular-matroid"><span
class="header-section-number">1</span> Regular matroid</h1>
<div id="regulardecomp" class="theorem-environment Theorem"
data-index="1" type="Theorem"
title="Seymour decomposition [@seymour_decomposition_1980]">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">1</span><span class="name">Seymour decomposition <span
class="citation" data-cites="seymour_decomposition_1980">[<a
href="#ref-seymour_decomposition_1980"
role="doc-biblioref">1</a>]</span></span></span>
<p></p>
Every regular matroid may be constructed by combining graphic matroids,
cographic matroids, and a certain ten-element regular matroid that is
neither graphic nor cographic, using 3 binary operations:
<ul>
<li>1-sum is direct sum of two matroids</li>
<li>2-sum is patching two matroid on 1 common element</li>
<li>3-sum is patching two matroids on 3 common elements forming a
3-circuit in each matroid.</li>
</ul>
</div>
<p></p>
This decomposition can be found in polynomial time. One can decide if a
matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
can be decomposed into
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>
using 1/2/3-sum in polynomial time. See <a
href="https://www.emis.de/monographs/md/index.html"
class="uri">https://www.emis.de/monographs/md/index.html</a>.
<p></p>
<a href="#regulardecomp" title="Theorem 1">Theorem 1</a> leads to a
natural algorithm for computing the girth in regular matroids. The
decomposition of regular matroids gives us a binary tree, where each
node is a regular matroid and each leaf is either (co)graphic or a
special 10 element regular matroid. Every non-leaf node in the
decomposition tree represents a regular matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
which is 1/2/3-sum of its two direct decendents
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><msub><mo>⊕</mo><mi>i</mi></msub><mi>B</mi></mrow><annotation encoding="application/x-tex">A \oplus_i B</annotation></semantics></math>
be the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>i</mi><annotation encoding="application/x-tex">i</annotation></semantics></math>-sum
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>i</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>3</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">i\in [3]</annotation></semantics></math>.
Now there are only 3 cases:
<ol type="1">
<li><p></p>

<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><msub><mi>M</mi><mn>1</mn></msub><msub><mo>⊕</mo><mn>1</mn></msub><msub><mi>M</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">M=M_1\oplus_1 M_2</annotation></semantics></math>.
Direct sum does not create new circuit.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">girth</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi mathvariant="normal">girth</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>M</mi><mn>1</mn></msub><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mi mathvariant="normal">girth</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>M</mi><mn>2</mn></msub><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{girth}}(M)=\min \left\{ \mathop{\mathrm{girth}}(M_1),\mathop{\mathrm{girth}}(M_2) \right\}</annotation></semantics></math>.</li>
<li><p></p>

<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><msub><mi>M</mi><mn>1</mn></msub><msub><mo>⊕</mo><mn>2</mn></msub><msub><mi>M</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">M=M_1\oplus_2 M_2</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
be the common element of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>M</mi><mn>1</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">E(M_1)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>M</mi><mn>2</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">E(M_2)</annotation></semantics></math>.
In this case there may be new circuits. However, any circuit of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
which is not a circuit of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>
must be contained in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>∪</mo><msub><mi>C</mi><mn>2</mn></msub><mo>\</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>e</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">C_1\cup C_2\setminus \left\{ e \right\}</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mi>i</mi></msub><annotation encoding="application/x-tex">C_i</annotation></semantics></math>
is a circuit in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mi>i</mi></msub><annotation encoding="application/x-tex">M_i</annotation></semantics></math>
containing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>.
Thus to find the minimum weighted new circuit we can compute the minimum
circuit in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
containing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
(say
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>C</mi><mn>1</mn><mo>*</mo></msubsup><annotation encoding="application/x-tex">C_1^*</annotation></semantics></math>)
and replace the weight
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">w(e)</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>
with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><msubsup><mi>C</mi><mn>1</mn><mo>*</mo></msubsup><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">w(C_1^*)-w(e)</annotation></semantics></math>
and then find the minimum weight circuit in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>
containing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>.
The girth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is the minimum among
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">girth</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>M</mi><mn>1</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{girth}}(M_1)</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">girth</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>M</mi><mn>2</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{girth}}(M_2)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>C</mi><mo stretchy="false" form="postfix">)</mo><mo>:</mo><mrow><mi>C</mi><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> is new circuit</mtext></mrow></mrow><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\min\left\{ w(C): \text{$C$ is new circuit} \right\}</annotation></semantics></math>.
<p></p>

We need to prove that all these operations can be done in polynomial
time.
<p></p>

For the 2/3-sum case we need to find in at least one of the summands the
minimum circuit that contains a common element
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>.
However, finding such a minimum circuit is regular matroids is not known
to be polynomially solvable. To understand what’s happening here we need
to look into <del>Seymour’s proof</del><!--
--><label for="sn-0" class="margin-toggle sidenote-number"></label><input type="checkbox" id="sn-0" class="margin-toggle"/><div class="sidenote"><em>I realized that one doesn’t need to understand Seymour’s 55-page
paper to see why the desired operations can be done in polynomial
time…</em><br> The proof of <a href="#regulardecomp"
title="Theorem 1">Theorem 1</a> has 3 parts:
<ul>
<li><p></p>

There is a special 10-element regular matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>10</mn></msub><annotation encoding="application/x-tex">R_{10}</annotation></semantics></math>
such that any regular matroid can be obtained by 1/2-sums from regular
matroids without
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>10</mn></msub><annotation encoding="application/x-tex">R_{10}</annotation></semantics></math>
minor and copies of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>10</mn></msub><annotation encoding="application/x-tex">R_{10}</annotation></semantics></math>.
(Now we can assume that we are working with regular matroids which have
no
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>10</mn></msub><annotation encoding="application/x-tex">R_{10}</annotation></semantics></math>
minor and are not separable via 1/2-sum.)</li>
<li><p></p>

There is another 12-element regular matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>12</mn></msub><annotation encoding="application/x-tex">R_{12}</annotation></semantics></math>
such that any regular matroid can be obtained by 1/2/3-sums from
matroids without
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>12</mn></msub><annotation encoding="application/x-tex">R_{12}</annotation></semantics></math>
minor. (Now we are working with regular matroids that are not separable
via 1/2/3-sum and have no
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>10</mn></msub><annotation encoding="application/x-tex">R_{10}</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>12</mn></msub><annotation encoding="application/x-tex">R_{12}</annotation></semantics></math>
minors.)</li>
<li><p></p>

Every 3-connected regular matroid which is neither graphic nor cographic
has an
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>10</mn></msub><annotation encoding="application/x-tex">R_{10}</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>12</mn></msub><annotation encoding="application/x-tex">R_{12}</annotation></semantics></math>
minor. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
be a matroid.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is 3-connected iff
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is not expressible as a 1- or 2-sum. (cf.<span class="citation"
data-cites="seymour_decomposition_1980">[<a href="#ref-seymour_decomposition_1980" role="doc-biblioref">1</a>]</span>
2.10(b)) It follows that the remaining regular matroids are graphic or
cographic.</li>
</ul></div><!--
--> the decomposition tree.
<p></p>

Instead of considering our binary decomposition tree, we now construct a
new graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
where each vertex represents a graphic matroid, cographic matroid or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>10</mn></msub><annotation encoding="application/x-tex">R_{10}</annotation></semantics></math>
and there is an edge between two vertices if the corresponding matroids
are patched using 1/2/3-sum. We claim that there is no cycle in the
graph. The graph is connected. Assume that there is a cycle and let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mn>1</mn></msub><mo>,</mo><msub><mi>M</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">M_1,M_2</annotation></semantics></math>
be two matroids whose corresponding vertices are in the cycle. Consider
the LCA
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>
in the binary tree.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
represents a connected subgraph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>H</mi><mo>⊂</mo><mi>G</mi></mrow><annotation encoding="application/x-tex">H\subset G</annotation></semantics></math>
that contains
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>
but not the entire cycle since otherwise there will be 2 1/2/3-sum
operation between two regular matroids. However,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>
are still connected in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>−</mo><mi>E</mi><mo stretchy="false" form="prefix">[</mo><mi>H</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">G-E[H]</annotation></semantics></math>
since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>2</mn></msub><annotation encoding="application/x-tex">M_2</annotation></semantics></math>
are in the same cycle, which contradicts the uniqueness of the LCA.
<p></p>

Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
is a tree and we can always assume that one of the matroids in the
summands is graphic matroid, cographic matroid or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>R</mi><mn>10</mn></msub><annotation encoding="application/x-tex">R_{10}</annotation></semantics></math>.
Finding the minimum circuit containing a fixed element can be done in
those matroids in polynomial time and there exists a algorithm that
computes the tree in cubic time <span class="citation"
data-cites="truemper_decomposition_1990">[<a
href="#ref-truemper_decomposition_1990"
role="doc-biblioref">2</a>]</span>.</li>
<li><p></p>

<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><msub><mi>M</mi><mn>1</mn></msub><msub><mo>⊕</mo><mn>3</mn></msub><msub><mi>M</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">M=M_1\oplus_3 M_2</annotation></semantics></math>.
Similar to the 2-sum case. There are only 3 common elements. We can
enumerate all circuits of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mn>1</mn></msub><annotation encoding="application/x-tex">M_1</annotation></semantics></math>
which contain one of the common elements.</li>
</ol>
<p></p>
However, deciding whether a regular matroid has a circuit of length at
most k containing two fixed elements <a
href="https://mathoverflow.net/questions/434026/algorithm-for-finding-a-minimum-weight-circuit-in-a-weighted-binary-matroid#comment1118055_434045">is
FPT</a>.
<h1 data-number="2"
id="proper-minor-closed-class-of-binary-matroids"><span
class="header-section-number">2</span> Proper minor-closed class of
binary matroids</h1>
<p></p>
The most important problem in this field is the following.
<div id="conjgirth" class="theorem-environment Conjecture"
data-index="2" type="Conjecture"
title="Geelen, Gerards, and Whittle [@Geelen_Gerards_Whittle_2015]">
<span class="theorem-header"><span class="type">Conjecture</span><span
class="index">2</span><span class="name">Geelen, Gerards, and Whittle
<span class="citation" data-cites="Geelen_Gerards_Whittle_2015">[<a
href="#ref-Geelen_Gerards_Whittle_2015"
role="doc-biblioref">3</a>]</span></span></span>
<p></p>
For any proper minor-closed class
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">ℳ</mi><annotation encoding="application/x-tex">\mathcal M</annotation></semantics></math>
of binary matroids, there is a polynomial-time algorithm for computing
the girth of matroids in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">ℳ</mi><annotation encoding="application/x-tex">\mathcal M</annotation></semantics></math>.
</div>
<p></p>
Similar to Seymour’s decomposition for regular matroids, every proper
minor-closed class of binary matroid admits a “decomposition” into
graphic matroids and some binary matroids.
<div id="binarydecomp" class="theorem-environment Theorem"
data-index="3" type="Theorem" title="[@Geelen_Gerards_Whittle_2015]">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">3</span><span class="name"><span class="citation"
data-cites="Geelen_Gerards_Whittle_2015">[<a
href="#ref-Geelen_Gerards_Whittle_2015"
role="doc-biblioref">3</a>]</span></span></span>
<p></p>
For each proper minor-closed class
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">ℳ</mi><annotation encoding="application/x-tex">\mathcal M</annotation></semantics></math>
of binary matroids, there exist integers
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>,</mo><mi>t</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">k,t\geq 0</annotation></semantics></math>
such that for each vertically
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-connected
matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>∈</mo><mi mathvariant="script">ℳ</mi></mrow><annotation encoding="application/x-tex">M\in \mathcal M</annotation></semantics></math>,
there exist matrices
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>,</mo><mi>P</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mrow><mi>r</mi><mo>×</mo><mi>n</mi></mrow></msubsup></mrow><annotation encoding="application/x-tex">A,P\in \mathbb{F}_2^{r\times n}</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
is the incidence matrix of a graph,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>P</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">r(P)\leq t</annotation></semantics></math>
and either
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>+</mo><mi>P</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=M(A+P)</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>M</mi><mo>*</mo></msup><mo>=</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>+</mo><mi>P</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M^*=M(A+P)</annotation></semantics></math>.
</div>
<p></p>
The matroids
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>+</mo><mi>P</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A+P)</annotation></semantics></math>
in <a href="#binarydecomp" title="Theorem 3">Theorem 3</a> are called
perturbed graphic matroids. Note that we can consider
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>
in <a href="#binarydecomp" title="Theorem 3">Theorem 3</a> as constants
since for each minor-closed class they are fixed.
<p></p>
Using <a href="#binarydecomp" title="Theorem 3">Theorem 3</a>, <a
href="#conjgirth" title="Conjecture 2">Conjecture 2</a> is true if one
can prove the followings:
<ol type="1">
<li>there is a polynomial-time alg that finds the girth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>+</mo><mi>P</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A+P)</annotation></semantics></math>;</li>
<li>One can reduce the problem of computing the girth of members of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">ℳ</mi><annotation encoding="application/x-tex">\mathcal M</annotation></semantics></math>
to that of computing the girth of vertically
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-connected
members of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">ℳ</mi><annotation encoding="application/x-tex">\mathcal M</annotation></semantics></math>.</li>
</ol>
<h1 data-number="3" id="perturbed-graphic-matroids"><span
class="header-section-number">3</span> Perturbed graphic matroids</h1>
<p></p>
Jim Geelen and Rohan Kapadia <span class="citation"
data-cites="geelen_computing_2018">[<a href="#ref-geelen_computing_2018"
role="doc-biblioref">4</a>]</span> showed that the (co)girth can be
computed in randomized polynomial time for a subclass of binary matroids
called perturbed graphic matroids. They made a reduction from the
(co)girth problem of perturbed graphic matroids to graph cuts and
matchings using
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>-signed-grafts.
IMO the reduction is quite tricky. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>s</mi><annotation encoding="application/x-tex">s</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>
be two non-negative integers. An
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>-signed-graft
is a tuple
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(G,S,T,B,C,D)</annotation></semantics></math>
such that:
<ul>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
is a graph,</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
is an
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>s</mi><annotation encoding="application/x-tex">s</annotation></semantics></math>-element
set disjoint from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>V</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">V(G)</annotation></semantics></math>,</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math>
is a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-element
set disjoint from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">E(G)</annotation></semantics></math>,</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">B,C,D</annotation></semantics></math>
are 0-1 matrices.</li>
</ul>
<p></p>
The incidence matrix of an
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>-signed-graft
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(G,S,T,B,C,D)</annotation></semantics></math>
is <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>=</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"></mtd><mtd columnalign="center" style="text-align: center"><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>E</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="center" style="text-align: center"><mi>T</mi></mtd></mtr></mtable></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>V</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mi>S</mi></mtd></mtr></mtable></mtd><mtd columnalign="center" style="text-align: center"><mrow><mo stretchy="true" form="prefix">(</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>A</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="center" style="text-align: center"><mi>B</mi></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mi>C</mi></mtd><mtd columnalign="center" style="text-align: center"><mi>D</mi></mtd></mtr></mtable><mo stretchy="true" form="postfix">)</mo></mrow></mtd></mtr></mtable></mrow><annotation encoding="application/x-tex">
A = \begin{array}{ccc}
      &amp; \begin{array}{cc} E(G) &amp; T \end{array} \\
    \begin{array}{c} V(G) \\ S \end{array}
      &amp; \left(
        \begin{array}{cc}
          A(G) &amp; B \\
          C &amp; D 
        \end{array}
      \right)
\end{array}
</annotation></semantics></math></span> where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">A(G)</annotation></semantics></math>
is the incidence matrix of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
Denote the matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A)</annotation></semantics></math>
by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(G,S,T,B,C,D)</annotation></semantics></math>.
<div id="lemgraft" class="theorem-environment Lemma" data-index="4"
type="Lemma" title="[@geelen_computing_2018,Lemma 4.1]">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">4</span><span class="name"><span class="citation"
data-cites="geelen_computing_2018">[<a href="#ref-geelen_computing_2018"
role="doc-biblioref">4</a>,Lemma 4.1]</span></span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
be a graph and let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mrow><mi>V</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo><mo>×</mo><mi>E</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow></msubsup></mrow><annotation encoding="application/x-tex">P\in \mathbb{F}_2^{V(G)\times E(G)}</annotation></semantics></math>
be a
rank-<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>
matrix. Then there is a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>t</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(t,t)</annotation></semantics></math>-signed-graft
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(G,S,T,B,C,D)</annotation></semantics></math>
such that <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo><mo>+</mo><mi>P</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mi>T</mi><mi>.</mi></mrow><annotation encoding="application/x-tex">M(A(G)+P)=M(G,S,T,B,C,D)/T.</annotation></semantics></math></span>
</div>
<p></p>
The proof is taking
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo>,</mo><mi>C</mi></mrow><annotation encoding="application/x-tex">B,C</annotation></semantics></math>
as a rank decomposition of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>
and applying some row operations.
<p></p>
Recall that <a href="#binarydecomp" title="Theorem 3">Theorem 3</a> says
that each vertically
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-connected
matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
in a proper minor-closed class of binary matroids is <em>either</em>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>+</mo><mi>P</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A+P)</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>+</mo><mi>P</mi><msup><mo stretchy="false" form="postfix">)</mo><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">M(A+P)^*</annotation></semantics></math>.
One has to consider the girth and cogirth problem separately.
<h2 data-number="3.1" id="reductions"><span
class="header-section-number">3.1</span> Reductions</h2>
<div id="lemcogirth" class="theorem-environment Lemma" data-index="5"
type="Lemma"
title="the cogirth part. [@geelen_computing_2018,Lemma 4.2]">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">5</span><span class="name">the cogirth part. <span
class="citation" data-cites="geelen_computing_2018">[<a
href="#ref-geelen_computing_2018" role="doc-biblioref">4</a>,Lemma
4.2]</span></span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(G,S,T,B,C,D)</annotation></semantics></math>
be an
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>-signed-graft
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>S</mi><mo>′</mo></msup><annotation encoding="application/x-tex">S&#39;</annotation></semantics></math>
be a one-element set disjoint from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>V</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">V(G)</annotation></semantics></math>.
The cogirth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mi>T</mi></mrow><annotation encoding="application/x-tex">M(G,S,T,B,C,D)/T</annotation></semantics></math>
is the mimimum of the cogirths of matroids
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><msup><mi>S</mi><mo>′</mo></msup><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>y</mi><mi>C</mi><mo>,</mo><mi>y</mi><mi>D</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mi>T</mi></mrow><annotation encoding="application/x-tex">M(G,S&#39;,T,B,yC,yD)/T</annotation></semantics></math>
taken over all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mrow><msup><mi>S</mi><mo>′</mo></msup><mo>×</mo><mi>S</mi></mrow></msubsup></mrow><annotation encoding="application/x-tex">y\in \mathbb{F}_2^{S&#39;\times S}</annotation></semantics></math>.
</div>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
To see this lemma, I suggest considering the flats instead of cocycles.
<ul>
<li>Each flat in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><msup><mi>S</mi><mo>′</mo></msup><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>y</mi><mi>C</mi><mo>,</mo><mi>y</mi><mi>D</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=M(G,S&#39;,T,B,yC,yD)</annotation></semantics></math>
is also a flat
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>M</mi><mo>′</mo></msup><mo>=</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M&#39;=M(G,S,T,B,C,D)</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>F</mi><mo>′</mo></msup><annotation encoding="application/x-tex">F&#39;</annotation></semantics></math>
be a flat of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>M</mi><mo>′</mo></msup><annotation encoding="application/x-tex">M&#39;</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
be the corresponding set in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
If there is an element
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>\</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">M\setminus F</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
is linearly representable by vectors in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>.
Then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
is also representable by vectors in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>F</mi><mo>′</mo></msup><annotation encoding="application/x-tex">F&#39;</annotation></semantics></math>
by linearality of the multiplication.</li>
<li>For each hyperplane
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>H</mi><annotation encoding="application/x-tex">H</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>,
there is a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mrow><msup><mi>S</mi><mo>′</mo></msup><mo>×</mo><mi>S</mi></mrow></msubsup></mrow><annotation encoding="application/x-tex">y\in \mathbb{F}_2^{S&#39;\times S}</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>F</mi><mo>′</mo></msup><annotation encoding="application/x-tex">F&#39;</annotation></semantics></math>
is a flat of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>M</mi><mo>′</mo></msup><annotation encoding="application/x-tex">M&#39;</annotation></semantics></math>.
Note that this only works for cocircuits (hyperplanes) but not cocycles
(flats). We can assume that the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">A(G),B</annotation></semantics></math>
part is empty. Let the first
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>
columns be the hyperplane
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>H</mi><annotation encoding="application/x-tex">H</annotation></semantics></math>.
Then the matrix is <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">(</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>H</mi></mtd><mtd columnalign="center" style="text-align: center"><mi>U</mi></mtd></mtr></mtable><mo stretchy="true" form="postfix">)</mo></mrow><mi>.</mi></mrow><annotation encoding="application/x-tex">
M=\begin{pmatrix}
H &amp; U
\end{pmatrix}.
</annotation></semantics></math></span> We want to show that there is a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mi>s</mi></msubsup></mrow><annotation encoding="application/x-tex">y\in \mathbb{F}_2^s</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>H</mi><mi>T</mi></msup><mi>y</mi><mo>=</mo><mn mathvariant="bold">𝟎</mn></mrow><annotation encoding="application/x-tex">H^T y=\mathbf{0}</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>U</mi><mi>T</mi></msup><mi>y</mi><mo>=</mo><mn mathvariant="bold">𝟏</mn><mi>.</mi></mrow><annotation encoding="application/x-tex">U^T y=\mathbf{1}.</annotation></semantics></math>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
be a base in this linear matroid. Apply row operations to make
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
a standard basis (at most one “1” in each column). The intersection of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>H</mi><annotation encoding="application/x-tex">H</annotation></semantics></math>
has exactly
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">r-1</annotation></semantics></math>
vectors. Now we construct the vector
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mi>.</mi></mrow><annotation encoding="application/x-tex">y.</annotation></semantics></math>
If there is any vector in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo>∩</mo><mi>H</mi></mrow><annotation encoding="application/x-tex">B\cap H</annotation></semantics></math>
that has a “1” in the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-th
coordinate, let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo stretchy="false" form="prefix">[</mo><mi>k</mi><mo stretchy="false" form="postfix">]</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y[k]=0</annotation></semantics></math>;
Otherwise, we set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo stretchy="false" form="prefix">[</mo><mi>k</mi><mo stretchy="false" form="postfix">]</mo><mo>=</mo><mn>1</mn><mi>.</mi></mrow><annotation encoding="application/x-tex">y[k]=1.</annotation></semantics></math>
Note that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>H</mi><mi>T</mi></msup><mi>y</mi><mo>=</mo><mn mathvariant="bold">𝟎</mn></mrow><annotation encoding="application/x-tex">H^T y=\mathbf{0}</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>U</mi><mi>T</mi></msup><mi>y</mi><mo>=</mo><mn mathvariant="bold">𝟏</mn><mi>.</mi></mrow><annotation encoding="application/x-tex">U^T y=\mathbf{1}.</annotation></semantics></math>
Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>H</mi><annotation encoding="application/x-tex">H</annotation></semantics></math>
remains a hyperplane in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>M</mi><mo>′</mo></msup><mi>.</mi></mrow><annotation encoding="application/x-tex">M&#39;.</annotation></semantics></math></li>
</ul>
</div>
<div id="lemgirth" class="theorem-environment Lemma" data-index="6"
type="Lemma" title="the girth part. [@geelen_computing_2018,Lemma 4.3]">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">6</span><span class="name">the girth part. <span
class="citation" data-cites="geelen_computing_2018">[<a
href="#ref-geelen_computing_2018" role="doc-biblioref">4</a>,Lemma
4.3]</span></span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(G,S,T,B,C,D)</annotation></semantics></math>
be an
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>-signed-graft
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>T</mi><mo>′</mo></msup><annotation encoding="application/x-tex">T&#39;</annotation></semantics></math>
be a one-element set disjoint from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo><mi>.</mi></mrow><annotation encoding="application/x-tex">E(G).</annotation></semantics></math>
The girth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>S</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mi>T</mi></mrow><annotation encoding="application/x-tex">M(G,S,T,B,C,D)/T</annotation></semantics></math>
is the mimimum of the girths of matroids
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><msup><mi>S</mi><mo>′</mo></msup><mo>,</mo><mi>T</mi><mo>,</mo><mi>B</mi><mi>x</mi><mo>,</mo><mi>C</mi><mo>,</mo><mi>D</mi><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mi>T</mi></mrow><annotation encoding="application/x-tex">M(G,S&#39;,T,Bx,C,Dx)/T</annotation></semantics></math>
taken over all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mrow><mi>T</mi><mo>×</mo><msup><mi>T</mi><mo>′</mo></msup></mrow></msubsup><mi>.</mi></mrow><annotation encoding="application/x-tex">x\in \mathbb{F}_2^{T\times T&#39;}.</annotation></semantics></math>
</div>
<p></p>
It follows from <a href="#lemgraft" title="Lemma 4">Lemma 4</a> we need
to consider the (co)girth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mi>/</mi><mi>T</mi></mrow><annotation encoding="application/x-tex">M/T</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is the matroid of an
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>-signed-graft.
<h2 data-number="3.2" id="cogirth-even-cuts"><span
class="header-section-number">3.2</span> cogirth → even cuts</h2>
<p></p>
By <a href="#lemcogirth" title="Lemma 5">Lemma 5</a>, to compute the
cogirth of an
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>-signed-graft
we only need to consider binary matroid of the following kind:
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>=</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"></mtd><mtd columnalign="center" style="text-align: center"><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>E</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="center" style="text-align: center"><mi>T</mi></mtd></mtr></mtable></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mtable><mtr><mtd columnalign="right" style="text-align: right"><mi>V</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right"><mrow><mo stretchy="true" form="prefix">{</mo><mi>v</mi><mo stretchy="true" form="postfix">}</mo></mrow></mtd></mtr></mtable></mtd><mtd columnalign="center" style="text-align: center"><mrow><mo stretchy="true" form="prefix">(</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>A</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="center" style="text-align: center"><mi>B</mi></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mi>σ</mi></mtd><mtd columnalign="center" style="text-align: center"><mi>α</mi></mtd></mtr></mtable><mo stretchy="true" form="postfix">)</mo></mrow></mtd></mtr></mtable></mrow><annotation encoding="application/x-tex">
A=
\begin{array}{ccc}
      &amp; \begin{array}{cc} E(G) &amp; T \end{array} \\
    \begin{array}{r} V(G) \\ \left\{ v \right\} \end{array}
      &amp;
        \begin{pmatrix}
          A(G) &amp; B \\
          \sigma &amp; \alpha
        \end{pmatrix}
\end{array}
</annotation></semantics></math></span>
<p></p>
We want to find the cogirth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mi>T</mi></mrow><annotation encoding="application/x-tex">M(A)/T</annotation></semantics></math>.
One useful proposition is the following. (See <a
href="/posts/misleading_ideas/#cocircuit-space-of-binary-matroids">this
post</a> for a proof sketch.)
<div class="theorem-environment Proposition" data-index="7"
type="Proposition" title="[@oxley_matroid_2011,Proposition 9.2.2]">
<span class="theorem-header"><span class="type">Proposition</span><span
class="index">7</span><span class="name"><span class="citation"
data-cites="oxley_matroid_2011">[<a href="#ref-oxley_matroid_2011"
role="doc-biblioref">5</a>,Proposition 9.2.2]</span></span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
be a binary representation of a
rank-<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
binary matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
Then the cocircuit space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
equals the row space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
Moreover, this space has dimension
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
and is the orthogonal subspace of the circuit space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
</div>
<p></p>
What we are finding is the minimum support of vectors in the row space
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
such that the support has empty intersection with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math><!--
--><label for="sn-1" class="margin-toggle sidenote-number"></label><input type="checkbox" id="sn-1" class="margin-toggle"/><div class="sidenote">Why? We want to find the cocircuit with minimum size. This is exactly
the vector with minimum number of 1s in the cocircuit space if our
matroid is binary. In binary matroid the symmetric difference of
(co)circuits contains a (co)circuit and is dependent.</div><!--
-->. Note that the support of rows in the graph incidence matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">A(G)</annotation></semantics></math>
has interpretation. They are exactly
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\delta(X)</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>X</mi><annotation encoding="application/x-tex">X</annotation></semantics></math>
is the set of vertices for the summand rows. Thus we divide the problem
into 2 cases. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo stretchy="false" form="prefix">[</mo><mi>u</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">B[u]</annotation></semantics></math>
be a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-dimentional
binary label on each vertex.
<ol type="1">
<li>The row indexed by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mi>v</mi><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ v \right\}</annotation></semantics></math>
is not in the solution. Find the smallest non-empty cut
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\delta(X)</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>u</mi><mo>∈</mo><mi>X</mi></mrow></msub><mi>B</mi><mo stretchy="false" form="prefix">[</mo><mi>u</mi><mo stretchy="false" form="postfix">]</mo><mo>=</mo><mn mathvariant="bold">𝟎</mn></mrow><annotation encoding="application/x-tex">\sum_{u\in X}B[u]=\mathbf 0</annotation></semantics></math>.</li>
<li>The row indexed by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mi>v</mi><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ v \right\}</annotation></semantics></math>
is in the solution. Now
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>σ</mi><annotation encoding="application/x-tex">\sigma</annotation></semantics></math>
represents a subset of edges in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
We want to find a cut
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\delta(X)</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mi mathvariant="normal">Δ</mi><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sigma \Delta \delta(X)</annotation></semantics></math>
is minimized and non-empty and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>u</mi><mo>∈</mo><mi>X</mi></mrow></msub><mi>B</mi><mo stretchy="false" form="prefix">[</mo><mi>u</mi><mo stretchy="false" form="postfix">]</mo><mo>=</mo><mi>α</mi></mrow><annotation encoding="application/x-tex">\sum_{u\in X}B[u]=\alpha</annotation></semantics></math>.</li>
</ol>
<p></p>
These are called the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-dimensional
even-cut problem. Geelen and Kapadia discovered a random contraction
algorithm which solves both of the problems in randomized polynomial
time <span class="citation" data-cites="geelen_computing_2018">[<a
href="#ref-geelen_computing_2018" role="doc-biblioref">4</a>]</span>.
<p></p>
If the graph is not connected, it is possible that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\delta(X)</annotation></semantics></math>
is empty even if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>X</mi><annotation encoding="application/x-tex">X</annotation></semantics></math>
is non-empty. Fortunately, Geelen and Kapadia have done the reduction to
connected graphs.
<p></p>
Note that the size of cut
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">|</mo></mrow><annotation encoding="application/x-tex">|\delta(X)|</annotation></semantics></math>
is a submodular function on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>V</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">V(G)</annotation></semantics></math>
but
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mi mathvariant="normal">Δ</mi><mi>σ</mi><mo stretchy="false" form="prefix">|</mo></mrow><annotation encoding="application/x-tex">|\delta(X)\Delta \sigma|</annotation></semantics></math>
is not necessarily submodular. The first case is minimizing a symmetric
submodular function under some congruency constraints.
<div id="probGCCSM" class="theorem-environment Problem" data-index="8"
type="Problem"
title="Generalised Congruency-Constrained Submodular Minimization (GCCSM)">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">8</span><span class="name">Generalised
Congruency-Constrained Submodular Minimization (GCCSM)</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo>:</mo><msup><mn>2</mn><mi>N</mi></msup><mo>→</mo><mi mathvariant="double-struck">ℤ</mi></mrow><annotation encoding="application/x-tex">f:2^N \to \mathbb{Z}</annotation></semantics></math>
submodular,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>p</mi><annotation encoding="application/x-tex">p</annotation></semantics></math>
prime,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>∈</mo><msub><mi mathvariant="double-struck">ℤ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mrow><annotation encoding="application/x-tex">k\in \mathbb{Z}_{\geq 0}</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>r</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>r</mi><mi>k</mi></msub><mo>∈</mo><msub><mi mathvariant="double-struck">ℤ</mi><mi>p</mi></msub></mrow><annotation encoding="application/x-tex">r_1,\dots,r_k\in \mathbb{Z}_p</annotation></semantics></math>,
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>S</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>S</mi><mi>k</mi></msub><mo>∈</mo><mi>N</mi></mrow><annotation encoding="application/x-tex">S_1,\dots,S_k\in N</annotation></semantics></math>.
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mo stretchy="false" form="prefix">|</mo><mi>S</mi><mo>∩</mo><msub><mi>S</mi><mi>i</mi></msub><mo stretchy="false" form="prefix">|</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≡</mo><msub><mi>r</mi><mi>i</mi></msub></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>i</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mi>k</mi><mo stretchy="false" form="postfix">]</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>S</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>⊂</mo><mi>N</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp; &amp;  f(S)&amp;  &amp; &amp;\\
s.t.&amp; &amp; |S\cap S_i|&amp;\equiv r_i  &amp; &amp;\forall i\in [k]\\
    &amp; &amp; S&amp;\subset N
\end{aligned}
</annotation></semantics></math></span>
</div>
<p></p>
Nägele, Sudakov and Zenklusen showed that <a href="#probGCCSM"
title="Problem 8">Problem 8</a> can be done in polynomial time if the
field is small and the number of congruency constraints is constant
<span class="citation" data-cites="Nägele_Sudakov_Zenklusen_2019">[<a
href="#ref-Nägele_Sudakov_Zenklusen_2019"
role="doc-biblioref">6</a>]</span>.
<div class="theorem-environment Theorem" data-index="9" type="Theorem"
title="[@Nägele_Sudakov_Zenklusen_2019]">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">9</span><span class="name"><span class="citation"
data-cites="Nägele_Sudakov_Zenklusen_2019">[<a
href="#ref-Nägele_Sudakov_Zenklusen_2019"
role="doc-biblioref">6</a>]</span></span></span>
<p></p>
<a href="#probGCCSM" title="Problem 8">Problem 8</a> can be solved in
time
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>N</mi><msup><mo stretchy="false" form="prefix">|</mo><mrow><mn>2</mn><mi>k</mi><mi>p</mi><mo>+</mo><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup></mrow><annotation encoding="application/x-tex">|N|^{2kp+O(1)}</annotation></semantics></math>.
</div>
<p></p>
I think currently (Sep 2025) finding a deterministic polynomial time
algorithm for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-dim
even cut is still open.
<h2 data-number="3.3" id="girth-parity-cycle-parity-join"><span
class="header-section-number">3.3</span> girth → parity cycle + parity
join</h2>
<p></p>
Similar to the cogirth part, by <a href="#lemgirth"
title="Lemma 6">Lemma 6</a> we consider the following matrix
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>=</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"></mtd><mtd columnalign="center" style="text-align: center"><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>E</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="center" style="text-align: center"><mrow><mo stretchy="true" form="prefix">{</mo><mi>f</mi><mo stretchy="true" form="postfix">}</mo></mrow></mtd></mtr></mtable></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mtable><mtr><mtd columnalign="right" style="text-align: right"><mi>V</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right"><mi>S</mi></mtd></mtr></mtable></mtd><mtd columnalign="center" style="text-align: center"><mrow><mo stretchy="true" form="prefix">(</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>A</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="center" style="text-align: center"><mi>b</mi></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mi>C</mi></mtd><mtd columnalign="center" style="text-align: center"><mi>d</mi></mtd></mtr></mtable><mo stretchy="true" form="postfix">)</mo></mrow></mtd></mtr></mtable></mrow><annotation encoding="application/x-tex">
A=
\begin{array}{ccc}
      &amp; \begin{array}{cc} E(G) &amp; \left\{ f \right\} \end{array} \\
    \begin{array}{r} V(G) \\ S \end{array}
      &amp;
        \begin{pmatrix}
          A(G) &amp; b \\
          C &amp; d
        \end{pmatrix}
\end{array}
</annotation></semantics></math></span> and we want to compute the girth
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>f</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">M(A)/\left\{ f \right\}</annotation></semantics></math>.
Each edge in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
has a label
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mi>s</mi></msubsup></mrow><annotation encoding="application/x-tex">c(e)\in\mathbb{F}_2^{s}</annotation></semantics></math>
(the submatrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>C</mi><annotation encoding="application/x-tex">C</annotation></semantics></math>).
Contracting an element in a matroid may change circuits. There are two
cases:
<ol type="1">
<li>The minimum circuit does not contain
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mi>f</mi><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ f \right\}</annotation></semantics></math>.
Then the girth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>f</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">M(A)/\left\{ f \right\}</annotation></semantics></math>
is the same as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mo>\</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>f</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">M(A)\setminus \left\{ f \right\}</annotation></semantics></math>.
In this case we need to find the minimum cycle in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
such that the sum of its edge labels is exactly
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn mathvariant="bold">𝟎</mn><annotation encoding="application/x-tex">\mathbf{0}</annotation></semantics></math>.
This is the parity cycle problem.</li>
<li>The minimum circuit contains
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mi>f</mi><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ f \right\}</annotation></semantics></math>.
Let the girth of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>f</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">M(A)/\left\{ f \right\}</annotation></semantics></math>
be
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>λ</mi><annotation encoding="application/x-tex">\lambda</annotation></semantics></math>.
Then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A)</annotation></semantics></math>
has a minimum circuit that contains
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
and has size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>λ</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\lambda+1</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math>
be the set of vertices whose characteristic vector is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>.
To find the minimum circuit of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A)</annotation></semantics></math>,
we want to find the minimum edge set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊂</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">F\subset E</annotation></semantics></math>
such that the sum of labels is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>d</mi><annotation encoding="application/x-tex">d</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math>
is exactly the set of vertices with odd degree in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo stretchy="false" form="prefix">[</mo><mi>F</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">G[F]</annotation></semantics></math>.
This is called the parity
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math>
join problem.</li>
</ol>
<p></p>
Recently, Schlotter and Sebő find FPT time algorithm for the odd
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math>-join
problem<span class="citation" data-cites="schlotter_odd_2025">[<a
href="#ref-schlotter_odd_2025" role="doc-biblioref">7</a>]</span>. Sebő
has some open problems on this topic which can be found <a
href="https://users.renyi.hu/~emlektab/emlektabla17.pdf">here(page
11)</a>.
<h1 data-number="4" id="more-on-perturbed-graphic-matroids"><span
class="header-section-number">4</span> More on perturbed graphic
matroids</h1>
<p></p>
Fomin and others studied FPT algorithms of <span class="sc">Space
Cover</span> problem (which is a generalization of matroid girth
problem) on perturbed graphic matroids <span class="citation"
data-cites="fomin_covering_2019">[<a href="#ref-fomin_covering_2019"
role="doc-biblioref">8</a>]</span>.
<div class="theorem-environment Problem" data-index="10" type="Problem"
title="[Space Cover]{.sc}">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">10</span><span class="name"><span class="sc">Space
Cover</span></span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>
be a multigraph on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
vertices and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>m</mi><annotation encoding="application/x-tex">m</annotation></semantics></math>
edges and let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>
be a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>×</mo><mi>m</mi></mrow><annotation encoding="application/x-tex">n\times m</annotation></semantics></math>
matrix with constant rank. We write
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>I</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">I(G)</annotation></semantics></math>
for the incidence matrix of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
Given a set of terminal edges
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo>⊂</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">T\subset E</annotation></semantics></math>
and an integer
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>,
decide if there is a edge set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊂</mo><mi>E</mi><mo>\</mo><mi>T</mi></mrow><annotation encoding="application/x-tex">F\subset E\setminus T</annotation></semantics></math>
with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo><mo>&lt;</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">|F|&lt;k</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo>⊂</mo><mrow><mi mathvariant="normal">span</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">T\subset \operatorname{span}(F)</annotation></semantics></math>
in the binary matroid of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>I</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo><mo>+</mo><mi>P</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(I(G)+P)</annotation></semantics></math>.
</div>
<p></p>
They show that <span class="sc">Space Cover</span> generalizes steiner
tree and multiway cut even when
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>
is absent and they focus on FPT algorithms with parameter
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>.
This problem is solvable in time
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>k</mi><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>k</mi><mo stretchy="false" form="postfix">)</mo></mrow></msup><mrow><mi mathvariant="normal">poly</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mo>+</mo><mi>m</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">k^{O(k)}\operatorname{poly}(n+m)</annotation></semantics></math>.
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-seymour_decomposition_1980" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[1] </div><div
class="csl-right-inline">P.D. Seymour, Decomposition of regular
matroids, <em>Journal of Combinatorial Theory, Series B</em>. 28 (1980)
305–359 <a
href="https://doi.org/10.1016/0095-8956(80)90075-1">10.1016/0095-8956(80)90075-1</a>.</div>
</div>
<div id="ref-truemper_decomposition_1990" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[2] </div><div class="csl-right-inline">K.
Truemper, A decomposition theory for matroids. <span>V</span>.
<span>Testing</span> of matrix total unimodularity, <em>Journal of
Combinatorial Theory, Series B</em>. 49 (1990) 241–281 <a
href="https://doi.org/10.1016/0095-8956(90)90030-4">10.1016/0095-8956(90)90030-4</a>.</div>
</div>
<div id="ref-Geelen_Gerards_Whittle_2015" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[3] </div><div class="csl-right-inline">J.
Geelen, B. Gerards, G. Whittle, The highly connected matroids in
minor-closed classes, <em>Annals of Combinatorics</em>. 19 (2015)
107–123 <a
href="https://doi.org/10.1007/s00026-015-0251-3">10.1007/s00026-015-0251-3</a>.</div>
</div>
<div id="ref-geelen_computing_2018" class="csl-entry" role="listitem">
<div class="csl-left-margin">[4] </div><div class="csl-right-inline">J.
Geelen, R. Kapadia, Computing <span>Girth</span> and
<span>Cogirth</span> in <span>Perturbed</span> <span>Graphic</span>
<span>Matroids</span>, <em>Combinatorica</em>. 38 (2018) 167–191 <a
href="https://doi.org/10.1007/s00493-016-3445-3">10.1007/s00493-016-3445-3</a>.</div>
</div>
<div id="ref-oxley_matroid_2011" class="csl-entry" role="listitem">
<div class="csl-left-margin">[5] </div><div
class="csl-right-inline">J.G. Oxley, Matroid theory, 2nd ed, Oxford
University Press, Oxford ; New York, 2011.</div>
</div>
<div id="ref-Nägele_Sudakov_Zenklusen_2019" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[6] </div><div class="csl-right-inline">M.
Nägele, B. Sudakov, R. Zenklusen, Submodular minimization under
congruency constraints, <em>Combinatorica</em>. 39 (2019) 1351–1386 <a
href="https://doi.org/10.1007/s00493-019-3900-1">10.1007/s00493-019-3900-1</a>.</div>
</div>
<div id="ref-schlotter_odd_2025" class="csl-entry" role="listitem">
<div class="csl-left-margin">[7] </div><div class="csl-right-inline">I.
Schlotter, A. Sebő, Odd <span>Paths</span>, <span>Cycles</span>, and
<span><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math></span>-<span>Joins</span>:
<span>Connections</span> and <span>Algorithms</span>, <em>SIAM Journal
on Discrete Mathematics</em>. 39 (2025) 484–504 <a
href="https://doi.org/10.1137/23M158156X">10.1137/23M158156X</a>.</div>
</div>
<div id="ref-fomin_covering_2019" class="csl-entry" role="listitem">
<div class="csl-left-margin">[8] </div><div
class="csl-right-inline">F.V. Fomin, P.A. Golovach, D. Lokshtanov, S.
Saurabh, M. Zehavi, Covering <span>Vectors</span> by <span>Spaces</span>
in <span>Perturbed</span> <span>Graphic</span> <span>Matroids</span> and
<span>Their</span> <span>Duals</span>, in: <em>46th
<span>International</span> <span>Colloquium</span> on
<span>Automata</span>, <span>Languages</span>, and
<span>Programming</span> (<span>ICALP</span> 2019)</em>, Schloss
Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 2019: pp.
59:1–59:13 <a
href="https://doi.org/10.4230/LIPIcs.ICALP.2019.59">10.4230/LIPIcs.ICALP.2019.59</a>.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Tue, 12 Aug 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/matroidgirth/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Matroid circuit packing and covering</title>
    <link>https://talldoor.uk/posts/circuitpacking/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on June 15, 2025
        
            by Yu Cong, with the help of Kangyi Tian
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;matroid&#39;." href="/tags/matroid/index.html" rel="tag">matroid</a>, <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>, <a title="All pages tagged &#39;combinatorics&#39;." href="/tags/combinatorics/index.html" rel="tag">combinatorics</a>
        
    </div>    
    <section class="body">
        <p></p>
In the <a href="/posts/basepacking">previous post</a>, we mainly focus
on the algorithmic part of integral and fractional base packing and base
covering. In this post we consider packing and covering of matroid
circuits.
<h1 data-number="1" id="packingcovering-defect"><span
class="header-section-number">1</span> Packing/Covering Defect</h1>
<p></p>
Seymour <span class="citation" data-cites="seymour_packing_1980">[<a
href="#ref-seymour_packing_1980" role="doc-biblioref">1</a>]</span>
proved the following theorem.
<div class="theorem-environment Theorem" data-index="1" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">1</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo>,</mo><mi>I</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=(E,I)</annotation></semantics></math>
be a matroid without coloop. Then one has <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>κ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><msup><mi>r</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>ν</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo></mrow><annotation encoding="application/x-tex">\theta(M)-\kappa(M)\leq r^*(M)-\nu(M),</annotation></semantics></math></span>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\theta(M)</annotation></semantics></math>
is the minimum number of circuits whose union is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>κ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\kappa(M)</annotation></semantics></math>
is the number of connected components in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>r</mi><mo>*</mo></msup><annotation encoding="application/x-tex">r^*</annotation></semantics></math>
is the corank and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ν</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\nu(M)</annotation></semantics></math>
is the max number of disjoint circuits.
</div>
<p></p>
The left hand side
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>κ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\theta(M)-\kappa(M)</annotation></semantics></math>
is called the <em>circuit covering defect</em> and the right hand side
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>r</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>ν</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">r^*(M)-\nu(M)</annotation></semantics></math>
is called the <em>circuit packing defect</em>. I guess the name
“covering defect” comes from the fact that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>κ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\theta(M)-\kappa(M)</annotation></semantics></math>
is the gap between the circuit covering number and a lowerbound
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>κ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\kappa(M)</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>κ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>θ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\kappa(M)\leq \theta(M)</annotation></semantics></math>
since there is no circuit containing two elements in different
components. The packing defect is the set-point dual of the covering
version. To see the duality, one can write
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>κ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\kappa(M)</annotation></semantics></math>
as the max size of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>X</mi><mo>⊂</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">X\subset E</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>C</mi><mo>∩</mo><mi>X</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">|C\cap X|\leq 1</annotation></semantics></math>
for all circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>C</mi><annotation encoding="application/x-tex">C</annotation></semantics></math>
and write
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>r</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">r^*(M)</annotation></semantics></math>
as the minimum size of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>X</mi><mo>⊂</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">X\subset E</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo>∩</mo><mi>C</mi><mo stretchy="false" form="prefix">|</mo><mo>≥</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">|X\cap C|\geq 1</annotation></semantics></math>
for all circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>C</mi><annotation encoding="application/x-tex">C</annotation></semantics></math>.
<h1 data-number="2" id="complexity"><span
class="header-section-number">2</span> Complexity</h1>
<p></p>
Computing the corank
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>r</mi><mo>*</mo></msup><annotation encoding="application/x-tex">r^*</annotation></semantics></math>
and the component number
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>κ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\kappa(M)</annotation></semantics></math>
is easy. What about
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\theta(M)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ν</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\nu(M)</annotation></semantics></math>?
<p></p>
The problem of determining if a sparse split graph (a special case of
chordal graphs) can have its edges partitioned into edge-disjoint
triangles is NP-complete <span class="citation"
data-cites="feder_packing_2012">[<a href="#ref-feder_packing_2012"
role="doc-biblioref">2</a>]</span>. So finding
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\theta(M)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ν</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\nu(M)</annotation></semantics></math>
is NP-hard even for some special graphic matroids.
<h1 data-number="3" id="cycle-double-cover"><span
class="header-section-number">3</span> Cycle Double Cover</h1>
<p></p>
<a href="https://en.wikipedia.org/wiki/Cycle_double_cover">Cycle double
cover conjecture</a> is a famous unsolved problem posed by W. T. Tutte,
Itai and Rodeh, George Szekeres and Paul Seymour. The cycle double cover
conjecture asks whether every bridgeless undirected graph has a
collection of cycles such that each edge of the graph is contained in
exactly two of the cycles.
<!-- read [@Zhang_CDC_2016] and [@ding_packing_2009] -->
<p></p>
<span class="citation" data-cites="Zhang_CDC_2016">[<a
href="#ref-Zhang_CDC_2016" role="doc-biblioref">3</a>]</span> is a nice
survey. However, there is little discussion about (even simplier version
of) circuit double cover on some special case of matroids. For example,
<a
href="https://math.stackexchange.com/questions/1835067/multi-cover-a-matroid-with-circuits">this
question</a> on math.sx is a relaxation of faithful CDC on matroids.
<div class="theorem-environment Problem" data-index="2" type="Problem"
title="Not so faithful circuit cover">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">2</span><span class="name">Not so faithful circuit
cover</span></span>
<p></p>
Given a matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo>,</mo><mi mathvariant="script">ℐ</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=(E,\mathcal I)</annotation></semantics></math>
and a non-negative integral weight function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo>:</mo><mi>E</mi><mo>→</mo><msub><mi mathvariant="double-struck">ℤ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mrow><annotation encoding="application/x-tex">w:E\to \mathbb{Z}_{\geq 0}</annotation></semantics></math>,
decide if there is a multiset of circuits of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
such that each element in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>
is covered by at least 1 and at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">w(e)</annotation></semantics></math>
circuits in the multiset.
</div>
<h2 data-number="3.1"
id="matroids-with-the-circuit-cover-property"><span
class="header-section-number">3.1</span> Matroids with the circuit cover
property</h2>
<div class="theorem-environment Problem" data-index="3" type="Problem"
title="circuit cover">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">3</span><span class="name">circuit cover</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
be a matroid on groundset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>
and let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo>:</mo><mi>E</mi><mo>→</mo><msub><mi mathvariant="double-struck">ℤ</mi><mo>+</mo></msub></mrow><annotation encoding="application/x-tex">w:E\to \mathbb{Z}_+</annotation></semantics></math>
be a weight function. Find a list of circuit of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
such that each element
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
is contained in exactly
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">w(e)</annotation></semantics></math>
circuits in the list.
</div>
<p></p>
One can see that certain weights can never allow a circuit cover. If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo>,</mo><mi>w</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(M,w)</annotation></semantics></math>
has a circuit cover, then the weight function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>w</mi><annotation encoding="application/x-tex">w</annotation></semantics></math>
must satisfy the following <em>admissibility</em> conditions:
<ol type="1">
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">w(e)\geq 0</annotation></semantics></math>
for any element
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>,</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>D</mi><mo stretchy="false" form="postfix">)</mo><mo>≡</mo><mn>0</mn><mrow><mspace width="0.444em"></mspace><mrow><mi mathvariant="normal">mod</mi><mo>&#8289;</mo></mrow><mspace width="0.222em"></mspace><mn>2</mn></mrow></mrow><annotation encoding="application/x-tex">w(D)\equiv 0 \mod 2</annotation></semantics></math>
for any cocircuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>D</mi><annotation encoding="application/x-tex">D</annotation></semantics></math>,</li>
<li>if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><mi>D</mi></mrow><annotation encoding="application/x-tex">e\in D</annotation></semantics></math>,
then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>D</mi><mo>−</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">w(e)\leq w(D-e)</annotation></semantics></math>.</li>
</ol>
<p></p>
A matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
has the <em>circuit cover property</em> if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo>,</mo><mi>w</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(M,w)</annotation></semantics></math>
has a circuit cover for every <em>admissible</em> weight
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>w</mi><annotation encoding="application/x-tex">w</annotation></semantics></math>.
<span class="citation" data-cites="fu_matroids_1999">[<a
href="#ref-fu_matroids_1999" role="doc-biblioref">4</a>]</span>
characterized binary matroids with circuit cover property.
<div class="theorem-environment Theorem" data-index="4" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">4</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
be a binary matroid. Then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
has the circuit cover property if and only if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
has no minor isomorphic to any of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>F</mi><mn>7</mn><mo>*</mo></msubsup><mo>,</mo><msub><mi>R</mi><mn>10</mn></msub><mo>,</mo><msup><mi>M</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mn>5</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">F^*_7,R_{10},M^*(K_5)</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>P</mi><mn>10</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(P_{10})</annotation></semantics></math>.
</div>
<h2 data-number="3.2" id="matroids-satisfying-nu_kwtau_kw"><span
class="header-section-number">3.2</span> Matroids satisfying
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>ν</mi><mrow><mi>k</mi><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><msub><mi>τ</mi><mrow><mi>k</mi><mo>,</mo><mi>w</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\nu_{k,w}=\tau_{k,w}</annotation></semantics></math></h2>
<p></p>
<span class="citation" data-cites="ding_packing_2009">[<a
href="#ref-ding_packing_2009" role="doc-biblioref">5</a>]</span> studied
a related (and seemingly simplier) optimization variant. How many
circuits can we pack with element capacity
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">k w(e)</annotation></semantics></math>?
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>ν</mi><mrow><mi>k</mi><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><mi mathvariant="normal">max</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mi>C</mi></munder><msub><mi>x</mi><mi>C</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>C</mi><mo>:</mo><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></munder><msub><mi>x</mi><mi>C</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mi>k</mi><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>x</mi><mi>C</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><msub><mi mathvariant="double-struck">ℤ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\nu_{k,w}=\max&amp;   &amp;   \sum_C x_C&amp;    &amp;   &amp;\\
s.t.&amp;   &amp;   \sum_{C:e\in C} x_C &amp;\leq k w(e)    &amp;   &amp;\forall e\in E\\
    &amp;   &amp;                   x_C &amp;\in \mathbb{Z}_{\geq 0}
\end{aligned}
</annotation></semantics></math></span>
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>τ</mi><mrow><mi>k</mi><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mi>e</mi></munder><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><msub><mi>y</mi><mi>e</mi></msub></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></munder><msub><mi>y</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mi>k</mi></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mrow><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> circuit </mtext><mspace width="0.333em"></mspace></mrow><mi>C</mi></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>y</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><msub><mi mathvariant="double-struck">ℤ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\tau_{k,w}=\min&amp;   &amp;   \sum_e w(e)&amp;y_e    &amp;   &amp;\\
s.t.&amp;   &amp;   \sum_{e\in C} y_e &amp;\geq k    &amp;   &amp;\forall \text{ circuit $C$}\\
    &amp;   &amp;                   y_e &amp;\in \mathbb{Z}_{\geq 0}
\end{aligned}
</annotation></semantics></math></span>
<p></p>
Clearly the linear relaxation of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>ν</mi><mrow><mi>k</mi><mo>,</mo><mi>w</mi></mrow></msub><annotation encoding="application/x-tex">\nu_{k,w}</annotation></semantics></math>
and of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>τ</mi><mrow><mi>k</mi><mo>,</mo><mi>w</mi></mrow></msub><annotation encoding="application/x-tex">\tau_{k,w}</annotation></semantics></math>
are LP dual of each other and have the same optimum. For what class of
matroids do we have equality
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>ν</mi><mrow><mi>k</mi><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><msub><mi>τ</mi><mrow><mi>k</mi><mo>,</mo><mi>w</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\nu_{k,w}=\tau_{k,w}</annotation></semantics></math>
for any weight function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>w</mi><annotation encoding="application/x-tex">w</annotation></semantics></math>?
<p></p>
When
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">k=1</annotation></semantics></math>
this is relatively simple. First we can assume that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
contains no coloop since coloops won’t appear in any circuit. Suppose
that there are two circuits
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>,</mo><msub><mi>C</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">C_1,C_2</annotation></semantics></math>
whose intersection is non-empty. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">a,b,c</annotation></semantics></math>
be the smallest weight of elements in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>,</mo><msub><mi>C</mi><mn>2</mn></msub><mo>,</mo><msub><mi>C</mi><mn>1</mn></msub><mo>∩</mo><msub><mi>C</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">C_1,C_2, C_1\cap C_2</annotation></semantics></math>
respectively. It follows by definition that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mo>≤</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">a\leq c</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>b</mi><mo>≤</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">b\leq c</annotation></semantics></math>.
The max number of circuits we can pack in the matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><msub><mo stretchy="false" form="prefix">|</mo><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>∪</mo><msub><mi>C</mi><mn>2</mn></msub></mrow></msub></mrow><annotation encoding="application/x-tex">M|_{C_1\cup C_2}</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>a</mi><mo>+</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\min(a+b,c)</annotation></semantics></math>.
Now we further assume that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mo>,</mo><mi>b</mi><mo>≤</mo><mi>c</mi><mo>≤</mo><mi>a</mi><mo>+</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a,b\leq c\leq a+b</annotation></semantics></math>.
The minimum weight of elements hitting every circuit is not necessarily
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>,
since by the circuit axiom there must another circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>C</mi><mo>′</mo></msup><mo>∈</mo><msub><mi>C</mi><mn>1</mn></msub><mo>∪</mo><msub><mi>C</mi><mn>2</mn></msub><mo>−</mo><mi>e</mi></mrow><annotation encoding="application/x-tex">C&#39;\in C_1\cup C_2-e</annotation></semantics></math>
for any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><msub><mi>C</mi><mn>1</mn></msub><mo>∩</mo><msub><mi>C</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">e\in C_1\cap C_2</annotation></semantics></math>
which won’t be hit if we are selecting element in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>∩</mo><msub><mi>C</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">C_1\cap C_2</annotation></semantics></math>.
Thus for the case of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">k=1</annotation></semantics></math>,
any matroid satisfying
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>ν</mi><mrow><mn>1</mn><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><msub><mi>τ</mi><mrow><mn>1</mn><mo>,</mo><mi>w</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\nu_{1,w}=\tau_{1,w}</annotation></semantics></math>
has no intersecting circuits.
<p></p>
The characterization of matroids satisfying
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>ν</mi><mrow><mn>2</mn><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><msub><mi>τ</mi><mrow><mn>2</mn><mo>,</mo><mi>w</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\nu_{2,w}=\tau_{2,w}</annotation></semantics></math>
is the following theorem <span class="citation"
data-cites="ding_packing_2009">[<a href="#ref-ding_packing_2009"
role="doc-biblioref">5</a>]</span>.
<div class="theorem-environment Theorem" data-index="5" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">5</span></span>
A matroid satisfies
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>ν</mi><mrow><mn>2</mn><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><msub><mi>τ</mi><mrow><mn>2</mn><mo>,</mo><mi>w</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\nu_{2,w}=\tau_{2,w}</annotation></semantics></math>
iff none of its minor is isomorphic to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>U</mi><mrow><mn>2</mn><mo>,</mo><mn>4</mn></mrow></msub><mo>,</mo><msub><mi>F</mi><mn>7</mn></msub><mo>,</mo><msubsup><mi>F</mi><mn>7</mn><mo>*</mo></msubsup><mo>,</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mrow><mn>3</mn><mo>,</mo><mn>3</mn></mrow></msub><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msubsup><mi>K</mi><mn>5</mn><mo>−</mo></msubsup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">U_{2,4},F_7,F_7^*,M(K_{3,3}),M(K_5^-)</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(K)</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>K</mi><mn>5</mn><mo>−</mo></msubsup><annotation encoding="application/x-tex">K_5^-</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>K</mi><mn>5</mn></msub><annotation encoding="application/x-tex">K_5</annotation></semantics></math>
deleting an edge and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
is a special 4-node graph.
<figure>
<img src="/images/circuitpacking/K.png" style="width: 250px;" /> Graph K
</figure>
</div>
<p></p>
Their proof is also based on LP. In fact they prove the following
theorem.
<div class="theorem-environment Theorem" data-index="6" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">6</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
be a matroid. The following statements are equivalent:
<ol type="1">
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
does not contain
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>U</mi><mrow><mn>2</mn><mo>,</mo><mn>4</mn></mrow></msub><mo>,</mo><msub><mi>F</mi><mn>7</mn></msub><mo>,</mo><msubsup><mi>F</mi><mn>7</mn><mo>*</mo></msubsup><mo>,</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mrow><mn>3</mn><mo>,</mo><mn>3</mn></mrow></msub><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msubsup><mi>K</mi><mn>5</mn><mo>−</mo></msubsup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">U_{2,4},F_7,F_7^*,M(K_{3,3}),M(K_5^-)</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(K)</annotation></semantics></math>
as a minor;</li>
<li>the linear system
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></msub><msub><mi>y</mi><mi>e</mi></msub><mo>≥</mo><mn>2</mn><mspace width="0.278em"></mspace><mo>∀</mo><mi>C</mi><mo>,</mo><msub><mi>y</mi><mi>e</mi></msub><mo>≥</mo><mn>0</mn><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{ \sum_{e\in C} y_e \geq 2 \;\forall C, y_e\geq 0\}</annotation></semantics></math>
is TDI;</li>
<li>the polytope
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><mi>y</mi><mo>:</mo><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></msub><msub><mi>y</mi><mi>e</mi></msub><mo>≥</mo><mn>2</mn><mspace width="0.278em"></mspace><mo>∀</mo><mi>C</mi><mo>,</mo><msub><mi>y</mi><mi>e</mi></msub><mo>≥</mo><mn>0</mn><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{y: \sum_{e\in C} y_e \geq 2 \;\forall C, y_e\geq 0\}</annotation></semantics></math>
is integral.</li>
</ol>
</div>
<p></p>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mo>→</mo><mn>3</mn></mrow><annotation encoding="application/x-tex">2\to 3</annotation></semantics></math>
is easy. To show
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>3</mn><mo>→</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">3\to 1</annotation></semantics></math>
they prove that if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
satisfies 3 then so do its minors and none of the matroids in 1
satisfies 3. The hard part is proving
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>→</mo><mn>2</mn></mrow><annotation encoding="application/x-tex">1\to 2</annotation></semantics></math>,
for which they use the following two lemmas.
<div class="theorem-environment Lemma" data-index="7" type="Lemma">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">7</span></span>
<p></p>
If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
satisfies 1, then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><msup><mi>M</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=M^*(G)</annotation></semantics></math>
for some graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
that contains neither the planar dual of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
nor of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>K</mi><mn>5</mn><mo>−</mo></msubsup><annotation encoding="application/x-tex">K_5^-</annotation></semantics></math>
as a minor.
</div>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
A matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is regular iff it has no minor isomorphic to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>U</mi><mrow><mn>2</mn><mo>,</mo><mn>4</mn></mrow></msub><mo>,</mo><msub><mi>F</mi><mn>7</mn></msub><mo>,</mo><msubsup><mi>F</mi><mn>7</mn><mo>*</mo></msubsup></mrow><annotation encoding="application/x-tex">U_{2,4},F_7,F_7^*</annotation></semantics></math>.
Then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
must be regular since it satisfies 1. The lemma then follows from the
“excluded minor characterization of graphic matroids in regular
matroids”. A regular matroid is cographic iff it has no minor isomorphic
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mn>5</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(K_5)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mrow><mn>3</mn><mo>,</mo><mn>3</mn></mrow></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(K_{3,3})</annotation></semantics></math>.
(see Corollary 10.4.3 in Oxley’s Matroid Theory book 2nd edition)
</div>
<div class="theorem-environment Lemma" data-index="8" type="Lemma">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">8</span></span>
<p></p>
If a graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
contains neither the planar dual of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
nor of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>K</mi><mn>5</mn><mo>−</mo></msubsup><annotation encoding="application/x-tex">K_5^-</annotation></semantics></math>
as a minor, then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>M</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M^*(G)</annotation></semantics></math>
satisfies 2.
</div>
<p></p>
This is the hardest part and it takes a lot of work to prove it.
<p></p>
They first prove a complete characterization of grpahs that contain
neither the planar dual of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
nor that of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>K</mi><mn>5</mn><mo>−</mo></msubsup><annotation encoding="application/x-tex">K_5^-</annotation></semantics></math>
as a minor using
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn></mrow><annotation encoding="application/x-tex">0,1,2</annotation></semantics></math>-sum
and then prove that summing operations preserves the TDI property.
<p></p>
The
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn></mrow><annotation encoding="application/x-tex">0,1,2</annotation></semantics></math>-sum
theorem looks like this. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>K</mi><mo>*</mo></msup><annotation encoding="application/x-tex">K^*</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>
be the planar dual of graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>K</mi><mn>5</mn><mo>−</mo></msubsup><annotation encoding="application/x-tex">K_5^-</annotation></semantics></math>
respectively.
<div class="theorem-environment Theorem" data-index="9" type="Theorem"
title="informal, thm 3.1 in [@ding_packing_2009]">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">9</span><span class="name">informal, thm 3.1 in <span
class="citation" data-cites="ding_packing_2009">[<a
href="#ref-ding_packing_2009"
role="doc-biblioref">5</a>]</span></span></span>
<p></p>
A simple graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
has no minors
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>K</mi><mo>*</mo></msup><annotation encoding="application/x-tex">K^*</annotation></semantics></math>
iff
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
can be obtained by repeatedly taking
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>,</mo><mn>1</mn><mo>,</mo><mn>2</mn></mrow><annotation encoding="application/x-tex">0,1,2</annotation></semantics></math>-sums
starting from some small graphs and from some cyclically 3-connected
graphs with no minors
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>K</mi><mo>*</mo></msup><annotation encoding="application/x-tex">K^*</annotation></semantics></math>.
</div>
<p></p>
It remains to show that all the summand graphs in the above theorem have
the TDI property.
<!-- This is also a challenging task. Small graphs can be verified with the help of computers (we will see later). The difficult case is the cyclically 3-connected graphs with no minors $P$ and $K^*$. -->
<details>
<summary>
<strong>some notes on TDI (cf. section 22.7 in <span class="citation"
data-cites="Schrijver_1986">[<a href="#ref-Schrijver_1986"
role="doc-biblioref">6</a>]</span>)</strong>
</summary>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
be a rational matrix and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>
be an integral vector. For any rational
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
we have the following inequalities:
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>c</mi><mi>x</mi><mo stretchy="false" form="prefix">|</mo><mi>A</mi><mi>x</mi><mo>≤</mo><mi>b</mi><mo>;</mo><mi>x</mi><mo>≥</mo><mn>0</mn><mo>;</mo><mrow><mi>x</mi><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> integral</mtext></mrow></mrow><mo stretchy="true" form="postfix">}</mo></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mo>≤</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>c</mi><mi>x</mi><mo stretchy="false" form="prefix">|</mo><mi>A</mi><mi>x</mi><mo>≤</mo><mi>b</mi><mo>;</mo><mi>x</mi><mo>≥</mo><mn>0</mn><mo stretchy="true" form="postfix">}</mo></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mo>=</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>y</mi><mi>b</mi><mo stretchy="false" form="prefix">|</mo><mi>y</mi><mi>A</mi><mo>≥</mo><mi>c</mi><mo>;</mo><mi>y</mi><mo>≥</mo><mn>0</mn><mo stretchy="true" form="postfix">}</mo></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mo>≤</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>y</mi><mi>b</mi><mo stretchy="false" form="prefix">|</mo><mi>y</mi><mi>A</mi><mo>≥</mo><mi>c</mi><mo>;</mo><mi>y</mi><mo>≥</mo><mn>0</mn><mo>;</mo><mrow><mi>y</mi><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> half-integral</mtext></mrow></mrow><mo stretchy="true" form="postfix">}</mo></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mo>≤</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>y</mi><mi>b</mi><mo stretchy="false" form="prefix">|</mo><mi>y</mi><mi>A</mi><mo>≥</mo><mi>c</mi><mo>;</mo><mi>y</mi><mo>≥</mo><mn>0</mn><mo>;</mo><mrow><mi>y</mi><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> integral</mtext></mrow></mrow><mo stretchy="true" form="postfix">}</mo></mrow></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
        &amp;\max \left\{  cx| Ax\leq b; x\geq 0; \text{$x$ integral} \right\} \\
\leq    &amp;\max \left\{  cx| Ax\leq b; x\geq 0 \right\}\\
=       &amp;\min \left\{  yb| yA\geq c; y\geq 0 \right\}\\
\leq    &amp;\min \left\{  yb| yA\geq c; y\geq 0; \text{$y$ half-integral} \right\}\\
\leq    &amp;\min \left\{  yb| yA\geq c; y\geq 0; \text{$y$ integral} \right\}
\end{aligned}
</annotation></semantics></math></span>
<p></p>
If we have equality on the last two
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mo>≤</mo><annotation encoding="application/x-tex">\leq</annotation></semantics></math>
for all integral
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>,
then then all five optima are equal for each integral vector
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>.
It suffices to require that the last two optimum are equal for each
integral
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>.
<div class="theorem-environment Theorem" data-index="10" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">10</span></span>
<p></p>
The rational system
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mi>x</mi><mo>≤</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">Ax\leq b</annotation></semantics></math>
is TDI, iff
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>y</mi><mi>b</mi><mo stretchy="false" form="prefix">|</mo><mi>y</mi><mi>A</mi><mo>≥</mo><mi>c</mi><mo>;</mo><mi>y</mi><mo>≥</mo><mn>0</mn><mo>;</mo><mrow><mi>y</mi><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> half-integral</mtext></mrow></mrow><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\min \left\{  yb| yA\geq c; y\geq 0; \text{$y$ half-integral} \right\}</annotation></semantics></math>
is finite and is attained by integral
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
for each integral
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>y</mi><mi>b</mi><mo stretchy="false" form="prefix">|</mo><mi>y</mi><mi>A</mi><mo>≥</mo><mi>c</mi><mo>;</mo><mi>y</mi><mo>≥</mo><mn>0</mn><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\min \left\{  yb| yA\geq c; y\geq 0 \right\}</annotation></semantics></math>
is finite.
</div>
<p></p>
This is exactly the case of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>=</mo><mn>2</mn></mrow><annotation encoding="application/x-tex">k=2</annotation></semantics></math>
in the characterization of matroids with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>ν</mi><mrow><mn>2</mn><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><msub><mi>τ</mi><mrow><mn>2</mn><mo>,</mo><mi>w</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\nu_{2,w}=\tau_{2,w}</annotation></semantics></math>.
</details>
<p></p>
The above theorem on TDI reduces proving that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></msub><msub><mi>y</mi><mi>e</mi></msub><mo>≥</mo><mn>2</mn><mspace width="0.278em"></mspace><mo>∀</mo><mi>C</mi><mo>,</mo><msub><mi>y</mi><mi>e</mi></msub><mo>≥</mo><mn>0</mn><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{ \sum_{e\in C} y_e \geq 2 \;\forall C, y_e\geq 0\}</annotation></semantics></math>
is TDI to proving that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>τ</mi><mo>′</mo></msup><mo>=</mo><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">{</mo><msub><mo>∑</mo><mi>C</mi></msub><msub><mi>x</mi><mi>C</mi></msub><mo stretchy="false" form="prefix">|</mo><msub><mo>∑</mo><mrow><mi>C</mi><mo>:</mo><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></msub><mfrac><mn>1</mn><mn>2</mn></mfrac><msub><mi>x</mi><mi>e</mi></msub><mo>≥</mo><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mspace width="0.278em"></mspace><mo>∀</mo><mi>e</mi><mo>,</mo><msub><mi>x</mi><mi>C</mi></msub><mo>≥</mo><mn>0</mn><mo>,</mo><mrow><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> </mtext><mspace width="0.333em"></mspace></mrow><msub><mi>x</mi><mi>C</mi></msub><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> half-integral</mtext></mrow></mrow><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\tau&#39;=\max \{ \sum_C x_C |\sum_{C:e\in C} \frac{1}{2} x_e \geq w(e) \;\forall e, x_C\geq 0, \text{ $x_C$ half-integral}\}</annotation></semantics></math>
has an integral optimal solution for all nonnegative integral
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mi>.</mi></mrow><annotation encoding="application/x-tex">w.</annotation></semantics></math>
<p></p>
Recall that it remains to prove that some cographic matroids have the
above property. The set of circuits corresponds to cuts in graphs. A
graph is good if its cographic matroid satisfies that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>τ</mi><mo>′</mo></msup><annotation encoding="application/x-tex">\tau&#39;</annotation></semantics></math>
has an integral optimal solution. They further characterizes good graphs
using cuts.
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathcal C</annotation></semantics></math>
be a collection(multiset) of cuts in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathcal C</annotation></semantics></math>
is truncatable if there is another collection
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒟</mi><annotation encoding="application/x-tex">\mathcal D</annotation></semantics></math>
of cuts in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>,
such that
<ol type="1">
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi mathvariant="script">𝒟</mi><mo stretchy="false" form="prefix">|</mo><mo>≥</mo><mo stretchy="false" form="prefix">|</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="prefix">|</mo><mi>/</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">|\mathcal D|\geq |\mathcal C|/2</annotation></semantics></math>,</li>
<li>Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>d</mi><mi>X</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">d_{X}(e)</annotation></semantics></math>
for a collection
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>X</mi><annotation encoding="application/x-tex">X</annotation></semantics></math>
be the number of elements in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>X</mi><annotation encoding="application/x-tex">X</annotation></semantics></math>
containing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>d</mi><mi mathvariant="script">𝒟</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mn>2</mn><mrow><mo stretchy="true" form="prefix">⌊</mo><msub><mi>d</mi><mi mathvariant="script">𝒞</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mn>4</mn><mo stretchy="true" form="postfix">⌋</mo></mrow></mrow><annotation encoding="application/x-tex">d_{\mathcal D}(e)\leq 2 \left\lfloor d_{\mathcal C}(e)/4 \right\rfloor</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math></li>
</ol>
<p></p>
A graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
is truncatable if every collection of its cuts is truncatable. They
shows that a graph is good if and only if it is truncatable. Then this
becomes a graph theory problem. They provides some sufficient condition
for graphs to be truncatable and manage to prove all the graphs we are
interested in are good. (a 16-page long proof)
<p></p>
Ding and Zang’s work <span class="citation"
data-cites="ding_packing_2009">[<a href="#ref-ding_packing_2009"
role="doc-biblioref">5</a>]</span> characterizes matroids that satisfy
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>ν</mi><mrow><mn>2</mn><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><msub><mi>τ</mi><mrow><mn>2</mn><mo>,</mo><mi>w</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\nu_{2,w}=\tau_{2,w}</annotation></semantics></math>.
As noted before and in their paper, matroids that satisfy
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>ν</mi><mrow><mn>1</mn><mo>,</mo><mi>w</mi></mrow></msub><mo>=</mo><msub><mi>τ</mi><mrow><mn>1</mn><mo>,</mo><mi>w</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\nu_{1,w}=\tau_{1,w}</annotation></semantics></math>
must be direct sums of circuits (if there is no coloop). The
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">k=1</annotation></semantics></math>
result can be understood as finding matroids whose integral circuit
packing number and integral circuit hitting set number are equal. One
may wonder if people have studied similar things on matroid bases. There
are lots of works (see refs in <a
href="https://arxiv.org/abs/2408.00173">this paper</a>) on homogeneous
matroids which have the property that fractional base packing number
(strength) equals to fractional base covering number (fractional
arboricity or density). However, the analogous question for bases should
be characterizing matroids with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">cogirth</mtext><mo>=</mo><mrow><mo stretchy="true" form="prefix">⌊</mo><mtext mathvariant="normal">strength</mtext><mo stretchy="true" form="postfix">⌋</mo></mrow><mi>.</mi></mrow><annotation encoding="application/x-tex">\text{cogirth}=\left\lfloor \text{strength} \right\rfloor.</annotation></semantics></math>
Is this problem interesting or is there any existing paper?
<p></p>
<em>Updated on Aug 14th.</em> Yes, there is existing paper
characterizing matroids with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>λ</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">⌊</mo><mi>σ</mi><mo stretchy="true" form="postfix">⌋</mo></mrow><mi>.</mi></mrow><annotation encoding="application/x-tex">\lambda=\left\lfloor \sigma \right\rfloor.</annotation></semantics></math>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
be a matroid with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">⌊</mo><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">⌋</mo></mrow><mo>≥</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">\left\lfloor \sigma(M) \right\rfloor\geq k</annotation></semantics></math>.
We call
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-reducible
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>λ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mo stretchy="true" form="prefix">⌊</mo><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">⌋</mo></mrow><mo>=</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">\lambda(M)=\left\lfloor \sigma(M) \right\rfloor=k</annotation></semantics></math>.
Otherwise
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-irreducible.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>C</mi><mn>1</mn><mo>*</mo></msubsup><mo>,</mo><mi>…</mi><mo>,</mo><msubsup><mi>C</mi><mi>ℓ</mi><mo>*</mo></msubsup></mrow><annotation encoding="application/x-tex">C_1^*,\ldots,C_\ell^*</annotation></semantics></math>
be the set of minimum cocircuits of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
Then the <em>crux</em> of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>,
denoted
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>χ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\chi(M)</annotation></semantics></math>,
is defined to be <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>χ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>M</mi><mo>\</mo><munderover><mo>⋃</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>ℓ</mi></munderover><msubsup><mi>C</mi><mi>i</mi><mo>*</mo></msubsup><mi>.</mi></mrow><annotation encoding="application/x-tex">
\chi(M)=M\setminus\bigcup_{i=1}^\ell C_i^*.
</annotation></semantics></math></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\delta(M)</annotation></semantics></math>
be the number of connected components of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>χ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\chi(M)</annotation></semantics></math>.
Assume that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>χ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\chi(M)</annotation></semantics></math>
has
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>d</mi><annotation encoding="application/x-tex">d</annotation></semantics></math>
connected components
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>K</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>K</mi><mi>d</mi></msub></mrow><annotation encoding="application/x-tex">K_1,\ldots,K_d</annotation></semantics></math>.
For each minimum cocircuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>C</mi><mi>j</mi><mo>*</mo></msubsup><annotation encoding="application/x-tex">C_j^*</annotation></semantics></math>
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>,
let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>ν</mi><mi>j</mi></msub><annotation encoding="application/x-tex">\nu_j</annotation></semantics></math>
denote the largest subset of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><msub><mi>K</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>K</mi><mi>d</mi></msub><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ K_1,\ldots,K_d \right\}</annotation></semantics></math>
such that the restriction of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>C</mi><mi>j</mi><mo>*</mo></msubsup><mo>∪</mo><mrow><mo stretchy="true" form="prefix">(</mo><msub><mo>⋃</mo><mrow><mi>K</mi><mo>∈</mo><msub><mi>ν</mi><mi>j</mi></msub></mrow></msub><mi>K</mi><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">C_j^*\cup \left( \bigcup_{K\in \nu_j} K \right)</annotation></semantics></math>
is connected. Then the assembly hypergraph of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
, denoted
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="script">ℋ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathcal H(M)</annotation></semantics></math>,
is the non-uniform hypergraph whose vertices are labelled by the
connected components
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>K</mi><mn>1</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>K</mi><mi>d</mi></msub></mrow><annotation encoding="application/x-tex">K_1, . . . , K_d</annotation></semantics></math>,
where the hyperedges are labelled by the cocircuits
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>C</mi><mn>1</mn><mo>*</mo></msubsup><mo>,</mo><mi>…</mi><mo>,</mo><msubsup><mi>C</mi><mi>ℓ</mi><mo>*</mo></msubsup></mrow><annotation encoding="application/x-tex">C_1^*,\ldots,C_\ell^*</annotation></semantics></math>,
and the vertices incident with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>C</mi><mi>j</mi><mo>*</mo></msubsup><annotation encoding="application/x-tex">C_j^*</annotation></semantics></math>
are precisely the members of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>ν</mi><mi>j</mi></msub><annotation encoding="application/x-tex">\nu_j</annotation></semantics></math>.
<div class="theorem-environment Theorem" data-index="11" type="Theorem"
title="Theorem 21 in [@bailey_note_2014]">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">11</span><span class="name">Theorem 21 in <span
class="citation" data-cites="bailey_note_2014">[<a
href="#ref-bailey_note_2014"
role="doc-biblioref">7</a>]</span></span></span>
<p></p>
Suppose that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is a matroid for which
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">⌊</mo><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">⌋</mo></mrow><mo>=</mo><mi>λ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">\left\lfloor σ(M) \right\rfloor = λ(M) = k</annotation></semantics></math>.
Then we have the following.
<ol type="1">
<li>There exists a unique set of k-irreducible matroids
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="script">ℳ</mi><mo>=</mo><mo stretchy="false" form="prefix">{</mo><msub><mi>M</mi><mn>1</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>M</mi><mi>m</mi></msub><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\mathcal M= \{M_1, . . . , M_m\}</annotation></semantics></math>
(for some integer
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>m</mi><annotation encoding="application/x-tex">m</annotation></semantics></math>).</li>
<li>There exists a unique rooted tree
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>R</mi><annotation encoding="application/x-tex">R</annotation></semantics></math>
with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>m</mi><annotation encoding="application/x-tex">m</annotation></semantics></math>
leaves labelled by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mn>1</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>M</mi><mi>m</mi></msub></mrow><annotation encoding="application/x-tex">M_1, . . . , M_m</annotation></semantics></math>,
such that the root is labelled by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
and each non-leaf labelled by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
has
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>d</mi><mo>=</mo><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">d= δ(K)</annotation></semantics></math>
children, labelled by the connected components of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>χ</mi><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\chi(K)</annotation></semantics></math>.</li>
<li>For each non-leaf, labelled by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
and its
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>d</mi><annotation encoding="application/x-tex">d</annotation></semantics></math>
children labelled
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>K</mi><mn>1</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>K</mi><mi>d</mi></msub></mrow><annotation encoding="application/x-tex">K_1, . . . , K_d</annotation></semantics></math>,
there exists a unique assembly hypergraph with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>ℓ</mi><annotation encoding="application/x-tex">\ell</annotation></semantics></math>
hyperedges, and where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>d</mi></msubsup><mi>r</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>ℓ</mi></mrow><annotation encoding="application/x-tex">\sum_{i=1}^d r(K_i)=r(K)-\ell</annotation></semantics></math>.</li>
</ol>
</div>
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-seymour_packing_1980" class="csl-entry" role="listitem">
<div class="csl-left-margin">[1] </div><div
class="csl-right-inline">P.D. Seymour, Packing and covering with matroid
circuits, <em>Journal of Combinatorial Theory, Series B</em>. 28 (1980)
237–242 <a
href="https://doi.org/10.1016/0095-8956(80)90067-2">10.1016/0095-8956(80)90067-2</a>.</div>
</div>
<div id="ref-feder_packing_2012" class="csl-entry" role="listitem">
<div class="csl-left-margin">[2] </div><div class="csl-right-inline">T.
Feder, C. Subi, <a
href="https://eccc.weizmann.ac.il/report/2012/013/">Packing
<span>Edge</span>-<span>Disjoint</span> <span>Triangles</span> in
<span>Given</span> <span>Graphs</span></a>, Weizmann Institute of
Science, ECCC, 2012.</div>
</div>
<div id="ref-Zhang_CDC_2016" class="csl-entry" role="listitem">
<div class="csl-left-margin">[3] </div><div
class="csl-right-inline">C.-Q. Zhang, Circuit double covers of graphs,
in: <em>Graph Theory</em>, Springer International Publishing, Cham,
2016: pp. 273–291 <a
href="https://doi.org/10.1007/978-3-319-31940-7_16">10.1007/978-3-319-31940-7_16</a>.</div>
</div>
<div id="ref-fu_matroids_1999" class="csl-entry" role="listitem">
<div class="csl-left-margin">[4] </div><div class="csl-right-inline">X.
Fu, L.A. Goddyn, Matroids with the <span>Circuit</span>
<span>Cover</span> <span>Property</span>, <em>European Journal of
Combinatorics</em>. 20 (1999) 61–73 <a
href="https://doi.org/10.1006/eujc.1998.0246">10.1006/eujc.1998.0246</a>.</div>
</div>
<div id="ref-ding_packing_2009" class="csl-entry" role="listitem">
<div class="csl-left-margin">[5] </div><div class="csl-right-inline">G.
Ding, W. Zang, Packing circuits in matroids, <em>Mathematical
Programming</em>. 119 (2009) 137–168 <a
href="https://doi.org/10.1007/s10107-007-0205-6">10.1007/s10107-007-0205-6</a>.</div>
</div>
<div id="ref-Schrijver_1986" class="csl-entry" role="listitem">
<div class="csl-left-margin">[6] </div><div class="csl-right-inline">A.
Schrijver, Theory of linear and integer programming, Wiley, Chichester ;
New York, 1986.</div>
</div>
<div id="ref-bailey_note_2014" class="csl-entry" role="listitem">
<div class="csl-left-margin">[7] </div><div
class="csl-right-inline">R.F. Bailey, M. Newman, B. Stevens, <a
href="http://arxiv.org/abs/1203.1014">A note on packing spanning trees
in graphs and bases in matroids</a>, (2014).</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Sun, 15 Jun 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/circuitpacking/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Understanding Lasserre Hierarchy</title>
    <link>https://talldoor.uk/posts/LasserreHierarchy/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
            From a Probabilistic Perspective
        
        
    </section>
    <section class="header">
        Posted on June  5, 2025
        
            by Yu Cong and Hongjie Qing
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>, <a title="All pages tagged &#39;LP&#39;." href="/tags/LP/index.html" rel="tag">LP</a>
        
    </div>    
    <section class="body">
        <p></p>
Useful links:
<ol type="1">
<li><a
href="https://sites.math.washington.edu/~rothvoss/lecturenotes/lasserresurvey.pdf"
class="uri">https://sites.math.washington.edu/~rothvoss/lecturenotes/lasserresurvey.pdf</a></li>
<li><a href="https://web.stanford.edu/class/cs369h/"
class="uri">https://web.stanford.edu/class/cs369h/</a></li>
<li>Laurent’s survey <span class="citation"
data-cites="laurent_comparison_2003">[<a
href="#ref-laurent_comparison_2003"
role="doc-biblioref">1</a>]</span></li>
<li><a href="https://rameesh-paul.github.io/sos.pdf"
class="uri">https://rameesh-paul.github.io/sos.pdf</a></li>
<li><a href="https://www.ams.jhu.edu/~abasu9/papers/main-Lasserre.pdf"
class="uri">https://www.ams.jhu.edu/~abasu9/papers/main-Lasserre.pdf</a></li>
<li>Chapter 3 of <a
href="https://people.eecs.berkeley.edu/~venkatg/pubs/papers/thesis-ali-kemal-sinop.pdf">Ali
Kemal Sinop’s PhD thesis</a></li>
</ol>
<p></p>
When I started writing this post, I hadn’t found so many “useful links”
yet. The content below and link 1.2. only focus on using the Lasserre
hierarchy on LPs, while 3.4.5.6. mention more general cases.
<h1 data-number="1" id="ksubset-01n-to-kcap-01n"><span
class="header-section-number">1</span>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>⊂</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">]</mo><mi>n</mi></msup><mo>→</mo><mi>K</mi><mo>∩</mo><mo stretchy="false" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">}</mo><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">K\subset [0,1]^n \to K\cap \{0,1\}^n</annotation></semantics></math></h1>
<p></p>
We want to solve a 0-1 integer program. Since this task is NP-hard in
general, we usually consider its linear relaxation. Different LP
formulations have different integrality gaps. For example, consider the
following linear relaxation of the max matching IP in non-bipartite
graph.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow></munder><mi>x</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>v</mi><mo>∈</mo><mi>V</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>x</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\sum_{e\in \delta(v)} x(e)&amp;\leq 1   &amp;   &amp;\forall v\in V\\
                    x(e)&amp;\in [0,1]  &amp;   &amp;\forall e\in E
\end{aligned}
</annotation></semantics></math></span> <code>:(</code>, this polytope
is not integral. Edmonds proved that the following formulation is
integral.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow></munder><mi>x</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>v</mi><mo>∈</mo><mi>V</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>x</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi><mo stretchy="false" form="prefix">[</mo><mi>U</mi><mo stretchy="false" form="postfix">]</mo></mrow></munder><mi>x</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mo stretchy="false" form="prefix">(</mo><mo stretchy="false" form="prefix">|</mo><mi>U</mi><mo stretchy="false" form="prefix">|</mo><mi>−</mi><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mi>/</mi><mn>2</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>U</mi><mo>⊂</mo><mi>V</mi><mo>,</mo><mo stretchy="false" form="prefix">|</mo><mi>U</mi><mo stretchy="false" form="prefix">|</mo><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> odd</mtext></mrow></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\sum_{e\in \delta(v)} x(e)&amp;\leq 1   &amp;   &amp;\forall v\in V\\
                    x(e)&amp;\in [0,1]  &amp;   &amp;\forall e\in E\\
\sum_{e\in E[U]} x(e) &amp;\leq (|U|-1)/2 &amp;  &amp;\forall U\subset V, |U| \text{ odd}
\end{aligned}
</annotation></semantics></math></span>
<p></p>
Schrijver <span class="citation"
data-cites="schrijver_polyhedral_1986">[<a
href="#ref-schrijver_polyhedral_1986" role="doc-biblioref">2</a>]</span>
showed that those odd constraints can be obtained by adding cutting
planes to the previous polytope. Fortunately for matching polytope we
have a polynomial time separation oracle. However, for harder problems
adding cutting planes may make the program NP-hard to solve. Lasserre
hierarchy is a method to strengthen the polytope to approaching the
integer hull while providing provable good properties and keeping the
program polynomial time solvable (if applied constant number of times).
<h1 data-number="2" id="probability-perspective"><span
class="header-section-number">2</span> Probability Perspective</h1>
<p></p>
There is a good interpretation of the linear relaxation of 0-1 integer
programs. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>x</mi><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>n</mi></msup><mo stretchy="false" form="prefix">|</mo><mi>A</mi><mi>x</mi><mo>≥</mo><mi>b</mi><mo stretchy="true" form="postfix">}</mo></mrow><mo>⊂</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">]</mo><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">K=\left\{ x\in \mathbb{R}^n| Ax\geq b \right\}\subset [0,1]^n</annotation></semantics></math>
be the polytope of the linear relaxation. The goal of solving the
integer program is to describe all possible discrete distribution over
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">K\cap \left\{ 0,1 \right\}^n</annotation></semantics></math>.
Note that for a fixed distribution the expected position
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><msub><mo>∑</mo><mi>p</mi></msub><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>X</mi><mi>p</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo><msub><mi>x</mi><mi>p</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mo>∑</mo><mi>p</mi></msub><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>X</mi><mi>p</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo><msub><mi>x</mi><mi>p</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">)</mo><mi>T</mi></msup></mrow><annotation encoding="application/x-tex">(\sum_p \mathop{\mathrm{Pr}}[X_p(1)=1] x_p(1),...,\sum_p \mathop{\mathrm{Pr}}[X_p(n)=1] x_p(n))^T</annotation></semantics></math>
is in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">conv</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo>∪</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{conv}}(K\cup \left\{ 0,1 \right\}^n)</annotation></semantics></math>
and iterating over all possible distribution gives us the integer-hull.
Hence we can find the integral optimal solution if having access to all
distribution over integer points.
<p></p>
For any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>∈</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">x\in K</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>x</mi><mi>i</mi></msub><annotation encoding="application/x-tex">x_i</annotation></semantics></math>
can be seen as the probability of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">x_i=1</annotation></semantics></math>.
We only care about the discrete distribution on feasible integral
points. However, each
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>∈</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">x\in K</annotation></semantics></math>
only describes some marginal probabilities and this this marginal
probability may not be even feasible. Consider the following 2D example.
Any point in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">green area</mtext><mo>\</mo><mtext mathvariant="normal">orange area</mtext></mrow><annotation encoding="application/x-tex">\text{green area}\setminus \text{orange area}</annotation></semantics></math>
is not a marginal distribution of any possible joint distribution over
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo>,</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>,</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(0,0),(1,0)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(1,1)</annotation></semantics></math>.
The idea is to iteratively prune this area.
<figure>
<img src="/images/lasserre/feasiblepoints.png" alt="2D example" style="width: 300px;display: block; margin: auto;" />
</figure>
<p></p>
Now we need to think about how to represent all possible joint
distribution. One natural way is to use a vector
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><msup><mn>2</mn><mi>n</mi></msup></msup></mrow><annotation encoding="application/x-tex">y\in \mathbb{R}^{2^n}</annotation></semantics></math>
for the distribution law of every possible integer point in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup><annotation encoding="application/x-tex">\left\{ 0,1 \right\}^n</annotation></semantics></math>.
However, this method does not work well with our existing marginal
probabilities. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><msup><mn>2</mn><mi>n</mi></msup></msup></mrow><annotation encoding="application/x-tex">y\in \mathbb{R}^{2^{n}}</annotation></semantics></math>
be a random vector such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>=</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">y_I=\mathop{\mathrm{Pr}}[\bigwedge_{i\in I}(x_i=1)]</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>∅</mi></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">y_\emptyset=1</annotation></semantics></math>.
Computing all feasible
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
is the same as finding all possible bivariate discrete distribution on
the integer points. To make
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
a feasible probability from some joint distribution and to make
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>y</mi><mrow><mo stretchy="true" form="prefix">{</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>y</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>n</mi><mo stretchy="true" form="postfix">}</mo></mrow></msub><msup><mo stretchy="false" form="postfix">)</mo><mi>T</mi></msup><mo>∈</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">(y_{\left\{ 1 \right\}},...,y_{\left\{ n \right\}})^T\in K</annotation></semantics></math>
we have to add more constraints.
<!-- why psd? -->
<h2 data-number="2.1" id="feasible-probability"><span
class="header-section-number">2.1</span> Feasible Probability</h2>
<p></p>
For now let’s forget about
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
and consider
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">]</mo><msup><mn>2</mn><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msup></msup></mrow><annotation encoding="application/x-tex">y\in [0,1]^{2^{[n]}}</annotation></semantics></math>
and a discrete distribution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>D</mi><annotation encoding="application/x-tex">D</annotation></semantics></math>
on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup><annotation encoding="application/x-tex">\left\{ 0,1 \right\}^n</annotation></semantics></math>.
We want to make
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>=</mo><msub><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mi>D</mi></msub><mo stretchy="false" form="prefix">[</mo><msub><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">y_I=\mathop{\mathrm{Pr}}_{D}[\bigwedge_{i\in I}(X_i=1)]</annotation></semantics></math>.
In fact, there is a one to one correspondence between
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>D</mi><annotation encoding="application/x-tex">D</annotation></semantics></math>.
If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>D</mi><annotation encoding="application/x-tex">D</annotation></semantics></math>
is given, computing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>y</mi><mi>I</mi></msub><annotation encoding="application/x-tex">y_I</annotation></semantics></math>
is easy for any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>I</mi><mo>⊆</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">I\subseteq [n]</annotation></semantics></math>.
If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
is given, recovering the distribution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>D</mi><annotation encoding="application/x-tex">D</annotation></semantics></math>
is the same as solving a system of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>2</mn><mi>n</mi></msup><annotation encoding="application/x-tex">2^n</annotation></semantics></math>
linear equations with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>2</mn><mi>n</mi></msup><annotation encoding="application/x-tex">2^n</annotation></semantics></math>
variables
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">2^n-1</annotation></semantics></math>
of the the equations come form
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>y</mi><mi>I</mi></msub><annotation encoding="application/x-tex">y_I</annotation></semantics></math>,
and the remaining one is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mi>p</mi></msub><mi>D</mi><mo stretchy="false" form="prefix">(</mo><mi>p</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\sum_p D(p)=1</annotation></semantics></math>.)
Thus, with a slight abuse of notation, we will refer to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
as a distribution.
<p></p>
We work with the 2D example first. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><msub><mi>x</mi><mn>2</mn></msub><msup><mo stretchy="false" form="postfix">)</mo><mi>T</mi></msup><mo>∈</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">x=(x_1,x_2)^T\in K</annotation></semantics></math>
be a marginal distribution. One can see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>,</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><msub><mi>x</mi><mn>2</mn></msub><mo>,</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>X</mi><mn>1</mn></msub><mo>=</mo><msub><mi>X</mi><mn>2</mn></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo><msup><mo stretchy="false" form="postfix">)</mo><mi>T</mi></msup></mrow><annotation encoding="application/x-tex">y=(1,x_1,x_2,\mathop{\mathrm{Pr}}[X_1=X_2=1])^T</annotation></semantics></math>
and the last number is not arbitrary. In fact,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>X</mi><mn>1</mn></msub><mo>=</mo><msub><mi>X</mi><mn>2</mn></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Pr}}[X_1=X_2=1]</annotation></semantics></math>
must in range
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo>,</mo><msub><mi>x</mi><mn>1</mn></msub><mo>+</mo><msub><mi>x</mi><mn>2</mn></msub><mo>−</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><msub><mi>x</mi><mn>2</mn></msub><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">[\max(0, x_1+x_2-1),\min(x_1,x_2)]</annotation></semantics></math>.
<p></p>
To make sure
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
is indeed a probability distribution the moment matrix is considered.
The moment matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(y)</annotation></semantics></math>
is of size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mn>2</mn><mi>n</mi></msup><mo>×</mo><msup><mn>2</mn><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">2^n \times 2^n</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">[</mo><mi>I</mi><mo>,</mo><mi>J</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">M(y)[I,J]</annotation></semantics></math>
is defined as the expectation
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo stretchy="false" form="prefix">[</mo><msub><mo>∏</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub><msub><mi>X</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">]</mo><mo>=</mo><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub></mrow><annotation encoding="application/x-tex">E[\prod_{i\in I\cup J}X_i]=y_{I\cup J}</annotation></semantics></math>
(the only non-zero term is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>⋅</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi><mo>∪</mo><mi>j</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">]</mo><mo>=</mo><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub></mrow><annotation encoding="application/x-tex">1\cdot \mathop{\mathrm{Pr}}[\bigwedge_{i\in I\cup j}(X_i=1)]=y_{I\cup J}</annotation></semantics></math>).
The expectation is taken over the distribution defined by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>.
<div class="theorem-environment Lemma" data-index="1" type="Lemma">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">1</span></span>
<p></p>
For any probability distribution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>,
the moment matrix is psd.
</div>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
We need to verify
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mi>T</mi></msup><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mi>z</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">z^T M(y) z\geq 0</annotation></semantics></math>
for any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>z</mi><annotation encoding="application/x-tex">z</annotation></semantics></math>.
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msup><mi>z</mi><mi>T</mi></msup><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mi>z</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mo>∑</mo><mi>I</mi></munder><munder><mo>∑</mo><mi>J</mi></munder><msub><mi>z</mi><mi>I</mi></msub><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub><msub><mi>z</mi><mi>J</mi></msub></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mo>∑</mo><mi>I</mi></munder><munder><mo>∑</mo><mi>J</mi></munder><msub><mi>z</mi><mi>I</mi></msub><mi>E</mi><mo stretchy="false" form="prefix">[</mo><munder><mo>∏</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></munder><msub><mi>X</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">]</mo><msub><mi>z</mi><mi>J</mi></msub></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mi>E</mi><mrow><mo stretchy="true" form="prefix">[</mo><msup><mrow><mo stretchy="true" form="prefix">(</mo><munder><mo>∑</mo><mi>I</mi></munder><mo stretchy="false" form="prefix">(</mo><msub><mi>z</mi><mi>I</mi></msub><munder><mo>∏</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">)</mo></mrow><mn>2</mn></msup><mo stretchy="true" form="postfix">]</mo></mrow></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
z^T M(y) z    &amp;= \sum_I \sum_J z_I y_{I\cup J} z_J\\
                    &amp;= \sum_I \sum_J z_I E[\prod_{i\in I\cup J} X_i] z_J\\
                    &amp;= E\left[\left( \sum_I (z_I \prod_{i\in I} X_i)\right)^2 \right]
\end{aligned}
</annotation></semantics></math></span>
</div>
<p></p>
Note that in the proof something like sum of squares appears. Lasserre
hierarchy has deep connections with <a
href="https://en.wikipedia.org/wiki/Sum-of-squares_optimization">SOS
optimization</a> and is also known as sum-of-squares hierarchy.
<div class="theorem-environment Lemma" data-index="2" type="Lemma">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">2</span></span>
<p></p>
If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(y)</annotation></semantics></math>
is psd then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
is a probability distribution.
</div>
It is easy to see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">y_I\in [0,1]</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>I</mi><mo>⊆</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">I\subseteq [n]</annotation></semantics></math>.
Consider the following submatrix
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">[</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mi>∅</mi></mtd><mtd columnalign="center" style="text-align: center"><msub><mi>y</mi><mi>I</mi></msub></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><msub><mi>y</mi><mi>I</mi></msub></mtd><mtd columnalign="center" style="text-align: center"><msub><mi>y</mi><mi>I</mi></msub></mtd></mtr></mtable><mo stretchy="true" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\begin{bmatrix}
\emptyset &amp; y_I\\
y_I &amp; y_I
\end{bmatrix}</annotation></semantics></math>
<p></p>
It is psd since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(y)</annotation></semantics></math>
is psd. The determinant is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>I</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><msub><mi>y</mi><mi>I</mi></msub><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y_I(1-y_I)\geq 0</annotation></semantics></math>.
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mi>D</mi></msub><mo stretchy="false" form="prefix">[</mo><mi>p</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Pr}}_D[p]</annotation></semantics></math>
be the probability of selecting
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>p</mi><mo>∈</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">p\in\left\{ 0,1 \right\}^n</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>D</mi><annotation encoding="application/x-tex">D</annotation></semantics></math>.
It remains to prove the following system of linear equations has a
solution such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mi>D</mi></msub><mo stretchy="false" form="prefix">[</mo><mi>p</mi><mo stretchy="false" form="postfix">]</mo><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Pr}}_D[p]\in [0,1]</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>p</mi><annotation encoding="application/x-tex">p</annotation></semantics></math>.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>y</mi><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mi mathvariant="normal">Pr</mi><mi>D</mi></munder><mo stretchy="false" form="prefix">[</mo><mn mathvariant="bold">𝟏</mn><mo stretchy="false" form="postfix">]</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>y</mi><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo><mo>\</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>n</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mo>∑</mo><mrow><mi>p</mi><mo>:</mo><munder><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow></munder><mo stretchy="false" form="prefix">(</mo><msub><mi>p</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></munder><munder><mi mathvariant="normal">Pr</mi><mi>D</mi></munder><mo stretchy="false" form="prefix">[</mo><mi>p</mi><mo stretchy="false" form="postfix">]</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>y</mi><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo><mo>\</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mo>∑</mo><mrow><mi>p</mi><mo>:</mo><munder><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo><mo>\</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></mrow></munder><mo stretchy="false" form="prefix">(</mo><msub><mi>p</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></munder><munder><mi mathvariant="normal">Pr</mi><mi>D</mi></munder><mo stretchy="false" form="prefix">[</mo><mi>p</mi><mo stretchy="false" form="postfix">]</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mi>⋮</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>y</mi><mrow><mo stretchy="true" form="prefix">{</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mo>∑</mo><mrow><mi>p</mi><mo>:</mo><msub><mi>p</mi><mn>1</mn></msub><mo>=</mo><mn>1</mn></mrow></munder><munder><mi mathvariant="normal">Pr</mi><mi>D</mi></munder><mo stretchy="false" form="prefix">[</mo><mi>p</mi><mo stretchy="false" form="postfix">]</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>y</mi><mi>∅</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mo>∑</mo><mi>p</mi></munder><munder><mi mathvariant="normal">Pr</mi><mi>D</mi></munder><mo stretchy="false" form="prefix">[</mo><mi>p</mi><mo stretchy="false" form="postfix">]</mo></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
y_{[n]} &amp;=  \mathop{\mathrm{Pr}}_D[\mathbf 1]\\
y_{[n]\setminus \left\{ n \right\}} &amp;= \sum_{p:\bigwedge\limits_{i\in [n-1]}(p_i=1)} \mathop{\mathrm{Pr}}_D[p]\\
y_{[n]\setminus \left\{ n-1 \right\}} &amp;= \sum_{p:\bigwedge\limits_{i\in [n]\setminus \left\{ n-1 \right\}}(p_i=1)} \mathop{\mathrm{Pr}}_D[p]\\
        &amp;\vdots             \\
y_{\left\{ 1 \right\}} &amp;= \sum_{p:p_1=1} \mathop{\mathrm{Pr}}_D[p]\\
y_\emptyset &amp;= \sum_p \mathop{\mathrm{Pr}}_D[p]
\end{aligned}
</annotation></semantics></math></span> I believe this can be proven
with the idea of Lemma 2 <a
href="https://sites.math.washington.edu/~rothvoss/lecturenotes/lasserresurvey.pdf">here</a>.
<!-- slacks? -->
<h2 data-number="2.2" id="projection-in-k"><span
class="header-section-number">2.2</span> Projection in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math></h2>
<p></p>
Let the projection of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
be
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>y</mi><mrow><mo stretchy="true" form="prefix">{</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>y</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>n</mi><mo stretchy="true" form="postfix">}</mo></mrow></msub><msup><mo stretchy="false" form="postfix">)</mo><mi>T</mi></msup></mrow><annotation encoding="application/x-tex">(y_{\left\{ 1 \right\}},\dots,y_{\left\{ n \right\}})^T</annotation></semantics></math>.
For any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
the projection should always lie in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>.
One may want to define moment matrices for constraints
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mi>x</mi><mo>≥</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">Ax\geq b</annotation></semantics></math>.
This is called the moment matrix of slacks. For simplicity we only
consider one linear constraint
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mi>T</mi></msup><mi>x</mi><mo>−</mo><mi>b</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">a^Tx-b\geq 0</annotation></semantics></math>.
The moment matrix for this constraint is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mo stretchy="true" form="prefix">(</mo><msubsup><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><msub><mi>a</mi><mi>i</mi></msub><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><mo>−</mo><mi>b</mi><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub><mo stretchy="true" form="postfix">)</mo></mrow><mrow><mi>I</mi><mo>,</mo><mi>J</mi><mo>⊆</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub></mrow><annotation encoding="application/x-tex">M(y)=\left( \sum_{i=1}^n a_i y_{I\cup J\cup \left\{ i \right\}}-b y_{I\cup J} \right)_{I,J\subseteq [n]}</annotation></semantics></math>.
Then we can do similar arguments.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msup><mi>z</mi><mi>T</mi></msup><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mi>z</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mo>∑</mo><mi>I</mi></munder><munder><mo>∑</mo><mi>J</mi></munder><msub><mi>z</mi><mi>I</mi></msub><msub><mi>z</mi><mi>J</mi></msub><mo stretchy="false" form="prefix">(</mo><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>a</mi><mi>i</mi></msub><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><mo>−</mo><mi>b</mi><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub><mo stretchy="false" form="postfix">)</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><munder><mo>∑</mo><mi>I</mi></munder><munder><mo>∑</mo><mi>J</mi></munder><msub><mi>z</mi><mi>I</mi></msub><msub><mi>z</mi><mi>J</mi></msub><mo stretchy="false" form="prefix">(</mo><munder><mo>∑</mo><mi>i</mi></munder><msub><mi>a</mi><mi>i</mi></msub><mi>E</mi><mo stretchy="false" form="prefix">[</mo><munder><mo>∏</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi><mo>∪</mo><mi>J</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></munder><msub><mi>X</mi><mi>k</mi></msub><mo stretchy="false" form="postfix">]</mo><mo>−</mo><mi>b</mi><mi>E</mi><mo stretchy="false" form="prefix">[</mo><munder><mo>∏</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></munder><msub><mi>X</mi><mi>k</mi></msub><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="postfix">)</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mi>E</mi><mrow><mo stretchy="true" form="prefix">[</mo><munder><mo>∑</mo><mi>I</mi></munder><munder><mo>∑</mo><mi>J</mi></munder><msub><mi>z</mi><mi>I</mi></msub><msub><mi>z</mi><mi>J</mi></msub><mo stretchy="false" form="prefix">(</mo><munder><mo>∑</mo><mi>i</mi></munder><msub><mi>a</mi><mi>i</mi></msub><msub><mi>X</mi><mi>i</mi></msub><mo>−</mo><mi>b</mi><mo stretchy="false" form="postfix">)</mo><munder><mo>∏</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></munder><msub><mi>X</mi><mi>k</mi></msub><mo stretchy="true" form="postfix">]</mo></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mi>E</mi><mrow><mo stretchy="true" form="prefix">[</mo><mo stretchy="false" form="prefix">(</mo><munder><mo>∑</mo><mi>i</mi></munder><msub><mi>a</mi><mi>i</mi></msub><msub><mi>X</mi><mi>i</mi></msub><mo>−</mo><mi>b</mi><mo stretchy="false" form="postfix">)</mo><msup><mrow><mo stretchy="true" form="prefix">(</mo><munder><mo>∑</mo><mi>I</mi></munder><msub><mi>z</mi><mi>I</mi></msub><munder><mo>∏</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>i</mi></msub><mo stretchy="true" form="postfix">)</mo></mrow><mn>2</mn></msup><mo stretchy="true" form="postfix">]</mo></mrow></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
z^T M(y) z    &amp;= \sum_I \sum_J z_I z_J (\sum_{i=1}^n a_i y_{I\cup J\cup \left\{ i \right\}}-b y_{I\cup J})\\
                    &amp;= \sum_I \sum_J z_I z_J (\sum_i a_i E[\prod_{k\in I\cup J\cup\left\{ i \right\}} X_k] - b E[\prod_{k\in I\cup J}X_k] )\\
                    &amp;= E\left[ \sum_I \sum_J z_I z_J (\sum_i a_i X_i -b) \prod_{k\in I\cup J}X_k \right]\\
                    &amp;= E\left[ (\sum_i a_i X_i -b) \left(\sum_I z_I \prod_{i\in I} X_i \right)^2 \right]
\end{aligned}
</annotation></semantics></math></span>
<p></p>
Note that we can combine the expectations since they are taken over the
same probability distribution. Now assume that we have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mi>T</mi></msup><mi>X</mi><mo>−</mo><mi>b</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">a^TX-b\geq 0</annotation></semantics></math>.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>E</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mrow><mo stretchy="true" form="prefix">[</mo><mo stretchy="false" form="prefix">(</mo><munder><mo>∑</mo><mi>i</mi></munder><msub><mi>a</mi><mi>i</mi></msub><msub><mi>X</mi><mi>i</mi></msub><mo>−</mo><mi>b</mi><mo stretchy="false" form="postfix">)</mo><msup><mrow><mo stretchy="true" form="prefix">(</mo><munder><mo>∑</mo><mi>I</mi></munder><msub><mi>z</mi><mi>I</mi></msub><munder><mo>∏</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>i</mi></msub><mo stretchy="true" form="postfix">)</mo></mrow><mn>2</mn></msup><mo stretchy="true" form="postfix">]</mo></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mo>∑</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><mi>⋯</mi><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="prefix">(</mo><msup><mi>a</mi><mi>T</mi></msup><mi>X</mi><mo>−</mo><mi>b</mi><mo stretchy="false" form="postfix">)</mo><msup><mrow><mo stretchy="true" form="prefix">(</mo><munder><mo>∑</mo><mi>I</mi></munder><msub><mi>z</mi><mi>I</mi></msub><munder><mo>∏</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>i</mi></msub><mo stretchy="true" form="postfix">)</mo></mrow><mn>2</mn></msup><mo>≥</mo><mn>0</mn></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
 E&amp;\left[ (\sum_i a_i X_i -b) \left(\sum_I z_I \prod_{i\in I} X_i \right)^2 \right]\\
    &amp;= \sum \mathop{\mathrm{Pr}}[\cdots](a^T X-b)\left(\sum_I z_I \prod_{i\in I} X_i \right)^2 \geq 0
\end{aligned}
</annotation></semantics></math></span>
<p></p>
If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mi>T</mi></msup><mi>X</mi><mo>≥</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a^TX\geq b</annotation></semantics></math>
is satisfied, then the corresponding slack moment matrix is psd.
<p></p>
Finally, this is a more formal definiton.
<div class="theorem-environment Definition" data-index="3"
type="Definition" title="$t$-th level of Lasserre hierarchy">
<span class="theorem-header"><span class="type">Definition</span><span
class="index">3</span><span
class="name"><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-th
level of Lasserre hierarchy</span></span>
<p></p>
The
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-th
level of Lasserre hierarchy
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
of a convex polytope
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>x</mi><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>n</mi></msup><mo stretchy="false" form="prefix">|</mo><mi>A</mi><mi>x</mi><mo>≥</mo><mi>b</mi><mo stretchy="true" form="postfix">}</mo></mrow><mo>⊂</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">]</mo><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">K=\left\{ x\in \mathbb{R}^n| Ax\geq b \right\}\subset [0,1]^n</annotation></semantics></math>
is the set of vectors
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><msup><mn>2</mn><mi>n</mi></msup></msup></mrow><annotation encoding="application/x-tex">y\in \mathbb{R}^{2^n}</annotation></semantics></math>
that make the following matrices psd.
<ol type="1">
<li>moment matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>:=</mo><mo stretchy="false" form="prefix">(</mo><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub><msub><mo stretchy="false" form="postfix">)</mo><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>,</mo><mo stretchy="false" form="prefix">|</mo><mi>J</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi></mrow></msub><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">M_t(y):=(y_{I\cup J})_{|I|,|J|\leq t}\succeq 0</annotation></semantics></math></li>
<li>moment matrix of slacks
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>M</mi><mi>t</mi><mi>ℓ</mi></msubsup><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>:=</mo><msub><mrow><mo stretchy="true" form="prefix">(</mo><msubsup><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></msubsup><msub><mi>A</mi><mrow><mi>ℓ</mi><mi>i</mi></mrow></msub><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><mo>−</mo><msub><mi>b</mi><mi>ℓ</mi></msub><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub><mo stretchy="true" form="postfix">)</mo></mrow><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>,</mo><mo stretchy="false" form="prefix">|</mo><mi>J</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi></mrow></msub><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">M_t^\ell(y):=\left( \sum_{i=1}^n A_{\ell i}y_{I\cup J\cup \left\{ i \right\}}-b_\ell y_{I\cup J} \right)_{|I|,|J|\leq t}\succeq 0</annotation></semantics></math></li>
</ol>
</div>
<p></p>
Note that the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-th
level of Lasserre hierarchy only involve entries
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>y</mi><mi>I</mi></msub><annotation encoding="application/x-tex">y_I</annotation></semantics></math>
with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mn>2</mn><mi>t</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">|I|\leq 2t+1</annotation></semantics></math>.
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>+</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">+1</annotation></semantics></math>
comes from the moment matrix of slacks) The matrices have dimension
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">(</mo><mfrac linethickness="0"><mi>n</mi><mrow><mn>2</mn><mi>t</mi><mo>+</mo><mn>1</mn></mrow></mfrac><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><msup><mi>n</mi><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow></msup></mrow><annotation encoding="application/x-tex">\binom{n}{2t+1}=n^{O(t)}</annotation></semantics></math>
and there are only
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">m+1</annotation></semantics></math>
matrices. Thus to optimize some objective over the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-th
level of Lasserre hierarchy takes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><msup><mi>n</mi><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow></msup></mrow><annotation encoding="application/x-tex">mn^{O(t)}</annotation></semantics></math>
time which is still polynomial in the input size. (The separation oracle
computes eigenvalues and eigenvectors. If there is a negative eigenvalue
we find the corresponding eigenvector
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>v</mi><annotation encoding="application/x-tex">v</annotation></semantics></math>
and the separating hyperplane is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>I</mi><mo>,</mo><mi>J</mi></mrow></msub><msub><mi>v</mi><mi>I</mi></msub><msub><mi>v</mi><mi>J</mi></msub><msub><mi>x</mi><mrow><mi>I</mi><mo>,</mo><mi>J</mi></mrow></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\sum_{I,J}v_{I}v_{J} x_{I,J}=0</annotation></semantics></math>.
See <a
href="https://www.cs.princeton.edu/courses/archive/fall15/cos521/lecnotes/lec17.pdf">Example
43</a>.)
<h1 data-number="3" id="properties"><span
class="header-section-number">3</span> Properties</h1>
<p></p>
Almost everything in this part can be found <a
href="https://sites.math.washington.edu/~rothvoss/lecturenotes/lasserresurvey.pdf">here</a>.
<p></p>
Suppose that we have the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-th
level of Lasserre hierarchy
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>.
Denote by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t^{proj}(K)</annotation></semantics></math>
the projection of the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-th
level.
<ol start="0" type="1">
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
is convex</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">y_I\in [0,1]</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in \mathop{\mathrm{Las}}_t(K)</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>≤</mo><msub><mi>y</mi><mi>I</mi></msub><mo>≤</mo><msub><mi>y</mi><mi>J</mi></msub><mo>≤</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">0\leq y_I \leq y_J \leq 1</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>J</mi><mo>⊂</mo><mi>I</mi></mrow><annotation encoding="application/x-tex">J\subset I</annotation></semantics></math>
with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>,</mo><mo stretchy="false" form="prefix">|</mo><mi>J</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">|I|,|J|\leq t</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub><mo>≤</mo><msqrt><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>⋅</mo><msub><mi>y</mi><mi>J</mi></msub></mrow></msqrt></mrow><annotation encoding="application/x-tex">y_{I\cup J}\leq \sqrt{y_I \cdot y_J}</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup><mo>⊂</mo><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">K\cap \left\{ 0,1 \right\}^n \subset \mathop{\mathrm{Las}}_t^{proj}(K)</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">t\in [n]</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>⊂</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t^{proj}(K)\subset K</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>⊂</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>⊂</mo><mi>…</mi><mo>⊂</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mn>0</mn></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_n(K)\subset \mathop{\mathrm{Las}}_{n-1}(K)\subset \dots \subset \mathop{\mathrm{Las}}_0(K)</annotation></semantics></math></li>
</ol>
<p></p>
1.2.3. show that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
behaves similarly to a real probability distribution.
<p></p>
4.5.6. show that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup><mo>⊂</mo><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>⊂</mo><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>⊂</mo><mi>…</mi><mo>⊂</mo><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mn>0</mn><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">K\cap \left\{ 0,1 \right\}^n \subset \mathop{\mathrm{Las}}_n^{proj}(K)\subset \mathop{\mathrm{Las}}_{n-1}^{proj}(K)\subset \dots \subset \mathop{\mathrm{Las}}_0^{proj}(K) = K</annotation></semantics></math>.
<p></p>
The goal of this section is to show that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup><mo>=</mo><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">K\cap \left\{ 0,1 \right\}^n = \mathop{\mathrm{Las}}_n^{proj}(K)</annotation></semantics></math>.
When working on the Lasserre hierarchy, instead of considering the
projection
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>x</mi><mi>i</mi></msub><annotation encoding="application/x-tex">x_i</annotation></semantics></math>
solely, we usually perform the analysis on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>.
<h2 data-number="3.1" id="convex-hull-and-conditional-probability"><span
class="header-section-number">3.1</span> Convex Hull and Conditional
Probability</h2>
<div id="conv" class="theorem-environment Lemma" data-index="4"
type="Lemma">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">4</span></span>
<p></p>
For
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mo>≥</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">t\geq 1</annotation></semantics></math>,
let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in \mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>⊂</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">S\subset [n]</annotation></semantics></math>
be any subset of variables of size at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>.
then <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><mrow><mi mathvariant="normal">conv</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>z</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mrow><mi>t</mi><mo>−</mo><mo stretchy="false" form="prefix">|</mo><mi>S</mi><mo stretchy="false" form="prefix">|</mo></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">|</mo><msub><mi>z</mi><mi>i</mi></msub><mo>∈</mo><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mo>∀</mo><mi>i</mi><mo>∈</mo><mi>S</mi><mo stretchy="true" form="postfix">}</mo></mrow><mi>.</mi></mrow><annotation encoding="application/x-tex">y\in \mathop{\mathrm{conv}}\left\{ z\in \mathop{\mathrm{Las}}_{t-|S|}(K)| z_i\in \left\{ 0,1 \right\} \forall i\in S \right\}.</annotation></semantics></math></span>
</div>
<p></p>
For any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in\mathop{\mathrm{Las}}_n(K)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>=</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">S=[n]</annotation></semantics></math>,
the previous lemma implies the projection of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
is convex combination of integral vectors in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">K\cap \left\{ 0,1 \right\}^n</annotation></semantics></math>.
Then it follows that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_n^{proj}(K)=K\cap \left\{ 0,1 \right\}^n</annotation></semantics></math>.
This also provides proofs for the facts that if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mi>n</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">M_n(y)\succeq 0</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>M</mi><mi>n</mi><mi>ℓ</mi></msubsup><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">M_n^{\ell}(y)\succeq 0</annotation></semantics></math>
then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
is indeed a probability distribution and the projection is in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>.
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
The proof is constructive and is by induction on the size of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>.
<ul>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">S=\left\{ i \right\}</annotation></semantics></math>.
Assume that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></msub><mo>∈</mo><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y_{\left\{ i \right\}}\in (0,1)</annotation></semantics></math>.
For simplicity I use
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>y</mi><mi>i</mi></msub><annotation encoding="application/x-tex">y_i</annotation></semantics></math>
for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>y</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></msub><annotation encoding="application/x-tex">y_{\left\{ i \right\}}</annotation></semantics></math>.
Define two vectors
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>,</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup></mrow><annotation encoding="application/x-tex">z^{(1)},z^{(2)}</annotation></semantics></math>
as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>z</mi><mi>I</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>=</mo><mfrac><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><msub><mi>y</mi><mi>i</mi></msub></mfrac></mrow><annotation encoding="application/x-tex">z^{(1)}_I=\frac{y_{I\cup\left\{ i \right\}}}{y_i}</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>z</mi><mi>I</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>−</mo><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub></mrow><mrow><mn>1</mn><mo>−</mo><msub><mi>y</mi><mi>i</mi></msub></mrow></mfrac></mrow><annotation encoding="application/x-tex">z^{(2)}_I=\frac{y_I-y_{I\cup\left\{ i \right\}}}{1-y_i}</annotation></semantics></math>.
One can easily verify that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><msub><mi>y</mi><mi>i</mi></msub><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>+</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><msub><mi>y</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>,</mo><msubsup><mi>z</mi><mi>i</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">y=y_i z^{(1)}+(1-y_i)z^{(2)}, z^{(1)}_i=1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>z</mi><mi>i</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">z^{(2)}_i=0</annotation></semantics></math>.
It remains to verify
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>,</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">z^{(1)},z^{(2)}\in \mathop{\mathrm{Las}}_{t-1}(K)</annotation></semantics></math>.
Since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M_t(y)</annotation></semantics></math>
is psd, there must be vectors
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>v</mi><mi>I</mi></msub><mo>,</mo><msub><mi>v</mi><mi>J</mi></msub></mrow><annotation encoding="application/x-tex">v_I,v_J</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">⟨</mo><msub><mi>v</mi><mi>I</mi></msub><mo>,</mo><msub><mi>v</mi><mi>J</mi></msub><mo stretchy="false" form="postfix">⟩</mo><mo>=</mo><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\langle v_I,v_J \rangle=y_{I\cup J}</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>,</mo><mo stretchy="false" form="prefix">|</mo><mi>J</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">|I|,|J|\leq t</annotation></semantics></math>.
Take
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>v</mi><mi>I</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>=</mo><msub><mi>v</mi><mrow><mi>I</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><mi>/</mi><msqrt><msub><mi>y</mi><mi>i</mi></msub></msqrt></mrow><annotation encoding="application/x-tex">v_I^{(1)}=v_{I\cup\left\{ i \right\}}/\sqrt{y_i}</annotation></semantics></math>.
We have <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">⟨</mo><msubsup><mi>v</mi><mi>I</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>,</mo><msubsup><mi>v</mi><mi>J</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo stretchy="false" form="postfix">⟩</mo><mo>=</mo><mfrac><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><msub><mi>y</mi><mi>i</mi></msub></mfrac><mo>=</mo><msub><mi>M</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><mo stretchy="false" form="prefix">(</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">[</mo><mi>I</mi><mo>,</mo><mi>J</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\langle v_I^{(1)},v_J^{(1)} \rangle=\frac{y_{I\cup J\cup\left\{ i \right\}}}{y_i}=M_{t-1}(z^{(1)})[I,J]</annotation></semantics></math></span>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>,</mo><mo stretchy="false" form="prefix">|</mo><mi>J</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">|I|,|J|\leq t-1</annotation></semantics></math>.
Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><mo stretchy="false" form="prefix">(</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M_{t-1}(z^{(1)})</annotation></semantics></math>
is psd. Similarly, one can take
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>v</mi><mi>I</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>=</mo><mo stretchy="false" form="prefix">(</mo><msub><mi>v</mi><mi>I</mi></msub><mo>−</mo><msub><mi>v</mi><mrow><mi>I</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><mo stretchy="false" form="postfix">)</mo><mi>/</mi><msqrt><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><msub><mi>y</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow></msqrt></mrow><annotation encoding="application/x-tex">v_I^{(2)}=(v_I-v_{I\cup \left\{ i \right\}})/\sqrt{(1-y_i)}</annotation></semantics></math>
and show
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><mo stretchy="false" form="prefix">(</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M_{t-1}(z^{(2)})</annotation></semantics></math>
is psd. <br> For each moment matrix of slacks one can use exactly the
same arguments to show
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>M</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow><mi>ℓ</mi></msubsup><mo stretchy="false" form="prefix">(</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo stretchy="false" form="postfix">)</mo><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">M_{t-1}^{\ell}(z^{(1)})\succeq 0</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>M</mi><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow><mi>ℓ</mi></msubsup><mo stretchy="false" form="prefix">(</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo stretchy="false" form="postfix">)</mo><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">M_{t-1}^{\ell}(z^{(2)})\succeq 0</annotation></semantics></math>.</li>
<li>For the inductive steps one can see that our arguments for the base
case can be applied recursively on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>,</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup></mrow><annotation encoding="application/x-tex">z^{(1)},z^{(2)}</annotation></semantics></math>.</li>
</ul>
</div>
<p></p>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in \mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
is a probability distribution if we consider only
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">|I|\leq t</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>=</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></msub><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">y_I=\mathop{\mathrm{Pr}}[\bigwedge_{i\in I}X_i=1]</annotation></semantics></math>.
The vectors
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>,</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup></mrow><annotation encoding="application/x-tex">z^{(1)},z^{(2)}</annotation></semantics></math>
we constructed in the previous proof can be understood as conditional
probabilities. <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><msubsup><mi>z</mi><mi>I</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>=</mo><mfrac><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><msub><mi>y</mi><mi>i</mi></msub></mfrac><mo>=</mo><mfrac><mrow><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><munder><mo>⋀</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></munder><msub><mi>X</mi><mi>k</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><mrow><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow></mfrac><mo>=</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><munder><mo>⋀</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>k</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="prefix">|</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><msubsup><mi>z</mi><mi>I</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msubsup><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>−</mo><msub><mi>y</mi><mrow><mi>I</mi><mo>∪</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub></mrow><mrow><mn>1</mn><mo>−</mo><msub><mi>y</mi><mi>i</mi></msub></mrow></mfrac><mo>=</mo><mfrac><mrow><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><munder><mo>⋀</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi></mrow></munder><mo stretchy="false" form="prefix">(</mo><msub><mi>X</mi><mi>k</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>∧</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">]</mo></mrow><mrow><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">]</mo></mrow></mfrac><mo>=</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><munder><mo>⋀</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>k</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="prefix">|</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">]</mo></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
&amp;z^{(1)}_I=\frac{y_{I\cup\left\{ i \right\}}}{y_i}=\frac{\mathop{\mathrm{Pr}}[\bigwedge_{k\in I\cup \left\{ i \right\}}X_k=1]}{\mathop{\mathrm{Pr}}[X_i=1]}=\mathop{\mathrm{Pr}}[\bigwedge_{k\in I}X_k=1 | X_i=1]\\
&amp;z^{(2)}_I=\frac{y_I-y_{I\cup\left\{ i \right\}}}{1-y_i}=\frac{\mathop{\mathrm{Pr}}[\bigwedge_{k\in I} (X_k=1) \land X_i=0]}{\mathop{\mathrm{Pr}}[X_i=0]}=\mathop{\mathrm{Pr}}[\bigwedge_{k\in I}X_k=1 | X_i=0]
\end{aligned}
</annotation></semantics></math></span>
<p></p>
The proof is basically showing that
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>y</mi><mi>I</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><munder><mo>⋀</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>k</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="prefix">|</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo><mo>+</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">]</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><munder><mo>⋀</mo><mrow><mi>k</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>k</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="prefix">|</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">]</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><munder><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></munder><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
y_I &amp;= \mathop{\mathrm{Pr}}[X_i=1] \mathop{\mathrm{Pr}}[\bigwedge_{k\in I}X_k=1 | X_i=1]+\mathop{\mathrm{Pr}}[X_i=0] \mathop{\mathrm{Pr}}[\bigwedge_{k\in I}X_k=1 | X_i=0]\\
    &amp;= \mathop{\mathrm{Pr}}[\bigwedge_{i\in I}X_i=1]
\end{aligned}
</annotation></semantics></math></span>
<p></p>
For any partially feasible probability distribution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>i</mi></msub><mo>∈</mo><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y_i \in (0,1)</annotation></semantics></math>
implies that both
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">X_i=0</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">X_i=1</annotation></semantics></math>
happen with non-zero probability, which in turn impies
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>,</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mrow><mi>t</mi><mo>−</mo><mn>1</mn></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">z^{(1)},z^{(2)}\in \mathop{\mathrm{Las}}_{t-1}(K)</annotation></semantics></math>.
One can also explicitly express
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
as convex combination and see the relation with Möbius inversion, see p9
in <a
href="https://sites.math.washington.edu/~rothvoss/lecturenotes/lasserresurvey.pdf">this
notes</a>.
<p></p>
In <a href="#conv" title="Lemma 4">Lemma 4</a>, each vector in the
convex combination (those with integer value on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>,
such as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>,</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup></mrow><annotation encoding="application/x-tex">z^{(1)},z^{(2)}</annotation></semantics></math>)
can be understood as a partial probability distribution under condition
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><msub><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><msub><mo>⋀</mo><mrow><mi>j</mi><mo>∈</mo><mi>J</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><msub><mi>X</mi><mi>j</mi></msub><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">[\bigwedge_{i\in I} (X_i=1) \bigwedge_{j\in J}(X_j=0)]</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>I</mi><mo>⊔</mo><mi>J</mi><mo>=</mo><mi>S</mi></mrow><annotation encoding="application/x-tex">I\sqcup J=S</annotation></semantics></math>,
and the probability assigned to it is exactly the chance its condition
happens. More formally, <a href="#conv" title="Lemma 4">Lemma 4</a>
implies the following,
<div class="theorem-environment Corollary" data-index="5"
type="Corollary">
<span class="theorem-header"><span class="type">Corollary</span><span
class="index">5</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>.
For any subset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>⊂</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">S\subset [n]</annotation></semantics></math>
of size at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>,
there is a distribution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>D</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">D(S)</annotation></semantics></math>
over
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>S</mi></msup><annotation encoding="application/x-tex">\left\{ 0,1 \right\}^S</annotation></semantics></math>
such <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><munder><mi mathvariant="normal">Pr</mi><mrow><mi>z</mi><mo>∼</mo><mi>D</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo></mrow></munder><mrow><mo stretchy="true" form="prefix">[</mo><munder><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></munder><mo stretchy="false" form="prefix">(</mo><msub><mi>z</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">]</mo></mrow><mo>=</mo><msub><mi>y</mi><mi>I</mi></msub><mspace width="1.0em"></mspace><mo>∀</mo><mi>I</mi><mo>⊂</mo><mi>S</mi></mrow><annotation encoding="application/x-tex">
\mathop{\mathrm{Pr}}_{z\sim D(S)}\left[ \bigwedge_{i\in I} (z_i=1) \right]=y_I \quad \forall I\subset S
</annotation></semantics></math></span>
</div>
<p></p>
Moreover, this distribution is “locally consistent” since the
prabability assigned to each vector only depends on its condition.
<p></p>
Since the constraints in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t</annotation></semantics></math>
only concern the psdness of certain matrices, one may naturally think
about its decomposition. This leads to a vector representation of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>y</mi><mi>I</mi></msub><annotation encoding="application/x-tex">y_I</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">|I|\leq t</annotation></semantics></math>
and may be helpful in rounding algorithms. For
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>J</mi><mo>⊂</mo><mi>I</mi></mrow><annotation encoding="application/x-tex">J\subset I</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mi>I</mi></msub><annotation encoding="application/x-tex">v_I</annotation></semantics></math>
lies on the sphere of radius
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>v</mi><mi>J</mi></msub><mo stretchy="false" form="postfix">∥</mo><mi>/</mi><mn>2</mn><mo>=</mo><msqrt><msub><mi>y</mi><mi>J</mi></msub></msqrt><mi>/</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">\|v_J\|/2=\sqrt{y_J}/2</annotation></semantics></math>
and center
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>v</mi><mi>J</mi></msub><mi>/</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">v_J /2</annotation></semantics></math>.
<h2 data-number="3.2" id="decomposition-theorem"><span
class="header-section-number">3.2</span> Decomposition Theorem</h2>
<p></p>
We have seen that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_n^{proj}(K)</annotation></semantics></math>
is the integer hull. Can we get better upperbounds based on properties
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>?
Another easy upperbound is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mrow><mi>x</mi><mo>∈</mo><mi>K</mi></mrow></msub><mo stretchy="false" form="prefix">|</mo><mrow><mi mathvariant="normal">ones</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">|</mo><mi>+</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">\max_{x\in K}|\mathop{\mathrm{ones}}(x)|+1</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">ones</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="false" form="prefix">|</mo><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{ones}}(x)=\left\{ i|x_i=1 \right\}</annotation></semantics></math>.
This is because
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in \mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
is a partial distribution for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">|I|\leq t</annotation></semantics></math>
that can be realized as the marginal distribution of some distribution
on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">K\cap \left\{ 0,1 \right\}^n</annotation></semantics></math>;
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">k\cap \left\{ 0,1 \right\}^n</annotation></semantics></math>
does not contain a point with at least
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>
ones, we certainly have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">Pr</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">[</mo><msub><mo>⋀</mo><mrow><mi>i</mi><mo>∈</mo><mi>I</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">]</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Pr}}[\bigwedge_{i\in I}(X_i=1)]=0</annotation></semantics></math>
for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>≥</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">|I|\geq t</annotation></semantics></math>.
<p></p>
This fact implies that for most hard problems we should not expect
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>k</mi></msub><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_k</annotation></semantics></math>
to give us a integral solution for constant
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>.
<p></p>
Karlin, Mathieu and Nguyen <span class="citation"
data-cites="karlin_integrality_2011">[<a
href="#ref-karlin_integrality_2011" role="doc-biblioref">3</a>]</span>
proved a more general form of <a href="#conv" title="Lemma 4">Lemma
4</a> using similar arguments.
<div class="theorem-environment Theorem" data-index="6" type="Theorem"
title="Decomposition Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">6</span><span class="name">Decomposition
Theorem</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in \mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>⊂</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">S\subset [n]</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">k\in [0,t]</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>≥</mo><mo stretchy="false" form="prefix">|</mo><mrow><mi mathvariant="normal">ones</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>∩</mo><mi>S</mi><mo stretchy="false" form="prefix">|</mo></mrow><annotation encoding="application/x-tex">k\geq |\mathop{\mathrm{ones}}(x)\cap S|</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>∈</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">x\in K</annotation></semantics></math>.
Then <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><mrow><mi mathvariant="normal">conv</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi>z</mi><mo stretchy="false" form="prefix">|</mo><mi>z</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mrow><mi>t</mi><mo>−</mo><mi>k</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>;</mo><msub><mi>z</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>i</mi><mo stretchy="true" form="postfix">}</mo></mrow></msub><mo>∈</mo><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mo>∀</mo><mi>i</mi><mo>∈</mo><mi>S</mi><mo stretchy="true" form="postfix">}</mo></mrow><mi>.</mi></mrow><annotation encoding="application/x-tex">
y\in \mathop{\mathrm{conv}}\left\{ z| z\in \mathop{\mathrm{Las}}_{t-k}(K); z_{\left\{ i \right\}}\in \left\{ 0,1 \right\} \forall i\in S \right\}.
</annotation></semantics></math></span>
</div>
<h1 data-number="4" id="moment-relaxation"><span
class="header-section-number">4</span> Moment Relaxation</h1>
<p></p>
In this section we briefly show the non-probabilistic view of Lasserre
hierarchy and how this idea is used in polynomial optimization problems.
<p></p>
Everything in this section can be found in <a
href="https://people.eecs.berkeley.edu/~venkatg/pubs/papers/thesis-ali-kemal-sinop.pdf"><code>useful_link[6]</code></a>.
<p></p>
Consider the following polynomial optimiation problem <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>a</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>b</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>0</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>b</mi><mo>∈</mo><mi>B</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>x</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp;   &amp;   a(x)&amp;    &amp;   &amp;\\
s.t.&amp;   &amp;   b(x)&amp;\geq 0 &amp;   &amp;\forall b\in B\\
    &amp;   &amp;   x&amp;\in\left\{ 0,1 \right\}^n
\end{aligned}
</annotation></semantics></math></span> where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">a,b,c</annotation></semantics></math>
are polynomials. We want to formulate this problem with SDP.
<p></p>
We can consider polynomials
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mo>,</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a,b</annotation></semantics></math>
as multilinear polynomials. Since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>i</mi></msub><mo>∈</mo><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">x_i\in \left\{ 0,1 \right\}</annotation></semantics></math>,
we have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>x</mi><mi>i</mi><mn>2</mn></msubsup><mo>=</mo><msub><mi>x</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">x_i^2=x_i</annotation></semantics></math>.
Now we can consider enumerating
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>S</mi></msub><mo>=</mo><msub><mo>∏</mo><mrow><mi>i</mi><mo>∈</mo><mi>S</mi></mrow></msub><msub><mi>x</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">x_S=\prod_{i\in S}x_i</annotation></semantics></math>
and write these polynomials as linear functions. For example, we can
rewrite
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mo>∑</mo><mrow><mi>S</mi><mo>⊂</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub><msub><mo>∑</mo><mrow><msub><mi>α</mi><mi>S</mi></msub><mo>:</mo><mi>S</mi><mo>→</mo><mi mathvariant="double-struck">ℤ</mi></mrow></msub><msub><mi>a</mi><mi>S</mi></msub><msub><mo>∏</mo><mrow><mi>i</mi><mo>∈</mo><mi>S</mi></mrow></msub><msubsup><mi>x</mi><mi>i</mi><mrow><msub><mi>α</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>i</mi><mo stretchy="false" form="postfix">)</mo></mrow></msubsup></mrow><annotation encoding="application/x-tex">a(x)=\sum_{S\subset [n]}\sum_{\alpha_S:S\to \mathbb{Z}} a_S \prod_{i\in S}x_i^{\alpha_S(i)}</annotation></semantics></math>
as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>S</mi><mo>⊂</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub><msub><mi>a</mi><mi>S</mi></msub><msub><mi>x</mi><mi>S</mi></msub></mrow><annotation encoding="application/x-tex">\sum_{S\subset [n]} a_S x_S</annotation></semantics></math>
which is linear in the moment sequence
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>x</mi><mi>∅</mi></msub><mo>,</mo><msub><mi>x</mi><mrow><mo stretchy="true" form="prefix">{</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>x</mi><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(x_\emptyset, x_{\left\{ 1 \right\}},\ldots,x_{[n]})</annotation></semantics></math>.
<p></p>
Recall that our goal is to find a SDP formulation. A common technique is
replace each variable with a vector. We consider the moment vectors
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>v</mi><mi>S</mi></msub><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>γ</mi></msup><msub><mo stretchy="false" form="postfix">]</mo><mrow><mi>S</mi><mo>∈</mo><msup><mn>2</mn><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msup></mrow></msub></mrow><annotation encoding="application/x-tex">[v_S\in \mathbb{R}^\gamma]_{S\in 2^{[n]}}</annotation></semantics></math>.
Similar to the LP case, we want
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">⟨</mo><msub><mi>v</mi><mi>A</mi></msub><mo>,</mo><msub><mi>v</mi><mi>B</mi></msub><mo stretchy="false" form="postfix">⟩</mo><mo>=</mo><msub><mi>x</mi><mrow><mi>A</mi><mo>∪</mo><mi>B</mi></mrow></msub></mrow><annotation encoding="application/x-tex">\langle v_A,v_B \rangle=x_{A\cup B}</annotation></semantics></math>.
This is exactly the Gram decomposition of the moment matrix. There exist
such moment vectors iff the moment matrix is psd. For
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>b</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">b(x)\geq 0</annotation></semantics></math>,
we consider the slack moment matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>M</mi><mi>b</mi></msup><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mo stretchy="true" form="prefix">(</mo><msub><mo>∑</mo><mi>S</mi></msub><msub><mi>b</mi><mi>S</mi></msub><msub><mi>x</mi><mrow><mi>I</mi><mo>∪</mo><mi>J</mi><mo>∪</mo><mi>S</mi></mrow></msub><mo stretchy="true" form="postfix">)</mo></mrow><mrow><mi>I</mi><mo>,</mo><mi>J</mi></mrow></msub></mrow><annotation encoding="application/x-tex">M^b(x)=\left( \sum_S b_S x_{I\cup J\cup S} \right)_{I,J}</annotation></semantics></math>
<p></p>
Then the program becomes the following SDP
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>S</mi><mo>⊆</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></munder><msub><mi>a</mi><mi>S</mi></msub><msub><mi>x</mi><mi>S</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msup><mi>M</mi><mi>b</mi></msup><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≽</mo><mn>0</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>b</mi><mo>∈</mo><mi>B</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≽</mo><mn>0</mn></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>x</mi><mi>∅</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mn>1</mn></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp;   &amp;   \sum_{S\subseteq [n]}a_S x_S&amp;    &amp;   &amp;\\
s.t.&amp;   &amp;   M^b(x)&amp;\succeq 0 &amp;   &amp;\forall b\in B\\
    &amp;   &amp;   M(x)&amp;\succeq 0\\
    &amp;   &amp;   x_{\emptyset}&amp;=1
\end{aligned}
</annotation></semantics></math></span>
<p></p>
Note that if the max degree of polynomials
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>a</mi><mo>,</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">a,b</annotation></semantics></math>
is at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>d</mi><annotation encoding="application/x-tex">d</annotation></semantics></math>,
then the following program is a relaxation of the original polynomial
optimiation problem (cf. <a
href="https://people.eecs.berkeley.edu/~venkatg/pubs/papers/thesis-ali-kemal-sinop.pdf">Corollary
3.2.2.</a>).
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>S</mi><mo>⊆</mo><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></munder><msub><mi>a</mi><mi>S</mi></msub><msub><mi>x</mi><mi>S</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msubsup><mi>M</mi><mi>F</mi><mi>b</mi></msubsup><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≽</mo><mn>0</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>b</mi><mo>∈</mo><mi>B</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>M</mi><mrow><mi>F</mi><mo>⊎</mo><msub><mi>V</mi><mrow><mo>≤</mo><mi>d</mi></mrow></msub></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≽</mo><mn>0</mn></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>x</mi><mi>∅</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mn>1</mn></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp;   &amp;   \sum_{S\subseteq [n]}a_S x_S&amp;    &amp;   &amp;\\
s.t.&amp;   &amp;   M_{F}^b(x)&amp;\succeq 0 &amp;   &amp;\forall b\in B\\
    &amp;   &amp;   M_{F\uplus V_{\leq d}}(x)&amp;\succeq 0\\
    &amp;   &amp;   x_{\emptyset}&amp;=1
\end{aligned}
</annotation></semantics></math></span> where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊂</mo><msup><mn>2</mn><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msup></mrow><annotation encoding="application/x-tex">F\subset 2^{[n]}</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>⊎</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>,</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>a</mi><mo>∪</mo><mi>b</mi><mo stretchy="false" form="prefix">|</mo><mo>∀</mo><mi>a</mi><mo>∈</mo><mi>A</mi><mo>,</mo><mi>b</mi><mo>∈</mo><mi>B</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\uplus(A,B)=\left\{ a\cup b| \forall a\in A,b\in B \right\}</annotation></semantics></math>
is element-wise union and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mi>F</mi></msub><annotation encoding="application/x-tex">M_{F}</annotation></semantics></math>
is the submatrix of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(F)</annotation></semantics></math>
on entries
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>×</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">F\times F</annotation></semantics></math>.
Taking
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">(</mo><mfrac linethickness="0"><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow><mrow><mo>≤</mo><mi>t</mi></mrow></mfrac><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">F=\binom{[n]}{\leq t}</annotation></semantics></math>
gives us
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t</annotation></semantics></math>.
<h1 data-number="5" id="applications"><span
class="header-section-number">5</span> Applications</h1>
<h2 data-number="5.1" id="sparsest-cut"><span
class="header-section-number">5.1</span> Sparsest Cut</h2>
<p></p>
There are lots of applications in the useful links, but none of them
discusses sparsest cut <span class="citation"
data-cites="guruswami_approximating_2013">[<a
href="#ref-guruswami_approximating_2013"
role="doc-biblioref">4</a>]</span>.
<div class="theorem-environment Problem" data-index="7" type="Problem"
title="sparsest cut">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">7</span><span class="name">sparsest cut</span></span>
<p></p>
Given a vertex set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>V</mi><annotation encoding="application/x-tex">V</annotation></semantics></math>
and two weight functions
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo>,</mo><mi>D</mi><mo>:</mo><mrow><mo stretchy="true" form="prefix">(</mo><mfrac linethickness="0"><mi>V</mi><mn>2</mn></mfrac><mo stretchy="true" form="postfix">)</mo></mrow><mo>→</mo><msub><mi mathvariant="double-struck">ℝ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mrow><annotation encoding="application/x-tex">c,D:\binom{V}{2} \to \mathbb{R}_{\geq 0}</annotation></semantics></math>,
find
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo>⊂</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">T\subset V</annotation></semantics></math>
that minimizes the sparsity of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="normal">Φ</mi><mo stretchy="false" form="prefix">(</mo><mi>T</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mfrac><mrow><munder><mo>∑</mo><mrow><mi>u</mi><mo>&lt;</mo><mi>v</mi></mrow></munder><msub><mi>c</mi><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow></msub><mo stretchy="false" form="prefix">|</mo><msup><mi>χ</mi><mi>T</mi></msup><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><msup><mi>χ</mi><mi>T</mi></msup><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">|</mo></mrow><mrow><munder><mo>∑</mo><mrow><mi>u</mi><mo>&lt;</mo><mi>v</mi></mrow></munder><msub><mi>D</mi><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow></msub><mo stretchy="false" form="prefix">|</mo><msup><mi>χ</mi><mi>T</mi></msup><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><msup><mi>χ</mi><mi>T</mi></msup><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">|</mo></mrow></mfrac><mo>,</mo></mrow><annotation encoding="application/x-tex">
\Phi(T)=\frac{\sum_{u &lt; v}c_{u,v}|\chi^T(u)-\chi^T(v)|}{\sum_{u &lt; v}D_{u,v}|\chi^T(u)-\chi^T(v)|},
</annotation></semantics></math></span> where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>χ</mi><mi>T</mi></msup><annotation encoding="application/x-tex">\chi^T</annotation></semantics></math>
is the indicator vector of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math>.
</div>
<p></p>
In <span class="citation" data-cites="guruswami_approximating_2013">[<a
href="#ref-guruswami_approximating_2013"
role="doc-biblioref">4</a>]</span> Guruswami and Sinop describe Lasserre
hierarchy in a slightly different way. (Note that <a
href="https://people.eecs.berkeley.edu/~venkatg/pubs/papers/thesis-ali-kemal-sinop.pdf"><code>useful_link[6]</code></a>
is Sinop’s thesis) We have seen that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">]</mo><msup><mn>2</mn><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msup></msup></mrow><annotation encoding="application/x-tex">y\in [0,1]^{2^{[n]}}</annotation></semantics></math>
is sufficient for describing the joint distribution. However, the total
number of events is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>3</mn><mi>n</mi></msup><annotation encoding="application/x-tex">3^n</annotation></semantics></math>,
since for each variable
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>X</mi><mi>i</mi></msub><annotation encoding="application/x-tex">X_i</annotation></semantics></math>
in an event there are 3 possible states,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>,</mo><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">X_i=0,X_i=1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>X</mi><mi>i</mi></msub><annotation encoding="application/x-tex">X_i</annotation></semantics></math>
is absent.
<p></p>
Instead of using
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">]</mo><msup><mn>2</mn><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msup></msup></mrow><annotation encoding="application/x-tex">y\in [0,1]^{2^{[n]}}</annotation></semantics></math>,
they enumerate each of the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mn>3</mn><mi>n</mi></msup><annotation encoding="application/x-tex">3^n</annotation></semantics></math>
events and consider the vectors in the Gram decomposition. For each set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>⊂</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">S\subset V</annotation></semantics></math>
of size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>≤</mo><mi>r</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\leq r+1</annotation></semantics></math>,
and for each 0-1 labeling
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
on elements of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>,
they define a vector
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_S(f)</annotation></semantics></math>.
Note that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">S(f)</annotation></semantics></math>
enumerates all events and one should understand
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_S(f)</annotation></semantics></math>
as the vector corresponding to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mrow><mi>S</mi><mo>,</mo><mi>f</mi></mrow></msub><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">]</mo><msup><mn>3</mn><mrow><mo stretchy="false" form="prefix">[</mo><mi>n</mi><mo stretchy="false" form="postfix">]</mo></mrow></msup></msup></mrow><annotation encoding="application/x-tex">y_{S,f}\in [0,1]^{3^{[n]}}</annotation></semantics></math>
in the Gram decomposition and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">⟩</mo><mo>=</mo><msub><mi>y</mi><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo><mo>∧</mo><mi>g</mi><mo stretchy="false" form="prefix">(</mo><mi>T</mi><mo stretchy="false" form="postfix">)</mo></mrow></msub></mrow><annotation encoding="application/x-tex">\langle x_S(f), x_T(g) \rangle=y_{f(S)\land g(T)}</annotation></semantics></math>.
Then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_S(f)</annotation></semantics></math>
should have the following properties:
<ol type="1">
<li>if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f(S)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>g</mi><mo stretchy="false" form="prefix">(</mo><mi>T</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">g(T)</annotation></semantics></math>
are inconsistant, i.e. there is an element
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><mi>S</mi><mo>∩</mo><mi>T</mi></mrow><annotation encoding="application/x-tex">e\in S\cap T</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≠</mo><mi>g</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f(e)\neq g(e)</annotation></semantics></math>,
then one should have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">⟩</mo><mo>=</mo><msub><mi>y</mi><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo><mo>∧</mo><mi>g</mi><mo stretchy="false" form="prefix">(</mo><mi>T</mi><mo stretchy="false" form="postfix">)</mo></mrow></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\langle x_S(f), x_T(g) \rangle=y_{f(S)\land g(T)}=0</annotation></semantics></math>.</li>
<li>if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo><mo>∧</mo><mi>g</mi><mo stretchy="false" form="prefix">(</mo><mi>T</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f(S)\land g(T)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>f</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mo>∧</mo><msup><mi>g</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f&#39;(A)\land g&#39;(B)</annotation></semantics></math>
are the same event,
i.e. <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>∪</mo><mi>B</mi><mo>=</mo><mi>S</mi><mo>∪</mo><mi>T</mi></mrow><annotation encoding="application/x-tex">A\cup B=S\cup T</annotation></semantics></math>
and the labels are the same, then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">⟩</mo><mo>=</mo><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>A</mi></msub><mo stretchy="false" form="prefix">(</mo><msup><mi>f</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>x</mi><mi>B</mi></msub><mo stretchy="false" form="prefix">(</mo><msup><mi>g</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">⟩</mo></mrow><annotation encoding="application/x-tex">\langle x_S(f), x_T(g) \rangle=\langle x_A(f&#39;), x_B(g&#39;) \rangle</annotation></semantics></math></li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>∅</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\|x_{\emptyset}\|^2=1</annotation></semantics></math>
here
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>∅</mi><annotation encoding="application/x-tex">\emptyset</annotation></semantics></math>
is the union of all events.</li>
<li>for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>u</mi><mo>∈</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">u\in V</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mi>+</mi><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo>=</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>∅</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\|x_u(0)\|^2+\|x_u(1)\|^2=\|x_{\emptyset}\|^2=1</annotation></semantics></math>.</li>
<li>for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>⊂</mo><mi>V</mi><mo>,</mo><mi>u</mi><mo>∈</mo><mi>S</mi></mrow><annotation encoding="application/x-tex">S\subset V, u\in S</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo>∈</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mrow><mi>S</mi><mo>\</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>u</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msup></mrow><annotation encoding="application/x-tex">f\in \left\{ 0,1 \right\}^{S\setminus \left\{ u \right\}}</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">)</mo><mo>+</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mi>x</mi><mrow><mi>S</mi><mo>\</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>u</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_S(f\land (u=1))+x_S(f\land (u=0))=x_{S\setminus \left\{ u \right\}}(f)</annotation></semantics></math>.
(Note that two lhs vectors are orthogonal)</li>
</ol>
<div id="pseudoPr" class="theorem-environment Lemma" data-index="8"
type="Lemma" title="pseudo probability">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">8</span><span class="name">pseudo
probability</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x\in \mathop{\mathrm{Las}}_t(V)</annotation></semantics></math>
for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">t\geq 0</annotation></semantics></math>.
Then the following holds:
<ol type="1">
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\|x_S(f)\|^2 \in [0,1]</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>S</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">|S|\leq t+1</annotation></semantics></math>.</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo>≤</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\|x_S(f)\|^2 \leq \|x_T(g)\|^2</annotation></semantics></math>
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo>⊂</mo><mi>S</mi></mrow><annotation encoding="application/x-tex">T\subset S</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>g</mi><mo stretchy="false" form="prefix">(</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f(t)=g(t)</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mo>∈</mo><mi>T</mi></mrow><annotation encoding="application/x-tex">t\in T</annotation></semantics></math>.</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo>=</mo><msub><mo>∑</mo><mrow><mi>h</mi><mo>∈</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mrow><mi>T</mi><mo>−</mo><mi>S</mi></mrow></msup></mrow></msub><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>h</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\|x_S(f)\|^2 = \sum_{h\in \left\{ 0,1 \right\}^{T-S}} \|x_T(f\land h)\|^2</annotation></semantics></math>
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>⊂</mo><mi>T</mi></mrow><annotation encoding="application/x-tex">S\subset T</annotation></semantics></math>.</li>
<li>If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>S</mi><mo>∈</mo><mrow><mo stretchy="true" form="prefix">(</mo><mfrac linethickness="0"><mi>V</mi><mrow><mo>≤</mo><mi>t</mi></mrow></mfrac><mo stretchy="true" form="postfix">)</mo></mrow></mrow><annotation encoding="application/x-tex">S\in \binom{V}{\leq t}</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo>∈</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>S</mi></msup></mrow><annotation encoding="application/x-tex">f\in \left\{ 0,1 \right\}^S</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>u</mi><mo>∉</mo><mi>S</mi></mrow><annotation encoding="application/x-tex">u\notin S</annotation></semantics></math>,
then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>+</mo><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_{S+u}(f\land u=1)+x_{S+u}(f\land u=0)=x_{S}(f)</annotation></semantics></math>.</li>
</ol>
</div>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>N</mi><mi>t</mi></msub><mo>=</mo><msubsup><mo>∑</mo><mrow><mi>r</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mrow><mo stretchy="true" form="prefix">(</mo><mfrac linethickness="0"><mi>V</mi><mi>r</mi></mfrac><mo stretchy="true" form="postfix">)</mo></mrow><msup><mn>2</mn><mi>r</mi></msup></mrow><annotation encoding="application/x-tex">N_t=\sum_{r=0}^{t+1}\binom{V}{r}2^r</annotation></semantics></math>
be the number of vectors in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>x</mi><annotation encoding="application/x-tex">x</annotation></semantics></math>.
Consider the moment matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mi>t</mi></msub><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mrow><msub><mi>N</mi><mi>t</mi></msub><mo>×</mo><msub><mi>N</mi><mi>t</mi></msub></mrow></msup></mrow><annotation encoding="application/x-tex">M_t\in \mathbb{R}^{N_t\times N_t}</annotation></semantics></math>,
where each entry
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>M</mi><mi>t</mi></msub><mo stretchy="false" form="prefix">[</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mi>g</mi><mo stretchy="false" form="prefix">(</mo><mi>T</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">M_t[f(S),g(T)]</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">⟩</mo></mrow><annotation encoding="application/x-tex">\langle x_S(f),x_T(g)\rangle</annotation></semantics></math>.
The moment matrix is positive semidefinite since vectors in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>x</mi><annotation encoding="application/x-tex">x</annotation></semantics></math>
form a Gram decomposition of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mi>t</mi></msub><annotation encoding="application/x-tex">M_t</annotation></semantics></math>.
<ol type="1">
<li>Consider the following submatrix of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mi>t</mi></msub><annotation encoding="application/x-tex">M_t</annotation></semantics></math>.
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">[</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>∅</mi></msub><mo>,</mo><msub><mi>x</mi><mi>∅</mi></msub><mo stretchy="false" form="postfix">⟩</mo></mtd><mtd columnalign="center" style="text-align: center"><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>∅</mi></msub><mo>,</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">⟩</mo></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>x</mi><mi>∅</mi></msub><mo stretchy="false" form="postfix">⟩</mo></mtd><mtd columnalign="center" style="text-align: center"><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">⟩</mo></mtd></mtr></mtable><mo stretchy="true" form="postfix">]</mo></mrow><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\begin{bmatrix}
\langle x_\emptyset,x_\emptyset\rangle    &amp; \langle x_\emptyset,x_S(f)\rangle\\
\langle x_S(f),x_\emptyset\rangle         &amp; \langle x_S(f),x_S(f)\rangle
\end{bmatrix}\succeq 0</annotation></semantics></math></span> Computing
the determinant gives us
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mi>−</mi><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\|x_S(f)\|^2(1-\|x_S(f)\|^2)\geq 0</annotation></semantics></math>.</li>
<li>Again consider certain submatrix of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>M</mi><mi>t</mi></msub><annotation encoding="application/x-tex">M_t</annotation></semantics></math>.
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mo stretchy="true" form="prefix">[</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mo stretchy="false" form="prefix">⟨</mo><mrow><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo>,</mo><mrow><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo stretchy="false" form="postfix">⟩</mo></mtd><mtd columnalign="center" style="text-align: center"><mo stretchy="false" form="prefix">⟨</mo><mrow><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo>,</mo><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo stretchy="false" form="postfix">⟩</mo></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mo stretchy="false" form="prefix">⟨</mo><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo>,</mo><mrow><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo stretchy="false" form="postfix">⟩</mo></mtd><mtd columnalign="center" style="text-align: center"><mo stretchy="false" form="prefix">⟨</mo><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo>,</mo><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo stretchy="false" form="postfix">⟩</mo></mtd></mtr></mtable><mo stretchy="true" form="postfix">]</mo></mrow><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\begin{bmatrix}
\langle{x_T(g)},{x_T(g)}\rangle  &amp; \langle{x_T(g)},{x_S(f)}\rangle\\
\langle{x_S(f)},{x_T(g)}\rangle  &amp; \langle{x_S(f)},{x_S(f)}\rangle
\end{bmatrix}\succeq 0</annotation></semantics></math></span> The
determinant is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo stretchy="false" form="prefix">(</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>T</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>g</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mi>−</mi><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\|x_S(f)\|^2(\|x_T(g)\|^2-\|x_S(f)\|^2)\geq 0</annotation></semantics></math>.</li>
<li>We only need to show
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo>=</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mi>+</mi><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\|x_S(f)\|^2=\|x_{S+u}(f\land u=0)\|^2 +\|x_{S+u}(f\land u=1)\|^2</annotation></semantics></math>
and the rest follows by induction. Note that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><mo>+</mo><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mi>x</mi><mi>∅</mi></msub></mrow><annotation encoding="application/x-tex">x_u(0)+x_u(1)=x_\emptyset</annotation></semantics></math>
since we have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mi>+</mi><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mo>=</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>∅</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\|x_u(0)\|^2+\|x_u(1)\|^2=\|x_{\emptyset}\|^2</annotation></semantics></math>
and they are orthogonal. <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup><mi>+</mi><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mo stretchy="false" form="prefix">⟨</mo><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo>,</mo><mrow><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo></mrow><mo stretchy="false" form="postfix">⟩</mo><mo>+</mo><mo stretchy="false" form="prefix">⟨</mo><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo>,</mo><mrow><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><mo stretchy="false" form="postfix">⟩</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mo stretchy="false" form="prefix">⟨</mo><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo>,</mo><mrow><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo><mo>+</mo><msub><mi>x</mi><mi>u</mi></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><mo stretchy="false" form="postfix">⟩</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mo stretchy="false" form="prefix">⟨</mo><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><mo>,</mo><msub><mi>x</mi><mi>∅</mi></msub><mo stretchy="false" form="postfix">⟩</mo><mo>=</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\|x_{S+u}(f\land u=0)\|^2 +\|x_{S+u}(f\land u=1)\|^2 &amp;= \langle{x_S(f)},{x_u(0)}\rangle+\langle{x_S(f)},{x_u(1)}\rangle\\
&amp;= \langle{x_S(f)},{x_u(0)+x_u(1)}\rangle\\
&amp;= \langle{x_S(f)},{x_\emptyset}\rangle=\|x_S(f)\|^2
\end{aligned}
</annotation></semantics></math></span></li>
<li>Notice that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_{S+u}(f\land u=1)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_{S+u}(f\land u=0)</annotation></semantics></math>
are orthogonal. Denote by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><msup><mi>f</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_S(f&#39;)</annotation></semantics></math>
the projection of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
on the hyperplane spanned by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_{S+u}(f\land u=1)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_{S+u}(f\land u=0)</annotation></semantics></math>.
One can verify that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>f</mi><mo>′</mo></msup><mo>=</mo><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>+</mo><msub><mi>x</mi><mrow><mi>S</mi><mo>+</mo><mi>u</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo>∧</mo><mi>u</mi><mo>=</mo><mn>0</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f&#39;=x_{S+u}(f\land u=1)+x_{S+u}(f\land u=0)</annotation></semantics></math>.
Then it remains to show
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">⟨</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><msup><mi>f</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>,</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">⟩</mo><mo>=</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\langle x_S(f&#39;), x_S(f)\rangle=\|x_S(f)\|^2</annotation></semantics></math>,
which immediately follows from 3.</li>
</ol>
</div>
<p></p>
Then write
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>u</mi></msub><mo>=</mo><msub><mi>x</mi><mrow><mo stretchy="true" form="prefix">{</mo><mi>u</mi><mo stretchy="true" form="postfix">}</mo></mrow></msub><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_u=x_{\left\{ u \right\}}(1)</annotation></semantics></math>.
The follwing “SDP” is a relaxation of sparsest cut.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mfrac><mrow><munder><mo>∑</mo><mrow><mi>u</mi><mo>&lt;</mo><mi>v</mi></mrow></munder><msub><mi>c</mi><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow></msub><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo>−</mo><msub><mi>x</mi><mi>v</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mrow><mrow><munder><mo>∑</mo><mrow><mi>u</mi><mo>&lt;</mo><mi>v</mi></mrow></munder><msub><mi>D</mi><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow></msub><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo>−</mo><msub><mi>x</mi><mi>v</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mrow></mfrac></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>u</mi><mo>&lt;</mo><mi>v</mi></mrow></munder><msub><mi>D</mi><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow></msub><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo>−</mo><msub><mi>x</mi><mi>v</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>0</mn></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>x</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>r</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp;   &amp;   \frac{\sum_{u &lt; v}c_{u,v}\|x_u-x_v\|^2}{\sum_{u &lt; v}D_{u,v}\|x_u-x_v\|^2}\\
s.t.&amp;   &amp;   \sum_{u &lt; v}D_{u,v}\|x_u-x_v\|^2&amp;\geq 0\\
    &amp;   &amp;   x\in \mathop{\mathrm{Las}}_r(V)&amp;
\end{aligned}
</annotation></semantics></math></span>
<p></p>
Scaling every
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>S</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_S(f)</annotation></semantics></math>
by a factor of the square root of the objective’s denominator gives us a
real SDP.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>u</mi><mo>&lt;</mo><mi>v</mi></mrow></munder><msub><mi>c</mi><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow></msub><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo>−</mo><msub><mi>x</mi><mi>v</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>u</mi><mo>&lt;</mo><mi>v</mi></mrow></munder><msub><mi>D</mi><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow></msub><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>u</mi></msub><mo>−</mo><msub><mi>x</mi><mi>v</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mn>1</mn></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>x</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>r</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>x</mi><mi>∅</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>&gt;</mo><mn>0</mn></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp;   &amp;   \sum_{u &lt; v}c_{u,v}\|x_u-x_v\|^2\\
s.t.&amp;   &amp;   \sum_{u &lt; v}D_{u,v}\|x_u-x_v\|^2&amp;= 1\\
    &amp;   &amp;   x\in \mathop{\mathrm{Las}}_r(V),\|x_\emptyset\|^2&amp;&gt;0
\end{aligned}
</annotation></semantics></math></span>
<p></p>
The rounding method is too complicated, so it won’t be covered here.
<h2 data-number="5.2" id="matching"><span
class="header-section-number">5.2</span> Matching</h2>
<p></p>
This application can be found in section 3.3 of <a
href="https://sites.math.washington.edu/~rothvoss/lecturenotes/lasserresurvey.pdf"><code>useful_link[1]</code></a>.
We consider the maximum matching IP in non-bipartite graphs. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>x</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">ℝ</mi><mrow><mo>≥</mo><mn>0</mn></mrow><mi>n</mi></msubsup><mo stretchy="false" form="prefix">|</mo><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow></msub><msub><mi>x</mi><mi>e</mi></msub><mo>≥</mo><mn>1</mn><mspace width="0.278em"></mspace><mo>∀</mo><mi>v</mi><mo>∈</mo><mi>V</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">K=\left\{ x\in \mathbb{R}_{\geq 0}^n |  \sum_{e\in \delta(v)}x_e\geq 1 \; \forall v\in V \right\}</annotation></semantics></math>
be the polytope and consider
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>.
In the notes Rothvoss shows the following lemma.
<div id="matchinggap1" class="theorem-environment Lemma" data-index="9"
type="Lemma">
<span class="theorem-header"><span class="type">Lemma</span><span
class="index">9</span></span>
<p></p>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo><mo>⊆</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>+</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mi>t</mi></mrow></mfrac><mo stretchy="false" form="postfix">)</mo><mo>⋅</mo><mrow><mi mathvariant="normal">conv</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t^{proj}(K)\subseteq (1+\frac{1}{2t})\cdot\mathop{\mathrm{conv}}(K\cap \left\{ 0,1 \right\}^n)</annotation></semantics></math>.
</div>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in \mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>.
It suffices to show that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi><mo stretchy="false" form="prefix">[</mo><mi>U</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub><msub><mi>y</mi><mi>e</mi></msub><mo>≤</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>+</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mi>t</mi></mrow></mfrac><mo stretchy="false" form="postfix">)</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">\sum_{e\in E[U]} y_e\leq (1+\frac{1}{2t})k</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>U</mi><mo stretchy="false" form="prefix">|</mo><mo>=</mo><mn>2</mn><mi>k</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">|U|=2k+1</annotation></semantics></math>,
since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mi>x</mi><mo>∈</mo><mi>K</mi><mo stretchy="false" form="prefix">|</mo><mrow><mi>x</mi><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> satisfies odd constraints</mtext></mrow></mrow><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ x\in K| \text{$x$ satisfies odd constraints} \right\}</annotation></semantics></math>
is the matching polytope. When
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>&gt;</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">k&gt;t</annotation></semantics></math>,
the degree constraints imply that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi><mo stretchy="false" form="prefix">[</mo><mi>U</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub><msub><mi>y</mi><mi>e</mi></msub><mo>≤</mo><mi>k</mi><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>≤</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>+</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mi>t</mi></mrow></mfrac><mo stretchy="false" form="postfix">)</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">\sum_{e\in E[U]} y_e\leq k+\frac{1}{2} \leq (1+\frac{1}{2t})k</annotation></semantics></math>.
Now consider the case
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>≤</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">k\leq t</annotation></semantics></math>.
Note that for fixed
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>U</mi><annotation encoding="application/x-tex">U</annotation></semantics></math>,
any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>I</mi><mo>⊂</mo><mi>E</mi><mo stretchy="false" form="prefix">[</mo><mi>U</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">I\subset E[U]</annotation></semantics></math>
of size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>&gt;</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">|I|&gt; k</annotation></semantics></math>
has
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mi>I</mi></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y_I=0</annotation></semantics></math>,
since it is impossible to find a matching in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>U</mi><annotation encoding="application/x-tex">U</annotation></semantics></math>
covering more that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>
vertices. Then by <a href="#conv" title="Lemma 4">Lemma 4</a>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
can be represented as a convex combination of solutions
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>z</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mn>0</mn></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">z\in \mathop{\mathrm{Las}}_0(K)</annotation></semantics></math>
in which
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>z</mi><mi>e</mi></msub><mo>∈</mo><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">z_e\in \left\{ 0,1 \right\}</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><mi>E</mi><mo stretchy="false" form="prefix">[</mo><mi>U</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">e\in E[U]</annotation></semantics></math>.
The convex combination implies that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi><mo stretchy="false" form="prefix">[</mo><mi>U</mi><mo stretchy="false" form="postfix">]</mo></mrow></msub><msub><mi>y</mi><mi>e</mi></msub><mo>≤</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">\sum_{e\in E[U]} y_e\leq k</annotation></semantics></math>
when
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>≤</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">k\leq t</annotation></semantics></math>.
</div>
<p></p>
However, one can see that <a href="#matchinggap1" title="Lemma 9">Lemma
9</a> is not tight.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mn>0</mn><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_0^{proj}(K)</annotation></semantics></math>
should be contained in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo stretchy="false" form="postfix">)</mo><mo>⋅</mo><mrow><mi mathvariant="normal">conv</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(1+\frac{1}{2})\cdot\mathop{\mathrm{conv}}(K\cap \left\{ 0,1 \right\}^n)</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_n^{proj}(K)</annotation></semantics></math>
should be exactly the integer hull. Can we prove a slightly better gap
that matches observations at
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mn>0</mn></msub><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_0</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi></msub><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_n</annotation></semantics></math>?
The later part of the proof in fact shows that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y\in \mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
satisfies all odd constraints with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>U</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mn>2</mn><mi>t</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">|U|\leq 2t+1</annotation></semantics></math>.
Consider an odd cycle with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mi>t</mi><mo>+</mo><mn>3</mn></mrow><annotation encoding="application/x-tex">2t+3</annotation></semantics></math>
vertices.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mi>/</mi><mn>2</mn><mo>,</mo><mi>…</mi><mo>,</mo><mn>1</mn><mi>/</mi><mn>2</mn><msup><mo stretchy="false" form="postfix">)</mo><mi>T</mi></msup><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mrow><mn>2</mn><mi>t</mi><mo>+</mo><mn>3</mn></mrow></msup></mrow><annotation encoding="application/x-tex">(1/2,\ldots,1/2)^T\in \mathbb{R}^{2t+3}</annotation></semantics></math>
is a feasible solution in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
and proves a tight lowerbound of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>+</mo><mn>1</mn><mi>/</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">k+1/2</annotation></semantics></math>.
<h1 data-number="6" id="questions"><span
class="header-section-number">6</span> Questions</h1>
<h2 data-number="6.1"
id="replace-m_tellysucceq-0-with-mathopmathrmlas_tprojyin-k"><span
class="header-section-number">6.1</span> Replace
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>M</mi><mi>t</mi><mi>ℓ</mi></msubsup><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>≽</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">M_t^\ell(y)\succeq 0</annotation></semantics></math>
with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t^{proj}(y)\in K</annotation></semantics></math></h2>
<p></p>
<del>I don’t see any proof relying on the psdness of slack moment
matrices…</del>
<p></p>
It turns out that problems occur in the proof of <a href="#conv"
title="Lemma 4">Lemma 4</a>. If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
is defined as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mi>y</mi><mo stretchy="false" form="prefix">|</mo><msub><mi>M</mi><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>≽</mo><mn>0</mn><mo>,</mo><msup><mi>y</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msup><mo>∈</mo><mi>K</mi><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ y|M_t(y)\succeq 0, y^{proj}\in K \right\}</annotation></semantics></math>,
then we cannot guarantee
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>,</mo><msup><mi>z</mi><mrow><mo stretchy="false" form="prefix">(</mo><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></msup><mo>∈</mo><mi>K</mi></mrow><annotation encoding="application/x-tex">z^{(1)},z^{(2)}\in K</annotation></semantics></math>.
Without <a href="#conv" title="Lemma 4">Lemma 4</a>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>n</mi><mrow><mi>p</mi><mi>r</mi><mi>o</mi><mi>j</mi></mrow></msubsup><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_n^{proj}(K)</annotation></semantics></math>
may not be exactly
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>K</mi><mo>∩</mo><msup><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">K\cap \left\{ 0,1 \right\}^n</annotation></semantics></math>
and the hierarchy seems less interesting? But an alternative formulation
(see <a href="#sparsest-cut">Sparsest cut</a>, which entirely ignore the
slack moment matrices) still allows good rounding even without <a
href="#conv" title="Lemma 4">Lemma 4</a>. Generally speaking, if the
psdness of slack moment matrices is neglected, then we won’t have <a
href="https://en.wikipedia.org/wiki/Law_of_total_probability">Law of
total probability</a>(<a href="#conv" title="Lemma 4">Lemma 4</a>);
However, we still have “finite additivity property of probability
measures”(<a href="#pseudoPr" title="Lemma 8">Lemma 8</a> (3)).
<h2 data-number="6.2" id="separation-oracle-for-implicit-k"><span
class="header-section-number">6.2</span> Separation Oracle for Implicit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math></h2>
<p></p>
Sometimes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
is given in a compact form. For example, consider finding matroid
cogirth.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>B</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mrow><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> base </mtext><mspace width="0.333em"></mspace></mrow><mi>B</mi></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>0</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp;   &amp;   \sum_{e\in E} x_e&amp;  &amp;   &amp;\\
s.t.&amp;   &amp;   \sum_{e\in B} x_e&amp;\geq 1 &amp;  &amp;\forall \text{ base $B$}\\
    &amp;   &amp;                 x_e&amp;\geq 0 &amp;  &amp;\forall e\in E
\end{aligned}
</annotation></semantics></math></span>
<p></p>
If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>K</mi><annotation encoding="application/x-tex">K</annotation></semantics></math>
is only accessable through a separation oracle, is it possible to
optimize over
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">Las</mi><mo>&#8289;</mo></mrow><mi>t</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>K</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{Las}}_t(K)</annotation></semantics></math>
in polynomial time for constant
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>?
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-laurent_comparison_2003" class="csl-entry" role="listitem">
<div class="csl-left-margin">[1] </div><div class="csl-right-inline">M.
Laurent, A <span>Comparison</span> of the
<span>Sherali</span>-<span>Adams</span>,
<span>Lovász</span>-<span>Schrijver</span>, and <span>Lasserre</span>
<span>Relaxations</span> for 0–1 <span>Programming</span>,
<em>Mathematics of Operations Research</em>. 28 (2003) 470–496 <a
href="https://doi.org/10.1287/moor.28.3.470.16391">10.1287/moor.28.3.470.16391</a>.</div>
</div>
<div id="ref-schrijver_polyhedral_1986" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[2] </div><div class="csl-right-inline">A.
Schrijver, Polyhedral proof methods in combinatorial optimization,
<em>Discrete Applied Mathematics</em>. 14 (1986) 111–133 <a
href="https://doi.org/10.1016/0166-218X(86)90056-9">10.1016/0166-218X(86)90056-9</a>.</div>
</div>
<div id="ref-karlin_integrality_2011" class="csl-entry" role="listitem">
<div class="csl-left-margin">[3] </div><div
class="csl-right-inline">A.R. Karlin, C. Mathieu, C.T. Nguyen,
Integrality <span>Gaps</span> of <span>Linear</span> and
<span>Semi</span>-<span>Definite</span> <span>Programming</span>
<span>Relaxations</span> for <span>Knapsack</span>, in: <em>Integer
<span>Programming</span> and <span>Combinatoral</span>
<span>Optimization</span></em>, Springer, Berlin, Heidelberg, 2011: pp.
301–314 <a
href="https://doi.org/10.1007/978-3-642-20807-2_24">10.1007/978-3-642-20807-2_24</a>.</div>
</div>
<div id="ref-guruswami_approximating_2013" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[4] </div><div class="csl-right-inline">V.
Guruswami, A.K. Sinop, Approximating non-uniform sparsest cut via
generalized spectra, in: <em>Proceedings of the Twenty-Fourth Annual
<span>ACM</span>-<span>SIAM</span> Symposium on <span>Discrete</span>
Algorithms</em>, <span>Society for Industrial and Applied
Mathematics</span>, USA, 2013: pp. 295–305.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Thu, 05 Jun 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/LasserreHierarchy/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>在 KaTeX 中使用 Fira Math</title>
    <link>https://talldoor.uk/posts/katexfont/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on May 25, 2025
        
            by Yu Cong with help from many others
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;katex&#39;." href="/tags/katex/index.html" rel="tag">katex</a>
        
    </div>    
    <section class="body">
        <blockquote>
<p></p>
现在有一个半成品可用 <a href="https://github.com/congyu711/KaTeX"
class="uri">https://github.com/congyu711/KaTeX</a>
</blockquote>
<p></p>
<a href="https://github.com/firamath/firamath">Fira Math</a>
这字体很不错， 想要在 KaTeX 中使用它.
<p></p>
有用的链接:
<ol type="1">
<li><a
href="https://yingtongli.me/blog/2022/09/24/katex-custom-fonts.html"
class="uri">https://yingtongli.me/blog/2022/09/24/katex-custom-fonts.html</a>
– alphanumeric text only</li>
<li><a href="https://github.com/KaTeX/KaTeX/discussions/3716"
class="uri">https://github.com/KaTeX/KaTeX/discussions/3716</a></li>
<li><a
href="https://github.com/firamath/firamath.github.io/blob/master/bibliography.md"
class="uri">https://github.com/firamath/firamath.github.io/blob/master/bibliography.md</a></li>
<li><a
href="https://learn.microsoft.com/en-us/typography/opentype/spec/math"
class="uri">https://learn.microsoft.com/en-us/typography/opentype/spec/math</a></li>
</ol>
<h1 data-number="1" id="katex-字体部分如何工作"><span
class="header-section-number">1</span> KaTeX 字体部分如何工作?</h1>
<p></p>
关于 fonts 和 metrics 有关的东西首先要看<code>dockers/fonts/</code>.
看起来 <code>fonts/</code>里面的字体是从 docker 中安装的 texlive 的
computer modern fonts 提取的.
然后<code>dockers/fonts/buildMetrics.sh</code> 调用
<code>src/metrics</code>里面的代码，直接从有关的 tfm 文件里读一些 metric
信息.
<p></p>
(我猜)生成的 ttf,woff2 等字体是保存 unicode -&gt; (字形 + 一些信息)
这个映射关系的文件.
<p></p>
<code>src/metrics/mapping.pl</code> 就是从 tex math 到 unicode 的映射.
做完这个输出这样的东西
<div class="sourceCode" id="cb1"><pre
class="sourceCode json"><code class="sourceCode json"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">{</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a>    <span class="er">...</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a>    <span class="dt">&quot;AMS-Regular&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a>        <span class="dt">&quot;65&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;char&quot;</span><span class="fu">:</span> <span class="dv">65</span><span class="fu">,</span></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;yshift&quot;</span><span class="fu">:</span> <span class="dv">0</span><span class="fu">,</span></span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;xshift&quot;</span><span class="fu">:</span> <span class="dv">0</span><span class="fu">,</span></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;font&quot;</span><span class="fu">:</span> <span class="st">&quot;msbm10&quot;</span></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a>        <span class="fu">},</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a>        <span class="er">...</span></span></code></pre></div>
<p></p>
之后输入到<code>src/metrics/extract_tfms.py</code> 得到
<div class="sourceCode" id="cb2"><pre
class="sourceCode json"><code class="sourceCode json"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">{</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>    <span class="dt">&quot;AMS-Regular&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>        <span class="dt">&quot;65&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;depth&quot;</span><span class="fu">:</span> <span class="fl">0.0</span><span class="fu">,</span></span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;height&quot;</span><span class="fu">:</span> <span class="fl">0.68889</span><span class="fu">,</span></span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;italic&quot;</span><span class="fu">:</span> <span class="fl">0.0</span><span class="fu">,</span></span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;skew&quot;</span><span class="fu">:</span> <span class="fl">0.0</span><span class="fu">,</span></span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a>            <span class="dt">&quot;width&quot;</span><span class="fu">:</span> <span class="fl">0.72222</span></span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true" tabindex="-1"></a>        <span class="fu">},</span></span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true" tabindex="-1"></a>        <span class="er">...</span></span></code></pre></div>
<p></p>
最后会再做点工作然后把 json 塞入<code>src/fontMetricsData.js</code>.
我猜如果成功的把 Fira Math 的 metric 弄到这个 js 文件里， 接下来改改 css
里的字体然后 rebuild 就行了.
<p></p>
采集 metric 和生成 fonts 的过程是独立的，
所以看起来大部分东西都是可以复用的.
<h1 data-number="2" id="plan"><span
class="header-section-number">2</span> Plan</h1>
<ol type="1">
<li>由于 KaTeX 本身字体分成很多小文件, 首先我也把 Fira Math
分成小文件</li>
<li>然后想办法搞到正确的 <code>src/metrics/mapping.pl</code> for Fira
Math</li>
<li>最后改改css或者先rebuild再改css之类的.</li>
</ol>
<p></p>
在与 Fira Math 的<a
href="https://stone-zeng.site/">作者</a>交流之后意识到:
<ul>
<li>在 1. 中把Fira Math 像computer
modern一样分成小文件可能可以避免让我需要修改大量KaTeX代码.
KaTeX这样做是因为cm在TeX中是<a
href="https://en.wikipedia.org/wiki/PostScript_fonts#Type_1">Type 1
font</a>, 单个文件只能容纳256字符.</li>
<li>Fira Math是<a href="https://en.wikipedia.org/wiki/OpenType">Open
Type font</a>. glyph id 到对应字符的 unicode
码位的映射已经包含在了字体的cmap表中. KaTeX生成的html里是unicode字符,
所以我不需要为Fira Math修改<code>src/metrics/mapping.pl</code>,
但是仍然需要对应的<code>src/fontMetricsData.js</code>.</li>
</ul>
<h1 data-number="3" id="extract-fonts"><span
class="header-section-number">3</span> Extract fonts</h1>
<p></p>
KaTeX 把<code>\mathbb{A} \mathcal{B}</code>
等等符号全部映射到普通拉丁字母 A,B 上，
这就导致需要在映射的时候做点工作. 而且另一个问题是 KaTeX_AMS-Regular
等字体在使用 unicode private use area 表示一些 unicode 中缺少的符号，
比如<code>src/fonts/makeFF</code>中有这样的代码
<div class="sourceCode" id="cb3"><pre
class="sourceCode perl"><code class="sourceCode perl"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>    <span class="bn">0x0A</span> =&gt; <span class="bn">0xE010</span>,         <span class="co"># \nleqslant</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>    <span class="bn">0x0B</span> =&gt; <span class="bn">0xE00F</span>,         <span class="co"># \ngeqslant</span></span></code></pre></div>
<p></p>
因为这些不是我会用的符号， 我决定先不管它.
<p></p>
KaTeX_Main-Regular, KaTeX_Math-Italic.ttf 这些字体表现比较正常，
基本都是 Fira Math 的子集， 用<a
href="https://github.com/congyu711/KaTeX/blob/main/fonts/mimic.py">这里</a>的代码转换.
对于 KaTeX_AMS-Regular 和 KaTeX_Size{k} 这些字体就需要单独处理，
我决定下载 fontforge 手动处理. <del>Caligraphic 和 Fraktur 字体 Fira
Math 中也没有覆盖</del> , Fira Math 本来就是 sans serif 字体，
所以我觉得其他字体都可直接用 KaTeX 版本.
<h2 data-number="3.1" id="italic"><span
class="header-section-number">3.1</span> Italic</h2>
<p></p>
<del>看起来 Fira Math 字体并无斜体， 查了查貌似 TeX 是通过 OpenType MATH
table 来实现斜体， 我需要想想如何搞到 Fira Math 的斜体版本…</del> 原来
Fira Math 是有斜体的， 用 fontforge 修改比手写 unicode
映射要简单点(目前只有常用符号做了修改， 很多东西不能正常工作) KaTeX
的很多设计让人疑惑， 为什么不做像 unicode-math 一样的设计，
把所有东西映射到正确的 unicode 上呢？
又比如<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mo>≠</mo><annotation encoding="application/x-tex">\neq</annotation></semantics></math>,
KaTeX
的做法是把一个<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mo>=</mo><annotation encoding="application/x-tex">=</annotation></semantics></math>和一个类似<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>\</mi><annotation encoding="application/x-tex">\setminus</annotation></semantics></math>的东西组合起来，
而且在字体中这个像<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>\</mi><annotation encoding="application/x-tex">\setminus</annotation></semantics></math>的字符被映射到了
private use area.
<p></p>
<a href="https://firamath.github.io/specimen.html">Fira Math
specimen</a> 有点老旧， 实际上其中很多 missing glyph 现在已经补上了.
Texlive 里的 firamath-regular.otf 貌似也是旧版本， 比如缺少(0x2216 ∖)
<blockquote>
<p></p>
事实上从 KaTeX 的 commit history 能看到字体主要是 <a
href="https://github.com/ylemkimon">ylemkimon</a> 的工作.
我发邮件问了问他这些问题， 没有得到回复. 不过我看到<a
href="https://www.zhihu.com/question/337382562/answer/766077220">这个知乎回答</a>之后觉得映射问题可能是为了兼容
screen reader? 不过我不觉得这样做就能让 screen reader 正确读出公式.
另外要谢谢曾祥东老师， 他是 Fira Math 的主要作者， 读<a
href="https://stone-zeng.site/">博客</a>和<a
href="https://www.zhihu.com/question/46196562/answer/766203485">介绍
FiraMath 的知乎回答</a>都让我学到很多东西.
</blockquote>
<p></p>
如果只是更换字体的话， 很多东西看起来有点奇怪
<figure>
<img src="/images/katexfont/withoutmetric.png"
alt="修改字体、没有调整metric" />
<figcaption aria-hidden="true">修改字体、没有调整metric</figcaption>
</figure>
<p></p>
但是我觉得最常用的 LP, SDP 之类的规划问题显示起来效果还不错
<figure>
<img src="/images/katexfont/sdptest.png" alt="XeLaTeX with firamath" />
<figcaption aria-hidden="true">XeLaTeX with firamath</figcaption>
</figure>
<p></p>
以下是 mathjax 4.0
<p></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mi>x</mi></munder><msub><mi>δ</mi><mi>x</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><msub><mi>δ</mi><mi>x</mi></msub><mo>−</mo><msub><mi>δ</mi><mi>y</mi></msub><mo stretchy="false" form="postfix">)</mo><msup><mi>d</mi><mn>2</mn></msup><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mo stretchy="false" form="postfix">∥</mo><msub><mi>v</mi><mi>x</mi></msub><mo>−</mo><msub><mi>v</mi><mi>y</mi></msub><msup><mo stretchy="false" form="postfix">∥</mo><mn>2</mn></msup></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mo stretchy="false" form="prefix">(</mo><msup><mi>c</mi><mn>2</mn></msup><mo>+</mo><mo stretchy="false" form="prefix">(</mo><msub><mi>δ</mi><mi>x</mi></msub><mo>+</mo><msub><mi>δ</mi><mi>y</mi></msub><mo stretchy="false" form="postfix">)</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>k</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">)</mo><msup><mi>d</mi><mn>2</mn></msup><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>∈</mo><mi>X</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>δ</mi><mi>x</mi></msub><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo><mo>,</mo><msub><mi>v</mi><mi>x</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>p</mi></msup></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>x</mi><mo>∈</mo><mi>X</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{equation}
\begin{aligned}
\min&amp;   &amp;   \sum_x \delta_x&amp;    &amp;   &amp;\\
s.t.&amp;   &amp;   (1-\delta_x - \delta_y) d^2(x,y)\leq \|v_x-v_y\|^2 &amp;\leq (c^2+(\delta_x+\delta_y)f(k)) d^2(x,y) &amp;   &amp;\forall x,y\in X\\
    &amp;   &amp;   \delta_x\in [0,1], v_x&amp;\in \mathbb{R}^p   &amp;   &amp;\forall x\in X
\end{aligned}
\end{equation}</annotation></semantics></math>
<h1 data-number="4" id="接下来"><span
class="header-section-number">4</span> 接下来…</h1>
<p></p>
现在 <a href="https://typst.app/">Typst</a> 看起来是个输出有点排版需求的
html 内容的好选择. <a
href="https://kawayww.com/posts/example">这里</a>是个例子，
可以看到公式被 Typst 变成了 svg. 效果不错，
但是不知道如果有很多公式的话绘制一堆 svg 会不会很慢，
页面会不会变得很大.
<p></p>
如果要修改 KaTeX 的话， 我觉得会有很大的工作量. 一方面 KaTeX
本身有点古老， 很多功能的实现方式太局限了. 另一方面我不懂 js
也不懂排版， 估计需要了解 open type 字体、<a
href="https://ctan.org/pkg/unicode-math?lang=en">unicode-math</a>
的工作方式等.
<!-- 先观察一段时间, Typst的html输出有没有变得更好用, 我有没有闲到会去学和写这个工具. -->
<h2 data-number="4.1" id="typst-svg"><span
class="header-section-number">4.1</span> Typst svg</h2>
<p></p>
用这个来让 Typst 在 html 导出中把所有公式都变成 svg.
<pre><code>#show math.equation: html.frame
#show math.equation.where(block: false): box</code></pre>
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="ex">typst</span> compile input.typ <span class="at">-f</span> html htmloutput.html <span class="at">--features</span> html</span></code></pre></div>
<p></p>
测试用的文档是 <a
href="https://typst.app/project/rgLBUHLLRwTyTh16Ej3qlM"
class="uri">https://typst.app/project/rgLBUHLLRwTyTh16Ej3qlM</a>
<pre><code>+-----------------+-------+
|    outputs      | size  |
+-----------------+-------+
| PDF-XeTeX       | 25KB  |
| PDF-Typst       | 39KB  |
| html-Typst      | 194KB |
| FiraMath font   | 122KB |
+-----------------+-------+</code></pre>
<h1 data-number="5" id="mathjax-4.0-is-out"><span
class="header-section-number">5</span> MathJax 4.0 is out</h1>
<p></p>
<a
href="https://docs.mathjax.org/en/latest/upgrading/whats-new-4.0.html"
class="uri">https://docs.mathjax.org/en/latest/upgrading/whats-new-4.0.html</a>
<p></p>
MathJax 支持 FiraMath. 所以不用再修改 KaTeX.
    </section>
</article>
]]></description>
    <pubDate>Sun, 25 May 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/katexfont/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>PDF 阅读器</title>
    <link>https://talldoor.uk/posts/readpdfmacos/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on May 23, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;macos&#39;." href="/tags/macos/index.html" rel="tag">macos</a>
        
    </div>    
    <section class="body">
        <p></p>
要研究东西总是需要读纸， 纸都是 pdf, 所以好用的 pdf reader 很有用.
<p></p>
我在 macOS 上用过这些阅读器:
<ol type="1">
<li><p></p>

<a href="https://skim-app.sourceforge.io/">skim</a>. skim 还挺好用的，
缺点是快捷键太不灵活， 如果能自己设置 jk 翻页之类的就好了， <a
href="/posts/2024-05-23-buildskim">之前</a>修改了代码， 勉强可用，
但是后来花了很长时间问 AI 工具都没搞明白如何更新目录和页码.</li>
<li><p></p>

<a href="https://en.wikipedia.org/wiki/Preview_(macOS)">Preview</a>
是一坨屎. 为什么文件修改之后要 focus 才能更新页面？
设置的视图在文件重新加载也不能恢复. 这就导致完全无法用 Preview 来
preview :( skim 和 Preview 都用 Apple pdfkit, 在 app
显示了纵向滚动条的情况下 pdfkit 不能正确处理 pdf 页面宽度. (见 skim <a
href="https://sourceforge.net/p/skim-app/bugs/1520/">bug report</a>)
<blockquote>
<p></p>
我的解决方法是调整 skim 显示 scrollbar 的模式
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">defaults</span> write net.sourceforge.skim-app.skim AppleShowScrollBars <span class="at">-string</span> <span class="st">&quot;WhenScrolling&quot;</span></span></code></pre></div>
<p></p>
Preview 在 pdf 里面的搜索功能据说会漏掉一些.
</blockquote></li>
<li><p></p>

<a href="https://mozilla.github.io/pdf.js/">PDF.js(in Firefox)</a> 比
chrome 的阅读器好很多.
某个版本是使用<code>j,k</code>移动页面的(也许我记错了， 是 chrome 的<a
href="https://github.com/gdh1995/vimium-c/issues/7">插件</a> ),
但是目前变成了翻页. 这种按键逻辑很奇怪，
为什么已经有了<code>n,p</code>来翻页还要把<code>j,k</code>设置成这样的功能？
即使有人想用<code>j,k</code>来翻页， 那么使用 singe page mode 也可以. <a
href="https://www.sumatrapdfreader.org/free-pdf-reader">sumatra</a>
的快捷键就是这样设计的， 可惜只能在 windows 上用. 如果用 PDF.js
来和编辑器一起写纸的话， vscode 的插件可以在 tab 里用 PDF.js 预览，
编译之后自动刷新， 速度有点慢.</li>
<li><p></p>

zotero 内置的 reader. 优点是可以准确的显示 link 到的东西(skim
有类似功能，但是不能准确显示到目标), 但是滚动起来好卡， 而且 zotero 的
tab 用起来很难受. 但是 zotero 有个很好的插件 <a
href="https://github.com/retorquere/zotero-open-pdf"
class="uri">https://github.com/retorquere/zotero-open-pdf</a>,
让你来选择用什么 reader 打开.</li>
</ol>
<p></p>
对于写 latex 来说， 实际上不需要频繁看编译出来的内容. 我觉得<a
href="https://tony-zorman.com/posts/pretty-latex.html">这种 Emacs
mode</a> 就很好， 但是我不想花时间学如何用 Emacs
<p></p>
用<code>jk</code>移动页面是 Okular 的习惯. 如果能修改 skim,
加入一个修改快捷键的功能会很好， 但是对于不懂 objective-c
的人来说可能太难了. 另一个困难是 skim 源码在 SourceForge 上， 要用 svn.
    </section>
</article>
]]></description>
    <pubDate>Fri, 23 May 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/readpdfmacos/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Zed theme for VSCode</title>
    <link>https://talldoor.uk/posts/zedtheme/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on May 19, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;zzz&#39;." href="/tags/zzz/index.html" rel="tag">zzz</a>
        
    </div>    
    <section class="body">
        <p></p>
<a href="https://zed.dev/">Zed</a> is a great editor. I especially like
the One Light theme in Zed. But for some reasons I cannot fully switch
to it.
<p></p>
Throw the following into <code>settings.json</code> to make the Light
Modern theme looks like Zed’s One Light.
<pre class="jsonc"><code>// colors from zed&#39;s one light theme
&quot;editor.lineHeight&quot;: 1.6,
&quot;workbench.colorTheme&quot;: &quot;Default Light Modern&quot;,
&quot;workbench.colorCustomizations&quot;: {
    &quot;titleBar.activeBackground&quot;: &quot;#dcdcdd&quot;,
    &quot;titleBar.inactiveBackground&quot;: &quot;#dcdcdd&quot;,
    &quot;editor.lineHighlightBackground&quot;: &quot;#efeff0&quot;,
    &quot;editor.lineHighlightBorder&quot;: &quot;#efeff0&quot;,
    &quot;tab.activeBackground&quot;: &quot;#fafafb&quot;,
    &quot;tab.inactiveBackground&quot;: &quot;#ebebec&quot;,
    &quot;tab.border&quot;: &quot;#c9c9ca&quot;,
    &quot;tab.activeBorder&quot;: &quot;#fafafb&quot;,
    &quot;tab.activeBorderTop&quot;: &quot;#fafafb&quot;,
    &quot;tab.selectedBorderTop&quot;: &quot;#fafafb&quot;,
    &quot;editorGroupHeader.tabsBackground&quot;: &quot;#ebebec&quot;,
    &quot;editorGroupHeader.border&quot;: &quot;#ebebec&quot;,
    &quot;statusBar.background&quot;: &quot;#dcdcdd&quot;,
    &quot;activityBar.background&quot;: &quot;#ebebec&quot;,
    &quot;editorCursor.foreground&quot;: &quot;#526FFF&quot;
},
&quot;editor.tokenColorCustomizations&quot;: {
    &quot;textMateRules&quot;: [
        {
            &quot;scope&quot;: [
                // in light_plus
                &quot;constant.character&quot;,
                &quot;constant.other.option&quot;,
                // in light_vs
                &quot;meta.embedded&quot;,
                &quot;source.groovy.embedded&quot;,
                &quot;string meta.image.inline.markdown&quot;,
                &quot;variable.legacy.builtin.python&quot;,
                &quot;constant.language&quot;,
                &quot;meta.preprocessor&quot;,
                &quot;entity.name.function.preprocessor&quot;,
                &quot;storage&quot;,
                &quot;storage.type&quot;,
                &quot;storage.modifier&quot;,
                &quot;keyword.operator.noexcept&quot;,
                &quot;string.comment.buffered.block.pug&quot;,
                &quot;string.quoted.pug&quot;,
                &quot;string.interpolated.pug&quot;,
                &quot;string.unquoted.plain.in.yaml&quot;,
                &quot;string.unquoted.plain.out.yaml&quot;,
                &quot;string.unquoted.block.yaml&quot;,
                &quot;string.quoted.single.yaml&quot;,
                &quot;string.quoted.double.xml&quot;,
                &quot;string.quoted.single.xml&quot;,
                &quot;string.unquoted.cdata.xml&quot;,
                &quot;string.quoted.double.html&quot;,
                &quot;string.quoted.single.html&quot;,
                &quot;string.unquoted.html&quot;,
                &quot;string.quoted.single.handlebars&quot;,
                &quot;string.quoted.double.handlebars&quot;,
                &quot;punctuation.definition.template-expression.begin&quot;,
                &quot;punctuation.definition.template-expression.end&quot;,
                &quot;punctuation.section.embedded&quot;,
                &quot;keyword&quot;,
                &quot;keyword.control&quot;,
                &quot;keyword.operator.new&quot;,
                &quot;keyword.operator.expression&quot;,
                &quot;keyword.operator.cast&quot;,
                &quot;keyword.operator.sizeof&quot;,
                &quot;keyword.operator.alignof&quot;,
                &quot;keyword.operator.typeid&quot;,
                &quot;keyword.operator.alignas&quot;,
                &quot;keyword.operator.instanceof&quot;,
                &quot;keyword.operator.logical.python&quot;,
                &quot;keyword.operator.wordlike&quot;,
                &quot;variable.language&quot;,
            ],
            &quot;settings&quot;: {
                &quot;foreground&quot;: &quot;#4e77ea&quot;
            }
        },
        {
            &quot;scope&quot;: [
                &quot;constant.character.escape&quot;
            ],
            &quot;settings&quot;: {
                &quot;foreground&quot;: &quot;#AA4A44&quot;,
            }
        },
    ]
},</code></pre>
<figure>
<img src="/images/zedtheme/example.png" alt="example" />
<figcaption aria-hidden="true">example</figcaption>
</figure>
    </section>
</article>
]]></description>
    <pubDate>Mon, 19 May 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/zedtheme/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>"Gotchas" in Combinatorial Optimization</title>
    <link>https://talldoor.uk/posts/misleading_ideas/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on April 30, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>, <a title="All pages tagged &#39;alg&#39;." href="/tags/alg/index.html" rel="tag">alg</a>
        
    </div>    
    <section class="body">
        <p></p>
It would be fun to have a list of misleading ideas and traps in CO. I
will update this post for new problems.
<h1 data-number="1" id="polytope-for-s-t-cut"><span
class="header-section-number">1</span> Polytope for s-t cut</h1>
<p></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>p</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mrow><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> </mtext><mspace width="0.333em"></mspace></mrow><mi>s</mi><mtext mathvariant="normal">-</mtext><mi>t</mi><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> path </mtext><mspace width="0.333em"></mspace></mrow><mi>p</mi></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>0</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{equation}
\begin{aligned}
\sum_{e\in p} x_e &amp;\geq 1   &amp;   &amp;\forall \text{ $s$-$t$ path $p$}\\
              x_e &amp;\geq 0   &amp;   &amp;\forall e\in E
\end{aligned}
\end{equation}</annotation></semantics></math> Is this polytope
integral?
<p></p>
Initially I thought, we have max flow min cut thm and flow polytope is
integral and this path formulation of s-t cut should be the dual of flow
problem and thus it is integral. However, hitting spanning tree (dual to
tree packing) formulation has a integrality gap of 2. Make sense.
<p></p>
However, LP(1) is <strong>not</strong> <a
href="https://en.wikipedia.org/wiki/Max-flow_min-cut_theorem#Linear_program_formulation">the
dual of Max-flow</a>.
<h1 data-number="2" id="size-of-support"><span
class="header-section-number">2</span> Size of support</h1>
<p></p>
Given a linear program with a rank
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
constraint matrix, what is the size of support of its optimal solution?
<p></p>
This is mentioned in <a href="/posts/basepacking">a previous post</a>.
The description there is not precise. Consider the following linear
program,
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msup><mi>c</mi><mi>T</mi></msup><mi>x</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>A</mi><mi>x</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mi>b</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>x</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>0</mn></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp;   &amp;   c^Tx&amp;   \\
s.t.&amp;   &amp;   Ax&amp;\leq b\\
    &amp;   &amp;   x&amp;\geq 0
\end{aligned}
</annotation></semantics></math></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
be the rank of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
We may assume
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>b</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">b\geq0</annotation></semantics></math>.
For any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
that this LP has a bounded solution, there must exist an optimal
solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>
with support at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>.
There are at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
tight constraints in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mi>x</mi><mo>≤</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">Ax\leq b</annotation></semantics></math>
and hence the optimal solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>
lies in the intersection of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi mathvariant="double-struck">ℝ</mi><mo>+</mo><mi>n</mi></msubsup><annotation encoding="application/x-tex">\mathbb{R}^n_+</annotation></semantics></math>
and a rank
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>≥</mo><mi>n</mi><mo>−</mo><mi>r</mi></mrow><annotation encoding="application/x-tex">\geq n-r</annotation></semantics></math>
affine subspace, which is a convex polyhedron. If the LP has a bounded
solution, then the optimal
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>
must be some vertex of the polyhedron. To make a point in our affine
subspace a vertex in the polyhedron, we need at least
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mi>r</mi></mrow><annotation encoding="application/x-tex">n-r</annotation></semantics></math>
hyperplanes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">x_i=0</annotation></semantics></math>,
each of the hyperplanes gives us a zero coordinate. Thus for any bounded
solution, the support is at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>.
<p></p>
What about integer programs? One may think that the support should also
be at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>,
since the 0s in the optimal solution of its linear relaxation are
integers. But rounding the fractional coordinates may break the
feasibility. The currently best upperbound is roughly
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo stretchy="false" form="prefix">(</mo><mn>3</mn><mo stretchy="false" form="postfix">∥</mo><mi>A</mi><msub><mo stretchy="false" form="postfix">∥</mo><mn>1</mn></msub><mo>+</mo><msqrt><mrow><mrow><mi mathvariant="normal">log</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mo stretchy="false" form="postfix">∥</mo><mi>A</mi><msub><mo stretchy="false" form="postfix">∥</mo><mn>1</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow></msqrt><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">m (3\|A\|_1+\sqrt{\log( \|A\|_1 )})</annotation></semantics></math>
<span class="citation"
data-cites="Berndt_Brinkop_Jansen_Mnich_Stamm_2023">[<a
href="#ref-Berndt_Brinkop_Jansen_Mnich_Stamm_2023"
role="doc-biblioref">1</a>]</span>.
<h1 data-number="3" id="cocircuit-space-of-binary-matroids"><span
class="header-section-number">3</span> Cocircuit space of binary
matroids</h1>
<p></p>
This comes from the proof of Lemma 4.2 in <span class="citation"
data-cites="geelen_computing_2018">[<a href="#ref-geelen_computing_2018"
role="doc-biblioref">2</a>]</span>.
<p></p>
First, recall that we have the following property for binary matroid.
<div id="roweqcocycle" class="theorem-environment Proposition"
data-index="1" type="Proposition"
title="[@oxley_matroid_2011,Proposition 9.2.2]">
<span class="theorem-header"><span class="type">Proposition</span><span
class="index">1</span><span class="name"><span class="citation"
data-cites="oxley_matroid_2011">[<a href="#ref-oxley_matroid_2011"
role="doc-biblioref">3</a>,Proposition 9.2.2]</span></span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
be a binary representation of a
rank-<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
binary matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
Then the cocircuit space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
equals the row space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
Moreover, this space has dimension
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
and is the orthogonal subspace of the circuit space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
</div>
<p></p>
To see this proposition, consider doing some row operations and deleting
zero rows to make the matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
become
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>I</mi><mi>r</mi></msub><mo stretchy="false" form="prefix">|</mo><mi>D</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">[I_r| D]</annotation></semantics></math>.
Note that row operations do not change the row space. The set of the
first
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
columns is a base of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
and the set of the rest
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mi>r</mi></mrow><annotation encoding="application/x-tex">n-r</annotation></semantics></math>
columns is a cobase. Denote this base by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
and the cobase by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>B</mi><mo>*</mo></msup><annotation encoding="application/x-tex">B^*</annotation></semantics></math>.
Now the support of each row is a fundamental cociruit with respect to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>B</mi><mo>*</mo></msup><annotation encoding="application/x-tex">B^*</annotation></semantics></math>.
To see this claim, we have several approaches:
<ol type="1">
<li>The dual matroids of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>I</mi><mi>r</mi></msub><mo stretchy="false" form="prefix">|</mo><mi>D</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">[I_r|D]</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><mi>−</mi><msup><mi>D</mi><mi>T</mi></msup><mo stretchy="false" form="prefix">|</mo><msub><mi>I</mi><mrow><mi>n</mi><mo>−</mo><mi>r</mi></mrow></msub><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">[-D^T|I_{n-r}]</annotation></semantics></math>.
Since we are working with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi mathvariant="double-struck">𝔽</mi><mn>2</mn></msub><annotation encoding="application/x-tex">\mathbb{F}_2</annotation></semantics></math>,
the dual is just the binary matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><msup><mi>D</mi><mi>T</mi></msup><mo stretchy="false" form="prefix">|</mo><msub><mi>I</mi><mrow><mi>n</mi><mo>−</mo><mi>r</mi></mrow></msub><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">[D^T|I_{n-r}]</annotation></semantics></math>.
The claim follows easily.</li>
<li>Take a row from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><msub><mi>I</mi><mi>r</mi></msub><mo stretchy="false" form="prefix">|</mo><mi>D</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">[I_r| D]</annotation></semantics></math>
and let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>F</mi><mo>*</mo></msup><annotation encoding="application/x-tex">F^*</annotation></semantics></math>
be the set of columns with value
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn>0</mn><annotation encoding="application/x-tex">0</annotation></semantics></math>.
One can easily see that this is a hyperplane since the rank is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">r-1</annotation></semantics></math>
and any column not in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>F</mi><mo>*</mo></msup><annotation encoding="application/x-tex">F^*</annotation></semantics></math>
has
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn>1</mn><annotation encoding="application/x-tex">1</annotation></semantics></math>
in that row, thus adding any element in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo>\</mo><msup><mi>F</mi><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">E\setminus F^*</annotation></semantics></math>
will increase the rank. Then the complement of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>F</mi><mo>*</mo></msup><annotation encoding="application/x-tex">F^*</annotation></semantics></math>
is a cocircuit.</li>
</ol>
<p></p>
The claim shows that the cocircuit space contains the row space. Now we
prove the other side. Every circuit is a fundamental circuit to some
base. Thus we can choose different cobase
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>B</mi><mo>*</mo></msup><annotation encoding="application/x-tex">B^*</annotation></semantics></math>
and do the same argument to show that every circuit in the row space.
Hence, the cocircuit space is the same as row space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
<p></p>
Here is the problem: Given a binary matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mrow><mi>r</mi><mo>×</mo><mi>n</mi></mrow></msubsup></mrow><annotation encoding="application/x-tex">A\in \mathbb{F}_2^{r\times n}</annotation></semantics></math>
and a cocycle
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>,
there exists a vector
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><msubsup><mi mathvariant="double-struck">𝔽</mi><mn>2</mn><mi>r</mi></msubsup></mrow><annotation encoding="application/x-tex">y\in \mathbb{F}_2^r</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>
remains a cocycle in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mi>T</mi></msup><mi>A</mi></mrow><annotation encoding="application/x-tex">y^T A</annotation></semantics></math>.
<p></p>
With <a href="#roweqcocycle" title="Proposition 1">Proposition 1</a>,
you may think that this looks fine. The incidence vector of any cocycle
is in the row space and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mi>T</mi></msup><mi>A</mi></mrow><annotation encoding="application/x-tex">y^T A</annotation></semantics></math>
is a linear combination of row vectors.
<p></p>
<strong>Counterexample</strong>: Consider the following binary matroid.
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">[</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd></mtr><mtr><mtd columnalign="center" style="text-align: center"></mtd></mtr></mtable><mo stretchy="true" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\begin{bmatrix}
0 &amp; 0 &amp; 0 &amp; 1 &amp; 1&amp; 1&amp; 1 \\
0&amp; 1&amp;1&amp;0&amp;0&amp;1&amp;1\\
1&amp;0&amp;1&amp;0&amp;1&amp;0&amp;1\\
\end{bmatrix}</annotation></semantics></math>
<p></p>
Any single column vector is a flat. So its complement should be a
cocycle. However, it is easy to see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">[</mo><mtable><mtr><mtd columnalign="center" style="text-align: center"><mn>0</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd><mtd columnalign="center" style="text-align: center"><mn>1</mn></mtd></mtr></mtable><mo stretchy="true" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\begin{bmatrix}
0 &amp; 1 &amp; 1 &amp; 1 &amp; 1&amp; 1&amp; 1
\end{bmatrix}</annotation></semantics></math> is not in the row space.
<p></p>
The bug is the definition of cocycle and cocircuit space. Cocycle is
union of cocircuits but things in cocircuit space is the symmetric
difference of cocircuits. (Or if you prefer to call the disjoint union
of circuits a cycle, the complement of flat is union of cocircuits not
cocycle.)
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-Berndt_Brinkop_Jansen_Mnich_Stamm_2023" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[1] </div><div class="csl-right-inline">S.
Berndt, H. Brinkop, K. Jansen, M. Mnich, T. Stamm, New support size
bounds for integer programming, applied to makespan minimization on
uniformly related machines, in: <em>34th International Symposium on
Algorithms and Computation (ISAAC 2023)</em>, Schloss Dagstuhl –
Leibniz-Zentrum für Informatik, 2023: pp. 13:1–13:18 <a
href="https://doi.org/10.4230/LIPIcs.ISAAC.2023.13">10.4230/LIPIcs.ISAAC.2023.13</a>.</div>
</div>
<div id="ref-geelen_computing_2018" class="csl-entry" role="listitem">
<div class="csl-left-margin">[2] </div><div class="csl-right-inline">J.
Geelen, R. Kapadia, Computing <span>Girth</span> and
<span>Cogirth</span> in <span>Perturbed</span> <span>Graphic</span>
<span>Matroids</span>, <em>Combinatorica</em>. 38 (2018) 167–191 <a
href="https://doi.org/10.1007/s00493-016-3445-3">10.1007/s00493-016-3445-3</a>.</div>
</div>
<div id="ref-oxley_matroid_2011" class="csl-entry" role="listitem">
<div class="csl-left-margin">[3] </div><div
class="csl-right-inline">J.G. Oxley, Matroid theory, 2nd ed, Oxford
University Press, Oxford ; New York, 2011.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Wed, 30 Apr 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/misleading_ideas/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Proving integrality gap for LPs</title>
    <link>https://talldoor.uk/posts/prove_integral_gap/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on April  1, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>, <a title="All pages tagged &#39;LP&#39;." href="/tags/LP/index.html" rel="tag">LP</a>
        
    </div>    
    <section class="body">
        <p></p>
Proving integral gap of linear programs are generally hard. It would be
great if one can classify LPs with a constant gap. It is known that
deciding whether a polyhedron is integral is co-NP-complete <span
class="citation" data-cites="ding_complexity_2008">[<a
href="#ref-ding_complexity_2008" role="doc-biblioref">1</a>]</span>. I
am interested in techniques for proving constant upperbound for integral
gaps of linear programs.
<p></p>
Here are some methods with examples that I read in books and papers.
<h1 data-number="1" id="counting"><span
class="header-section-number">1</span> Counting</h1>
<p></p>
Just do the counting.
<h2 data-number="1.1" id="tree-packing-theorem"><span
class="header-section-number">1.1</span> tree packing theorem</h2>
<div class="theorem-environment Example" data-index="1" type="Example">
<span class="theorem-header"><span class="type">Example</span><span
class="index">1</span></span>
<p></p>
Consider the following integer program on graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>,
<p></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>λ</mi><mo>=</mo><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>T</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>T</mi><mo>∈</mo><mi mathvariant="script">𝒯</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><msub><mi mathvariant="double-struck">ℤ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
\lambda=\min&amp;   &amp;  \sum_{e\in E} x_e&amp;       &amp;   &amp; \\
s.t.&amp;           &amp;  \sum_{e\in T} x_e&amp;\ge 1  &amp;   &amp;\forall T\in \mathcal T \\
 &amp;              &amp;  x_e&amp;\in\mathbb{Z}_{\ge 0}        &amp;   &amp;\forall e\in E
\end{align*}</annotation></semantics></math>
<p></p>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒯</mi><annotation encoding="application/x-tex">\mathcal T</annotation></semantics></math>
is the set of spanning tree in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>τ</mi><annotation encoding="application/x-tex">\tau</annotation></semantics></math>
be the optimum of the linear relaxation.
</div>
<div class="theorem-environment Theorem" data-index="2" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">2</span></span>
<p></p>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>λ</mi><mo>≤</mo><mn>2</mn><mi>τ</mi></mrow><annotation encoding="application/x-tex">\lambda \le 2 \tau</annotation></semantics></math>.
</div>
<p></p>
Note that the optimum solution to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>λ</mi><annotation encoding="application/x-tex">\lambda</annotation></semantics></math>
is the minimum cut in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
It is known that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>τ</mi><annotation encoding="application/x-tex">\tau</annotation></semantics></math>
is the maximum tree packing in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>τ</mi><mo>=</mo><munder><mi mathvariant="normal">min</mi><mrow><mi>F</mi><mo>⊂</mo><mi>E</mi></mrow></munder><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo>−</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">\tau=\min\limits_{F\subset E}\frac{|E-F|}{r(E)-r(F)}</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
is the rank of the graphic matroid on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
<span class="citation" data-cites="Schrijver2004">[<a
href="#ref-Schrijver2004" role="doc-biblioref">2</a>]</span>. Then the
proof is a simple counting argument.
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
is not connected, Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>G</mi><mn>1</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>G</mi><mi>k</mi></msub></mrow><annotation encoding="application/x-tex">G_1,...,G_k</annotation></semantics></math>
be the set of components in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
One can easily see that the gap of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
is at most the largest gap of the components. Thus considering connected
graphs is sufficient.
<p></p>
We fix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>F</mi><mo>*</mo></msup><mo>∈</mo><mrow><mi mathvariant="normal">arg</mi><mo>&#8289;</mo></mrow><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo>−</mo><msup><mi>F</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>F</mi><mo>*</mo></msup><mo stretchy="false" form="postfix">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">F^*\in \arg\min \frac{|E-F^*|}{r(E)-r(F^*)}</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>F</mi><mo>*</mo></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">r(E)-r(F^*)</annotation></semantics></math>
must be positive and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo>−</mo><msup><mi>F</mi><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">E-F^*</annotation></semantics></math>
is a cut in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
Suppose
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo>−</mo><msup><mi>F</mi><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">E-F^*</annotation></semantics></math>
is any cut in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>S</mi><mn>1</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>S</mi><mi>h</mi></msub></mrow><annotation encoding="application/x-tex">S_1,...,S_h</annotation></semantics></math>
be components in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>\</mo><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo>\</mo><msup><mi>F</mi><mo>*</mo></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G\setminus (E\setminus F^*)</annotation></semantics></math>.
For any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>S</mi><mi>i</mi></msub><annotation encoding="application/x-tex">S_i</annotation></semantics></math>,
the set of edges with exactly one endpoint in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>S</mi><mi>i</mi></msub><annotation encoding="application/x-tex">S_i</annotation></semantics></math>
(denoted by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo stretchy="false" form="prefix">[</mo><msub><mi>S</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">e[S_i]</annotation></semantics></math>)
must contain a cut of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
since the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
is connected. One can see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo>−</mo><msup><mi>F</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">|</mo><mo>=</mo><msub><mo>∑</mo><mi>i</mi></msub><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo stretchy="false" form="prefix">[</mo><msub><mi>S</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="prefix">|</mo><mo>≥</mo><mi>λ</mi><mo stretchy="false" form="prefix">(</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">2|E-F^*|=\sum_i |e[S_i]|\ge \lambda (r(E)-r(F))</annotation></semantics></math>
since the number of component is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>F</mi><mo>*</mo></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">r(E)-r(F^*)</annotation></semantics></math>.
</div>
<h2 data-number="1.2" id="k-cut"><span
class="header-section-number">1.2</span>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-cut</h2>
<div class="theorem-environment Example" data-index="3" type="Example">
<span class="theorem-header"><span class="type">Example</span><span
class="index">3</span></span>
<p></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>λ</mi><mi>k</mi></msub><mo>=</mo><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow></munder><mi>c</mi><mo stretchy="false" form="prefix">(</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mi>e</mi><mo stretchy="false" form="postfix">)</mo><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>T</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mi>k</mi></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>T</mi><mo>∈</mo><mi mathvariant="script">𝒯</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mn>0</mn><mo>≤</mo><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
\lambda_k=\min&amp;   &amp;  \sum_{e\in E} c(&amp;e)x_e       &amp;   &amp; \\
s.t.&amp;             &amp;  \sum_{e\in T} x_e&amp;\ge k  &amp;   &amp;\forall T\in \mathcal T \\
 &amp;                &amp;  0\le x_e&amp;\le 1        &amp;   &amp;\forall e\in E
\end{align*}</annotation></semantics></math>
</div>
<div class="theorem-environment Theorem" data-index="4" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">4</span></span>
<p></p>
The integral gap of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>λ</mi><mi>k</mi></msub><annotation encoding="application/x-tex">\lambda_k</annotation></semantics></math>
is at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mn>1</mn><mi>/</mi><mi>n</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">2(1-1/n)</annotation></semantics></math>.
</div>
<p></p>
The proof is in section 5 of <span class="citation"
data-cites="chekuri_lp_2020">[<a href="#ref-chekuri_lp_2020"
role="doc-biblioref">3</a>]</span>. Here is a sketch.
<p></p>
For
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-cut
we cannot use the simple counting argument since the dual LP is not a
tree packing. (the LP dual needs extra variables
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>z</mi><mi>e</mi></msub><annotation encoding="application/x-tex">z_e</annotation></semantics></math>
for constraints
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>e</mi></msub><mo>≤</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">x_e\le 1</annotation></semantics></math>.)
However, it is still easy to find an upperbound for the integral
optimum. If we sort vertices in increasing order of their degree, that
is,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">deg</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>v</mi><mn>1</mn></msub><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>…</mi><mo>≤</mo><mrow><mi mathvariant="normal">deg</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>v</mi><mi>n</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{deg}}(v_1)\le \dots \le \mathop{\mathrm{deg}}(v_n)</annotation></semantics></math>,
then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>k</mi><mo>−</mo><mn>1</mn></mrow></msubsup><mrow><mi mathvariant="normal">deg</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>v</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sum_{i=1}^{k-1} \mathop{\mathrm{deg}}(v_i)</annotation></semantics></math>
is an upperbound for integral
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-cut.
Then it is easy to prove that if the optimal solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>λ</mi><mi>k</mi></msub><annotation encoding="application/x-tex">\lambda_k</annotation></semantics></math>
is fully fractional
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>x</mi><mi>e</mi><mo>*</mo></msubsup><mo>∈</mo><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x_e^*\in (0,1)</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">e\in E</annotation></semantics></math>),
then the gap is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mn>1</mn><mi>/</mi><mi>n</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">2(1-1/n)</annotation></semantics></math>.
The proof is to use complemantary slackness conditions, i.e.,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>z</mi><mi>e</mi></msub><mo>=</mo><mn>0</mn><mo>,</mo><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>T</mi></mrow></msub><msub><mi>y</mi><mi>T</mi></msub><mo>=</mo><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mspace width="0.278em"></mspace><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">z_e=0,\sum_{e\in T}y_T=c(e)\;\forall e\in E</annotation></semantics></math>.
The following observations reduce general
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>
to fully fractional case:
<ol type="1">
<li>Given an optimal solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>,
let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>X</mi><annotation encoding="application/x-tex">X</annotation></semantics></math>
be the set of edges
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>x</mi><mi>e</mi><mo>*</mo></msubsup><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">x_e^*=0</annotation></semantics></math>.
The optimum to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>λ</mi><mi>k</mi></msub><annotation encoding="application/x-tex">\lambda_k</annotation></semantics></math>
on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mi>/</mi><mi>X</mi></mrow><annotation encoding="application/x-tex">G/X</annotation></semantics></math>
is the same as on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.</li>
<li>For an optimal solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>,
let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
be the set of edges
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>x</mi><mi>e</mi><mo>*</mo></msubsup><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">x_e^*=1</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>x</mi><mo>*</mo></msup><msub><mo stretchy="false" form="prefix">|</mo><mrow><mi>E</mi><mo>−</mo><mi>F</mi></mrow></msub></mrow><annotation encoding="application/x-tex">x^*|_{E-F}</annotation></semantics></math>
be the restriction of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo>−</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">E-F</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>x</mi><mo>*</mo></msup><msub><mo stretchy="false" form="prefix">|</mo><mrow><mi>E</mi><mo>−</mo><mi>F</mi></mrow></msub></mrow><annotation encoding="application/x-tex">x^*|_{E-F}</annotation></semantics></math>
is a fully fractional optimum solution to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>λ</mi><mi>k</mi></msub><annotation encoding="application/x-tex">\lambda_k</annotation></semantics></math>.
(Some discussions are needed for the number of components in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>\</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">G\setminus F</annotation></semantics></math>.
The reduction can be done using the fact that if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>≤</mo><mfrac><mi>λ</mi><mi>σ</mi></mfrac><mo>≤</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">1\leq \frac{\lambda}{\sigma}\le c</annotation></semantics></math>
then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>≤</mo><mfrac><mrow><mi>λ</mi><mo>+</mo><mi>k</mi></mrow><mrow><mi>σ</mi><mo>+</mo><mi>k</mi></mrow></mfrac><mo>≤</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">1\le \frac{\lambda+k}{\sigma+k}\le c</annotation></semantics></math>.)</li>
</ol>
<h1 data-number="2" id="rounding"><span
class="header-section-number">2</span> Rounding</h1>
<p></p>
A constant factor approximation algorithm based on LP may imply a
constant upperbound of the corresponding LP.
<p></p>
Examples:
<ol class="example" type="1">
<li>vertex cover. simple threshold rounding or the LP structure (there
is a half integral optimal solution)</li>
<li>facility location. <a
href="https://www.cs.dartmouth.edu/~deepc/LecNotes/Appx/5.%20Deterministic%20Rounding%20for%20Facility%20Location.pdf">Dartmouth</a></li>
<li>CKR relaxation of multiway cut <a
href="https://courses.grainger.illinois.edu/cs583/sp2018/Notes/multiwaycut-ckr.pdf">uiuc
cs583 sp18</a></li>
<li>uniform labeling (multiway cut with assignment cost) <a
href="https://www.cs.cornell.edu/home/kleinber/focs99-mrf.pdf">FOCS’99</a></li>
<li>generalized steiner network problem with skew-supermodular
requirements. iterative rounding. <a
href="https://courses.grainger.illinois.edu/cs598csc/sp2009/lectures/lecture_14_draft.pdf">uiuc
cs598 sp09</a></li>
</ol>
<h1 data-number="3" id="intermediate-problem"><span
class="header-section-number">3</span> Intermediate problem</h1>
<p></p>
I read about this in <span class="citation"
data-cites="chalermsook_approximating_2022">[<a
href="#ref-chalermsook_approximating_2022"
role="doc-biblioref">4</a>]</span>. Suppose that we want to prove
constant gap for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>P</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">LP1</annotation></semantics></math>.
The idea is to find another LP (say
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>P</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">LP2</annotation></semantics></math>)
which is integral or has constant gap and to prove that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mfrac><mrow><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>I</mi><mi>P</mi><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><mrow><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>I</mi><mi>P</mi><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow></mfrac><mo>≤</mo><msub><mi>c</mi><mn>1</mn></msub></mrow><annotation encoding="application/x-tex">\frac{\mathop{\mathrm{OPT}}(IP1)}{\mathop{\mathrm{OPT}}(IP2)}\le c_1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mfrac><mrow><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mn>2</mn><mo stretchy="false" form="postfix">)</mo></mrow><mrow><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow></mfrac><mo>≤</mo><msub><mi>c</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">\frac{\mathop{\mathrm{OPT}}(LP2)}{\mathop{\mathrm{OPT}}(LP1)}\le c_2</annotation></semantics></math>.
Finally we will have something like this,
<p></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>I</mi><mi>P</mi><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><msub><mi>c</mi><mn>1</mn></msub><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>I</mi><mi>P</mi><mn>2</mn><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><msub><mi>c</mi><mn>1</mn></msub><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mn>2</mn><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><msub><mi>c</mi><mn>1</mn></msub><msub><mi>c</mi><mn>2</mn></msub><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\begin{equation}
\mathop{\mathrm{OPT}}(IP1)\le c_1\mathop{\mathrm{OPT}}(IP2)\le c_1 \mathop{\mathrm{OPT}}(LP2)\le c_1 c_2 \mathop{\mathrm{OPT}}(LP1)
\end{equation}</annotation></semantics></math>
<h2 data-number="3.1"
id="minimum-k-edge-connected-spanning-subgraph"><span
class="header-section-number">3.1</span> minimum
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-edge-connected
spanning subgraph</h2>
<p></p>
This problem is a special case of 5 in the rounding part.
<p></p>
We want to prove that the integral gap for the following LP is 2.
<p></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>L</mi><mi>P</mi><mn>1</mn><mo>=</mo><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow></munder><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo stretchy="false" form="postfix">)</mo><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mi>k</mi></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mrow><mrow><mtext mathvariant="normal">cut </mtext><mspace width="0.333em"></mspace></mrow><mi>C</mi></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mn>0</mn><mo>≤</mo><msub><mi>x</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
LP1=\min&amp;   &amp; \sum_{e\in E} w(e&amp;)x_e    &amp; &amp;\\
s.t.&amp;       &amp; \sum_{e\in C} x_e&amp;\ge k    &amp; &amp;\forall \text{cut $C$}\\
&amp;           &amp;  0\le x_e &amp;\le 1    &amp; &amp;\forall e\in E
\end{align*}</annotation></semantics></math>
<p></p>
(Finding the minimum
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-edge-connected
spanning subgraph of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>)
<p></p>
Now we construct LP2. Consider the bidirection version of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>,
denoted by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>D</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">D=(V,A)</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>=</mo><mo stretchy="false" form="prefix">{</mo><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo><mo>,</mo><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo>,</mo><mi>u</mi><mo stretchy="false" form="postfix">)</mo><mspace width="1.0em"></mspace><mo>∀</mo><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><mi>E</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">A=\{(u,v),(v,u) \quad \forall (u,v)\in E\}</annotation></semantics></math>.
Pick a special vertex
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>.
<p></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>L</mi><mi>P</mi><mn>2</mn><mo>=</mo><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>A</mi></mrow></munder><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><msub><mi>y</mi><mi>e</mi></msub></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><msup><mi>δ</mi><mo>+</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo></mrow></munder><msub><mi>y</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mi>k</mi></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>S</mi><mo>⊂</mo><mi>V</mi><mo>∧</mo><mi>r</mi><mo>∈</mo><mi>S</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mn>0</mn><mo>≤</mo><msub><mi>y</mi><mi>e</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
LP2=\min&amp;   &amp; \sum_{e\in A} w(e)&amp;y_e            &amp; &amp; \\
s.t.&amp;       &amp; \sum_{e\in \delta^+(S)} y_e&amp;\ge k &amp; &amp;\forall S\subset V \land r\in S\\
 &amp;          &amp; 0\le y_e &amp;\le 1                   &amp;  &amp;\forall e\in E
\end{align*}</annotation></semantics></math>
<p></p>
(Finding min k-arborescence)
<p></p>
It is known that the polytope in LP2 is integral <span class="citation"
data-cites="Schrijver2004">[<a href="#ref-Schrijver2004"
role="doc-biblioref">2</a>]</span>. Given any feasible solution of LP,
for any edge
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">e=(u,v)\in E</annotation></semantics></math>
we set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>y</mi><mrow><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow></msub><mo>=</mo><msub><mi>y</mi><mrow><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo>,</mo><mi>u</mi><mo stretchy="false" form="postfix">)</mo></mrow></msub><mo>=</mo><msub><mi>x</mi><mi>e</mi></msub></mrow><annotation encoding="application/x-tex">y_{(u,v)}=y_{(v,u)}=x_e</annotation></semantics></math>.
Thus the optimum of LP2 is no larger than
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">2\mathop{\mathrm{OPT}}(LP)</annotation></semantics></math>
since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
is always feasible.
<p></p>
On the other hand, given a feasible integral solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
of LP2, we set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>e</mi></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">x_e=1</annotation></semantics></math>
if any orientation of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
is in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>.
It is clear from the definition of LP2 that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>x</mi><mi>e</mi></msub><annotation encoding="application/x-tex">x_e</annotation></semantics></math>
is a feasible integral solution of LP. Hence, applying eq(1) proves that
the integral gap of LP is 2. (Note that in this example
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>c</mi><mn>1</mn></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">c_1=1</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>c</mi><mn>2</mn></msub><mo>=</mo><mn>2</mn></mrow><annotation encoding="application/x-tex">c_2=2</annotation></semantics></math>.)
<h1 data-number="4" id="notes"><span
class="header-section-number">4</span> Notes</h1>
<p></p>
There are many discussions about the integrality gap on cstheory.
<ol type="1">
<li><a
href="https://cstheory.stackexchange.com/questions/30984/exactly-solvable-but-non-trivial-integrality-gap"
class="uri">https://cstheory.stackexchange.com/questions/30984/exactly-solvable-but-non-trivial-integrality-gap</a></li>
<li><a
href="https://cstheory.stackexchange.com/questions/4915/integrality-gap-and-approximation-ratio"
class="uri">https://cstheory.stackexchange.com/questions/4915/integrality-gap-and-approximation-ratio</a></li>
<li><a
href="https://cstheory.stackexchange.com/questions/392/the-importance-of-integrality-gap"
class="uri">https://cstheory.stackexchange.com/questions/392/the-importance-of-integrality-gap</a></li>
<li><a
href="https://cstheory.stackexchange.com/questions/55188/randomized-rounding-schemes-that-depend-on-the-weights-in-the-lp-objective"
class="uri">https://cstheory.stackexchange.com/questions/55188/randomized-rounding-schemes-that-depend-on-the-weights-in-the-lp-objective</a></li>
<li><a
href="https://cstheory.stackexchange.com/questions/21060/optimization-problems-with-minimax-characterization-but-no-polynomial-time-algo"
class="uri">https://cstheory.stackexchange.com/questions/21060/optimization-problems-with-minimax-characterization-but-no-polynomial-time-algo</a></li>
<li><a
href="https://cstheory.stackexchange.com/questions/3871/minimum-maximal-solutions-of-lps"
class="uri">https://cstheory.stackexchange.com/questions/3871/minimum-maximal-solutions-of-lps</a></li>
</ol>
<p></p>
It seems that the integrality gap has a deep connection with hardness of
approximation. There are two kinds of problems that i find particularly
interesting.
<ul>
<li>The LP has a relatively large gap, but some algorithm based on that
LP achieves a better approximation than the gap.(see <a
href="http://www.cis.upenn.edu/~sanjeev/postscript/FOCS09_MaxMin.pdf">this
FOCS’09 paper</a>)</li>
<li>The integrality gap is small (a constant), but approximation algs
based on the LP cannot do that good. (Zhiyi Huang gave a <a
href="https://tcsuestc.com/2025/06/13/optimal-4-approximation-for-the-correlated-pandoras-problem/">talk
at UESTC</a> recently. <a href="https://arxiv.org/abs/2509.17029"
class="uri">https://arxiv.org/abs/2509.17029</a> The correlated
Pandora’s problem has a natural LP formulation with gap
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>&lt;</mo><mn>4</mn></mrow><annotation encoding="application/x-tex">&lt;4</annotation></semantics></math>,
while <a href="https://tetali.math.gatech.edu/PUBLIS/mssc_final.pdf">it
is NP-hard</a> to aproximate it within a ratio of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>4</mn><mo>−</mo><mi>ϵ</mi></mrow><annotation encoding="application/x-tex">4-\epsilon</annotation></semantics></math>.)</li>
</ul>
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-ding_complexity_2008" class="csl-entry" role="listitem">
<div class="csl-left-margin">[1] </div><div class="csl-right-inline">G.
Ding, L. Feng, W. Zang, The complexity of recognizing linear systems
with certain integrality properties, <em>Mathematical Programming</em>.
114 (2008) 321–334 <a
href="https://doi.org/10.1007/s10107-007-0103-y">10.1007/s10107-007-0103-y</a>.</div>
</div>
<div id="ref-Schrijver2004" class="csl-entry" role="listitem">
<div class="csl-left-margin">[2] </div><div class="csl-right-inline">A.
Schrijver, <a
href="http://books.google.com/books?hl=en&amp;lr=&amp;id=mqGeSQ6dJycC&amp;oi=fnd&amp;pg=PA1&amp;dq=Combinatorial+optimization+Polyhedra+and+Efficiency&amp;ots=xPOTKYfsKd&amp;sig=aH7tG7iKLIIljl5SMMx2yWNMAbM">Combinatorial
optimization <span>Polyhedra</span> and <span>Efficiency</span></a>,
Springer, 2004.</div>
</div>
<div id="ref-chekuri_lp_2020" class="csl-entry" role="listitem">
<div class="csl-left-margin">[3] </div><div class="csl-right-inline">C.
Chekuri, K. Quanrud, C. Xu, <span>LP</span> <span>Relaxation</span> and
<span>Tree</span> <span>Packing</span> for <span>Minimum</span>
$k$-<span>Cut</span>, <em>SIAM Journal on Discrete Mathematics</em>. 34
(2020) 1334–1353 <a
href="https://doi.org/10.1137/19M1299359">10.1137/19M1299359</a>.</div>
</div>
<div id="ref-chalermsook_approximating_2022" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[4] </div><div class="csl-right-inline">P.
Chalermsook, C.-C. Huang, D. Nanongkai, T. Saranurak, P. Sukprasert, S.
Yingchareonthawornchai, Approximating
k-<span>Edge</span>-<span>Connected</span> <span>Spanning</span>
<span>Subgraphs</span> via a <span>Near</span>-<span>Linear</span>
<span>Time</span> <span>LP</span> <span>Solver</span>, in: <em>49th
<span>International</span> <span>Colloquium</span> on
<span>Automata</span>, <span>Languages</span>, and
<span>Programming</span> (<span>ICALP</span> 2022)</em>, Schloss
Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 2022: pp.
37:1–37:20 <a
href="https://doi.org/10.4230/LIPIcs.ICALP.2022.37">10.4230/LIPIcs.ICALP.2022.37</a>.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Tue, 01 Apr 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/prove_integral_gap/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Detecting base orderable matroids is NP-hard</title>
    <link>https://talldoor.uk/posts/detectingSBO/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on March 22, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;matroid&#39;." href="/tags/matroid/index.html" rel="tag">matroid</a>
        
    </div>    
    <section class="body">
        <blockquote>
<p></p>
This is posted on <a href="https://mathoverflow.net/questions/194006/"
class="uri">https://mathoverflow.net/questions/194006/</a>. But I guess
no one cares about negetive results on the algorithmic part of base
orderability. The OP left mathoverflow 7 years ago.
</blockquote>
<p></p>
Detecting (strong) base orderability of a general matroid is not in P
under the independence oracle model. The proof idea is to combine an
excluded minor theorem for base-orderability on paving matroids and
Seymour&amp;Walton’s theorem on the complexity of detecting matroid
minors.
<p></p>
<strong>Thm1</strong> [Bonin and Savitsky,
https://arxiv.org/pdf/1507.05521] <em>A paving matroid is base orderable
iff it has no
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mn>4</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(K_4)</annotation></semantics></math>
minor.</em>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="script">𝒞</mi><mo>≠</mo><mi>∅</mi></mrow><annotation encoding="application/x-tex">\mathscr C\not=\emptyset</annotation></semantics></math>
be a collection of matroids. We say
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathscr C</annotation></semantics></math>
is detectable if one can check for a matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
whether
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
contains any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>M</mi><mo>′</mo></msup><mo>∈</mo><mi mathvariant="script">𝒞</mi></mrow><annotation encoding="application/x-tex">M&#39;\in\mathscr C</annotation></semantics></math>
as a minor in polynomial number of oracle calls.
<p></p>
<strong>Thm2</strong> [Seymour and Walton] <em>If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathscr C</annotation></semantics></math>
is detectable, then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathscr C</annotation></semantics></math>
contains at least one uniform matroid.</em>
<p></p>
In order to show
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mn>4</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(K_4)</annotation></semantics></math>
is not detectable in paving matroids, we can prove that Thm2 holds on
paving matroids. The proof in Seymour and Walton’s paper constructs a
special matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A,B,E)</annotation></semantics></math>
based on any matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>M</mi><mo>′</mo></msup><mo>∈</mo><mi mathvariant="script">𝒞</mi></mrow><annotation encoding="application/x-tex">M&#39;\in \mathscr C</annotation></semantics></math>
(, which is non-uniform by assumption). They show that the constructed
matroid requires an exponentional number of oracle calls to be
distinguished from a uniform matroid. Their construction is as follows:
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>
be the ground set and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
the rank function of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>M</mi><mo>′</mo></msup><annotation encoding="application/x-tex">M&#39;</annotation></semantics></math>.
The groundset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A,B,E)</annotation></semantics></math>
has size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>2</mn><mi>t</mi><mo>+</mo><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo stretchy="false" form="prefix">|</mo></mrow><annotation encoding="application/x-tex">2t+|E|</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>
is any positive integer. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">A,B,E</annotation></semantics></math>
be a partition of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>A</mi><mo stretchy="false" form="prefix">|</mo><mo>=</mo><mo stretchy="false" form="prefix">|</mo><mi>B</mi><mo stretchy="false" form="prefix">|</mo><mo>=</mo><mi>t</mi></mrow><annotation encoding="application/x-tex">|A|=|B|=t</annotation></semantics></math>.
A subset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>X</mi><mo>⊆</mo><mi>S</mi></mrow><annotation encoding="application/x-tex">X\subseteq S</annotation></semantics></math>
is independent iff following conditions are both met,
<ol type="1">
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo>∩</mo><mi>A</mi><mo stretchy="false" form="prefix">|</mo><mi>+</mi><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo>∩</mo><mi>C</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi><mo>+</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo>∩</mo><mi>C</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">|X\cap A|+|X\cap C|\le t+r(X\cap C)</annotation></semantics></math>,</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>t</mi><mo>+</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>M</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">|X|\leq t+r(M&#39;)</annotation></semantics></math></li>
</ol>
<p></p>
In fact,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>,</mo><mi>B</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(A,B,E)</annotation></semantics></math>
is paving if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>M</mi><mo>′</mo></msup><annotation encoding="application/x-tex">M&#39;</annotation></semantics></math>
is paving. Thus Seymour’s proof applies to paving matroids and detecting
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>K</mi><mn>4</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(K_4)</annotation></semantics></math>
minor requires exponentional time even in paving matroids.
<p></p>
For strong base orderability, there is a infinite set of excluded
minors[https://arxiv.org/pdf/1507.05521, section 9]. However, none of
the excluded minors is unifor. I think Seymour and Walton’s proof still
applies.
<p></p>
<cite authors="Seymour, P. D.; Walton, P. N."><em>Seymour, P. D.;
Walton, P. N.</em>, <a
href="https://doi.org/10.1112/jlms/s2-2.2.193"><strong>Detecting matroid
minors</strong></a>, J. Lond. Math. Soc., II. Ser. 23, 193-203 (1981).
<a href="https://zbmath.org/?q=an:0487.05016">ZBL0487.05016</a>.</cite>
<p></p>
<cite authors="Bonin, Joseph E.; Savitsky, Thomas J."><em>Bonin, Joseph
E.; Savitsky, Thomas J.</em>, <a
href="https://doi.org/10.1016/j.laa.2015.09.055"><strong>An infinite
family of excluded minors for strong base-orderability</strong></a>,
Linear Algebra Appl. 488, 396-429 (2016). <a
href="https://zbmath.org/?q=an:1326.05025">ZBL1326.05025</a>.</cite>
    </section>
</article>
]]></description>
    <pubDate>Sat, 22 Mar 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/detectingSBO/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>LP with box constraints</title>
    <link>https://talldoor.uk/posts/lp_with_box_constraints/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on March 13, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>, <a title="All pages tagged &#39;LP&#39;." href="/tags/LP/index.html" rel="tag">LP</a>
        
    </div>    
    <section class="body">
        <p></p>
In <span class="citation"
data-cites="chalermsook_approximating_2022">[<a
href="#ref-chalermsook_approximating_2022"
role="doc-biblioref">1</a>]</span> the following edge-connectivity
related problem is studied.
<div class="theorem-environment Problem" data-index="1" type="Problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">1</span></span>
<p></p>
Given a undirected weighted graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>,
a weight function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo>:</mo><mi>E</mi><mo>→</mo><msub><mi mathvariant="double-struck">ℤ</mi><mo>+</mo></msub></mrow><annotation encoding="application/x-tex">w:E\to \mathbb{Z}_+</annotation></semantics></math>
and an integer
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>,
find a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-edge-connected
spanning subgraph of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
with the minimum weight.
</div>
<p></p>
Consider the following LP relaxation,
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mspace width="1.0em"></mspace><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow></munder><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><msub><mi>x</mi><mi>e</mi></msub></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mspace width="1.0em"></mspace><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>δ</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo></mrow></munder><msub><mi>x</mi><mi>e</mi></msub><mo>≥</mo><mi>k</mi></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>S</mi><mo>⊂</mo><mi>V</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mspace width="1.0em"></mspace><mn>0</mn><mo>≤</mo><msub><mi>x</mi><mi>e</mi></msub><mo>≤</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
    \min&amp; \quad \sum_{e\in E} w(e)x_e\\
    s.t.&amp; \quad \sum_{e\in \delta(S)}x_e\geq k  &amp;&amp;\forall S\subset V\\
        &amp; \quad 0\le x_e \le 1  &amp;&amp;\forall e\in E
\end{align*}</annotation></semantics></math></span>
<p></p>
Note that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>e</mi></msub><mo>≤</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">x_e\le 1</annotation></semantics></math>
is necessary since each edge can only be chosen once. In the paper the
authors mentioned that this kind of constraints are called box
constraints and they usually make LPs difficult to solve (for example,
positive covering LPs can be solved through MWU). There is also a
box-free version of LP relaxation,
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mspace width="1.0em"></mspace><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow></munder><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><msub><mi>x</mi><mi>e</mi></msub></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mspace width="1.0em"></mspace><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi><mo>\</mo><mi>S</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub><mo>≥</mo><mi>k</mi><mo>−</mo><mo stretchy="false" form="prefix">|</mo><mi>S</mi><mo stretchy="false" form="prefix">|</mo></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> cut </mtext><mspace width="0.333em"></mspace></mrow><mi>C</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>S</mi><mo>∈</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>F</mi><mo>:</mo><mo stretchy="false" form="prefix">|</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>k</mi><mo>−</mo><mn>1</mn><mo>∧</mo><mi>F</mi><mo>⊂</mo><mi>C</mi><mo stretchy="true" form="postfix">}</mo></mrow></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mspace width="1.0em"></mspace><mphantom><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi><mo>\</mo><mi>S</mi></mrow></munder></mphantom><msub><mi>x</mi><mi>e</mi></msub><mo>≥</mo><mn>0</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{align*}
    \min&amp; \quad \sum_{e\in E} w(e)x_e\\
    s.t.&amp; \quad \sum_{e\in C\setminus S}x_e\geq k-|S|  &amp;&amp;\forall \text{ cut } C\\
    &amp; &amp;&amp;\forall S\in \left\{ F: |F|\le k-1 \wedge  F\subset C \right\}\\
        &amp; \quad \phantom{\sum_{e\in C\setminus S}}  x_e\ge 0  &amp;&amp;\forall e\in E
\end{align*}
</annotation></semantics></math></span> which is box-free but includes
exponentially many extra constraints. I will call the first LP boxLP and
the second one boxlessLP. Any feasible solution to the boxLP is also
feasible in the boxlessLP. For any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>x</mi><mi>e</mi></msub><mo>&gt;</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">x_e&gt;1</annotation></semantics></math>
in a feasible solution of boxlessLP, we consider those cuts containing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>.
For such a cut
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>C</mi><annotation encoding="application/x-tex">C</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>f</mi><mo>∈</mo><mi>C</mi><mo>\</mo><mi>e</mi></mrow></msub><msub><mi>x</mi><mi>f</mi></msub><mo>≥</mo><mi>k</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\sum_{f\in C\setminus e} x_f\geq k-1</annotation></semantics></math>
and thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>C</mi></mrow></msub><msub><mi>x</mi><mi>e</mi></msub><mo>&gt;</mo><mi>k</mi></mrow><annotation encoding="application/x-tex">\sum_{e\in C} x_e&gt;k</annotation></semantics></math>.
Since this holds for any cut
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>C</mi><annotation encoding="application/x-tex">C</annotation></semantics></math>
containing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>,
we can certainly decrease
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>x</mi><mi>e</mi></msub><annotation encoding="application/x-tex">x_e</annotation></semantics></math>
for a smaller objective. Hence, in the optimal solution to boxlessLP,
every
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>x</mi><mi>e</mi></msub><annotation encoding="application/x-tex">x_e</annotation></semantics></math>
is less than or equal to 1.
<p></p>
Kent Quanrud also used this technique in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-cut
LP <span class="citation" data-cites="Quanrud_2019">[<a
href="#ref-Quanrud_2019" role="doc-biblioref">2</a>]</span>.
<p></p>
In fact, one can see from the proof that enumerating all singletons
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>f</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">F=\left\{ f \right\}</annotation></semantics></math>
is sufficient.
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-chalermsook_approximating_2022" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[1] </div><div class="csl-right-inline">P.
Chalermsook, C.-C. Huang, D. Nanongkai, T. Saranurak, P. Sukprasert, S.
Yingchareonthawornchai, Approximating
k-<span>Edge</span>-<span>Connected</span> <span>Spanning</span>
<span>Subgraphs</span> via a <span>Near</span>-<span>Linear</span>
<span>Time</span> <span>LP</span> <span>Solver</span>, in: <em>49th
<span>International</span> <span>Colloquium</span> on
<span>Automata</span>, <span>Languages</span>, and
<span>Programming</span> (<span>ICALP</span> 2022)</em>, Schloss
Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 2022: pp.
37:1–37:20 <a
href="https://doi.org/10.4230/LIPIcs.ICALP.2022.37">10.4230/LIPIcs.ICALP.2022.37</a>.</div>
</div>
<div id="ref-Quanrud_2019" class="csl-entry" role="listitem">
<div class="csl-left-margin">[2] </div><div class="csl-right-inline">K.
Quanrud, Fast and deterministic approximations for k-cut, <em>LIPIcs,
Volume 145, APPROX/RANDOM 2019</em>. 145 (2019) 23:1–23:20 <a
href="https://doi.org/10.4230/LIPICS.APPROX-RANDOM.2019.23">10.4230/LIPICS.APPROX-RANDOM.2019.23</a>.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Thu, 13 Mar 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/lp_with_box_constraints/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Vertex and Edge Connectivity Interdiction</title>
    <link>https://talldoor.uk/posts/connectivity_interdiction/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on February 13, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;alg&#39;." href="/tags/alg/index.html" rel="tag">alg</a>, <a title="All pages tagged &#39;combinatorics&#39;." href="/tags/combinatorics/index.html" rel="tag">combinatorics</a>, <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>
        
    </div>    
    <section class="body">
        <p></p>
As a natural generalization of min-cut, the following problem seems
interesting to me,
<div id="prob1" class="theorem-environment Problem" data-index="1"
type="Problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">1</span></span>
<p></p>
Given a graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>
and an integer
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>,
find the minimum edge set whose removal breaks
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-vertex
connectivity?
</div>
<p></p>
Alternatively, one can consider a closely related version of <a
href="#prob1" title="Problem 1">Problem 1</a>,
<div id="prob2" class="theorem-environment Problem" data-index="2"
type="Problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">2</span></span>
<p></p>
Given a graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>
and an integer
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>,
find an edge set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊂</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">F\subset E</annotation></semantics></math>
with size at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>
whose removal minimizes the vertex connectivity of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>−</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">G-F</annotation></semantics></math>.
</div>
<p></p>
This problem can be called the “vertex connectivity interdiction”. One
can also consider the “algebraic connectivity interdiction” (the second
smallest eigen value of the Laplacian matrix).
<blockquote>
<p></p>
In fact, I think <a href="#prob2" title="Problem 2">Problem 2</a> is not
well motivated. I am interested in it since there may be connections
between breaking vertex connectivity and breaking combinatorial
rigidity. However, it seems strange to consider interdiction problems on
<strong>edge</strong> set for <strong>vertex</strong> connectivity. For
vertex removal, this problem is easy (by splitting vertex and finding
mincut).
</blockquote>
<h1 data-number="1" id="checking-k-vertex-connectivity"><span
class="header-section-number">1</span> Checking
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-vertex
connectivity</h1>
<p></p>
Checking if a given graph is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-vertex
connected <a
href="https://en.wikipedia.org/wiki/K-vertex-connected_graph#Computational_complexity">can
be done in polynomial time</a>. By <a
href="https://en.wikipedia.org/wiki/Menger%27s_theorem">Menger’s
theorem</a> we need to check if for every vertex pair
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>
there are at least
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>
vertex disjoint paths (excluding
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>s</mi><annotation encoding="application/x-tex">s</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>)
connecting
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>s</mi><annotation encoding="application/x-tex">s</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>.
The number of vertex disjoint paths between
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>s</mi><annotation encoding="application/x-tex">s</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>
can be easily computed through max flow.
<!-- Duplicate every vertex except $s$ and $t$ and connect an directed edge with capacity 1 between every pair of new vertices. The capacity is 1 for all edges.  -->
We replace every internal vertex
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>v</mi><annotation encoding="application/x-tex">v</annotation></semantics></math>
with two copies
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mrow><mi>i</mi><mi>n</mi></mrow></msub><annotation encoding="application/x-tex">v_{in}</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mrow><mi>o</mi><mi>u</mi><mi>t</mi></mrow></msub><annotation encoding="application/x-tex">v_{out}</annotation></semantics></math>
and add directed edges from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>N</mi><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">N(v)</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mrow><mi>i</mi><mi>n</mi></mrow></msub><annotation encoding="application/x-tex">v_{in}</annotation></semantics></math>
and from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mrow><mi>o</mi><mi>u</mi><mi>t</mi></mrow></msub><annotation encoding="application/x-tex">v_{out}</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>N</mi><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">N(v)</annotation></semantics></math>
with capacity 1. The integral max flow is the number of internally
disjoint paths between
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>s</mi><annotation encoding="application/x-tex">s</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>.
Since the constraint matrix of flow problems is TU, maximizing the flow
gives us the vertex connectivity.
<blockquote>
<p></p>
Instead of computing the flow for every pair, if we want one flow that
gets the demand for every vertex pair
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>i</mi><mo>&lt;</mo><mi>j</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(i&lt;j)</annotation></semantics></math>,
the problem becomes much harder. This is <a
href="https://en.wikipedia.org/wiki/Multi-commodity_flow_problem">Multi-commodity
flow problem</a>.
</blockquote>
<p></p>
Currently the fastest algorithm for computing vertex connectivity is
<del><span class="citation" data-cites="HENZINGER2000222">[<a
href="#ref-HENZINGER2000222" role="doc-biblioref">1</a>]</span></del> <a
href="https://dl.acm.org/doi/10.1145/3406325.3451088"
class="uri">https://dl.acm.org/doi/10.1145/3406325.3451088</a>. There is
a nice table for a summary of connectivity related algorithms.
<figure>
<img src="/images/vertex_connectivity_cut/table.png"
alt="image courtesy of Abdol–Hossein Esfahanian. link" />
<figcaption aria-hidden="true">image courtesy of Abdol–Hossein
Esfahanian. <a
href="http://www.cse.msu.edu/~esfahani/book_chapter/Graph_connectivity_chapter.pdf">link</a></figcaption>
</figure>
<p></p>
<span class="citation" data-cites="HENZINGER2000222">[<a
href="#ref-HENZINGER2000222" role="doc-biblioref">1</a>]</span> appears
in the last line. The conference version was published on FOCS96.
<h2 data-number="1.1" id="minimum-cut-for-edge-connectivity"><span
class="header-section-number">1.1</span> Minimum cut for edge
connectivity</h2>
<p></p>
Finding the minimum edge set whose removal breaks the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-edge
connectivity is “easy”. It is known that the global min-cut is the edge
connectivity number. <del>Thus we can simply compute the min-cut and
remove any number of the edges as needed.</del> — which is not true! For
unit edge weights this problem is indeed that easy. However, for general
weights edge-connectivity cut is not as easy as min-cut. This problem is
actually the unit cost version of connectivity interdiction. See next
section for more details.
<h2 data-number="1.2" id="minimum-cut-for-vertex-connectivity"><span
class="header-section-number">1.2</span> Minimum cut for vertex
connectivity</h2>
<p></p>
With the knowledge of how to compute vertex connectivity, we try to
compute the minimum cut for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-vertex
connectivity in a similar way. First we can find the vertex pair
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>s</mi><mo>,</mo><mi>t</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(s,t)</annotation></semantics></math>
with the smallest number of internally disjoint paths. Note that we are
dealing with the modified graph when computing the vertex connectivity
number with flow. Hence the min-cut may contain edges that are not in
the original graph, i.e., the edges connecting
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mrow><mi>i</mi><mi>n</mi></mrow></msub><annotation encoding="application/x-tex">v_{in}</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mrow><mi>o</mi><mi>u</mi><mi>t</mi></mrow></msub><annotation encoding="application/x-tex">v_{out}</annotation></semantics></math>.
For example, consider a graph where every edge has multiplicities 2. The
min-cut reported by the flow algorithm should only contain edges between
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mrow><mi>i</mi><mi>n</mi></mrow></msub><annotation encoding="application/x-tex">v_{in}</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>v</mi><mrow><mi>o</mi><mi>u</mi><mi>t</mi></mrow></msub><annotation encoding="application/x-tex">v_{out}</annotation></semantics></math>.
<p></p>
There is a <a
href="https://lemon.cs.elte.hu/egres/open/Node-connectivity">list</a> of
open problems on vertex(node) connectivity. <del>I guess <a
href="#prob1" title="Problem 1">Problem 1</a> is NP-hard but cannot
prove it.</del>
<p></p>
<em>Update on 2025.3.4</em> It turns out that finding the minimum edge
set whose removal breaks
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-connectivity
(for fixed
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>)
is quite easy.
<div class="theorem-environment Theorem" data-index="3" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">3</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>
be a fixed integer. Given a graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>,
the minimum edge set breaking
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-connectivity
can be found in polynomial time. In fact, the solution is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="true" form="prefix">{</mo><mi mathvariant="normal">mincut</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>−</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo>⊂</mo><mi>V</mi><mo>,</mo><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>k</mi><mo>−</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\min \left\{ \operatorname{mincut}(G-X)|X\subset V, |X|\leq k-1 \right\}</annotation></semantics></math>.
</div>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
One can verify if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-connected
in polynomial time. So we assume that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-connected,
for otherwise the solution is emptyset.
<p></p>
Suppose for a contradiction that there is a minimum edge set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
that breaks
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-connectivity
and is not in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mi mathvariant="normal">mincut</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>−</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo>⊂</mo><mi>V</mi><mo>,</mo><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>k</mi><mo>−</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ \operatorname{mincut}(G-X)|X\subset V, |X|\leq k-1 \right\}</annotation></semantics></math>.
Then one can see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>−</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">G-F</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">k-1</annotation></semantics></math>-connected
and there must be a set of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>k</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">k-1</annotation></semantics></math>
vertex whose removal disconnects the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>−</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">G-F</annotation></semantics></math>.
We write
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>N</mi><mi>G</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">N_G(X)</annotation></semantics></math>
for the set of edges incident to some vertex in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>X</mi><annotation encoding="application/x-tex">X</annotation></semantics></math>
in graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
Thus we have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>F</mi><mo>′</mo></msup><mo>=</mo><mi>F</mi><mo>+</mo><msub><mi>N</mi><mrow><mi>G</mi><mo>−</mo><mi>F</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">F&#39;=F+N_{G-F}(X)</annotation></semantics></math>
is a cut of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
One can see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>F</mi><mo>′</mo></msup><mo>−</mo><msub><mi>N</mi><mi>G</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">F&#39;-N_G(X)</annotation></semantics></math>
is also a cut of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>−</mo><mi>X</mi></mrow><annotation encoding="application/x-tex">G-X</annotation></semantics></math>
and is not smaller than
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">{</mo><mrow><mi mathvariant="normal">mincut</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>−</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\min\{ \operatorname{mincut}(G-X)\}</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo stretchy="false" form="prefix">|</mo><mo>=</mo><mi>k</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">|X|=k-1</annotation></semantics></math>,
a contradiction.
</div>
<p></p>
However, the capacitated version of <a href="#prob2"
title="Problem 2">Problem 2</a> and <a href="#prob1"
title="Problem 1">Problem 1</a> is hard. Given a graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>
and edge weights
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo>:</mo><mi>E</mi><mo>→</mo><msub><mi mathvariant="double-struck">ℤ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mrow><annotation encoding="application/x-tex">w:E\to \mathbb{Z}_{\geq 0}</annotation></semantics></math>
and costs
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo>:</mo><mi>E</mi><mo>→</mo><msub><mi mathvariant="double-struck">ℤ</mi><mrow><mo>≥</mo><mn>0</mn></mrow></msub></mrow><annotation encoding="application/x-tex">c:E\to \mathbb{Z}_{\geq 0}</annotation></semantics></math>
and a budget
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>b</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">b\geq 0</annotation></semantics></math>,
find edge set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊂</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">F\subset E</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">c(F)\leq b</annotation></semantics></math>
and such that removing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
minimizes the vertex connectivity of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>−</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">G-F</annotation></semantics></math>.
Similar to the edge connectivity case (which will be shown in the next
section), if the cost
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
is nontrivial then kanpsack is a special case of this problem. (Consider
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><msub><mi>K</mi><mi>n</mi></msub></mrow><annotation encoding="application/x-tex">G=K_n</annotation></semantics></math>
for some large
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>.
Pick a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>K</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub><annotation encoding="application/x-tex">K_{n-1}</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
and set the cost of edges in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>K</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub><annotation encoding="application/x-tex">K_{n-1}</annotation></semantics></math>
to infinity.) How hard is <a href="#prob2" title="Problem 2">Problem
2</a> if costs are trivial?
<h1 data-number="2" id="edge-connectivity-interdiction"><span
class="header-section-number">2</span> (Edge) Connectivity
interdiction</h1>
<p></p>
If we replace the vertex connectivity in <a href="#prob2"
title="Problem 2">Problem 2</a> with edge connectivity, then the problem
is called connectivity interdiction and was first studied by Zenklusen
<span class="citation" data-cites="zenklusen_connectivity_2014">[<a
href="#ref-zenklusen_connectivity_2014"
role="doc-biblioref">2</a>]</span>.
<div id="prob3" class="theorem-environment Problem" data-index="4"
type="Problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">4</span></span>
<p></p>
Given a graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>
and costs
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo>:</mo><mi>E</mi><mo>→</mo><msub><mi mathvariant="double-struck">ℤ</mi><mo>+</mo></msub></mrow><annotation encoding="application/x-tex">c:E\to \mathbb{Z}_+</annotation></semantics></math>
and weights
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo>:</mo><mi>E</mi><mo>→</mo><msub><mi mathvariant="double-struck">ℤ</mi><mo>+</mo></msub></mrow><annotation encoding="application/x-tex">w:E\to \mathbb{Z}_+</annotation></semantics></math>
and a budget
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo>∈</mo><msub><mi mathvariant="double-struck">ℤ</mi><mo>+</mo></msub></mrow><annotation encoding="application/x-tex">B\in \mathbb{Z}_+</annotation></semantics></math>,
find the edge set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>R</mi><annotation encoding="application/x-tex">R</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>R</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">c(R)\leq B</annotation></semantics></math>
and that minimizes the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>w</mi><annotation encoding="application/x-tex">w</annotation></semantics></math>-weighted
min cut in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo>\</mo><mi>R</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(V,E\setminus R)</annotation></semantics></math>.
</div>
<p></p>
The <a href="https://arxiv.org/abs/2506.17008v1">Fault-Tolerant Path</a>
problem (FTP) seems sililar to <a href="#prob3"
title="Problem 4">Problem 4</a>. In FTP problem, we are given a
edge-weighted directed graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>,
a subset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>U</mi><mo>⊆</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">U \subseteq E</annotation></semantics></math>
of vulnerable edges, two vertices
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>s</mi><mo>,</mo><mi>t</mi><mo>∈</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">s,t\in V</annotation></semantics></math>
and integers
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>ℓ</mi><annotation encoding="application/x-tex">\ell</annotation></semantics></math>.
The task is to decide whether there exists a subgraph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>H</mi><annotation encoding="application/x-tex">H</annotation></semantics></math>
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
with total cost at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>ℓ</mi><annotation encoding="application/x-tex">ℓ</annotation></semantics></math>
such that, after the removal of any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>
vulnerable edges,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>H</mi><annotation encoding="application/x-tex">H</annotation></semantics></math>
still contains an
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>s</mi><annotation encoding="application/x-tex">s</annotation></semantics></math>-<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>t</mi><annotation encoding="application/x-tex">t</annotation></semantics></math>-path.
The problem degenerates into finding
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>k</mi><annotation encoding="application/x-tex">k</annotation></semantics></math>-edge
connected spanning subgraph if the set of vulnerable edges is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>.
<p></p>
A recent paper <span class="citation" data-cites="vygen_fptas_2024">[<a
href="#ref-vygen_fptas_2024" role="doc-biblioref">3</a>]</span> gives an
FPTAS for the problem. Here I try to develop the intuition since I have
never seen an algorithm based on reweighting edges this complicated and
ingenious.
<p></p>
First one can see that the optimal solution can always be a subset of
edges in a cut of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
This is because if the optimal solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>
contains any edge not in the cut, we can safely delete it from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>.
Thus the optimal solution is indeed a pair
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><msup><mi>C</mi><mo>*</mo></msup><mo>,</mo><msup><mi>R</mi><mo>*</mo></msup><mo>⊂</mo><msup><mi>C</mi><mo>*</mo></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(C^*,R^*\subset C^*)</annotation></semantics></math>.
The authors call this problem the
<em><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>-free
min-cut problem</em>
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>
is the budget and we are allowed to pick edges for free in the “mincut”
with total weight at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>).
<p></p>
So the goal is to find a FPTAS for the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>-free
mincut problem. The problem is hard since it contains knapsack as a
special case. (Consider a graph with many parallel edges and only 2
vertices.) However, it is known that there is a <a
href="https://www.cs.cmu.edu/afs/cs/academic/class/15854-f05/www/scribe/lec10.pdf">FPTAS
for knapsack</a>. If we know part of the optimal solution, i.e.,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>,
we can use the FPTAS for knapsack to find the optimal
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>.
<p></p>
At this stage, if there is a hint suggesting reweighting the edges, I
would guess that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>
is exactly (or close to) the min-cut of the re-weighted graph. Based on
this idea I would also guess that, although the connectivity
interdiction problem
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>-free
min-cut) is NP-hard,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>
can be computed in polynomial time. In other words, the intractable part
is solving the knapsack in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>.
This statement seems reasonable, since this problem is know to be in P
for unit costs and in that case the kanpsack is trivial. Let’s assume
that my guess is correct and work on the reweighting part.
<h2 data-number="2.1" id="reweighting"><span
class="header-section-number">2.1</span> Reweighting</h2>
<p></p>
There is a <a
href="https://sarielhp.org/teach/notes/aprx/lec/18_reweight.pdf">chapter
on reweighting</a> in Sariel Har-Peled’s gemetric approximation book(not
quite the same as the reweighting technique in <span class="citation"
data-cites="vygen_fptas_2024">[<a href="#ref-vygen_fptas_2024"
role="doc-biblioref">3</a>]</span>). Is reweighting a common technique
for designing approximation algorithms?
<p></p>
One possible weight function is setting
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">w(e)=0</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><msup><mi>R</mi><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">e\in R^*</annotation></semantics></math>…
However, this is cheating since we assume that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>
is the hard part. So now we need to find a weight function such that the
following holds,
<ol type="1">
<li>The min-cut of the re-weighted graph is close to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>.</li>
<li>Computing the weight function takes polynomial time.</li>
</ol>
<p></p>
From the “cheating” example we can see that knowing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>
does help but computing
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>
is hard. So maybe we can find a slightly worse weight function which is
a lot easier to compute. So it seems like we are making a trade-off
between how close the global min-cut of the re-weighted graph is to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>,
and how much time is needed to compute this weight function. This paper
indeed does a great job in finding such a balance. I sent an email to
one of the authors to ask for the intuition behind the reweighting but
did not get a real answer. They suggested reading <span class="citation"
data-cites="zenklusen_connectivity_2014">[<a
href="#ref-zenklusen_connectivity_2014"
role="doc-biblioref">2</a>]</span>. Zenklusen did almost the same
thought experiment as above. Instead of using reweighting, he indirectly
enumerated
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>.
Consider the unit cost case for example. If the optimal cut
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>
is given, the interdicted edges
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>
will be those
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>
edges in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>
with heaviest weights. We cannot directly enumerate
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>
since it still takes exponential time. What we can enumerate is a
lowerbound of the weight of edges in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>.
Set all edges with weights exceeding this lowerbound to be in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>R</mi><mo>*</mo></msup><annotation encoding="application/x-tex">R^*</annotation></semantics></math>
and find global min-cut with additional budget constraint on these
edges. Then we have only
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>m</mi><annotation encoding="application/x-tex">m</annotation></semantics></math>
lowerbound to enumerate and the budgeted min-cut can be computed fast.
For general costs, he enumerated the set of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mi>/</mi><mi>ε</mi></mrow><annotation encoding="application/x-tex">{1}/{\varepsilon}</annotation></semantics></math>
edges with heaviest weights in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>C</mi><mo>*</mo></msup><annotation encoding="application/x-tex">C^*</annotation></semantics></math>.
<p></p>
The plan is to figure out how did the authors come up with the weight
function in <span class="citation" data-cites="vygen_fptas_2024">[<a
href="#ref-vygen_fptas_2024" role="doc-biblioref">3</a>]</span> and if
it is possible to find a better weight function.
<p></p>
The key part is the following new problem called normilized min-cut,
<div id="normmincut" class="theorem-environment Problem" data-index="5"
type="Problem" title="Normalized min-cut">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">5</span><span class="name">Normalized
min-cut</span></span>
<p></p>
Given a problem instance of connectivity interdiction, find a cut
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>C</mi><annotation encoding="application/x-tex">C</annotation></semantics></math>
and its subset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊂</mo><mi>C</mi></mrow><annotation encoding="application/x-tex">F\subset C</annotation></semantics></math>
s.t.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>≤</mo><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>b</mi></mrow><annotation encoding="application/x-tex">0\leq c(F)\leq b</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mfrac><mrow><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>C</mi><mo>\</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow><mrow><mi>b</mi><mo>+</mo><mn>1</mn><mo>−</mo><mi>c</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac><annotation encoding="application/x-tex">\frac{w(C\setminus F)}{b+1-c(F)}</annotation></semantics></math>
is minimized.
</div>
<p></p>
<del>I have been thinking for a while how this problem is involved but
have no clue. However, it does work…</del> The weight function is
defined based on an estimation of <a href="#normmincut"
title="Problem 5">Problem 5</a>. The authors claim that the optimal
solution to b-free min-cut problem is a 2-approximate min-cut of the
reweighted graph. Then they enumerate all 2-approximate min-cut of the
reweighted graph and use the FPTAS alg for knapsack on each cut to find
a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>+</mo><mi>ϵ</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(1+\epsilon)</annotation></semantics></math>-approx
solution.
<h2 data-number="2.2" id="more-on-normalized-min-cut"><span
class="header-section-number">2.2</span> More on normalized min-cut</h2>
<p></p>
If one slightly modifies lemmas in section 2 in <span class="citation"
data-cites="vygen_fptas_2024">[<a href="#ref-vygen_fptas_2024"
role="doc-biblioref">3</a>]</span>, there are some interesting
properties. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>τ</mi><annotation encoding="application/x-tex">\tau</annotation></semantics></math>
be the value of the optimal normalized min-cut (in <span
class="citation" data-cites="vygen_fptas_2024">[<a
href="#ref-vygen_fptas_2024" role="doc-biblioref">3</a>]</span>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>τ</mi><annotation encoding="application/x-tex">\tau</annotation></semantics></math>
is an estimation of the optimum) and define
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mover><mi>w</mi><mo accent="true">̃</mo></mover><mi>τ</mi></msub><annotation encoding="application/x-tex">\tilde{w}_\tau</annotation></semantics></math>
accordingly. Then one can prove that the global min cut in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><msub><mover><mi>w</mi><mo accent="true">̃</mo></mover><mi>τ</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(G,\tilde{w}_\tau)</annotation></semantics></math>
is exactly the optimal cut in the normalized min-cut of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><mi>w</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(G,w)</annotation></semantics></math>
(slightly modify lemma3 to see this). Also the value of min-cut in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo>,</mo><msub><mover><mi>w</mi><mo accent="true">̃</mo></mover><mi>τ</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(G,\tilde{w}_\tau)</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>τ</mi><mo stretchy="false" form="prefix">(</mo><mi>b</mi><mo>+</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\tau(b+1)</annotation></semantics></math>.
<p></p>
For unit cost, the optimum of normalized min-cut can be computed using
the same complexity as connectivity interdiction (ignoring polylog
factors) <span class="citation"
data-cites="chalermsook_approximating_2022">[<a
href="#ref-chalermsook_approximating_2022"
role="doc-biblioref">4</a>]</span>. Consider the sequence
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><msub><mi>λ</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><msub><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mo stretchy="false" form="prefix">|</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo><mo>≤</mo><mi>i</mi></mrow></msub><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>C</mi><mo>\</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow><mrow><mi>b</mi><mo>+</mo><mn>1</mn><mo>−</mo><mi>i</mi></mrow></mfrac><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ \lambda_i=\frac{\min_{|F|\le i} w(C\setminus F)}{b+1-i} \right\}</annotation></semantics></math>.
If this is unimodal,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mrow><mi mathvariant="normal">log</mi><mo>&#8289;</mo></mrow><mi>b</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(\log b)</annotation></semantics></math>
calls of connectivity interdiction algorithm should be sufficient. (Note
that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>b</mi><annotation encoding="application/x-tex">b</annotation></semantics></math>
is at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>m</mi><annotation encoding="application/x-tex">m</annotation></semantics></math>
since costs are unit.) However, one can easily see that this sequence is
not unimodal. Thus I don’t quite believe this claim.
<details>
<summary>
Comments on <span class="citation" data-cites="vygen_fptas_2024">[<a
href="#ref-vygen_fptas_2024" role="doc-biblioref">3</a>]</span>
</summary>
<p></p>
After reading <span class="citation"
data-cites="chalermsook_approximating_2022">[<a
href="#ref-chalermsook_approximating_2022"
role="doc-biblioref">4</a>]</span>, I finally know why the authors use
<a href="#normmincut" title="Problem 5">Problem 5</a> to solve
connectivity interdiction. Almost all techniques they used are directly
from <span class="citation"
data-cites="chalermsook_approximating_2022">[<a
href="#ref-chalermsook_approximating_2022"
role="doc-biblioref">4</a>]</span>. Read section 2 of <span
class="citation" data-cites="chalermsook_approximating_2022">[<a
href="#ref-chalermsook_approximating_2022"
role="doc-biblioref">4</a>]</span> until 2.2, you know almost everything
needed for a FPTAS solving connectivity interdiction. In fact, the
authors cite <span class="citation"
data-cites="chalermsook_approximating_2022">[<a
href="#ref-chalermsook_approximating_2022"
role="doc-biblioref">4</a>]</span> in their paper,
<blockquote>
<p></p>
In a recent paper of Chalermsook et el. [CHN+22] on survivable network
design, the same problem was first introduced (under a diﬀerent name
“minimum normalized free cut”) to deal with a certain boxing constraint
in the LPs. There, a special case of unit-edge costs is actually solved
as a technical necessity. To obtain an FPTAS in this paper, we emphasize
that we do not need to solve the normalized min-cut problem per se, but
rather we use its optimal solution as a certificate in the analysis of
the weight function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mover><mi>w</mi><mo accent="true">̃</mo></mover><mo stretchy="false" form="prefix">(</mo><mi>i</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\tilde{w}(i)</annotation></semantics></math>
in Theorem 3.
</blockquote>
<p></p>
This paragraph is somewhat misleading. There is no clearly indication
that very similar (in fact, almost identical) results are proven
[CHN+22].
<!-- Not to mention that the authors were somewhat avoiding my question (in my opinion) about Normalized min-cut(see [reweighting part](#reweighting)). -->
<p></p>
It was mentioned in a footnote of <span class="citation"
data-cites="chalermsook_approximating_2022">[<a
href="#ref-chalermsook_approximating_2022"
role="doc-biblioref">4</a>]</span> that a general version of normalized
min-cut is used in <a
href="https://drops.dagstuhl.de/storage/00lipics/lipics-vol064-isaac2016/LIPIcs.ISAAC.2016.33/LIPIcs.ISAAC.2016.33.pdf">this
paper</a>, which in turn mentioned that normalized min-cut is an
ordinary subroutine in MWU frameworks.
<!-- This IPCO paper's writing style is toxic and causes huge waste of readers' time. I do not think this paper still can be accepted by IPCO if reviewers and PCs notice its relation with [CHN+22]. -->
</details>
<p></p>
some notes <a
href="https://gitea.talldoor.uk/sxlxc/edge_conn_interdiction">here</a>
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-HENZINGER2000222" class="csl-entry" role="listitem">
<div class="csl-left-margin">[1] </div><div
class="csl-right-inline">M.R. Henzinger, S. Rao, H.N. Gabow, Computing
vertex connectivity: New bounds from old techniques, <em>Journal of
Algorithms</em>. 34 (2000) 222–250 <a
href="https://doi.org/10.1006/jagm.1999.1055">https://doi.org/10.1006/jagm.1999.1055</a>.</div>
</div>
<div id="ref-zenklusen_connectivity_2014" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[2] </div><div class="csl-right-inline">R.
Zenklusen, Connectivity interdiction, <em>Operations Research
Letters</em>. 42 (2014) 450–454 <a
href="https://doi.org/10.1016/j.orl.2014.07.010">10.1016/j.orl.2014.07.010</a>.</div>
</div>
<div id="ref-vygen_fptas_2024" class="csl-entry" role="listitem">
<div class="csl-left-margin">[3] </div><div
class="csl-right-inline">C.-C. Huang, N. Obscura Acosta, S.
Yingchareonthawornchai, An <span>FPTAS</span> for
<span>Connectivity</span> <span>Interdiction</span>, in: <em>Integer
<span>Programming</span> and <span>Combinatorial</span>
<span>Optimization</span></em>, Springer Nature Switzerland, Cham, 2024:
pp. 210–223 <a
href="https://doi.org/10.1007/978-3-031-59835-7_16">10.1007/978-3-031-59835-7_16</a>.</div>
</div>
<div id="ref-chalermsook_approximating_2022" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[4] </div><div class="csl-right-inline">P.
Chalermsook, C.-C. Huang, D. Nanongkai, T. Saranurak, P. Sukprasert, S.
Yingchareonthawornchai, Approximating
k-<span>Edge</span>-<span>Connected</span> <span>Spanning</span>
<span>Subgraphs</span> via a <span>Near</span>-<span>Linear</span>
<span>Time</span> <span>LP</span> <span>Solver</span>, in: <em>49th
<span>International</span> <span>Colloquium</span> on
<span>Automata</span>, <span>Languages</span>, and
<span>Programming</span> (<span>ICALP</span> 2022)</em>, Schloss
Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 2022: pp.
37:1–37:20 <a
href="https://doi.org/10.4230/LIPIcs.ICALP.2022.37">10.4230/LIPIcs.ICALP.2022.37</a>.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Thu, 13 Feb 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/connectivity_interdiction/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Add SageMath to pylance?</title>
    <link>https://talldoor.uk/posts/sagemath_vscode/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on January 24, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;sage&#39;." href="/tags/sage/index.html" rel="tag">sage</a>
        
    </div>    
    <section class="body">
        <p></p>
I have been wondering how to write <code>.sage</code> files in vscode
with proper lint and highlighting since half a year ago.
<p></p>
There is a question asked in 2023 on stackoverflow. <a
href="https://stackoverflow.com/questions/76201511/add-sagemath-to-pylance"
class="uri">https://stackoverflow.com/questions/76201511/add-sagemath-to-pylance</a>
<figure>
<img src="/images/sagepylance/select.png" alt="select interpreter" />
<figcaption aria-hidden="true">select interpreter</figcaption>
</figure>
<p></p>
But what is the interpreter path for python used by sage?
<p></p>
It turns out that you can just type <code>sage --python</code>… and
everything works
<figure>
<img src="/images/sagepylance/sage--python.png" alt="sage --python" />
<figcaption aria-hidden="true"><code>sage --python</code></figcaption>
</figure>
<figure>
<img src="/images/sagepylance/ex.png" alt="" />
<figcaption aria-hidden="true"></figcaption>
</figure>
<p></p>
A large part of sage is written in cython, so pylance still works bad on
this. It would be nice if someone can write a language server for sage.
<hr />
<p></p>
<strong>update on March 31st</strong>
<p></p>
The best way to install sage: <a
href="https://doc.sagemath.org/html/en/installation/conda.html#sec-installation-conda"
class="uri">https://doc.sagemath.org/html/en/installation/conda.html#sec-installation-conda</a>
<p></p>
Works well with vscode.
    </section>
</article>
]]></description>
    <pubDate>Fri, 24 Jan 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/sagemath_vscode/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Graphic matroid representation and cocircuit transversal</title>
    <link>https://talldoor.uk/posts/graphic_matroid_representation/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on January  9, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;matroid&#39;." href="/tags/matroid/index.html" rel="tag">matroid</a>
        
    </div>    
    <section class="body">
        <blockquote>
<p></p>
While reading <a href="https://arxiv.org/pdf/2407.09477"
class="uri">https://arxiv.org/pdf/2407.09477</a> (for a reading group),
I realized that I lack knowledge about matroid representation.
<p></p>
This is a very incomplete notes on matroid representation related
problems.
</blockquote>
<p></p>
List of materials I briefly read:
<ol type="1">
<li><a href="https://math.mit.edu/~goemans/18438F09/lec8.pdf"
class="uri">https://math.mit.edu/~goemans/18438F09/lec8.pdf</a></li>
<li><a
href="https://iuuk.mff.cuni.cz/~pangrac/vyuka/matroids/matroid-ch2.pdf"
class="uri">https://iuuk.mff.cuni.cz/~pangrac/vyuka/matroids/matroid-ch2.pdf</a></li>
<li><a
href="https://fardila.com/Clase/Matroids/LectureNotes/lectures1-25.pdf"
class="uri">https://fardila.com/Clase/Matroids/LectureNotes/lectures1-25.pdf</a></li>
<li><a
href="https://sv2-mat.ist.osaka-u.ac.jp/~higashitani/sano_slide.pdf"
class="uri">https://sv2-mat.ist.osaka-u.ac.jp/~higashitani/sano_slide.pdf</a></li>
</ol>
<p></p>
<strong>Update</strong> The latter half of this post is way off-topic.
So I changed the title.
<h1 data-number="1" id="graphic-matroids-are-regular"><span
class="header-section-number">1</span> Graphic matroids are regular</h1>
<p></p>
Consider the vertex-edge incidence matrix. Randomly orient the edges.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>A</mi><mrow><mi>v</mi><mo>,</mo><mi>e</mi></mrow></msub><mo>=</mo><mi>+</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">A_{v,e}=+1</annotation></semantics></math>
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
enters
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>v</mi><annotation encoding="application/x-tex">v</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">-1</annotation></semantics></math>
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
leaves
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>v</mi><annotation encoding="application/x-tex">v</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn>0</mn><annotation encoding="application/x-tex">0</annotation></semantics></math>
otherwise. Minimal linear dependent columns are exactly the cycles in
the original graph. Take
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>+</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">+1</annotation></semantics></math>
to be the multiplicative identity and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>−</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">-1</annotation></semantics></math>
its additive inverse over any field.
<h1 data-number="2" id="if-m-is-linear-so-is-m"><span
class="header-section-number">2</span> If
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is linear, so is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>M</mi><mo>*</mo></msup><annotation encoding="application/x-tex">M^*</annotation></semantics></math></h1>
<blockquote>
<p></p>
<a
href="https://fardila.com/Clase/Matroids/LectureNotes/lectures1-25.pdf"
class="uri">https://fardila.com/Clase/Matroids/LectureNotes/lectures1-25.pdf</a>
page 21
</blockquote>
<p></p>
In the dual matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>M</mi><mo>*</mo></msup><annotation encoding="application/x-tex">M^*</annotation></semantics></math>,
the groundset is the same as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
and the sum of their ranks is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>.
<p></p>
The idea is, consider a linear matroid as a
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
dimensional subspace
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>V</mi><annotation encoding="application/x-tex">V</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>n</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^n</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>B</mi><mo>*</mo></msup><annotation encoding="application/x-tex">B^*</annotation></semantics></math>
be a basis of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>V</mi><mi>⊥</mi></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(V^\bot)</annotation></semantics></math>
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>V</mi><mi>⊥</mi></msup><annotation encoding="application/x-tex">V^\bot</annotation></semantics></math>
is the orthogonal complement of the column space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>V</mi><annotation encoding="application/x-tex">V</annotation></semantics></math>)
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
be a basis of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M(V)</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>B</mi><mo>*</mo></msup><annotation encoding="application/x-tex">B^*</annotation></semantics></math>
spans
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>V</mi><mi>⊥</mi></msup><annotation encoding="application/x-tex">V^\bot</annotation></semantics></math>
and the intersection of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>V</mi><mi>⊥</mi></msup><annotation encoding="application/x-tex">V^\bot</annotation></semantics></math>
and the subspace spanned by vectors (that is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>V</mi><annotation encoding="application/x-tex">V</annotation></semantics></math>)
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo>−</mo><msup><mi>B</mi><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">E-B^*</annotation></semantics></math>
empty. The subspace spanned by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>B</mi><mo>*</mo></msup><annotation encoding="application/x-tex">B^*</annotation></semantics></math>
is exactly the orthogonal complement of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>V</mi><annotation encoding="application/x-tex">V</annotation></semantics></math>
which is the subspace spanned by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>.
<p></p>
An alternative proof is <a
href="https://math.mit.edu/~goemans/18438F09/lec8.pdf"
class="uri">https://math.mit.edu/~goemans/18438F09/lec8.pdf</a> Theorem
2.
<p></p>
This argument works over any field. Thus both graphic matroids and
cographic matroids are regular.
<h1 data-number="3" id="cographic-matroids"><span
class="header-section-number">3</span> Cographic matroids</h1>
<p></p>
Cycle rank is the minimum number of edges whose removal makes the graph
cycle less. For any spanning forest
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>,
all edges outside
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
must be removed since otherwise there will be a cycle. The size of
spanning forests are the same,
i.e. <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">n-c</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
is the number of vertices and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
is the number of components. Thus cycle rank is the rank of the dual
matroid of the graphic matroid on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>.
<p></p>
For graphic matroids on non-planar graphs, their dual may not be
graphic. Thus in general we do not have a graph representation of
cographic matroids. However, cographic matroids are still linear and
cycle space gives its representation.
<p></p>
Edge space is a vector space over
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi mathvariant="double-struck">𝔽</mi><mn>2</mn></msub><annotation encoding="application/x-tex">\mathbb{F}_2</annotation></semantics></math>.
Elements in the edge space of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>
are subsets of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>.
Addition of two elements is taking their symmetric difference. Bases in
the edge space are spanning forests and the rank of edge space is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">n-c</annotation></semantics></math>.
<p></p>
Cycle space is naturally defined as the vector space spanned by all
cycles (together with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>∅</mi><annotation encoding="application/x-tex">\emptyset</annotation></semantics></math>).
What is the rank of the cycle space? The rank is exactly
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo>−</mo><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mo>−</mo><mi>c</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">m-(n-c)</annotation></semantics></math>
since if we fix a spanning forest
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
(of size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">n-c</annotation></semantics></math>)
any edge outside
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
form a cycle and those cycles are linearly independent. The basis chosen
in this way is called a <em>fundamental cycle basis</em>. Indeed, the
cycle space can be spanned with all induced cycles.
<p></p>
Cut space contains all cuts of the graph(why is this a subspace?). One
possible basis of the cut space is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">star</mtext><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\text{star}(v)</annotation></semantics></math>
for any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">n-c</annotation></semantics></math>
vertices. Thus the rank of the cut space is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">n-c</annotation></semantics></math>.
The set of minimal cuts also span the cut space. One may observe the
fact that the sum of ranks of cut space and cycle space is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>m</mi><annotation encoding="application/x-tex">m</annotation></semantics></math>.
In fact, they are orthogonal complement of each other. For proofs see
chapter 1.9 in <span class="citation"
data-cites="diestel_graph_2017">[<a href="#ref-diestel_graph_2017"
role="doc-biblioref">1</a>]</span>.
<p></p>
One important fact we are assuming is that cycle space and cut space are
subspaces. This is trivial for graphic matroids since the symmetric
difference of two cuts is still a cut and the symmetric difference of
two cycle is still a cycle of union of disjoint cycles. Is this still
true for non-graphic matroids?
<p></p>
Unfortuantely, for general matroids the set of circuit (or cocircuits)
is not closed under taking symmetric difference. This can be seen from
circuit axioms. We only have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>C</mi><mo>⊂</mo><msub><mi>C</mi><mn>1</mn></msub><mo>∪</mo><msub><mi>C</mi><mn>2</mn></msub><mo>\</mo><mi>e</mi></mrow><annotation encoding="application/x-tex">C\subset C_1 \cup C_2\setminus e</annotation></semantics></math>
for any circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>,</mo><msub><mi>C</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">C_1, C_2</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><msub><mi>C</mi><mn>1</mn></msub><mo>∩</mo><msub><mi>C</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">e\in C_1\cap C_2</annotation></semantics></math>.
For example, consider two circuits
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ 1,2,3 \right\}</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mn>4</mn><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ 2,3,4 \right\}</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>U</mi><mrow><mn>2</mn><mo>,</mo><mn>4</mn></mrow></msub><annotation encoding="application/x-tex">U_{2,4}</annotation></semantics></math>,
the symmetric difference,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mn>1</mn><mo>,</mo><mn>4</mn><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ 1,4 \right\}</annotation></semantics></math>,
is independent.
<p></p>
Note that the example
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>U</mi><mrow><mn>2</mn><mo>,</mo><mn>4</mn></mrow></msub><annotation encoding="application/x-tex">U_{2,4}</annotation></semantics></math>
is the excluded minor of binary matroids. So what about binary matroids?
It is known that binary matroid is a self dual family of matroids, we
need to show that the symmetric difference of two intersecting circuits
is another circuit. This is theorem 9.1.2 in <span class="citation"
data-cites="oxley_matroid_2011">[<a href="#ref-oxley_matroid_2011"
role="doc-biblioref">2</a>]</span>.
<p></p>
A similar problem is discussed on <a
href="https://mathoverflow.net/questions/241766/base-decomposition-of-matroids">mathoverflow</a>
concerning a special basis (like
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext mathvariant="normal">star</mtext><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\text{star}(v)</annotation></semantics></math>)
in the “cocircuit space”. I will further elaborate in the next section.
<h1 data-number="4" id="cocircuit-transversal"><span
class="header-section-number">4</span> Cocircuit transversal</h1>
<p></p>
In the comment the OP mentioned a interesting fact, which is corollary 1
in <span class="citation" data-cites="brualdi_fundamental_1974">[<a
href="#ref-brualdi_fundamental_1974" role="doc-biblioref">3</a>]</span>
<div class="theorem-environment Corollary" data-index="1"
type="Corollary">
<span class="theorem-header"><span class="type">Corollary</span><span
class="index">1</span></span>
<p></p>
Given a base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
of some rank
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi mathvariant="script">𝒞</mi><mo>*</mo></msup><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><msubsup><mi>C</mi><mi>e</mi><mo>*</mo></msubsup><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>B</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\mathcal C^*=\left\{ C_e^* | e\in B \right\}</annotation></semantics></math>
be the set of fundamental cocircuits associated to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>.
Every base of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is a transversal of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="script">𝒞</mi><mo>*</mo></msup><annotation encoding="application/x-tex">\mathcal C^*</annotation></semantics></math>.
</div>
<p></p>
An alternative way to understand this is that, take a base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
of some matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
and consider the transversal matroid on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><msubsup><mi>C</mi><mi>e</mi><mo>*</mo></msubsup><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>B</mi><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ C_e^* | e\in B \right\}</annotation></semantics></math>,
every base of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
is independent in this transversal matroid. Take graphic matroids for an
example. Any edge
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
in a spanning tree
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>T</mi><annotation encoding="application/x-tex">T</annotation></semantics></math>
defines a unique cut. Any spanning tree is a transversal of these cuts.
<blockquote>
<p></p>
I tried to prove this corollary myself but failed. The following proof
is from the paper. I think there should be a nice way to prove it
directly (without the theorem below) through some “common transversal
proof” techniques I am not familiar with.
</blockquote>
<p></p>
To simplify the notations, some definitions in <span class="citation"
data-cites="brualdi_fundamental_1974">[<a
href="#ref-brualdi_fundamental_1974" role="doc-biblioref">3</a>]</span>
are needed. For a base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>,
let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>C</mi><mi>e</mi><mo>*</mo></msubsup><annotation encoding="application/x-tex">C_e^*</annotation></semantics></math>
be the unique cocircuit in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∪</mo><mi>E</mi><mo>\</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">e\cup E\setminus B</annotation></semantics></math>
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
is in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>.
For
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∉</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">e\notin B</annotation></semantics></math>,
let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>C</mi><mi>e</mi><mo>*</mo></msubsup><annotation encoding="application/x-tex">C_e^*</annotation></semantics></math>
be
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><mi>e</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{e\}</annotation></semantics></math>.
Dually, for a fixed base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∉</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">e\notin B</annotation></semantics></math>,
we can define
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mi>e</mi></msub><annotation encoding="application/x-tex">C_e</annotation></semantics></math>
to be the unique circuit in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>C</mi><mi>e</mi></msub><mo>=</mo><mo stretchy="false" form="prefix">{</mo><mi>e</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">C_e=\{e\}</annotation></semantics></math>
for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">e\in B</annotation></semantics></math>.
There is an interesting theorem in <span class="citation"
data-cites="brualdi_fundamental_1974">[<a
href="#ref-brualdi_fundamental_1974" role="doc-biblioref">3</a>]</span>.
<div class="theorem-environment Theorem" data-index="2" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">2</span></span>
<p></p>
Given any matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
with groundset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>
and rank
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>,
consider any base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
and any size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>r</mi><annotation encoding="application/x-tex">r</annotation></semantics></math>
subset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊂</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">F\subset E</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
is a transversal of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msubsup><mi>C</mi><mi>e</mi><mo>*</mo></msubsup><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>B</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{C_e^* | e\in B\}</annotation></semantics></math>
if and only if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
is a transversal of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mi>C</mi><mi>e</mi></msub><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>F</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{C_e | e\in F\}</annotation></semantics></math>.
</div>
<blockquote>
<p></p>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>C</mi><mi>e</mi><mo>*</mo></msubsup><annotation encoding="application/x-tex">C_e^*</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mi>e</mi></msub><annotation encoding="application/x-tex">C_e</annotation></semantics></math>
are both considered under the base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>.
</blockquote>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<ol type="1">
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
is a transversal of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mi>C</mi><mi>e</mi></msub><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>F</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{C_e | e\in F\}</annotation></semantics></math>.
We can write
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mi>b</mi><mi>e</mi></msub><mo stretchy="false" form="prefix">|</mo><msub><mi>b</mi><mi>e</mi></msub><mo>∈</mo><msub><mi>C</mi><mi>e</mi></msub><mo>,</mo><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>F</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{b_e | b_e \in C_e ,\forall e\in F\}</annotation></semantics></math>
since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
is a system of distinct representatives. For
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><mi>B</mi><mo>∩</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">e\in B\cap F</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>b</mi><mi>e</mi></msub><mo>=</mo><mi>e</mi></mrow><annotation encoding="application/x-tex">b_e=e</annotation></semantics></math>
since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mi>e</mi></msub><annotation encoding="application/x-tex">C_e</annotation></semantics></math>’s
are singletons for these
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>.
Thus if we can show that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><msubsup><mi>C</mi><msub><mi>b</mi><mi>e</mi></msub><mo>*</mo></msubsup></mrow><annotation encoding="application/x-tex">e\in C_{b_e}^*</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>b</mi><mi>e</mi></msub><mo>∈</mo><mi>B</mi><mo>\</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">b_e\in B\setminus F</annotation></semantics></math>
then we finish this half.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
must be in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>C</mi><msub><mi>b</mi><mi>e</mi></msub><mo>*</mo></msubsup><annotation encoding="application/x-tex">C_{b_e}^*</annotation></semantics></math>
since otherwise the intersection of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msubsup><mi>C</mi><msub><mi>b</mi><mi>e</mi></msub><mo>*</mo></msubsup><annotation encoding="application/x-tex">C_{b_e}^*</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mi>e</mi></msub><annotation encoding="application/x-tex">C_e</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mi>b</mi><mi>e</mi></msub><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{b_e\}</annotation></semantics></math>
and it is known that the intersection of any circuit and cocircuit in a
matroid is never going to be a singleton.</li>
<li><math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
is a transversal of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msubsup><mi>C</mi><mi>e</mi><mo>*</mo></msubsup><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>B</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{C_e^* | e\in B\}</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mi>f</mi><mi>e</mi></msub><mo stretchy="false" form="prefix">|</mo><msub><mi>f</mi><mi>e</mi></msub><mo>∈</mo><msubsup><mi>C</mi><mi>e</mi><mo>*</mo></msubsup><mo>,</mo><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>B</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{f_e | f_e \in C_e^* ,\forall e\in B\}</annotation></semantics></math>.
And again we can ignore the intersection and prove
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><msub><mi>C</mi><msub><mi>f</mi><mi>e</mi></msub></msub></mrow><annotation encoding="application/x-tex">e\in C_{f_e}</annotation></semantics></math>
for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mi>e</mi></msub><mo>∈</mo><mi>F</mi><mo>\</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">f_e\in F\setminus E</annotation></semantics></math>.
The proof is identical.</li>
</ol>
</div>
<p></p>
So what if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
is another base? We can get the corollary if we show that the base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
is a transversal of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mi>C</mi><mi>e</mi></msub><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>F</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{C_e | e\in F\}</annotation></semantics></math>
for any other base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>≠</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">F\not = B</annotation></semantics></math>.
Finally, here is the proof of the corollary.
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
By contradiction. Suppose that there is a base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
which is not a transversal of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><msub><mi>C</mi><mi>e</mi></msub><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>F</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{C_e | e\in F\}</annotation></semantics></math>.
Then by Hall’s theorem there exists a independent set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>I</mi><mo>⊂</mo><mi>F</mi></mrow><annotation encoding="application/x-tex">I\subset F</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>I</mi><mo stretchy="false" form="prefix">|</mo><mo>&gt;</mo><mo stretchy="false" form="prefix">|</mo><msub><mo>⋃</mo><mrow><mi>e</mi><mo>∈</mo><mi>I</mi></mrow></msub><msub><mi>C</mi><mi>e</mi></msub><mo>∩</mo><mi>B</mi><mo stretchy="false" form="prefix">|</mo></mrow><annotation encoding="application/x-tex">|I|&gt;|\bigcup_{e\in I} C_e\cap B|</annotation></semantics></math>.
Note that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mi>e</mi></msub><annotation encoding="application/x-tex">C_e</annotation></semantics></math>’s
are fundamental circuits of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>.
Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>⋃</mo><mrow><mi>e</mi><mo>∈</mo><mi>I</mi></mrow></msub><msub><mi>C</mi><mi>e</mi></msub><mo>∩</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">\bigcup_{e\in I} C_e\cap B</annotation></semantics></math>
is the largest independent set in the cycle
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∪</mo><mrow><mi>e</mi><mo>∈</mo><mi>I</mi></mrow></msub><msub><mi>C</mi><mi>e</mi></msub></mrow><annotation encoding="application/x-tex">\cup_{e\in I} C_e</annotation></semantics></math>.
A contradiction.
</div>
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-diestel_graph_2017" class="csl-entry" role="listitem">
<div class="csl-left-margin">[1] </div><div class="csl-right-inline">R.
Diestel, Graph <span>Theory</span>, Springer Berlin Heidelberg, Berlin,
Heidelberg, 2017 <a
href="https://doi.org/10.1007/978-3-662-53622-3">10.1007/978-3-662-53622-3</a>.</div>
</div>
<div id="ref-oxley_matroid_2011" class="csl-entry" role="listitem">
<div class="csl-left-margin">[2] </div><div
class="csl-right-inline">J.G. Oxley, Matroid theory, 2nd ed, Oxford
University Press, Oxford ; New York, 2011.</div>
</div>
<div id="ref-brualdi_fundamental_1974" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[3] </div><div
class="csl-right-inline">R.A. Brualdi, On fundamental transversal
matroids, <em>Proceedings of the American Mathematical Society</em>. 45
(1974) 151–156 <a
href="https://doi.org/10.1090/S0002-9939-1974-0387087-4">10.1090/S0002-9939-1974-0387087-4</a>.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Thu, 09 Jan 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/graphic_matroid_representation/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Matroid base packing and covering</title>
    <link>https://talldoor.uk/posts/basepacking/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on January  4, 2025
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;matroid&#39;." href="/tags/matroid/index.html" rel="tag">matroid</a>, <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>, <a title="All pages tagged &#39;combinatorics&#39;." href="/tags/combinatorics/index.html" rel="tag">combinatorics</a>
        
    </div>    
    <section class="body">
        <p></p>
There are few text books in combinatorial optimization discussing topics
in matroid base packing, while matroid base covering(<a
href="https://en.wikipedia.org/wiki/Matroid_partitioning">matroid
partition problem</a>) is everywhere. Packing and covering of trees in
graphs can be found in chapter 51 in <span class="citation"
data-cites="Schrijver2004">[<a href="#ref-Schrijver2004"
role="doc-biblioref">1</a>]</span>.
<h1 data-number="1" id="base-packing-base-covering"><span
class="header-section-number">1</span> Base packing &amp; base
covering</h1>
<div class="theorem-environment Problem" data-index="1" type="Problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">1</span></span>
<p></p>
Given a matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo>,</mo><mrow><mi mathvariant="normal">ℐ</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=(E,\mathop{\mathrm{\mathcal I}})</annotation></semantics></math>
and its bases
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="normal">ℬ</mi><annotation encoding="application/x-tex">\mathop{\mathrm{\mathcal B}}</annotation></semantics></math>,
find
<ol type="1">
<li>(minimum base covering) the min number of bases whose union is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>,
and</li>
<li>(maximum base packing) the max number of pairwise disjoint
bases.</li>
</ol>
</div>
<p></p>
These problems can be formulated with the following integer programs,
base packing:
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">max</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>B</mi><mo>∈</mo><mi mathvariant="normal">ℬ</mi></mrow></munder><msub><mi>x</mi><mi>B</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>B</mi><mo>:</mo><mi>e</mi><mo>∈</mo><mi>B</mi></mrow></munder><msub><mi>x</mi><mi>B</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>x</mi><mi>B</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mrow><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> base </mtext><mspace width="0.333em"></mspace></mrow><mi>B</mi></mrow></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
\max&amp;   &amp;   \sum_{B\in\mathop{\mathrm{\mathcal B}}} x_B&amp;            &amp;   &amp;\\
s.t.&amp;   &amp;   \sum_{B:e\in B} x_B &amp;\leq 1   &amp;   &amp;\forall e\in E\\
    &amp;   &amp;              x_B&amp;\in \left\{ 0,1 \right\}  &amp;   &amp;\forall \text{ base $B$}
\end{align*}</annotation></semantics></math>
<p></p>
base covering:
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>B</mi><mo>∈</mo><mi mathvariant="normal">ℬ</mi></mrow></munder><msub><mi>x</mi><mi>B</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>B</mi><mo>:</mo><mi>e</mi><mo>∈</mo><mi>B</mi></mrow></munder><msub><mi>x</mi><mi>B</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mn>1</mn></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msub><mi>x</mi><mi>B</mi></msub></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="true" form="postfix">}</mo></mrow></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mrow><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> base </mtext><mspace width="0.333em"></mspace></mrow><mi>B</mi></mrow></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
\min&amp;   &amp; \sum_{B\in\mathop{\mathrm{\mathcal B}}} x_B&amp;            &amp;   &amp;\\
s.t.&amp;   &amp; \sum_{B:e\in B} x_B &amp;\geq 1   &amp;   &amp;\forall e\in E\\
    &amp;   &amp;            x_B&amp;\in \left\{ 0,1 \right\}  &amp;   &amp;\forall \text{ base $B$}
\end{align*}</annotation></semantics></math>
<p></p>
Integer programs are hard and these IPs have exponential number of
variables. We consider the linear relaxations.
<p></p>
Actually these two problems are not hard on general matroids. Both of
them can be solved in polynomial number of independence oracle calls.
<ul>
<li>matroid base covering = matroid partitioning ≈ matroid union. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo>,</mo><mrow><mi mathvariant="normal">ℐ</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=(E,\mathop{\mathrm{\mathcal I}})</annotation></semantics></math>
be the matroid. The minimum number of bases that cover the groundset is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">arg</mi><mo>&#8289;</mo></mrow><munder><mi mathvariant="normal">min</mi><mi>k</mi></munder><msub><mi>r</mi><mi>k</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo stretchy="false" form="prefix">|</mo></mrow><annotation encoding="application/x-tex">\arg\min\limits_k r_{k}(E)=|E|</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>r</mi><mi>k</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>⋅</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">r_{k}(\cdot)</annotation></semantics></math>
is the rank function of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>M</mi><mi>k</mi></msup><annotation encoding="application/x-tex">M^k</annotation></semantics></math>.</li>
<li>matroid base packing ≈ matroid union. Maximum integral base packing
number is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">arg</mi><mo>&#8289;</mo></mrow><munder><mi mathvariant="normal">max</mi><mi>k</mi></munder><msub><mi>r</mi><mi>k</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>k</mi><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\arg\max\limits_k r_{k}(E)=kr(M)</annotation></semantics></math>.</li>
</ul>
<p></p>
Thus the integral version of these two problem is polynomial solvable
(in terms of the number of oracle calls) since matroid union is
tractable. We will discuss computing the fractional version later.
<h1 data-number="2" id="matroid-strength-and-density"><span
class="header-section-number">2</span> Matroid strength and density</h1>
<p></p>
We will talk about matroid strength and density and their relation with
base packing and covering in this section. I think none of the results
is new. You can find some of them in <span class="citation"
data-cites="catlin_fractional_1992">[<a
href="#ref-catlin_fractional_1992" role="doc-biblioref">2</a>]</span>
and <span class="citation" data-cites="fan_extensions_2019">[<a
href="#ref-fan_extensions_2019" role="doc-biblioref">3</a>]</span>.
<p></p>
The fractional base covering number for graphic matroids are called
fractional arboricity. It is known that the fractional arboricity
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>G</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\alpha(G)</annotation></semantics></math>
equals to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><munder><mi mathvariant="normal">max</mi><mrow><mi>∅</mi><mo>⊊</mo><mi>X</mi><mo>⊂</mo><mi>E</mi></mrow></munder><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">\max\limits_{\emptyset \subsetneq X\subset E}\frac{|X|}{r(X)}</annotation></semantics></math>.
Define the density for a matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><munder><mi mathvariant="normal">max</mi><mrow><mi>∅</mi><mo>⊊</mo><mi>X</mi><mo>⊂</mo><mi>E</mi></mrow></munder><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">\alpha(M)=\max\limits_{\emptyset \subsetneq X\subset E}\frac{|X|}{r(X)}</annotation></semantics></math>.
The name “density” comes from <span class="citation"
data-cites="catlin_fractional_1992">[<a
href="#ref-catlin_fractional_1992" role="doc-biblioref">2</a>]</span>. I
use symbol
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>α</mi><annotation encoding="application/x-tex">\alpha</annotation></semantics></math>
since density is a generalization of arboricity.
<p></p>
For the packing part consider the fractional version of Nash-Williams
theorem,
<div class="theorem-environment Theorem" data-index="2" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">2</span></span>
<p></p>
The fractional spanning tree packing number of a connected graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,E)</annotation></semantics></math>
equals to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo stretchy="false" form="prefix">[</mo><mi mathvariant="script">𝒫</mi><mo stretchy="false" form="postfix">]</mo><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mo stretchy="false" form="prefix">|</mo><mi mathvariant="script">𝒫</mi><mo stretchy="false" form="prefix">|</mo><mi>−</mi><mn>1</mn></mrow></mfrac></mrow><annotation encoding="application/x-tex">\max \frac{|E[\mathcal P]|}{|\mathcal P|-1}</annotation></semantics></math>,
where the maximum is taken among all partitions
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒫</mi><annotation encoding="application/x-tex">\mathcal P</annotation></semantics></math>
of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>V</mi><annotation encoding="application/x-tex">V</annotation></semantics></math>.
</div>
<p></p>
The fraction in above theorem can be rewrite as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo>−</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac><annotation encoding="application/x-tex">\frac{|E-F|}{r(E)-r(F)}</annotation></semantics></math>,
which only uses elements in the groundset and the rank function and thus
can be generalized to non-graphic matroids. The maximum of this
fraction,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mrow><mi>F</mi><mo>⊂</mo><mi>E</mi></mrow></msub><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo>−</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">\sigma(M)=\max_{F\subset E}\frac{|E-F|}{r(E)-r(F)}</annotation></semantics></math>
is called matroid strength.(The name also comes from <span
class="citation" data-cites="catlin_fractional_1992">[<a
href="#ref-catlin_fractional_1992" role="doc-biblioref">2</a>]</span>.)
<p></p>
For the connections between density and strength, we have the following
inequality,
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>X</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>X</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac><mo>≥</mo><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac><mo>≥</mo><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo>−</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac><mo>=</mo><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mi>.</mi></mrow><annotation encoding="application/x-tex">
\alpha(M)=\max \frac{|X|}{r(X)} \geq \frac{|E|}{r(E)} \geq \min \frac{|E-F|}{r(E)-r(F)} =\sigma(M).
</annotation></semantics></math></span>
<div class="theorem-environment Theorem" data-index="3" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">3</span></span>
<p></p>
Maximum fractional base packing number is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sigma(M)</annotation></semantics></math>.
</div>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
The proof is similar to the graph strength proof for tree packing in
<span class="citation" data-cites="Schrijver2004">[<a
href="#ref-Schrijver2004" role="doc-biblioref">1</a>]</span>. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">B(M)</annotation></semantics></math>
be the base polytope of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="normal">Π</mi><annotation encoding="application/x-tex">\Pi</annotation></semantics></math>
be the powerset of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>E</mi><annotation encoding="application/x-tex">E</annotation></semantics></math>.
Consider the following linear programs,
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>L</mi><mi>P</mi><mn>1</mn><mo>=</mo><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>l</mi><mi>x</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>x</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><mi>B</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
LP1=\min&amp;   &amp;    lx&amp;  \\
    s.t.&amp;   &amp;    x&amp;\in B(M)
\end{align*}</annotation></semantics></math>
<p></p>
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>L</mi><mi>P</mi><mn>2</mn><mo>=</mo><mi mathvariant="normal">max</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>F</mi><mo>⊊</mo><mi>E</mi></mrow></munder><msub><mi>y</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msub><mo stretchy="false" form="prefix">(</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><munder><mo>∑</mo><mrow><mi>F</mi><mo>⊊</mo><mi>E</mi></mrow></munder><msub><mi>y</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msub><msup><mi>χ</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msup></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≤</mo><mi>l</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>y</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><msubsup><mi mathvariant="double-struck">ℝ</mi><mo>+</mo><mi mathvariant="normal">Π</mi></msubsup></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
LP2=\max&amp;   &amp; \sum_{F\subsetneq E} y_{E\setminus F}(r(E)-r(F))&amp;  \\
    s.t.&amp;   &amp; \sum_{F\subsetneq E} y_{E\setminus F} \chi^{E\setminus F} &amp; \leq l\\
        &amp;   &amp;    y &amp; \in \mathbb{R}^\Pi_+
\end{align*}</annotation></semantics></math>
<p></p>
and the dual of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>P</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">LP2</annotation></semantics></math>,
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>L</mi><mi>P</mi><mn>3</mn><mo>=</mo><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>l</mi><mi>x</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><msup><mi>x</mi><mi>T</mi></msup><msup><mi>χ</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msup></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>≥</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∀</mo><mi>F</mi><mo>⊊</mo><mi>E</mi></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>x</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>∈</mo><msubsup><mi mathvariant="double-struck">ℝ</mi><mo>+</mo><mi>E</mi></msubsup></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{align*}
    LP3=\min&amp;   &amp;    lx&amp;                                    &amp;   &amp;\\
        s.t.&amp;   &amp;    x^T\chi^{E\setminus F} &amp;\geq r(E)-r(F) &amp;   &amp;\forall F\subsetneq E\\
            &amp;   &amp;           x&amp;\in \mathbb{R}^E_+                    &amp;   &amp;
\end{align*}</annotation></semantics></math>
<p></p>
We first prove that the polyhedron in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>P</mi><mn>3</mn></mrow><annotation encoding="application/x-tex">LP3</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>Q</mi><mo>=</mo><mo stretchy="false" form="prefix">{</mo><mi>x</mi><mo stretchy="false" form="prefix">|</mo><mi>x</mi><mo>≥</mo><mn>0</mn><mo>,</mo><msup><mi>x</mi><mi>T</mi></msup><msup><mi>χ</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msup><mo>≥</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo><mspace width="1.0em"></mspace><mo>∀</mo><mi>F</mi><mo>⊊</mo><mi>E</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">Q=\{ x | x\geq 0,x^T\chi^{E\setminus F} \geq r(E)-r(F) \quad \forall F\subsetneq E\}</annotation></semantics></math>
is the base polytope of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
One can see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>⊆</mo><mi>Q</mi></mrow><annotation encoding="application/x-tex">B(M)\subseteq Q</annotation></semantics></math>.
Now suppose
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>Q</mi><annotation encoding="application/x-tex">Q</annotation></semantics></math>
is larger than
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">B(M)</annotation></semantics></math>,
there must exists
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>∈</mo><mi>Q</mi></mrow><annotation encoding="application/x-tex">x\in Q</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo stretchy="false" form="prefix">(</mo><mi>U</mi><mo stretchy="false" form="postfix">)</mo><mo>&gt;</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>U</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">x(U)&gt;r(U)</annotation></semantics></math>
for some
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>U</mi><mo>⊆</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">U\subseteq E</annotation></semantics></math>.
Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mn>3</mn><mo stretchy="false" form="postfix">)</mo><mo>&gt;</mo><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{OPT}}(LP3)&gt;\mathop{\mathrm{OPT}}(LP1)</annotation></semantics></math>.
However, for the optimal solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>x</mi><annotation encoding="application/x-tex">x</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>P</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">LP1</annotation></semantics></math>
and any feasible solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>P</mi><mn>2</mn></mrow><annotation encoding="application/x-tex">LP2</annotation></semantics></math>
we have <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mn>1</mn><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><munder><mo>∑</mo><mrow><mi>F</mi><mo>⊊</mo><mi>E</mi></mrow></munder><msub><mi>y</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msub><msup><mi>χ</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msup><mo>⋅</mo><mi>x</mi><mo>=</mo><munder><mo>∑</mo><mrow><mi>F</mi><mo>⊊</mo><mi>E</mi></mrow></munder><msub><mi>y</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msub><mrow><mo stretchy="true" form="prefix">(</mo><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub><mo>−</mo><munder><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>F</mi></mrow></munder><msub><mi>x</mi><mi>e</mi></msub><mo stretchy="true" form="postfix">)</mo></mrow><mo>≥</mo><munder><mo>∑</mo><mrow><mi>F</mi><mo>⊊</mo><mi>E</mi></mrow></munder><msub><mi>y</mi><mrow><mi>E</mi><mo>\</mo><mi>F</mi></mrow></msub><mrow><mo stretchy="true" form="prefix">(</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">)</mo></mrow><mo>=</mo><mrow><mi mathvariant="normal">OPT</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mi>L</mi><mi>P</mi><mn>3</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">
  \mathop{\mathrm{OPT}}(LP1)\geq \sum_{F\subsetneq E} y_{E\setminus F}\chi^{E\setminus F}\cdot x = \sum_{F\subsetneq E} y_{E\setminus F} \left(\sum_{e\in E}x_e-\sum_{e\in F}x_e\right)\geq \sum_{F\subsetneq E} y_{E\setminus F} \left(r(E)-r(F)\right)=\mathop{\mathrm{OPT}}(LP3)
</annotation></semantics></math></span> Hence
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>Q</mi><mo>=</mo><mi>B</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">Q=B(M)</annotation></semantics></math>.
<p></p>
Recall that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mrow><mi>F</mi><mo>⊊</mo><mi>E</mi></mrow></msub><mfrac><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo>\</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">\sigma(M)=\min_{F\subsetneq E}\frac{|E\setminus F|}{r(E)-r(F)}</annotation></semantics></math>.
Note that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\sigma(M)\geq 1</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sigma(M)</annotation></semantics></math>
can be interpreted as the largest
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>λ</mi><mo>&gt;</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\lambda&gt;1</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo>\</mo><mi>F</mi><mo stretchy="false" form="prefix">|</mo><mo>≥</mo><mi>λ</mi><mo stretchy="false" form="prefix">(</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">|E\setminus F| \geq \lambda(r(E)-r(F))</annotation></semantics></math>
holds for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊊</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">F\subsetneq E</annotation></semantics></math>.
Hence
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">{</mo><mi>λ</mi><mo stretchy="false" form="prefix">|</mo><mn mathvariant="bold">𝟏</mn><mo>∈</mo><mi>λ</mi><mi>B</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\sigma(M)=\max \{\lambda | \mathbf 1\in \lambda B(M)\}</annotation></semantics></math>
since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>Q</mi><mo>=</mo><mi>B</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">Q=B(M)</annotation></semantics></math>.
For fixed
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>λ</mi><annotation encoding="application/x-tex">\lambda</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn mathvariant="bold">𝟏</mn><mo>∈</mo><mi>λ</mi><mi>B</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathbf 1 \in \lambda B(M)</annotation></semantics></math>
if and only if there exists
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>λ</mi><mi>b</mi></msub><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">\lambda_b\geq 0</annotation></semantics></math>
for all bases of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mi>b</mi></msub><msub><mi>λ</mi><mi>b</mi></msub><mo>=</mo><mi>λ</mi></mrow><annotation encoding="application/x-tex">\sum_b \lambda_b=\lambda</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mi>b</mi></msub><msub><mi>λ</mi><mi>b</mi></msub><msup><mi>χ</mi><mi>b</mi></msup><mo>≤</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\sum_b \lambda_b \chi^b\leq 1</annotation></semantics></math>.
Hence this shows
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sigma(M)</annotation></semantics></math>
is exactly the base packing LP
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">{</mo><msub><mo>∑</mo><mi>b</mi></msub><msub><mi>λ</mi><mi>b</mi></msub><mo stretchy="false" form="prefix">|</mo><msub><mo>∑</mo><mi>b</mi></msub><msub><mi>λ</mi><mi>b</mi></msub><msup><mi>χ</mi><mi>b</mi></msup><mo>≤</mo><mn>1</mn><mo>,</mo><msub><mi>λ</mi><mi>b</mi></msub><mo>≥</mo><mn>0</mn><mspace width="0.278em"></mspace><mo>∀</mo><mi>b</mi><mo>∈</mo><mi>B</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\max\{\sum_b{\lambda_b}| \sum_{b}\lambda_b\chi^b\leq 1,\lambda_b\geq 0\;\forall b\in B\}</annotation></semantics></math>.
</div>
<p></p>
Note that this proof is a straightforward generalization of the tree
packing theorem in <span class="citation" data-cites="Schrijver2004">[<a
href="#ref-Schrijver2004" role="doc-biblioref">1</a>]</span>, which is
similar to the blocking polyhedra method described in <span
class="citation" data-cites="schrijver_polyhedral_1986">[<a
href="#ref-schrijver_polyhedral_1986"
role="doc-biblioref">4</a>]</span>.
<h2 data-number="2.1" id="constructive-proof"><span
class="header-section-number">2.1</span> Constructive proof</h2>
<p></p>
In <span class="citation" data-cites="Galtier_2018b">[<a
href="#ref-Galtier_2018b" role="doc-biblioref">5</a>]</span> there is a
constructive proof that recovers the optimal
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>⊂</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">F\subset E</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sigma(M)</annotation></semantics></math>
from any optimal solution of hitting set LP(dual to base packing).
<p></p>
The idea is to show that any fraction solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
to base hitting set can be converted to another solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><mrow><mo stretchy="true" form="prefix">{</mo><mn>0</mn><mo>,</mo><mi>c</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">y&#39;(e)\in \left\{ 0,c \right\}</annotation></semantics></math>
for some global constant
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mi>e</mi></msub><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><msub><mo>∑</mo><mi>e</mi></msub><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sum_e w(e)y&#39;(e)\leq \sum_e w(e)y(e)</annotation></semantics></math>.
<p></p>
Define two sets
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo>,</mo><msup><mi>P</mi><mo>′</mo></msup><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo stretchy="false" form="prefix">|</mo></mrow></msup></mrow><annotation encoding="application/x-tex">P, P&#39;\in \mathbb{R}^{|E|}</annotation></semantics></math>,
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>P</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>y</mi><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo stretchy="false" form="prefix">|</mo></mrow></msup><mo>:</mo><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>0</mn><mspace width="0.278em"></mspace><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi><mo>;</mo><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>1</mn><mspace width="0.278em"></mspace><mo>∀</mo><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> base B</mtext></mrow><mo stretchy="true" form="postfix">}</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><msup><mi>P</mi><mo>′</mo></msup></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>y</mi><mo>∈</mo><mi>P</mi><mo>:</mo><mo>∀</mo><mi>e</mi><mo>∈</mo><mi>E</mi><mo>,</mo><mo>∃</mo><msup><mi>B</mi><mi>e</mi></msup><mo>∈</mo><mi mathvariant="script">ℬ</mi><mspace width="0.278em"></mspace><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi><mspace width="0.278em"></mspace><mi>e</mi><mo>∈</mo><msup><mi>B</mi><mi>e</mi></msup><mo>∧</mo><mi>y</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>B</mi><mi>e</mi></msup><mo stretchy="false" form="postfix">)</mo><mo>=</mo><munder><mi mathvariant="normal">min</mi><mrow><mi>B</mi><mo>∈</mo><mi mathvariant="script">ℬ</mi></mrow></munder><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">}</mo></mrow><mi>.</mi></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
P   &amp;=\left\{ y\in \mathbb{R}^{|E|}: y(e)\geq 0 \;\forall e\in E; y(B)\geq 1 \; \forall \text{ base B} \right\},\\
P&#39;     &amp;=\left\{ y\in P: \forall e\in E, \exists B^e\in \mathcal B \; s.t. \; e\in B^e \land y(B^e)=\min_{B\in \mathcal B} y(B) \right\}.
\end{aligned}
</annotation></semantics></math></span>
<p></p>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>P</mi><mo>′</mo></msup><annotation encoding="application/x-tex">P&#39;</annotation></semantics></math>
is contained in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>
and every element is in a minimum base with respect to weights
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>:</mo><mi>E</mi><mo>→</mo><mi mathvariant="double-struck">ℝ</mi></mrow><annotation encoding="application/x-tex">y:E\to \mathbb{R}</annotation></semantics></math>.
<div id="y2yprime" class="theorem-environment Proposition"
data-index="4" type="Proposition">
<span class="theorem-header"><span class="type">Proposition</span><span
class="index">4</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><mi>P</mi></mrow><annotation encoding="application/x-tex">y\in P</annotation></semantics></math>.
There exists
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo>∈</mo><msup><mi>P</mi><mo>′</mo></msup></mrow><annotation encoding="application/x-tex">y&#39;\in P&#39;</annotation></semantics></math>
s.t.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y(e)\geq y&#39;(e)</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>.
</div>
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
The proof is contrustive. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><msub><mi>e</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>e</mi><mi>r</mi></msub><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">B=\left\{ e_1,\ldots, e_r \right\}</annotation></semantics></math>
be a minimum weight base with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>.
Assume that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>e</mi><mn>1</mn></msub><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>…</mi><mo>≤</mo><mi>y</mi><mo stretchy="false" form="prefix">(</mo><msub><mi>e</mi><mi>r</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y(e_1)\leq \ldots \leq y(e_r)</annotation></semantics></math>.
For each element
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∉</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">e\notin B</annotation></semantics></math>,
let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mi>e</mi></msub><annotation encoding="application/x-tex">C_e</annotation></semantics></math>
be the fundamental circuit in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo>+</mo><mi>e</mi></mrow><annotation encoding="application/x-tex">B+e</annotation></semantics></math>.
Then we define
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>
as follows. <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mtable><mtr><mtd columnalign="left" style="text-align: left"><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left"><mi>e</mi><mo>∈</mo><mi>B</mi></mtd></mtr><mtr><mtd columnalign="left" style="text-align: left"><munder><mi mathvariant="normal">min</mi><mrow><mi>e</mi><mo>∈</mo><msub><mi>C</mi><mi>e</mi></msub></mrow></munder><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mtd><mtd columnalign="left" style="text-align: left"><mi>e</mi><mo>∉</mo><mi>B</mi></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">
y&#39;(e)=
\begin{cases}
y(e)    &amp; e\in B\\
\min\limits_{e\in C_e} y(e) &amp;e\notin B
\end{cases}
</annotation></semantics></math></span>
<p></p>
One can easily verify that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y&#39;(e)\leq y(e)</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>B</mi><annotation encoding="application/x-tex">B</annotation></semantics></math>
is still the minimum weight base under weights
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>.
Now it remains to show that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo>∈</mo><msup><mi>P</mi><mo>′</mo></msup></mrow><annotation encoding="application/x-tex">y&#39;\in P&#39;</annotation></semantics></math>.
<ol type="1">
<li>Every element is in a minimum base. For
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">e\in B</annotation></semantics></math>
this is automatically satisfied. We consider
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∉</mo><mi>B</mi></mrow><annotation encoding="application/x-tex">e\notin B</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo>∈</mo><msub><mi>C</mi><mi>e</mi></msub></mrow><annotation encoding="application/x-tex">f\in C_e</annotation></semantics></math>
be the element in the fundamental circuit of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>B</mi><mo>+</mo><mi>e</mi></mrow><annotation encoding="application/x-tex">B+e</annotation></semantics></math>
with smallest weight
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y(e)</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>B</mi><mi>e</mi></msup><mo>=</mo><mi>B</mi><mo>+</mo><mi>e</mi><mo>−</mo><mi>f</mi></mrow><annotation encoding="application/x-tex">B^e=B+e-f</annotation></semantics></math>
is a base and we have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><msup><mi>B</mi><mi>e</mi></msup><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">y&#39;(B^e)=y&#39;(B)</annotation></semantics></math>.</li>
<li>For all base
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>B</mi><mo>′</mo></msup><annotation encoding="application/x-tex">B&#39;</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><msup><mi>B</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">y&#39;(B&#39;)\geq 1</annotation></semantics></math>
holds since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><msup><mi>B</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>y</mi><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">y&#39;(B&#39;)\geq y&#39;(B) = y(B)\geq 1</annotation></semantics></math>.</li>
</ol>
</div>
<!-- The importance of $P'$ is that for any $y\in P'$ and set $E(\theta,y)=\set{e\in E:y(e)\leq \theta}$, 
the size of the intersection of $E(\theta,y)$ and any minimum weight base $B$ is exactly the rank of $E(\theta,y)$. The proof is by contradiction. -->
<p></p>
<a href="#y2yprime" title="Proposition 4">Proposition 4</a> shows that
we can easily convert any solution to base hitting set
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>∈</mo><mi>P</mi></mrow><annotation encoding="application/x-tex">y\in P</annotation></semantics></math>)
to a more well-behaved solution
(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo>∈</mo><msup><mi>P</mi><mo>′</mo></msup></mrow><annotation encoding="application/x-tex">y&#39;\in P&#39;</annotation></semantics></math>).
Note that our final goal is to find some special optimal solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo>∈</mo><mo stretchy="false" form="prefix">{</mo><mn>0</mn><mo>,</mo><mi>c</mi><msup><mo stretchy="false" form="postfix">}</mo><mi>E</mi></msup></mrow><annotation encoding="application/x-tex">y&#39;\in \{0,c\}^E</annotation></semantics></math>.
Thus we want to analyse the optimal
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>
further.
<p></p>
We are solving
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><msup><mi>y</mi><mo>′</mo></msup></msub><mrow><mo stretchy="true" form="prefix">{</mo><msub><mo>∑</mo><mi>e</mi></msub><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">|</mo><msup><mi>y</mi><mo>′</mo></msup><mo>∈</mo><msup><mi>P</mi><mo>′</mo></msup><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">\max_{y&#39;} \left\{ \sum_e w(e)y&#39;(e)| y&#39;\in P&#39; \right\}</annotation></semantics></math>.
Notice that the minimum weight base under weight
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>
should always have weight 1. We want to prove that for any weight
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>w</mi><annotation encoding="application/x-tex">w</annotation></semantics></math>
there is an optimal
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>
with only one non-zero value. Thus we consider expressing the solution
with values in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>.
Suppose we have computed the optimal
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>
and let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>θ</mi><mn>1</mn></msub><mo>&lt;</mo><mi>…</mi><mo>&lt;</mo><msub><mi>θ</mi><mi>h</mi></msub></mrow><annotation encoding="application/x-tex">\theta_1 &lt; \ldots &lt; \theta_h</annotation></semantics></math>
be the set of distinct values in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>μ</mi><mi>i</mi></msub><annotation encoding="application/x-tex">\mu_i</annotation></semantics></math>
be the number of edges with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mi>θ</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">y&#39;(e)=\theta_i</annotation></semantics></math>.
One immediate observation is that the objective
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mi>e</mi></msub><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sum_e w(e)y&#39;(e)</annotation></semantics></math>
can be written as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mi>i</mi></msub><msub><mi>θ</mi><mi>i</mi></msub><msub><mi>μ</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">\sum_i \theta_i \mu_i</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>v</mi><mi>i</mi></msub><mo>=</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>e</mi><mo>:</mo><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="true" form="postfix">}</mo></mrow><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>e</mi><mo>:</mo><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><msub><mi>θ</mi><mrow><mi>i</mi><mo>−</mo><mn>1</mn></mrow></msub><mo stretchy="true" form="postfix">}</mo></mrow><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">v_i=r(\left\{ e: y&#39;(e)\leq \theta_{i} \right\})-r(\left\{ e: y&#39;(e)\leq \theta_{i-1} \right\})</annotation></semantics></math>
be the rank increment when involving elements with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mi>θ</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">y&#39;(e)=\theta_i</annotation></semantics></math>.
Another immediate observation is that the weight of minimum base is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>B</mi></mrow></msub><msup><mi>y</mi><mo>′</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mo>∑</mo><mi>i</mi></msub><msub><mi>v</mi><mi>i</mi></msub><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\sum_{e\in B} y&#39;(e)=\sum_i v_i\theta_i=1</annotation></semantics></math>.
Based on these observations we write the following LP for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>θ</mi><annotation encoding="application/x-tex">\theta</annotation></semantics></math>.
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mtable><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi mathvariant="normal">min</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><munder><mo>∑</mo><mi>i</mi></munder><msub><mi>μ</mi><mi>i</mi></msub><msub><mi>θ</mi><mi>i</mi></msub></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"><mi>s</mi><mi>.</mi><mi>t</mi><mi>.</mi></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><munder><mo>∑</mo><mi>i</mi></munder><msub><mi>v</mi><mi>i</mi></msub><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn></mtd></mtr><mtr><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"></mtd><mtd columnalign="right" style="text-align: right; padding-right: 0"></mtd><mtd columnalign="left" style="text-align: left; padding-left: 0"><mn>0</mn><mo>≤</mo><msub><mi>θ</mi><mn>1</mn></msub><mo>≤</mo><msub><mi>θ</mi><mn>2</mn></msub><mo>≤</mo><mi>…</mi><mo>≤</mo><msub><mi>θ</mi><mi>h</mi></msub></mtd></mtr></mtable><annotation encoding="application/x-tex">
\begin{aligned}
\min&amp;   &amp;   &amp;\sum_i \mu_i\theta_i \\
s.t.&amp;   &amp;   &amp;\sum_i v_i\theta_i = 1\\
    &amp;   &amp;   &amp;0 \leq \theta_1\leq \theta_2\leq \ldots \leq \theta_h
\end{aligned}
</annotation></semantics></math></span>
<p></p>
Suppose the optimal
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>′</mo></msup><annotation encoding="application/x-tex">y&#39;</annotation></semantics></math>
is given, we can compute the optimal
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>θ</mi><annotation encoding="application/x-tex">\theta</annotation></semantics></math>
in the above LP and recover another solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>″</mo></msup><annotation encoding="application/x-tex">y&#39;&#39;</annotation></semantics></math>
to base hitting set. One can see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>y</mi><mo>″</mo></msup><annotation encoding="application/x-tex">y&#39;&#39;</annotation></semantics></math>
is still in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>P</mi><mo>′</mo></msup><annotation encoding="application/x-tex">P&#39;</annotation></semantics></math>.
This LP has
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>h</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">h+1</annotation></semantics></math>
linearly independent constraints and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>h</mi><annotation encoding="application/x-tex">h</annotation></semantics></math>
variables. Thus only
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>h</mi><annotation encoding="application/x-tex">h</annotation></semantics></math>
of the constraints are tight. We have already known that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mi>i</mi></msub><msub><mi>v</mi><mi>i</mi></msub><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">\sum_i v_i\theta_i = 1</annotation></semantics></math>
must be tight. Then there is always an optimal solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>θ</mi><annotation encoding="application/x-tex">\theta</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>0</mn><mo>=</mo><msub><mi>θ</mi><mn>1</mn></msub><mo>=</mo><mi>…</mi><mo>=</mo><msub><mi>θ</mi><mi>k</mi></msub><mo>&lt;</mo><msub><mi>θ</mi><mrow><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mi>…</mi><mo>=</mo><msub><mi>θ</mi><mi>h</mi></msub><mo>=</mo><mi>c</mi></mrow><annotation encoding="application/x-tex">0=\theta_1=\ldots=\theta_k &lt; \theta_{k+1}=\ldots = \theta_h =c</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>
be the set of elements with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>y</mi><mo>″</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y&#39;&#39;(e)=0</annotation></semantics></math>.
Note that the minimum weight base contains
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">r(F)</annotation></semantics></math>
elements of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>.
Thus we known that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">c=\frac{1}{r(E)-r(F)}</annotation></semantics></math>.
The objective is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow></msub><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><msup><mi>y</mi><mo>″</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi><mo>−</mo><mi>F</mi></mrow></msub><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><msup><mi>y</mi><mo>″</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mfrac><mrow><msub><mo>∑</mo><mrow><mi>e</mi><mo>∈</mo><mi>E</mi><mo>−</mo><mi>F</mi></mrow></msub><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>e</mi><mo stretchy="false" form="postfix">)</mo></mrow><mrow><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo></mrow></mfrac></mrow><annotation encoding="application/x-tex">\sum_{e\in E} w(e)y&#39;&#39;(e)=\sum_{e\in E-F}w(e)y&#39;&#39;(e)=\frac{\sum_{e\in E-F} w(e)}{r(E)-r(F)}</annotation></semantics></math>.
<div class="theorem-environment Theorem" data-index="5" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">5</span></span>
<p></p>
Minimum fractional base covering is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\alpha(M)</annotation></semantics></math>.
</div>
<p></p>
The proof is similar to and easier than the previous one. The
corresponding polyhedron in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>L</mi><mi>P</mi><mn>3</mn></mrow><annotation encoding="application/x-tex">LP3</annotation></semantics></math>
becomes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><mi>x</mi><mo stretchy="false" form="prefix">|</mo><msup><mi>x</mi><mi>T</mi></msup><msup><mi>χ</mi><mi>F</mi></msup><mo>≤</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>F</mi><mo stretchy="false" form="postfix">)</mo><mspace width="0.278em"></mspace><mo>∀</mo><mi>F</mi><mo>⊂</mo><mi>E</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\{x| x^T\chi^{F}\leq r(F)\; \forall F\subset E\}</annotation></semantics></math>
which is exactly the independence polytope. Similarly, constructive
proof for base covering exists <span class="citation"
data-cites="Galtier_2018b">[<a href="#ref-Galtier_2018b"
role="doc-biblioref">5</a>]</span>.
<p></p>
Note that these two theorems can be generalized to weighted packing and
covering of matroid bases.
<h2 data-number="2.2" id="integral-gap"><span
class="header-section-number">2.2</span> Integral gap</h2>
<p></p>
It is known that the integral base packing number is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">⌊</mo><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">⌋</mo></mrow><annotation encoding="application/x-tex">\left\lfloor \sigma(M) \right\rfloor</annotation></semantics></math>
and the integral base covering number is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">⌈</mo><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">⌉</mo></mrow><annotation encoding="application/x-tex">\left\lceil \alpha(M) \right\rceil</annotation></semantics></math>.
Thus the integral gap for both base packing and covering are quite
small.
<p></p>
In <span class="citation" data-cites="fan_extensions_2019">[<a
href="#ref-fan_extensions_2019" role="doc-biblioref">3</a>]</span> there
are stronger theorems describing the relations between integral
packing/covering number and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>σ</mi><annotation encoding="application/x-tex">\sigma</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>α</mi><annotation encoding="application/x-tex">\alpha</annotation></semantics></math>.
<div class="theorem-environment Theorem" data-index="6" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">6</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ε</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\varepsilon\in [0,1)</annotation></semantics></math>
be the fractional part of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\sigma(M)</annotation></semantics></math>
or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\alpha(M)</annotation></semantics></math>,
then there exists a packing(covering) of size
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">⌊</mo><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">⌋</mo></mrow><annotation encoding="application/x-tex">\left\lfloor \sigma(M) \right\rfloor</annotation></semantics></math>(<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">⌈</mo><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="true" form="postfix">⌉</mo></mrow><annotation encoding="application/x-tex">\left\lceil \alpha(M) \right\rceil</annotation></semantics></math>),
one of the independnet sets in the packing(covering) is of size at most
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ε</mi><mo>⋅</mo><mi>r</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\varepsilon\cdot r(M)</annotation></semantics></math>.
</div>
<h2 data-number="2.3" id="duality"><span
class="header-section-number">2.3</span> Duality</h2>
<p></p>
Applying the rank function of matroid dual derives the following
(Theorem 1 in <span class="citation"
data-cites="catlin_fractional_1992">[<a
href="#ref-catlin_fractional_1992" role="doc-biblioref">2</a>]</span>),
<div class="theorem-environment Theorem" data-index="7" type="Theorem">
<span class="theorem-header"><span class="type">Theorem</span><span
class="index">7</span></span>
<p></p>
For matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
without any loop or coloop, <span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>M</mi><mo>*</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mfrac><mrow><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><mrow><mi>α</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mn>1</mn></mrow></mfrac></mrow><annotation encoding="application/x-tex">\sigma(M^*)=\frac{\alpha(M)}{\alpha(M)-1}</annotation></semantics></math></span>
</div>
<p></p>
Another relation worth noting is hitting set and set covering. The
hitting set problem for matroid bases is known as computing the cogirth
of the matroid. However, base covering is not a dual problem for
cogirth. Sets in the corresponding hitting set problem of set covering
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>S</mi><mi>e</mi></msub><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><mi>B</mi><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>B</mi><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">S_e=\left\{ B|e\in B \right\}</annotation></semantics></math>
for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>e</mi><mo>∈</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">e\in E</annotation></semantics></math>.
<h1 data-number="3" id="computing-the-strength-and-density"><span
class="header-section-number">3</span> Computing the strength and
density</h1>
<p></p>
For graphic matroids, the strength and fractional arboricity are known
to be computable in strongly polynomial time. See chapter 51.4 in <span
class="citation" data-cites="Schrijver2004">[<a
href="#ref-Schrijver2004" role="doc-biblioref">1</a>]</span> and <a
href="https://courses.grainger.illinois.edu/cs598csc/fa2024/Notes/lec-tree-packing.pdf">this
notes</a>.
<p></p>
The idea is to consider the dual problem which has only
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo stretchy="false" form="prefix">|</mo></mrow><annotation encoding="application/x-tex">|E|</annotation></semantics></math>
variables. If there is a separation oracle for testing whether a dual
solution
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>x</mi><annotation encoding="application/x-tex">x</annotation></semantics></math>
is feasible, then ellipsoid method can be used for a polynomial time
algorithm.
<p></p>
For spanning tree packing the dual is graph min-cut problem, which is
easy for graphic matroids but NP-Hard for general matroids (to find the
cogirth). The separation oracle = find minimum weight base. Chekuri and
Quanrud <span class="citation" data-cites="chekuri_near_linear_2017">[<a
href="#ref-chekuri_near_linear_2017" role="doc-biblioref">6</a>]</span>
discovered near-linear time approximation scheme for some implicit
fraction packing problems. For fractional base packing, their algorithm
outputs a (1-ε)-approximation with
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mover><mi>O</mi><mo accent="true">̃</mo></mover><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mi>/</mi><msup><mi>ϵ</mi><mn>2</mn></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\tilde O(n/\epsilon^2)</annotation></semantics></math>
independence oracle calls. For the capacitated version, the number of
oracle calls becomes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mover><mi>O</mi><mo accent="true">̃</mo></mover><mo stretchy="false" form="prefix">(</mo><mi>r</mi><mi>n</mi><mi>/</mi><msup><mi>ϵ</mi><mn>2</mn></msup><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\tilde O(rn/\epsilon^2)</annotation></semantics></math>.
Almost at the same time, <a
href="https://dblp.org/pid/54/3460.html">Jérôme Galtier</a> published
similar results for graphs <span class="citation"
data-cites="Galtier_2018a">[<a href="#ref-Galtier_2018a"
role="doc-biblioref">7</a>]</span> and for matroids <span
class="citation" data-cites="Galtier_2018b">[<a
href="#ref-Galtier_2018b" role="doc-biblioref">5</a>]</span>.
<p></p>
For spanning tree covering the dual is finding a maximum edge set whose
intersection with each spanning tree is at most 1. This problem can be
thought as a set cover, in which the sets are
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><mi>T</mi><mo stretchy="false" form="prefix">|</mo><mi>e</mi><mo>∈</mo><mi>T</mi><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ T|e\in T \right\}</annotation></semantics></math>
for each edge
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>e</mi><annotation encoding="application/x-tex">e</annotation></semantics></math>.
The separation oracle solves the following problem: given edge weight
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>:</mo><mi>E</mi><mo>→</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">x:E\to [0,1]</annotation></semantics></math>,
is there a spanning tree with weight greater than 1? We can simply find
a matroid base with the largest weight. Thus for general matroid we can
find the fractional arboricity through ellipsoid method.
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-Schrijver2004" class="csl-entry" role="listitem">
<div class="csl-left-margin">[1] </div><div class="csl-right-inline">A.
Schrijver, <a
href="http://books.google.com/books?hl=en&amp;lr=&amp;id=mqGeSQ6dJycC&amp;oi=fnd&amp;pg=PA1&amp;dq=Combinatorial+optimization+Polyhedra+and+Efficiency&amp;ots=xPOTKYfsKd&amp;sig=aH7tG7iKLIIljl5SMMx2yWNMAbM">Combinatorial
optimization <span>Polyhedra</span> and <span>Efficiency</span></a>,
Springer, 2004.</div>
</div>
<div id="ref-catlin_fractional_1992" class="csl-entry" role="listitem">
<div class="csl-left-margin">[2] </div><div
class="csl-right-inline">P.A. Catlin, J.W. Grossman, A.M. Hobbs, H.-J.
Lai, Fractional arboricity, strength, and principal partitions in graphs
and matroids, <em>Discrete Applied Mathematics</em>. 40 (1992) 285–302
<a
href="https://doi.org/10.1016/0166-218X(92)90002-R">10.1016/0166-218X(92)90002-R</a>.</div>
</div>
<div id="ref-fan_extensions_2019" class="csl-entry" role="listitem">
<div class="csl-left-margin">[3] </div><div class="csl-right-inline">G.
Fan, H. Jiang, P. Li, D.B. West, D. Yang, X. Zhu, Extensions of matroid
covering and packing, <em>European Journal of Combinatorics</em>. 76
(2019) 117–122 <a
href="https://doi.org/10.1016/j.ejc.2018.09.010">10.1016/j.ejc.2018.09.010</a>.</div>
</div>
<div id="ref-schrijver_polyhedral_1986" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[4] </div><div class="csl-right-inline">A.
Schrijver, Polyhedral proof methods in combinatorial optimization,
<em>Discrete Applied Mathematics</em>. 14 (1986) 111–133 <a
href="https://doi.org/10.1016/0166-218X(86)90056-9">10.1016/0166-218X(86)90056-9</a>.</div>
</div>
<div id="ref-Galtier_2018b" class="csl-entry" role="listitem">
<div class="csl-left-margin">[5] </div><div class="csl-right-inline">J.
Galtier, Fast approximation of matroid packing and covering, <em>Annals
of Operations Research</em>. 271 (2018) 575–598 <a
href="https://doi.org/10.1007/s10479-018-2756-8">10.1007/s10479-018-2756-8</a>.</div>
</div>
<div id="ref-chekuri_near_linear_2017" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[6] </div><div class="csl-right-inline">C.
Chekuri, K. Quanrud, Near-<span>Linear</span> <span>Time</span>
<span>Approximation</span> <span>Schemes</span> for some
<span>Implicit</span> <span>Fractional</span> <span>Packing</span>
<span>Problems</span>, in: <em>Proceedings of the
<span>Twenty</span>-<span>Eighth</span> <span>Annual</span>
<span>ACM</span>-<span>SIAM</span> <span>Symposium</span> on
<span>Discrete</span> <span>Algorithms</span></em>, <span>Society for
Industrial and Applied Mathematics</span>, 2017: pp. 801–820 <a
href="https://doi.org/10.1137/1.9781611974782.51">10.1137/1.9781611974782.51</a>.</div>
</div>
<div id="ref-Galtier_2018a" class="csl-entry" role="listitem">
<div class="csl-left-margin">[7] </div><div class="csl-right-inline">J.
Galtier, Computing weighted strength and applications to partitioning,
<em>SIAM Journal on Discrete Mathematics</em>. 32 (2018) 2747–2782 <a
href="https://doi.org/10.1137/15M102914X">10.1137/15M102914X</a>.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Sat, 04 Jan 2025 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/basepacking/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>运筹学会数学规划分会第十届研究生论坛</title>
    <link>https://talldoor.uk/posts/ORMPconf24/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on November  9, 2024
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;travel&#39;." href="/tags/travel/index.html" rel="tag">travel</a>
        
    </div>    
    <section class="body">
        <!-- ### <https://arxiv.org/abs/2209.10336> 边伟

压缩映射找不动点 anderson alg 收敛效果. 关注压缩映射不是smooth

做的东西有太多的假设 hilbert 空间能把非光滑的压缩映射分解成光滑非凸+凸非光滑的两个映射. 把这个东西推广到有限维. 最后证了 r-linear convergence

貌似在规划问题里面 他们根本不研究复杂度, 因为他们甚至是按iteration 数量来看收敛性的, 只关心迭代次数, 而且他们要做实验. 而且看起来是想一些启发式的办法, 然后证一些结果...

看起来没什么离散问题能做

### 解绝对值方程 陈永鑫

不懂splitting method, 所以完全没听懂

### 多目标 共轭梯度方法 何青芮

不懂

### job scheduling with penalties 胡郭军

用 DP 给了 FPTAS.

听起来技术并不强而且很神秘, 难以看出为何dp分段就有FPTAS了,要找他聊聊. 聊了, 原来他们做的东西和正常的FPT并不一样, 有个神奇参数.

### 有个两阶段随机优化问题 谭莉

$$
    \min \{c\cdot x + \max E(Q(x,\varepsilon)) \text{ subject to some constraints}\}
$$
他们考虑 $x$
一阶段 $\max$ 的问题是整数规划, 而二阶段是连续的

### facility location with constraints on agents and facilities

BnB. 看起来没什么新东西.

### allocate chores

achieve competitive equilibrium.

-  everything is allocated
-  for each agent, he gets what he wants
-  ?
-  solving it exactly

### 三角形梯度下降

连续做k次梯度下降, 然后换方向, 方向类似前k次梯度下降方向矢量和. 有理论上的更好收敛率

感觉大家都不知道该怎么在10分钟present东西, 学生大部分讲的都很烂, 有人甚至做了62页slides 10分钟讲,相当于1分钟要翻6页... -->
<h3 data-number="1" id="南充站---开会的地方"><span
class="header-section-number">1</span> 南充站 -&gt; 开会的地方</h3>
<p></p>
南充看起来并不发达， 是个很小的城市.
从车站到看起来是市中心的地方只需要步行 20 分钟.
<figure>
<img src="/images/MPconf24/station.jpeg" alt="车站" />
<figcaption aria-hidden="true">车站</figcaption>
</figure>
<!-- ![从车站到北湖公园, 坐公交车不到10分钟](/images/MPconf24/bus.jpeg) -->
<p></p>
开会的地方在北湖宾馆， 旁边就是北湖公园.
<figure>
<img src="/images/MPconf24/northlakepark1.jpeg" alt="北湖公园" />
<figcaption aria-hidden="true">北湖公园</figcaption>
</figure>
<figure>
<img src="/images/MPconf24/northlakepark2.jpeg"
alt="北湖公园有很多灯, 每晚都有很吵的喷泉和唱歌表演" />
<figcaption aria-hidden="true">北湖公园有很多灯,
每晚都有很吵的喷泉和唱歌表演</figcaption>
</figure>
<p></p>
开会之前的晚上也有免费晚饭， 爽诶.
<figure>
<img src="/images/MPconf24/lunch.jpeg" alt="周六的午饭" />
<figcaption aria-hidden="true">周六的午饭</figcaption>
</figure>
<p></p>
虽然味道一般， 但是有免费的饭吃就很好. 开一天的会但是有五顿饭 +
两次茶歇可以免费吃！ 而且东湖宾馆对面是一个小商业区， 有麦当劳可以吃.
<h3 data-number="2" id="会"><span class="header-section-number">2</span>
会</h3>
<p></p>
五位老师讲 30min 报告， 四人做连续优化， 一人做人工智能. 学生报告 30
人， 分两组同时进行， 每人只有 15min, 分成两组在两个会议厅进行，
所以只能听到一半人的 talk. 我听的 15 个人里只有一人讲偏组合优化的东西，
其他人都是讲连续优化. 每场报告平均要听到 10 次 「Lipschitz」.
所以一天下来大概听到了 100 多次 Lipschitz continuity…
<p></p>
会议在安排上有点问题. 各组学生报告之间没有任何时间间隔，
而且大家并不能在 15 分钟之内轻松的讲完自己的工作. 所以尽管提前读了所有
abstract 然后选好了感兴趣的 talk,
从一个会场赶到另外一个之后会听不到开头.
大家花了太少的时间介绍背景和问题， 花太多的时间介绍技术，
因此如果没有非常仔细的听开头， 即使看过 abstract
我也完全无法听懂他在讲什么(也有我不懂连续优化的原因).
另外我可以很确定的说，
在数学系做优化的学生明显不如在计算机系做优化的学生会讲东西， 有人甚至给
15 分钟的 talk 做了 62 页 slides, 而且并不是 <code>\pause</code>
之类的产生的动画而是写满定理和证明的 62 页. 最终他也没有翻完 62 页
slides… 我觉得问题可能在于，
连续优化方面的问题和技术相比组合更复杂更难有直观的解释， 我听的 15
个同学中并没有人能简洁的说自己做的东西的 intuition.
因此只有同方向的人才能听懂一些 talk. 不过五个教授中有三人讲的很好，
即使只有本科最优化导论的基础(没错就是我)也能大概听懂.
<p></p>
给我的感觉是， 连续方面的优化有更多的数学分析工具，
因此可以研究更复杂的问题， 大家都在做非凸、非连续的东西；
大家不太关心复杂度， 而更关注收敛率； 使用的都是数值算法而不是组合算法，
所以即使是 equivalent reformulation 数值结果上也可能会差距很大；
一个技术往往可以吃很久很久(也许吧…). 感觉 tcs
和连续数学规划最大的共同点是有些方向发的期刊一样…
<p></p>
一个有意思的(并且我觉得很反直觉)地方是，
貌似数学系做的连续数学规划比理论计算机这里做的组合优化在工业上有更广的应用.
上数学课的时候大家都会说工业里的东西往往都不是连续的，
离散的东西更难处理，
然而真正做离散问题的技术反而不如连续规划在工业上常用.
开会的时候有个例子.
香港理工大学的张在坤老师讲自己十二年前在中科院的博士论文中未发表的高维无导数优化方法.
是个很简单的算法， 有点类似 Seidel 的 LP algorithm, 选一个低维子空间，
在子空间里近似的算导数做优化， 然后转化到一个更低维度的子问题，
然后递归的在子问题上跑这个算法. framework 看起来和那些 multidimensional
search/ LP-type 的算法一模一样， 只不过选子空间有些技巧.
这样的算法难以想象在工业界有如此大的应用: 会上讲 Intel, Airbus, Scipy
1.14 和 国内 EDA 方面的一些公司都要用高效的高维无导数优化方法.
然而同样用这些框架的组合优化方法大概只在理论上有意义了，
为了更好看的复杂度用了很多对 implementation 非常不友好的技术.
另外一点是， 听到的所有学生的报告都会写代码做实验， 反而 tcs
这里不写(重要原因是因为很多东西写不出来…) 所以可能 tcs
更应该被丢到数学系而做数学规划的人应该去计算机系. (当然作为做 tcs
这边的人我很不希望这样)
<p></p>
另外这个论坛会在做 presentation 的 30 个研究生中选出 9 人发优秀报告奖.
可以明显看出哪些人是为了拿奖来的， 哪些人是为了旅游来的 :)
吃晚饭的时候跟同桌的学生聊天， 发现国内 MP 的 community 中的联系貌似比
tcs 这里要强的多. 这体现在几乎每个做 MP
的研究生都认识来参会的机会所有老师， 而且他们的老师也都是师兄弟关系； 在
TCS 这边至少除去东部几个强组之外我觉得不是这样.
<p></p>
来听这个会确实改变了我对 OR/MP 研究的认识，
我原本以为这边会做超级应用的数学， 像是计算经济 / 工业规划问题之类的，
结果发现大多数人还是在做理论的， 而且做的东西看起来都很深.
<h3 data-number="3" id="返回"><span
class="header-section-number">3</span> 返回</h3>
<p></p>
南充天气很好， 不像成都几乎每天都是雾霾 / 阴天.
<figure>
<img src="/images/MPconf24/station2.jpeg" alt="车站" />
<figcaption aria-hidden="true">车站</figcaption>
</figure>
<figure>
<img src="/images/MPconf24/station3.jpeg" alt="火车" />
<figcaption aria-hidden="true">火车</figcaption>
</figure>
    </section>
</article>
]]></description>
    <pubDate>Sat, 09 Nov 2024 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/ORMPconf24/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Minimizing Sum of PWL Convex Functions</title>
    <link>https://talldoor.uk/posts/fixed-dimension-LP/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on September 20, 2024
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;alg&#39;." href="/tags/alg/index.html" rel="tag">alg</a>, <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>, <a title="All pages tagged &#39;LP&#39;." href="/tags/LP/index.html" rel="tag">LP</a>
        
    </div>    
    <section class="body">
        <p></p>
This is my note on low-dimension linear programming &amp; color
refinement algorithms.
<h1 data-number="1" id="the-problem-failed-attempts"><span
class="header-section-number">1</span> the problem &amp; failed
attempts</h1>
<p></p>
In September I’m working on the following small problem,
<div id="probpwl" class="theorem-environment Problem" data-index="1"
type="Problem"
title="Minimizing the Sum of Piecewise Linear Convex Functions">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">1</span><span class="name">Minimizing the Sum of Piecewise
Linear Convex Functions</span></span>
<p></p>
Given
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
piecewise linear convex functions
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mn>1</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>f</mi><mi>n</mi></msub><mo>:</mo><mi mathvariant="double-struck">ℝ</mi><mo>→</mo><mi mathvariant="double-struck">ℝ</mi></mrow><annotation encoding="application/x-tex">f_1,...,f_n:\mathbb{R}\to \mathbb{R}</annotation></semantics></math>
of total
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>m</mi><annotation encoding="application/x-tex">m</annotation></semantics></math>
breakpoints, and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
linear functions
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>a</mi><mi>i</mi></msub><mo>⋅</mo><mi>x</mi><mo>−</mo><msub><mi>b</mi><mi>i</mi></msub><mo>:</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><mo>→</mo><mi mathvariant="double-struck">ℝ</mi></mrow><annotation encoding="application/x-tex">a_i\cdot x-b_i:\mathbb{R}^d\to \mathbb{R}</annotation></semantics></math>,
find
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mi>x</mi></msub><msub><mo>∑</mo><mi>i</mi></msub><msub><mi>f</mi><mi>i</mi></msub><mo stretchy="false" form="prefix">(</mo><msub><mi>a</mi><mi>i</mi></msub><mo>⋅</mo><mi>x</mi><mo>−</mo><msub><mi>b</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\min_x \sum_i f_i(a_i\cdot x-b_i)</annotation></semantics></math>.
</div>
<p></p>
which is highly related to algorithms for linear programming in low
dimensions.
<p></p>
This can be solve in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><msup><mn>2</mn><msup><mn>2</mn><mi>d</mi></msup></msup><mo stretchy="false" form="prefix">(</mo><mi>m</mi><mo>+</mo><mi>n</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(2^{2^d}(m+n))</annotation></semantics></math>
through Megiddo’s algorithm for multidimensional search problem. (see <a
href="/pdfs/LowdimLP-Megiddo.pdf">my slides</a>)
<p></p>
I want to show that for general piecewise linear convex functions in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math>,
<a href="#probpwl">my problem</a> can be formulated as a <a
href="https://en.wikipedia.org/wiki/LP-type_problem">LP-type</a> problem
with low combinatorial dimension.
<p></p>
A failed attempt is trying to write
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>F</mi><mo>=</mo><msub><mo>∑</mo><mi>i</mi></msub><msub><mi>f</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">F=\sum_i f_i</annotation></semantics></math>.
However, there may be too many breakpoints on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>F</mi><annotation encoding="application/x-tex">F</annotation></semantics></math>.
(see <a href="/posts/2024-09-16-piecewise-linear">a previous post</a>).
Another possible way is using some dimension reduction techniques <span
class="citation" data-cites="grohe_dimension_2014">[<a
href="#ref-grohe_dimension_2014" role="doc-biblioref">1</a>]</span>.
<h1 data-number="2" id="color-refinement-on-matrices"><span
class="header-section-number">2</span> color refinement on matrices</h1>
<blockquote>
<p></p>
I do not have high expectation on this method, since I need to show that
color refinement indeed reduce the dimension from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>+</mo><mi>d</mi></mrow><annotation encoding="application/x-tex">n+d</annotation></semantics></math>
to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>d</mi><annotation encoding="application/x-tex">d</annotation></semantics></math>
and that the reduction can be done in linear time.
</blockquote>
<p></p>
Given a initial coloring of vertices in a directed graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>,</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V,A)</annotation></semantics></math>,
we want to compute the <em>coarsest regular congruent</em> coloring.
<p></p>
Colorings can be considered as equivalence relations on the vertices. An
equivalence relation
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>R</mi><annotation encoding="application/x-tex">R</annotation></semantics></math>
on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>V</mi><annotation encoding="application/x-tex">V</annotation></semantics></math>
is <em>congruent</em> if for all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>u</mi><mo>,</mo><mi>v</mi><mo>,</mo><mi>w</mi><mo>∈</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">u,v,w\in V</annotation></semantics></math>,
[<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>u</mi><mo>,</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><mi>R</mi></mrow><annotation encoding="application/x-tex">(u,v)\in R</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo>,</mo><mi>w</mi><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><mi>A</mi></mrow><annotation encoding="application/x-tex">(v,w)\in A</annotation></semantics></math>]
implies that
[<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>∃</mo><msup><mi>v</mi><mo>′</mo></msup><mo>∈</mo><mi>V</mi></mrow><annotation encoding="application/x-tex">\exists v&#39;\in V</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo>,</mo><msup><mi>v</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><mi>A</mi></mrow><annotation encoding="application/x-tex">(v,v&#39;)\in A</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><msup><mi>v</mi><mo>′</mo></msup><mo>,</mo><mi>w</mi><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><mi>R</mi></mrow><annotation encoding="application/x-tex">(v&#39;,w)\in R</annotation></semantics></math>].
Note that this coincides with the general <a
href="https://en.wikipedia.org/wiki/Congruence_relation">definition of
congruence relation</a> in algebraic structures.(We can copy each vertex
#outdegree times to make
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
an unary operation.)
<p></p>
A coloring is <em>regular</em> if for any two vertices
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow><annotation encoding="application/x-tex">u,v</annotation></semantics></math>,
the number of successors in each color are the same. Consider two
colorings
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>C</mi><mn>1</mn></msub><mo>,</mo><msub><mi>C</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">C_1,C_2</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mn>1</mn></msub><annotation encoding="application/x-tex">C_1</annotation></semantics></math>
is a refinement of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mn>2</mn></msub><annotation encoding="application/x-tex">C_2</annotation></semantics></math>(or
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mn>2</mn></msub><annotation encoding="application/x-tex">C_2</annotation></semantics></math>
is coarser than
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mn>1</mn></msub><annotation encoding="application/x-tex">C_1</annotation></semantics></math>)
if for any two vertices having the same color in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mn>1</mn></msub><annotation encoding="application/x-tex">C_1</annotation></semantics></math>,
they have the same color in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>C</mi><mn>2</mn></msub><annotation encoding="application/x-tex">C_2</annotation></semantics></math>.
<p></p>
<strong>Basic Lemma 1</strong> in <span class="citation"
data-cites="cardon_partitioning_1982">[<a
href="#ref-cardon_partitioning_1982" role="doc-biblioref">2</a>]</span>
shows that the problem above is equivalent to the description in <a
href="https://en.wikipedia.org/wiki/Colour_refinement_algorithm">this
wiki page</a>.
<p></p>
The first quasilinear time algorithm for the color refinement problem on
graphs is given in <span class="citation"
data-cites="cardon_partitioning_1982">[<a
href="#ref-cardon_partitioning_1982" role="doc-biblioref">2</a>]</span>,
and later in <span class="citation" data-cites="paige_three_1987">[<a
href="#ref-paige_three_1987" role="doc-biblioref">3</a>]</span>. It is
shown in <span class="citation"
data-cites="berkholz_tightbound_2017">[<a
href="#ref-berkholz_tightbound_2017" role="doc-biblioref">4</a>]</span>
that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mo stretchy="false" form="prefix">(</mo><mi>m</mi><mo>+</mo><mi>n</mi><mo stretchy="false" form="postfix">)</mo><mrow><mi mathvariant="normal">log</mi><mo>&#8289;</mo></mrow><mi>n</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O((m+n)\log n)</annotation></semantics></math>
is the best possible running time. It is also shown in <span
class="citation" data-cites="kiefer_et_alicalp20">[<a
href="#ref-kiefer_et_alicalp20" role="doc-biblioref">5</a>]</span> that
for any number of vertices there exists a graph which requires at least
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mn>2</mn></mrow><annotation encoding="application/x-tex">n-2</annotation></semantics></math>
iterations to reach a stable coloring(note that the upperbound is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">n-1</annotation></semantics></math>).
See <a
href="https://www.lics.rwth-aachen.de/global/show_document.asp?id=aaaaaaaaabbtcqu">this</a>
for a nice survey on applications.
<h2 data-number="2.1" id="connections"><span
class="header-section-number">2.1</span> connections</h2>
<h3 data-number="2.1.1"
id="color-refinement-on-graphs-to-on-matrices"><span
class="header-section-number">2.1.1</span> color refinement on graphs
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mo>→</mo><annotation encoding="application/x-tex">\to</annotation></semantics></math>
on matrices</h3>
<p></p>
Now we add edge weights on the directed graph. Suppose all arcs have
weight 1. One can see that a congruent and regular coloring requires
that two vertices have the same color iff for each color the total
weight of arcs going to vertices in that color are the same. Slightly
generalize this configuraton, we can consider arbitrary arc weights.
<p></p>
Now color refinement on matrices are almost the same as doing color
refinement on the incidence matrix of a weighted digraph. However, not
every matrix is square. For any matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mrow><mi>v</mi><mo>×</mo><mi>w</mi></mrow></msup></mrow><annotation encoding="application/x-tex">A\in \mathbb{R}^{v\times w}</annotation></semantics></math>,
we consider it as a bitartite graph
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>G</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>V</mi><mo>⊔</mo><mi>W</mi><mo>,</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">G=(V\sqcup W,A)</annotation></semantics></math>,
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>V</mi><mo stretchy="false" form="prefix">|</mo><mo>=</mo><mi>v</mi></mrow><annotation encoding="application/x-tex">|V|=v</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>W</mi><mo stretchy="false" form="prefix">|</mo><mo>=</mo><mi>w</mi></mrow><annotation encoding="application/x-tex">|W|=w</annotation></semantics></math>.
Then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>A</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><mi>w</mi><mo stretchy="false" form="prefix">(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">A_{ij}=w(i, j)</annotation></semantics></math>
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(i, j)</annotation></semantics></math>
is an arc in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>G</mi><annotation encoding="application/x-tex">G</annotation></semantics></math>
and 0 otherwise.
<h3 data-number="2.1.2"
id="color-refinement-on-matrices-to-dimension-reduction-of-lps"><span
class="header-section-number">2.1.2</span> color refinement on matrices
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mo>→</mo><annotation encoding="application/x-tex">\to</annotation></semantics></math>
dimension reduction of LPs</h3>
<p></p>
This part is not intuitive and complicated. I think the ESA 14 paper
<span class="citation" data-cites="grohe_dimension_2014">[<a
href="#ref-grohe_dimension_2014" role="doc-biblioref">1</a>]</span> is
very concise (compared to the arxiv version), however still takes four
and a half pages to explain this part. So I will just briefly explain
the idea.
<p></p>
This connection is based on an important theorem, stating that the color
refinement of a matrix
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
has strong relation with the fractional automorphism of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
To do the reduction, we first compute a color refinement of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
Based on the partitions of columns and rows of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
in the color refinement(partition matrices), we can conpute the
<strong>factor matrix</strong> of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>,
denoted by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">[</mo><mi>A</mi><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">[A]</annotation></semantics></math>,
which is small than
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
Then finally, the authors proved a reduction lemma, which shows that the
optimal solution to factor matrix of the entire LP(I don’t know the
exact name, just the matrix one uses in the simplex method) is a linear
mapping of the optimal solution of the original LP.
<h2 data-number="2.2" id="is-it-useful"><span
class="header-section-number">2.2</span> is it useful?</h2>
<p></p>
The reduction looks clever and has a wide application. However, as far
as I know, it does nothing on my problem. I don’t think the matrix in my
problem is special enough to allow color refinement algorithms run in
linear time on it. Also color refinement does not necessarily partition
all
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>f</mi><mi>i</mi></msub><annotation encoding="application/x-tex">f_i</annotation></semantics></math>
columns in one part. <code>¯\_(⊙︿⊙)_/¯</code>
<h2 data-number="2.3" id="reflection"><span
class="header-section-number">2.3</span> reflection</h2>
<p></p>
Multidimensional search is harder than LP-type problems, this question
is no exception. Now there are three kinds of problems I am interested
in.
<ol type="1">
<li>Minimax parametric optimization</li>
<li>Multidimensional search problems</li>
<li>LP-type problems</li>
</ol>
<p></p>
What’s the connections among them?…
<div id="minmax" class="theorem-environment Definition" data-index="2"
type="Definition" title="Minimax parametric optimization problem">
<span class="theorem-header"><span class="type">Definition</span><span
class="index">2</span><span class="name">Minimax parametric optimization
problem</span></span>
<p></p>
Given a combinatorial maximization problem with a parameter. Find the
parameter value minimizing the weight of a solution to the combinatorial
maximization problem.
</div>
<div id="multisearch" class="theorem-environment Definition"
data-index="3" type="Definition"
title="Multidimensional search problem">
<span class="theorem-header"><span class="type">Definition</span><span
class="index">3</span><span class="name">Multidimensional search
problem</span></span>
<p></p>
Given a set of hyperplanes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">ℋ</mi><annotation encoding="application/x-tex">\mathcal H</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math>,
and an oracle which answers the relative position of one hyperplane and
a unknown fixed point
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>x</mi><mo>*</mo></msup><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup></mrow><annotation encoding="application/x-tex">x^*\in \mathbb{R}^d</annotation></semantics></math>.
Compute the relative position of every hyperplane in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">ℋ</mi><annotation encoding="application/x-tex">\mathcal H</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>x</mi><mo>*</mo></msup><annotation encoding="application/x-tex">x^*</annotation></semantics></math>
with as small number of oracle calls as possible.
</div>
<div id="lptype" class="theorem-environment Definition" data-index="4"
type="Definition" title="LP-type problem">
<span class="theorem-header"><span class="type">Definition</span><span
class="index">4</span><span class="name">LP-type problem</span></span>
<p></p>
Given a set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
and a function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
from
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>S</mi><annotation encoding="application/x-tex">S</annotation></semantics></math>
to a totally ordered set.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
has to satisfy two properties,
<ol type="1">
<li>monotonicity:
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>∀</mo><mi>A</mi><mo>⊆</mo><mi>B</mi><mo>⊆</mo><mi>S</mi><mo>,</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>S</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\forall A\subseteq B\subseteq S, f(A)\leq f(B)\leq f(S)</annotation></semantics></math>,</li>
<li>locality:
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>∀</mo><mi>A</mi><mo>⊂</mo><mi>B</mi><mo>⊂</mo><mi>S</mi></mrow><annotation encoding="application/x-tex">\forall A\subset B\subset S</annotation></semantics></math>,
consider any element
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>∈</mo><mi>S</mi></mrow><annotation encoding="application/x-tex">x\in S</annotation></semantics></math>,
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo>+</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f(A)=f(B)=f(A+x)</annotation></semantics></math>,
then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>B</mi><mo>+</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f(A)=f(B+x)</annotation></semantics></math>.</li>
</ol>
</div>
<p></p>
Now there are some important concrete problem in the intersections.
<h3 data-number="2.3.1" id="euclidean-one-centre-problem"><span
class="header-section-number">2.3.1</span> Euclidean one-centre
problem</h3>
<div class="theorem-environment Problem" data-index="5" type="Problem"
title="Euclidean one-centre problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">5</span><span class="name">Euclidean one-centre
problem</span></span>
<p></p>
Given
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
points
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>V</mi><mo>=</mo><mo stretchy="false" form="prefix">{</mo><msub><mi>v</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>v</mi><mi>n</mi></msub><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">V=\{v_1,\dots, v_n\}</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math>,
with weights
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>w</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msub><mi>w</mi><mi>n</mi></msub></mrow><annotation encoding="application/x-tex">w_1,\dots,w_n</annotation></semantics></math>,
find a point in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math>
which has the minimal of the maximum weighted distance to all points in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>V</mi><annotation encoding="application/x-tex">V</annotation></semantics></math>,
that is, compute
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mi>x</mi></msub><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mi>i</mi></msub><msubsup><mi>w</mi><mi>i</mi><mn>2</mn></msubsup><mo stretchy="false" form="prefix">(</mo><msub><mi>v</mi><mi>i</mi></msub><mo>−</mo><mi>x</mi><msup><mo stretchy="false" form="postfix">)</mo><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">\min_x \max_{i} w_i^2(v_i-x)^2</annotation></semantics></math>.
</div>
<p></p>
Dyer showed that this problem can be considered as a multidimensional
search problem (in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mrow><mi>d</mi><mo>+</mo><mn>1</mn></mrow></msup><annotation encoding="application/x-tex">\mathbb{R}^{d+1}</annotation></semantics></math>)
in <span class="citation" data-cites="dyer_multidimensional_1986">[<a
href="#ref-dyer_multidimensional_1986"
role="doc-biblioref">6</a>]</span>. The conversion is not easy and not
intuitive. Das et al. claimed that this problem is a LP-type problem
with some additional constraints in <a
href="I%20didn&#39;t%20read%20this%20carefully,%20it%20seems%20that%20they%20made%20the%20claim%20in%20the%20introduction%20but%20have%20never%20proven%20it"><span
class="citation"
data-cites="das_linear_2020">[<span>7</span>]</span></a>. It is still
unknown whether it is possible to formulate the weighted Euclidean
one-centre problem in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math>
as a LP-type problem with combinatorial dimension
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>d</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(d)</annotation></semantics></math>
(which is quite surprising…)
<h3 data-number="2.3.2"
id="minimizing-the-sum-of-some-pwl-convex-functionsmy-problem"><span
class="header-section-number">2.3.2</span> Minimizing the sum of some
pwl convex functions(my problem)</h3>
<p></p>
see <a href="#probpwl">above</a> for the definition.
<p></p>
Clearly this is a minimax parametric optimization problem. Zemel also
showed this is a multidimensional search problem with dimension
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>d</mi><annotation encoding="application/x-tex">d</annotation></semantics></math>.
We want to know that if this is a LP-type problem with combinatorial
dimension
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>d</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(d)</annotation></semantics></math>…
<p></p>
It seems that recognizing LP-type is hard. A <a
href="https://ics.uci.edu/~eppstein/164/lecture10.pdf">lecture</a> on
LP-type problems by David Eppstein.
<hr />
<p></p>
Here are some materials for Low dimension LP:
<ul>
<li>chapter 20 of <a href="https://sarielhp.org/book/"><em>Geometric
Approximation Algorithms</em></a> by Sariel Har-Peled. <a
href="https://sarielhp.org/book/chapters/lp.pdf"
class="uri">https://sarielhp.org/book/chapters/lp.pdf</a></li>
<li>the fastest deterministic algorithm for this problem <span
class="citation" data-cites="chan_improved_nodate">[<a
href="#ref-chan_improved_nodate" role="doc-biblioref">8</a>]</span></li>
<li>my <a href="/pdfs/LowdimLP-Seidel.pdf">slides</a> on Seidel’s
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>d</mi><mi>!</mi><mi>n</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(d!n)</annotation></semantics></math>
algorithm</li>
</ul>
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-grohe_dimension_2014" class="csl-entry" role="listitem">
<div class="csl-left-margin">[1] </div><div class="csl-right-inline">M.
Grohe, K. Kersting, M. Mladenov, E. Selman, Dimension
<span>Reduction</span> via <span>Colour</span> <span>Refinement</span>,
in: <em>Algorithms - <span>ESA</span> 2014</em>, Springer Berlin
Heidelberg, Berlin, Heidelberg, 2014: pp. 505–516.</div>
</div>
<div id="ref-cardon_partitioning_1982" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[2] </div><div class="csl-right-inline">A.
Cardon, M. Crochemore, Partitioning a graph in
<span>O</span>(<span>AlogV</span>), <em>Theoretical Computer
Science</em>. 19 (1982) 85–98 <a
href="https://doi.org/10.1016/0304-3975(82)90016-0">10.1016/0304-3975(82)90016-0</a>.</div>
</div>
<div id="ref-paige_three_1987" class="csl-entry" role="listitem">
<div class="csl-left-margin">[3] </div><div class="csl-right-inline">R.
Paige, R.E. Tarjan, Three <span>Partition</span> <span>Refinement</span>
<span>Algorithms</span>, <em>SIAM Journal on Computing</em>. 16 (1987)
973–989 <a
href="https://doi.org/10.1137/0216062">10.1137/0216062</a>.</div>
</div>
<div id="ref-berkholz_tightbound_2017" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[4] </div><div class="csl-right-inline">C.
Berkholz, P. Bonsma, M. Grohe, Tight lower and upper bounds for the
complexity of canonical colour refinement, <em>Theor. Comp. Sys.</em> 60
(2017) 581–614 <a
href="https://doi.org/10.1007/s00224-016-9686-0">10.1007/s00224-016-9686-0</a>.</div>
</div>
<div id="ref-kiefer_et_alicalp20" class="csl-entry" role="listitem">
<div class="csl-left-margin">[5] </div><div class="csl-right-inline">S.
Kiefer, B.D. McKay, <span class="nocase">The Iteration Number of Colour
Refinement</span>, in: <em>47th International Colloquium on Automata,
Languages, and Programming (ICALP 2020)</em>, Schloss Dagstuhl –
Leibniz-Zentrum f<span>ü</span>r Informatik, Dagstuhl, Germany, 2020:
pp. 73:1–73:19 <a
href="https://doi.org/10.4230/LIPIcs.ICALP.2020.73">10.4230/LIPIcs.ICALP.2020.73</a>.</div>
</div>
<div id="ref-dyer_multidimensional_1986" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[6] </div><div
class="csl-right-inline">M.E. Dyer, On a <span>Multidimensional</span>
<span>Search</span> <span>Technique</span> and <span>Its</span>
<span>Application</span> to the <span>Euclidean</span>
<span>One</span>-<span>Centre</span> <span>Problem</span>, <em>SIAM
Journal on Computing</em>. 15 (1986) 725–738 <a
href="https://doi.org/10.1137/0215052">10.1137/0215052</a>.</div>
</div>
<div id="ref-das_linear_2020" class="csl-entry" role="listitem">
<div class="csl-left-margin">[7] </div><div class="csl-right-inline">S.
Das, A. Nandy, S. Sarvottamananda, Linear time algorithms for
<span>Euclidean</span> 1-center in <span><span
class="math inline">$\R^d$</span></span> with non-linear convex
constraints, <em>Discrete Applied Mathematics</em>. 280 (2020) 71–85 <a
href="https://doi.org/10.1016/j.dam.2019.09.009">10.1016/j.dam.2019.09.009</a>.</div>
</div>
<div id="ref-chan_improved_nodate" class="csl-entry" role="listitem">
<div class="csl-left-margin">[8] </div><div
class="csl-right-inline">T.M. Chan, Improved deterministic algorithms
for linear programming in low dimensions, <em>ACM Trans.
Algorithms</em>. 14 (2018) <a
href="https://doi.org/10.1145/3155312">10.1145/3155312</a>.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Fri, 20 Sep 2024 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/fixed-dimension-LP/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Piecewise Linear Convex Functions</title>
    <link>https://talldoor.uk/posts/pwl_convex_func/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on September 16, 2024
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;alg&#39;." href="/tags/alg/index.html" rel="tag">alg</a>, <a title="All pages tagged &#39;optimization&#39;." href="/tags/optimization/index.html" rel="tag">optimization</a>
        
    </div>    
    <section class="body">
        <p></p>
This post is a note on epigraphs, infimal convolution, Minkowski sum
&amp; convex conjugate of piecewise linear convex functions in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math>.
I want to provide proofs for relations between these operations and
counterexamples for wrong guesses.
<p></p>
Notions:
<ul>
<li>infimal convolution:
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>▫</mi><annotation encoding="application/x-tex">\square</annotation></semantics></math>,</li>
<li>Minkowski sum:
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>⊕</mi><annotation encoding="application/x-tex">\oplus</annotation></semantics></math>,</li>
<li>convex conjugate:
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>f</mi><mo>*</mo></msup><annotation encoding="application/x-tex">f^*</annotation></semantics></math>,</li>
<li>epigraph:
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><mi>f</mi></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{epi}}f</annotation></semantics></math>.</li>
</ul>
<p></p>
some notes:
<ul>
<li><a href="https://angms.science/doc/CVX/Epigraph.pdf"
class="uri">https://angms.science/doc/CVX/Epigraph.pdf</a></li>
<li><a
href="https://math.stackexchange.com/questions/1597809/inf-convolution-two-basic-questions"
class="uri">https://math.stackexchange.com/questions/1597809/inf-convolution-two-basic-questions</a></li>
</ul>
<h1 data-number="1"
id="piecewise-linear-function-fmathbbrdto-mathbbr"><span
class="header-section-number">1</span> piecewise linear function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo>:</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><mo>→</mo><mi mathvariant="double-struck">ℝ</mi></mrow><annotation encoding="application/x-tex">f:\mathbb{R}^d\to \mathbb{R}</annotation></semantics></math></h1>
<p></p>
A intuitive but very complex definition is the following<span
class="citation" data-cites="Toriello_Vielma_2012">[<a
href="#ref-Toriello_Vielma_2012" role="doc-biblioref">1</a>]</span>,
<div class="theorem-environment Definition" data-index="1"
type="Definition">
<span class="theorem-header"><span class="type">Definition</span><span
class="index">1</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒫</mi><annotation encoding="application/x-tex">\mathcal P</annotation></semantics></math>
be a set of bounded convex polytopes in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math>.
A piecewise linear function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
can be defined as
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msubsup><mi>c</mi><mi>P</mi><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>d</mi><mi>P</mi></msub><mo>,</mo><mrow><mspace width="0.333em"></mspace><mtext mathvariant="normal"> for </mtext><mspace width="0.333em"></mspace></mrow><mi>x</mi><mo>∈</mo><mi>P</mi><mo>,</mo></mrow><annotation encoding="application/x-tex">
f(x)=c_P^T x+d_P, \text{ for } x\in P,
</annotation></semantics></math></span> where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><msub><mi>c</mi><mi>P</mi></msub><mo>,</mo><msub><mi>d</mi><mi>P</mi></msub><mo stretchy="false" form="postfix">)</mo><mo>∈</mo><msup><mi mathvariant="double-struck">ℝ</mi><mrow><mi>d</mi><mo>+</mo><mn>1</mn></mrow></msup></mrow><annotation encoding="application/x-tex">(c_P,d_P)\in \mathbb{R}^{d+1}</annotation></semantics></math>
is a vector associated with polytope
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>.
<p></p>
For <em>continuity</em>, we require
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msubsup><mi>c</mi><mi>P</mi><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>d</mi><mi>P</mi></msub><mo>=</mo><msubsup><mi>c</mi><mi>Q</mi><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>d</mi><mi>Q</mi></msub><mo>,</mo><mspace width="0.278em"></mspace><mo>∀</mo><mi>x</mi><mo>∈</mo><mi>P</mi><mo>∩</mo><mi>Q</mi><mo>,</mo><mo>∀</mo><mi>P</mi><mo>,</mo><mi>Q</mi><mo>∈</mo><mi mathvariant="script">𝒫</mi></mrow><annotation encoding="application/x-tex">
c_P^T x+d_P=c_Q^T x+d_Q, \; \forall x\in P\cap Q, \forall P,Q\in \mathcal{P}
</annotation></semantics></math></span>
<p></p>
For <em>convexity</em>, we further require that
<ol type="1">
<li>for any subset
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi mathvariant="script">𝒫</mi><mo mathvariant="script">′</mo></msup><mo>⊂</mo><mi mathvariant="script">𝒫</mi></mrow><annotation encoding="application/x-tex">\mathcal{P&#39;}\subset \mathcal P</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mo>∪</mo><mrow><mi>P</mi><mo>∈</mo><msup><mi mathvariant="script">𝒫</mi><mo>′</mo></msup></mrow></msub><annotation encoding="application/x-tex">\cup_{P\in \mathcal P&#39;}</annotation></semantics></math>
is convex;(for polytopes)</li>
<li>the restriction of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
to any two polytopes from P that share a facet is convex.<span
class="citation" data-cites="Tarela_Alonso_Martínez_1990">[<a
href="#ref-Tarela_Alonso_Martínez_1990"
role="doc-biblioref">2</a>]</span> (for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>.
In fact, 1 is already included in 2.)</li>
</ol>
</div>
<p></p>
(Later I find a much simpler definition in <span class="citation"
data-cites="boyd_convex_2004">[<a href="#ref-boyd_convex_2004"
role="doc-biblioref">3</a>]</span> example 3.5.)
<div class="theorem-environment Definition" data-index="2"
type="Definition" title="piecewise linear function in $\R^d$">
<span class="theorem-header"><span class="type">Definition</span><span
class="index">2</span><span class="name">piecewise linear function in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math></span></span>
<p></p>
<span
id="math-container"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">{</mo><msubsup><mi>a</mi><mn>1</mn><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>b</mi><mn>1</mn></msub><mo>,</mo><mi>…</mi><mo>,</mo><msubsup><mi>a</mi><mi>L</mi><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>b</mi><mi>L</mi></msub><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">
f(x)=\max \{a_1^Tx+b_1,\ldots,a_L^Tx+b_L\}
</annotation></semantics></math></span>
</div>
<p></p>
It is shown in exercise 3.29 that every piecewise linear convex function
can be expressed in this form.
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<p></p>
We have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>α</mi><mi>x</mi><mo>+</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="false" form="postfix">)</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>≤</mo><mi>α</mi><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>+</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="false" form="postfix">)</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f(\alpha x+(1-\alpha)y)\leq \alpha f(x)+(1-\alpha)f(y)</annotation></semantics></math>
for any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>α</mi><mo>∈</mo><mo stretchy="false" form="prefix">[</mo><mn>0</mn><mo>,</mo><mn>1</mn><mo stretchy="false" form="postfix">]</mo></mrow><annotation encoding="application/x-tex">\alpha\in [0,1]</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>α</mi><mi>x</mi><mo>+</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="false" form="postfix">)</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">\alpha x+(1-\alpha)y</annotation></semantics></math>
can locate in the same
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>X</mi><mi>i</mi></msub><annotation encoding="application/x-tex">X_i</annotation></semantics></math>
as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>y</mi><annotation encoding="application/x-tex">y</annotation></semantics></math>
since we can arbitrarily choose
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>α</mi><annotation encoding="application/x-tex">\alpha</annotation></semantics></math>.
Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mfrac><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>α</mi><mi>x</mi><mo>+</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="false" form="postfix">)</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>−</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="false" form="postfix">)</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo></mrow><mi>α</mi></mfrac></mrow><annotation encoding="application/x-tex">f(x)\geq \frac{f(\alpha x+(1-\alpha)y)-(1-\alpha)f(y)}{\alpha}</annotation></semantics></math>.
Note that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
is linear in each
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>X</mi><mi>i</mi></msub><annotation encoding="application/x-tex">X_i</annotation></semantics></math>.
Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>≥</mo><mfrac><mrow><msubsup><mi>a</mi><mi>i</mi><mi>T</mi></msubsup><mo stretchy="false" form="prefix">(</mo><mi>α</mi><mi>x</mi><mo>+</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="false" form="postfix">)</mo><mi>y</mi><mo stretchy="false" form="postfix">)</mo><mo>+</mo><msub><mi>b</mi><mi>i</mi></msub><mo>−</mo><mo stretchy="false" form="prefix">(</mo><mn>1</mn><mo>−</mo><mi>α</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="prefix">(</mo><msubsup><mi>a</mi><mi>i</mi><mi>T</mi></msubsup><mi>y</mi><mo>+</mo><msub><mi>b</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">)</mo></mrow><mi>α</mi></mfrac><mo>=</mo><msubsup><mi>a</mi><mi>i</mi><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>b</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">f(x)\geq \frac{a_i^T(\alpha x+(1-\alpha)y)+b_i-(1-\alpha)(a_i^Ty+b_i)}{\alpha}=a_i^Tx+b_i</annotation></semantics></math>.
Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mi>i</mi></msub><msubsup><mi>a</mi><mi>i</mi><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>b</mi><mi>i</mi></msub></mrow><annotation encoding="application/x-tex">f(x)=\max_i a_i^Tx+b_i</annotation></semantics></math>.
</div>
<p></p>
Now given these definitions we are particularly interested in the
minimum number of polytopes which define the piecewise liner convex
function in high dimension.
<h1 data-number="2" id="properties"><span
class="header-section-number">2</span> properties</h1>
<p></p>
pwl = piecewise linear. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>L</mi><annotation encoding="application/x-tex">L</annotation></semantics></math>
be the number of hyperplanes in the definition of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>.
<h2 data-number="2.1" id="convex-conjugate"><span
class="header-section-number">2.1</span> convex conjugate</h2>
<div class="theorem-environment Observation" data-index="3"
type="Observation">
<span class="theorem-header"><span class="type">Observation</span><span
class="index">3</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>f</mi><mo>*</mo></msup><annotation encoding="application/x-tex">f^*</annotation></semantics></math>
be the convex conjugate of a pwl convex function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>f</mi><mo>*</mo></msup><annotation encoding="application/x-tex">f^*</annotation></semantics></math>
is also pwl convex if restricted to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">dom</mi><mo>&#8289;</mo></mrow><msup><mi>f</mi><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{dom}}f^*</annotation></semantics></math>.
</div>
<p></p>
Consider the convex conjugate from a geometric view. The epigraph of our
pwl convex function
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
is some convex polytope in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><mo>×</mo><mover><mi mathvariant="double-struck">ℝ</mi><mo accent="true">¯</mo></mover></mrow><annotation encoding="application/x-tex">\mathbb{R}^d\times \overline{\mathbb{R}}</annotation></semantics></math>.
The convex conjugate is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>f</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>z</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mi mathvariant="normal">sup</mi><mo>&#8289;</mo></mrow><mi>x</mi></msub><mo stretchy="false" form="prefix">{</mo><msup><mi>z</mi><mi>T</mi></msup><mi>x</mi><mo>−</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">f^*(z)=\sup_x\{z^Tx-f(x)\}</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mi>T</mi></msup><mi>x</mi></mrow><annotation encoding="application/x-tex">z^Tx</annotation></semantics></math>
is a hyperplane with normal vector
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>z</mi><annotation encoding="application/x-tex">z</annotation></semantics></math>
and passing through the origin. Now
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mrow><mi mathvariant="normal">sup</mi><mo>&#8289;</mo></mrow><mi>x</mi></msub><mo stretchy="false" form="prefix">{</mo><msup><mi>z</mi><mi>T</mi></msup><mi>x</mi><mo>−</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\sup_x\{z^Tx-f(x)\}</annotation></semantics></math>
is the amount of space hyperplane
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>z</mi><mi>T</mi></msup><mi>x</mi></mrow><annotation encoding="application/x-tex">z^Tx</annotation></semantics></math>
has to shift along the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>d</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">d+1</annotation></semantics></math>
dimension to make itself a supporting hyperplane of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><mi>f</mi></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{epi}}f</annotation></semantics></math>.
Note that the tangent points are exactly vertices of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><mi>f</mi></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{epi}}f</annotation></semantics></math>.
<div class="theorem-environment Proof" type="Proof">
<span class="theorem-header"><span class="type">Proof</span></span>
<!-- By definition of pwl convex function in high dimension, we can see that ... No... I think this is dual polyhedron. but it is quite complex -->
<p></p>
It is safe to write
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>f</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>z</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mi>x</mi></msub><mo stretchy="false" form="prefix">{</mo><msup><mi>z</mi><mi>T</mi></msup><mi>x</mi><mo>−</mo><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">f^*(z)=\max_x\{z^Tx-f(x)\}</annotation></semantics></math>
since we only consider the extended domain. Thus we have
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>f</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>z</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mi>x</mi></msub><mo stretchy="false" form="prefix">{</mo><msup><mi>z</mi><mi>T</mi></msup><mi>x</mi><mo>−</mo><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mi>i</mi></msub><mo stretchy="false" form="prefix">{</mo><msubsup><mi>a</mi><mi>i</mi><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>b</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">}</mo><mo stretchy="false" form="postfix">}</mo><mo>=</mo><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mi>x</mi></msub><mo stretchy="false" form="prefix">{</mo><msub><mrow><mi mathvariant="normal">max</mi><mo>&#8289;</mo></mrow><mi>i</mi></msub><mo stretchy="false" form="prefix">{</mo><msup><mi>z</mi><mi>T</mi></msup><mi>x</mi><mo>−</mo><msubsup><mi>a</mi><mi>i</mi><mi>T</mi></msubsup><mi>x</mi><mo>+</mo><msub><mi>b</mi><mi>i</mi></msub><mo stretchy="false" form="postfix">}</mo><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">f^*(z)=\max_x\{z^Tx-\max_i\{a_i^Tx+b_i\}\}=\max_x\{\max_i\{z^Tx-a_i^Tx+b_i\}\}</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
be the number of vertices on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">conv</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">(</mo><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><mi>f</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{conv}}(\mathop{\mathrm{epi}}f)</annotation></semantics></math>.
One can see that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>f</mi><mo>*</mo></msup><mo stretchy="false" form="prefix">(</mo><mi>z</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f^*(z)</annotation></semantics></math>
is the maximum of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mi>L</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(nL)</annotation></semantics></math>
affine functions.
</div>
<p></p>
I believe there will be only
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(n)</annotation></semantics></math>
hyperplanes on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>f</mi><mo>*</mo></msup><annotation encoding="application/x-tex">f^*</annotation></semantics></math>
instead of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mi>L</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(nL)</annotation></semantics></math>…
However, we know that in general
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>f</mi><mo>*</mo></msup><annotation encoding="application/x-tex">f^*</annotation></semantics></math>
is the maximum of at least
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>O</mi><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">O(n)</annotation></semantics></math>
functions since every vertex corresponds to a hyperplane in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><msup><mi>f</mi><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{epi}}f^*</annotation></semantics></math>.
<h2 data-number="2.2"
id="pwl-convex-function-in-mathbbr-circ-a-linear-mapping"><span
class="header-section-number">2.2</span> pwl convex function in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="double-struck">ℝ</mi><annotation encoding="application/x-tex">\mathbb{R}</annotation></semantics></math>
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>∘</mi><annotation encoding="application/x-tex">\circ</annotation></semantics></math>
a linear mapping</h2>
<div class="theorem-environment Problem" data-index="4" type="Problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">4</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo>:</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><mo>→</mo><mi mathvariant="double-struck">ℝ</mi></mrow><annotation encoding="application/x-tex">f:\mathbb{R}^d\to\mathbb{R}</annotation></semantics></math>
be a pwl convex function. Does there always exist a pwl convex
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>g</mi><mo>:</mo><mi mathvariant="double-struck">ℝ</mi><mo>→</mo><mi mathvariant="double-struck">ℝ</mi></mrow><annotation encoding="application/x-tex">g:\mathbb{R}\to \mathbb{R}</annotation></semantics></math>
and a linear mapping
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>a</mi><mi>T</mi></msup><mi>x</mi><mo>−</mo><mi>b</mi><mo>:</mo><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><mo>→</mo><mi mathvariant="double-struck">ℝ</mi></mrow><annotation encoding="application/x-tex">a^Tx-b:\mathbb{R}^d\to \mathbb{R}</annotation></semantics></math>
such that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo stretchy="false" form="prefix">(</mo><mi>x</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>g</mi><mo stretchy="false" form="prefix">(</mo><msup><mi>a</mi><mi>T</mi></msup><mi>x</mi><mo>−</mo><mi>b</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f(x)=g(a^Tx-b)</annotation></semantics></math>.
</div>
<p></p>
As you expected, the answer is no. Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo>:</mo><msup><mi mathvariant="double-struck">ℝ</mi><mn>2</mn></msup><mo>→</mo><mi mathvariant="double-struck">ℝ</mi></mrow><annotation encoding="application/x-tex">f:\mathbb{R}^2\to \mathbb{R}</annotation></semantics></math>
be the maximum of a set of 2D planes. Consider a series of points
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="true" form="prefix">{</mo><msub><mi>p</mi><mn>1</mn></msub><mo>,</mo><msub><mi>p</mi><mn>2</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>p</mi><mi>k</mi></msub><mo stretchy="true" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">\left\{ p_1,p_2,...,p_k \right\}</annotation></semantics></math>
on the 2D plane. After applying the linear mapping to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>P</mi><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><msub><mi>p</mi><mn>1</mn></msub><mo>,</mo><msub><mi>p</mi><mn>2</mn></msub><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msub><mi>p</mi><mi>k</mi></msub><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">P=\left\{ p_1,p_2,...,p_k \right\}</annotation></semantics></math>,
we will get a sequence of numbers(points in 1D)
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>P</mi><mo>′</mo></msup><mo>=</mo><mrow><mo stretchy="true" form="prefix">{</mo><msubsup><mi>p</mi><mn>1</mn><mo>′</mo></msubsup><mo>,</mo><msubsup><mi>p</mi><mn>2</mn><mo>′</mo></msubsup><mo>,</mo><mi>.</mi><mi>.</mi><mi>.</mi><mo>,</mo><msubsup><mi>p</mi><mi>k</mi><mo>′</mo></msubsup><mo stretchy="true" form="postfix">}</mo></mrow></mrow><annotation encoding="application/x-tex">P&#39;=\left\{ p_1&#39;,p_2&#39;,...,p_k&#39; \right\}</annotation></semantics></math>.
We assume that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>P</mi><mo>′</mo></msup><annotation encoding="application/x-tex">P&#39;</annotation></semantics></math>
is non-decreasing. Note that the value of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>g</mi><annotation encoding="application/x-tex">g</annotation></semantics></math>
on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>P</mi><mo>′</mo></msup><annotation encoding="application/x-tex">P&#39;</annotation></semantics></math>
is always unimodal since
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>g</mi><annotation encoding="application/x-tex">g</annotation></semantics></math>
is convex. However, the value of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>P</mi><annotation encoding="application/x-tex">P</annotation></semantics></math>
may not be unimodal. Thus the composition of a linear mapping and a pwl
convex function in 1D is not equivalent to pwl convex functions in high
dimensions.
<h1 data-number="3" id="sum-of-pwl-convex-functions"><span
class="header-section-number">3</span> sum of pwl convex functions</h1>
<p></p>
I want to show that in general the number of hyperplanes in the sum of
pwl convex functions can be large.
<p></p>
It is known that for two pwl convex functions
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>f</mi><mo>,</mo><mi>g</mi></mrow><annotation encoding="application/x-tex">f,g</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>f</mi><mo>*</mo></msup><mo>+</mo><msup><mi>g</mi><mo>*</mo></msup><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>f</mi><mi>▫</mi><mi>g</mi><msup><mo stretchy="false" form="postfix">)</mo><mo>*</mo></msup></mrow><annotation encoding="application/x-tex">f^*+g^*=(f\square g)^*</annotation></semantics></math>.
It is also known that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><mi>f</mi><mo>⊕</mo><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><mi>g</mi><mo>=</mo><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><mi>f</mi><mi>▫</mi><mi>g</mi></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{epi}}f \oplus \mathop{\mathrm{epi}}g=\mathop{\mathrm{epi}}f\square g</annotation></semantics></math>(with
some requirements on
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>f</mi><annotation encoding="application/x-tex">f</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>g</mi><annotation encoding="application/x-tex">g</annotation></semantics></math>).
There is a theorem in <span class="citation"
data-cites="mountford_minkowski_nodate">[<a
href="#ref-mountford_minkowski_nodate"
role="doc-biblioref">4</a>]</span> section 4.3 which shows that the
number of faces of the Minkowski sum of two polytopes can be huge. The
bound can be reached by sums of cyclic polytopes.
<p></p>
We can define pwl convex functions based on cyclic polytopes and we know
that the Minkowski sum will have lots of faces(of different dimensions).
We also know that the number of faces in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi>f</mi><mo>*</mo></msup><annotation encoding="application/x-tex">f^*</annotation></semantics></math>
is at least
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>n</mi><annotation encoding="application/x-tex">n</annotation></semantics></math>
is the number of vertices(faces of 1D) in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi mathvariant="normal">epi</mi><mo>&#8289;</mo></mrow><mi>f</mi></mrow><annotation encoding="application/x-tex">\mathop{\mathrm{epi}}f</annotation></semantics></math>.
Now if the infimal convolution of two pwl convex functions also has many
faces, the number of faces in the sum of pwl convex functions will be
large.
<div class="theorem-environment Problem" data-index="5" type="Problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">5</span></span>
<p></p>
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mn>1</mn></msub><mo>,</mo><msub><mi>f</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">f_1,f_2</annotation></semantics></math>
be two pwl convex functions in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>d</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^d</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>n</mi><mn>1</mn></msub><mo>,</mo><msub><mi>n</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">n_1,n_2</annotation></semantics></math>
be the number of hyperplanes in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mn>1</mn></msub><mo>,</mo><msub><mi>f</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">f_1,f_2</annotation></semantics></math>
respectively. What is the minimum number of hyperplanes in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mn>1</mn></msub><mi>▫</mi><msub><mi>f</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">f_1 \square f_2</annotation></semantics></math>?
</div>
<h1 class="unnumbered" id="bibliography">References</h1>
<div id="refs" class="references csl-bib-body" data-entry-spacing="0"
role="list">
<div id="ref-Toriello_Vielma_2012" class="csl-entry" role="listitem">
<div class="csl-left-margin">[1] </div><div class="csl-right-inline">A.
Toriello, J.P. Vielma, Fitting piecewise linear continuous functions,
<em>European Journal of Operational Research</em>. 219 (2012) 86–95 <a
href="https://doi.org/10.1016/j.ejor.2011.12.030">10.1016/j.ejor.2011.12.030</a>.</div>
</div>
<div id="ref-Tarela_Alonso_Martínez_1990" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[2] </div><div
class="csl-right-inline">J.M. Tarela, E. Alonso, M.V. Martı́nez, A
representation method for PWL functions oriented to parallel processing,
<em>Mathematical and Computer Modelling</em>. 13 (1990) 75–83 <a
href="https://doi.org/10.1016/0895-7177(90)90090-a">10.1016/0895-7177(90)90090-a</a>.</div>
</div>
<div id="ref-boyd_convex_2004" class="csl-entry" role="listitem">
<div class="csl-left-margin">[3] </div><div
class="csl-right-inline">S.P. Boyd, L. Vandenberghe, Convex
optimization, Cambridge University Press, Cambridge, UK ; New York,
2004.</div>
</div>
<div id="ref-mountford_minkowski_nodate" class="csl-entry"
role="listitem">
<div class="csl-left-margin">[4] </div><div class="csl-right-inline">T.
Mountford, T. Liebling, K. Fukuda, P. Gritzmann, G. Ziegler, Minkowski
<span>Sums</span> of <span>Polytopes</span>: <span>Combinatorics</span>
and <span>Computation</span>, PhD thesis, n.d.</div>
</div>
</div>
    </section>
</article>
]]></description>
    <pubDate>Mon, 16 Sep 2024 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/pwl_convex_func/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>
<item>
    <title>Tropical bases and matroid circuits</title>
    <link>https://talldoor.uk/posts/tropical_bases/</link>
    <description><![CDATA[<article>
    <section class="subtitle">
        
        
    </section>
    <section class="header">
        Posted on July 11, 2024
        
            by Yu Cong
        
    </section>
    <div class="info">
        
            Tags: <a title="All pages tagged &#39;matroid&#39;." href="/tags/matroid/index.html" rel="tag">matroid</a>
        
    </div>    
    <section class="body">
        <p></p>
<a href="http://matroidunion.org/?p=5403"
class="uri">http://matroidunion.org/?p=5403</a>
<p></p>
In the post the author describes an interesting problem,
<div class="theorem-environment Problem" data-index="1" type="Problem">
<span class="theorem-header"><span class="type">Problem</span><span
class="index">1</span></span>
<p></p>
Given a matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>M</mi><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mi>E</mi><mo>,</mo><mi mathvariant="script">ℐ</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">M=(E,\mathcal{I})</annotation></semantics></math>,
find a minimal set of circuits that defines the matroid
</div>
<p></p>
The way he consider this problem is not by looking at the circuits but
the flats. Any circuit excludes some sets from being flats. If we are
given a circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>,
any set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
that contains
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">|</mo><mi>c</mi><mo stretchy="false" form="prefix">|</mo><mi>−</mi><mn>1</mn></mrow><annotation encoding="application/x-tex">|c|-1</annotation></semantics></math>
elements of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
can not be a flat of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
So the idea is to find a minimal set of circuits that excludes all
non-flat sets of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
<h3 data-number="1" id="combinatorial-definition"><span
class="header-section-number">1</span> combinatorial definition</h3>
<p></p>
A circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
<strong><em>excludes</em></strong> a set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
if exactly one element of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
is not in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
A collection of circuits
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo>⊆</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathcal{C}&#39;\subseteq \mathcal{C}(M)</annotation></semantics></math>
is a <strong>tropical basis</strong> of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
if for every non-flat set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
there is a circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo>∈</mo><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup></mrow><annotation encoding="application/x-tex">c\in \mathcal{C}&#39;</annotation></semantics></math>
that excludes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
The problem is then to find a minimal tropical basis of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
<h3 data-number="2" id="algebraic-geometry-view"><span
class="header-section-number">2</span> algebraic geometry view</h3>
<p></p>
Tropical basis originally comes from algebraic geometry, see <a
href="https://en.wikipedia.org/wiki/Tropical_geometry">tropical
geometry</a>. The <strong>min tropical semiring</strong> is the semiring
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">(</mo><mi mathvariant="double-struck">ℝ</mi><mo>∪</mo><mo stretchy="false" form="prefix">{</mo><mi>+</mi><mi>∞</mi><mo stretchy="false" form="postfix">}</mo><mo>,</mo><mi>⊕</mi><mo>,</mo><mi>⊗</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">(\mathbb{R}\cup \{+\infty\},\oplus,\otimes)</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>⊕</mo><mi>y</mi><mo>=</mo><mrow><mi mathvariant="normal">min</mi><mo>&#8289;</mo></mrow><mo stretchy="false" form="prefix">{</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">x\oplus y = \min\{x,y\}</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>⊗</mo><mi>y</mi><mo>=</mo><mi>x</mi><mo>+</mo><mi>y</mi></mrow><annotation encoding="application/x-tex">x\otimes y = x+y</annotation></semantics></math>.
The identity element for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>⊕</mi><annotation encoding="application/x-tex">\oplus</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>+</mi><mi>∞</mi></mrow><annotation encoding="application/x-tex">+\infty</annotation></semantics></math>
and for
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>⊗</mi><annotation encoding="application/x-tex">\otimes</annotation></semantics></math>
is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn>0</mn><annotation encoding="application/x-tex">0</annotation></semantics></math>.
The <strong>tropical variety</strong> of a tropical polynomial is the
set of points where the polynomial achieves its minimum value at least
twice. <!-- \begin{figure}[!htb]
    \centering
    \includegraphics[width=0.6\textwidth]{image/tropicalvariety.png}
    \caption{example of tropical variety from the blog post}
    \label{fig:tropical_variety}
\end{figure} -->
<figure>
<img src="/images/tropicalbases/tropicalvariety.png"
alt="image from the matroid union post" />
<figcaption aria-hidden="true">image from <a
href="http://matroidunion.org/?p=5403">the matroid union
post</a></figcaption>
</figure>
<p></p>
Tropical variety of a linear tropical polynomial is called
<strong>tropical hyperplane</strong>.
<p></p>
For any set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>⊆</mo><mi>E</mi></mrow><annotation encoding="application/x-tex">A\subseteq E</annotation></semantics></math>
there is a natural representation of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
as a vector in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><mn>0</mn><mo>,</mo><mi>+</mi><mi>∞</mi><msup><mo stretchy="false" form="postfix">}</mo><mrow><mo stretchy="false" form="prefix">|</mo><mi>E</mi><mo stretchy="false" form="prefix">|</mo></mrow></msup></mrow><annotation encoding="application/x-tex">\{0,+\infty\}^{|E|}</annotation></semantics></math>,
where the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>i</mi><annotation encoding="application/x-tex">i</annotation></semantics></math>-th
coordinate is
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mn>0</mn><annotation encoding="application/x-tex">0</annotation></semantics></math>
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>i</mi><mo>∈</mo><mi>A</mi></mrow><annotation encoding="application/x-tex">i\in A</annotation></semantics></math>
and
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>+</mi><mi>∞</mi></mrow><annotation encoding="application/x-tex">+\infty</annotation></semantics></math>
otherwise.(This is very similar to the indicator vector of a set in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">}</mo><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">\{0,1\}^n</annotation></semantics></math>.
If the
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>i</mi><annotation encoding="application/x-tex">i</annotation></semantics></math>-th
element exists in the given set we put the identity element of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>⊗</mi><annotation encoding="application/x-tex">\otimes</annotation></semantics></math>
and otherwise the identity element of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>⊕</mi><annotation encoding="application/x-tex">\oplus</annotation></semantics></math>.)
Then we can define a linear tropical polynomial associated with a
circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
just like the dot product of two vectors in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="double-struck">ℝ</mi><mi>n</mi></msup><annotation encoding="application/x-tex">\mathbb{R}^n</annotation></semantics></math>.
For example consider a circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo>=</mo><mo stretchy="false" form="prefix">{</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo stretchy="false" form="postfix">}</mo></mrow><annotation encoding="application/x-tex">c=\{1,2,3\}</annotation></semantics></math>
in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msub><mi>U</mi><mrow><mn>2</mn><mo>,</mo><mn>4</mn></mrow></msub><annotation encoding="application/x-tex">U_{2,4}</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mi>c</mi></msub><mo stretchy="false" form="prefix">(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><msub><mi>x</mi><mn>2</mn></msub><mo>,</mo><msub><mi>x</mi><mn>3</mn></msub><mo>,</mo><msub><mi>x</mi><mn>4</mn></msub><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo>⊗</mo><msub><mi>x</mi><mn>1</mn></msub><mo stretchy="false" form="postfix">)</mo><mo>⊕</mo><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo>⊗</mo><msub><mi>x</mi><mn>2</mn></msub><mo stretchy="false" form="postfix">)</mo><mo>⊕</mo><mo stretchy="false" form="prefix">(</mo><mn>0</mn><mo>⊗</mo><msub><mi>x</mi><mn>3</mn></msub><mo stretchy="false" form="postfix">)</mo><mo>⊕</mo><mo stretchy="false" form="prefix">(</mo><mi>+</mi><mi>∞</mi><mo>⊗</mo><msub><mi>x</mi><mn>4</mn></msub><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f_{c}(x_1,x_2,x_3,x_4)=(0 \otimes x_1)\oplus(0 \otimes x_2)\oplus(0 \otimes x_3)\oplus(+\infty\otimes x_4)</annotation></semantics></math>.
<p></p>
Denote the tropical hyperplane of a circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi>c</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">T(c)</annotation></semantics></math>.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi>c</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">T(c)</annotation></semantics></math>
is the space of all vectors
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>v</mi><annotation encoding="application/x-tex">v</annotation></semantics></math>
where
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mi>c</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>v</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f_c(v)</annotation></semantics></math>
achieves its minimum at least twice.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="postfix">)</mo><mo>=</mo><msub><mo>⋂</mo><mrow><mi>c</mi><mo>∈</mo><mi mathvariant="script">𝒞</mi></mrow></msub><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi>c</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">T(\mathcal C)=\bigcap_{c\in \mathcal C}T(c)</annotation></semantics></math>
is the set of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>v</mi><annotation encoding="application/x-tex">v</annotation></semantics></math>
excluded by all circuits in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathcal C</annotation></semantics></math>.
A set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo>⊆</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="prefix">(</mo><mi>M</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\mathcal{C}&#39;\subseteq \mathcal C(M)</annotation></semantics></math>
is a <strong>tropical basis</strong> for matroid
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>
if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo stretchy="false" form="prefix">(</mo><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">T(\mathcal C&#39;)=T(\mathcal C)</annotation></semantics></math>.
<h3 data-number="3" id="connections-between-the-two-definitions"><span
class="header-section-number">3</span> connections between the two
definitions</h3>
<p></p>
Combinatorial definition.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo>⊆</mo><mi mathvariant="script">𝒞</mi></mrow><annotation encoding="application/x-tex">\mathcal C&#39;\subseteq \mathcal C</annotation></semantics></math>
is a tropical basis if for every non-flat set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>
there is a circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>c</mi><mo>∈</mo><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup></mrow><annotation encoding="application/x-tex">c\in \mathcal C&#39;</annotation></semantics></math>
that excludes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
<p></p>
Algebraic definition.
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo>⊆</mo><mi mathvariant="script">𝒞</mi></mrow><annotation encoding="application/x-tex">\mathcal C&#39;\subseteq \mathcal C</annotation></semantics></math>
is a tropical basis if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo stretchy="false" form="prefix">(</mo><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">T(\mathcal C&#39;)=T(\mathcal C)</annotation></semantics></math>.
<blockquote>
<p></p>
<strong>Lemma</strong> For any
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo>⊆</mo><mi mathvariant="script">𝒞</mi></mrow><annotation encoding="application/x-tex">\mathcal C&#39;\subseteq \mathcal C</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo stretchy="false" form="prefix">(</mo><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">T(\mathcal C&#39;)= T(\mathcal C)</annotation></semantics></math>
if and only if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo stretchy="false" form="prefix">(</mo><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>∩</mo><mo stretchy="false" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">}</mo><mi>n</mi></msup><mo>=</mo><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="postfix">)</mo><mo>∩</mo><mo stretchy="false" form="prefix">{</mo><mn>0</mn><mo>,</mo><mn>1</mn><msup><mo stretchy="false" form="postfix">}</mo><mi>n</mi></msup></mrow><annotation encoding="application/x-tex">T(\mathcal C&#39;)\cap \{0,1\}^n= T(\mathcal C)\cap \{0,1\}^n</annotation></semantics></math>
</blockquote>
<p></p>
This lemma shows that we can only consider the indicator vectors when
dealing with the algebraic definition.
<p></p>
Note that
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathcal{C}</annotation></semantics></math>
excludes all non-flat sets of
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>M</mi><annotation encoding="application/x-tex">M</annotation></semantics></math>.
Thus our combinatorial definition is equivalent to
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><annotation encoding="application/x-tex">\mathcal C&#39;</annotation></semantics></math>
excluding the same sets as
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathcal C</annotation></semantics></math>.
Let
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mover><mi>T</mi><mo accent="true">¯</mo></mover><mo stretchy="false" form="prefix">(</mo><mi>c</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\overline{T}(c)</annotation></semantics></math>
be the collection of sets which are not excluded by
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>C</mi><annotation encoding="application/x-tex">C</annotation></semantics></math>.
Then
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><annotation encoding="application/x-tex">\mathcal C&#39;</annotation></semantics></math>
is a tropical basis if and only if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mover><mi>T</mi><mo accent="true">¯</mo></mover><mo stretchy="false" form="prefix">(</mo><msup><mi mathvariant="script">𝒞</mi><mo>′</mo></msup><mo stretchy="false" form="postfix">)</mo><mo>=</mo><mover><mi>T</mi><mo accent="true">¯</mo></mover><mo stretchy="false" form="prefix">(</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">\overline{T}(\mathcal C&#39;)=\overline{T}(\mathcal C)</annotation></semantics></math>.
Now we consider the algebraic definition. One can see that for any
non-loop circuit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
and set
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>A</mi><mo>∉</mo><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi>c</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">A\notin T(c)</annotation></semantics></math>(in
other words,
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msub><mi>f</mi><mi>c</mi></msub><mo stretchy="false" form="prefix">(</mo><mi>A</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">f_c(A)</annotation></semantics></math>
achieves its minimum only once), if and only if
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>c</mi><annotation encoding="application/x-tex">c</annotation></semantics></math>
excludes
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi>A</mi><annotation encoding="application/x-tex">A</annotation></semantics></math>.
Thus
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>T</mi><mo stretchy="false" form="prefix">(</mo><mi mathvariant="script">𝒞</mi><mo stretchy="false" form="postfix">)</mo></mrow><annotation encoding="application/x-tex">T(\mathcal C)</annotation></semantics></math>
is the collection of all sets that are not excluded by any of the
circuits in
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mi mathvariant="script">𝒞</mi><annotation encoding="application/x-tex">\mathcal C</annotation></semantics></math>.
Now it is easy to see that these two definitions are equivalent.
<p></p>
<strong>current status</strong> It seems that <a
href="https://mathoverflow.net/questions/278264/definition-of-the-bergman-fan">Bergman
fan</a> of a matroid is related to this topic. <a
href="https://arxiv.org/abs/math/0411260"
class="uri">https://arxiv.org/abs/math/0411260</a> This seems to be a
bridge between matroid theory and algebraic geometry. June Huh’s work is
also related to this topic. <a href="https://arxiv.org/abs/1104.2519"
class="uri">https://arxiv.org/abs/1104.2519</a>
    </section>
</article>
]]></description>
    <pubDate>Thu, 11 Jul 2024 00:00:00 UT</pubDate>
    <guid>https://talldoor.uk/posts/tropical_bases/</guid>
    <dc:creator>Yu Cong</dc:creator>
</item>

    </channel>
</rss>
