<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:media="http://search.yahoo.com/mrss/"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:georss="http://www.georss.org/georss">

  <channel>
    <title>
      <![CDATA[  Sophie Huiberts  ]]>
    </title>
    <link> https://sophie.huiberts.me </link>
    <description>
      <![CDATA[  Theoretical computer scientist at CNRS  ]]>
    </description>
    <atom:link
      href="https://sophie.huiberts.me/feed.xml"
      rel="self"
      type="application/rss+xml" />


<item>
  <title>
    <![CDATA[  Games Done Quick  ]]>
  </title>
  <link> https://sophie.huiberts.me/blog/2026/gdq/index.html </link>
  <guid> https://sophie.huiberts.me/blog/2026/gdq/index.html </guid>
  <description>
    <![CDATA[  I was at GDQ. Some reflections.  ]]>
  </description>  
  
  <content:encoded>
    <![CDATA[  
<p>Speedrunning is when you play a videogame as fast as possible. It&#39;s a hobby where you get to spend countless hours making small improvements to your results, develop jargon unparseable to outside observers, and become an expert recognized by your community of &#40;a few dozen&#41; peers. In other words, it is a lot like academia.</p>
<p>Speedrunning is even more like computer science academia. Speedrunners optimize, they solve traveling salesperson problems, and they are perhaps the only part of civil society interested in computing lower bounds. What&#39;s more, is that speedrunning too has a sort of conference system.</p>
<p>This weekend I got to perform at Games Done Quick &#40;GDQ&#41;, perhaps the world&#39;s biggest stage for playing videogames fast. It is every speedrunner&#39;s dream to be on that stage.</p>
<p>Just like an academic conference, you can submit your best work, and a program committee will decide which submissions will be included in the event. This year GDQ had its event in Europe, at Gamescom in Cologne Germany. Because of that proximity, I submitted a run together with my friend Chelsea. Our submission was a run of Hades II &#40;Supergiant Games, 2025&#41; in the Fresh File category. As an extra hurdle, we played this single player game with two players on one controller &#40;2P1C&#41;. I press most of the buttons, Chelsea does everything else including movement and aiming.</p>
<p>I was more nervous about this submissions than any paper I ever submitted, but we got accepted&#33; What&#39;s more, our run was being highlighted in the Gamescom promotional emails.</p>
<p><img src="https://sophie.huiberts.me/blog/2026/gamescompromo.png" alt="Screenshot from Gamescom 2026 promo email advertising their hosting a special edition of GDQ. Out of all accepted submissions, 4 are mentioned in the email &#40;in order&#41;: Hades II &#40;thats us&#41;, TLOZ:OOT Any&#37; &#40;Defeat Ganon&#41; Blindfolded, Grand Poo World 3 Any&#37; Race, and Pokemon Red/Blue Reverse Badge Order." /></p>
<p>Unlike an academic conference, your performance at the event is the only part that counts. And unlike in practice, you only get 1 shot at it. After the notification came in early June, we had just 3 months to prepare. Chelsea and I live in different countries, so finding practice time was an undertaking. However we are an experienced duo, having 2P1C runs on the official leaderboards in 4 different categories<sup id="fnref:h1ff">[1]</sup><sup id="fnref:h1lc">[2]</sup><sup id="fnref:h2ffea">[3]</sup><sup id="fnref:h2ff">[4]</sup>.</p>
<p>To give the best possible show, we prepared a host of things. We procured two mods for the game: one to respawn us in place if we died &#40;its a difficult game but the show must go on&#41;, and a second one to rig the first crucial coin flip in our favor. Besides that, we strategized lots. Which boons do we want to see, and which ones should we exclude because of their added unpredictability and cognitive load? Which flashy strategies can we try to show off, and where do we need to prepare dedicated safe strategies instead? Hades II is a roguelike game, which means that randomness can make or break your day. We needed to have a plan for every eventuality.</p>
<p><img src="https://sophie.huiberts.me/blog/2026/gdqabouttostart.jpg" alt="Sophie &#40;left&#41; and Chelsea &#40;right&#41; are excited that GDQ is about to start in 7 minutes and 30 seconds. The room is still quite empty, a lot of chairs are free. Sophie and Chelsea are posing in a way that references animal advocate John Oberg&#39;s famous photo with KFC&#39;s Beyond Meat chicken." /></p>
<p>Last week was Gamescom, with GDQ taking place friday through sunday. GDQ gave us runners free tickets for all three days. Chelsea and I would play on sunday, so we had two days to simply watch and experience the event. Gamescom itself, I did not care for. It is unbelievably crowded, not a good time. But attending GDQ in-person &#40;instead of through the usual live stream&#41; was a joy. When you&#39;re there in the audience, everything hits that much more. The clutch moves are that much more exciting. The funny bits are that much funnier. &#40;And to be honest, seeing that the other runs didn&#39;t always go perfectly did a lot to soothe our nerves about our own run.&#41;</p>
<p><img src="https://sophie.huiberts.me/blog/2026/melinoe.jpg" alt="Chelsea and Sophie pose with a Melinoe cosplayer. Melineo is the main character in Hades II. Chelsea wears a shirt that says &quot;Chelsea plays left hand&quot; with the outline of the left side of a Playstation controller. Sophie wears a matching tshirt saying &quot;Sophie players right hand&quot;." /></p>
<p>Just like an academic conference, meeting the people in your community makes everything more fun.</p>
<p>On sunday it was our turn. After Donkey Kong Country and Skylar &amp; Plux, before Silksong and OOT Blindfolded. The GDQ staff was amazing, they are a well-oiled operation handling all the complexities of audio, video, computers, German internet connections and livestreaming. After we were in place with all the setup, it was time to play. The game had it out for us, but Chelsea and I were able to put on a good show with the help of our commentator Dr Omega. Check out our show in the embed below or at <a href="https://www.youtube.com/watch?v&#61;MhTEmg9yff4">this link.</a></p>
<p>I am super grateful to Chelsea for playing with me and being such a good friend, to GDQ for coming to Europe and for the opportunity to have a dream come true, and to Dr Omega for the stellar commentary.</p><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/MhTEmg9yff4?si=jpj1FH6n5nr6O_IU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe><p><table class="fndef" id="fndef:h1ff">
    <tr>
        <td class="fndef-backref">[1]</td>
        <td class="fndef-content"><a href="https://www.speedrun.com/hades/runs/y8wgleny">Hades 1 Fresh File</a></td>
    </tr>
</table>
 <table class="fndef" id="fndef:h1lc">
    <tr>
        <td class="fndef-backref">[2]</td>
        <td class="fndef-content"><a href="https://www.speedrun.com/hades_ce/runs/zpx5vjxm">Hades 1 Loyalty Card &#40;Routed&#41;</a></td>
    </tr>
</table>
 <table class="fndef" id="fndef:h2ffea">
    <tr>
        <td class="fndef-backref">[3]</td>
        <td class="fndef-content"><a href="https://www.speedrun.com/hades2/runs/z5g5g1em">Hades 2 Fresh File &#40;early access patch 3&#41;</a></td>
    </tr>
</table>
 <table class="fndef" id="fndef:h2ff">
    <tr>
        <td class="fndef-backref">[4]</td>
        <td class="fndef-content"><a href="https://www.speedrun.com/hades2/runs/mkn2lw1m">Hades 2 Fresh File &#40;release version&#41;</a></td>
    </tr>
</table>
</p>
 ]]>
  </content:encoded>
    
  <pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate>  
  
  
  <atom:author>
    <atom:name>Sophie Huiberts</atom:name>
  </atom:author>
        
</item>

<item>
  <title>
    <![CDATA[  How to Browse the Internet  ]]>
  </title>
  <link> https://sophie.huiberts.me/blog/2026/internet/index.html </link>
  <guid> https://sophie.huiberts.me/blog/2026/internet/index.html </guid>
  <description>
    <![CDATA[  Two underrated tools for connecting to the World Wide Web.  ]]>
  </description>  
  
  <content:encoded>
    <![CDATA[  
<p>Everything changes but everything stays the same, and the 2026 internet is no exception. Today I recommend two websites because I am a happy customer of both.</p>
<h2 id="web_search">Web Search</h2>
<p>Most people agree that Google is worse now than it was a decade ago. Some people blame SEO, some blame LLMs. I think Ed Zitron is right when <a href="https://www.wheresyoured.at/the-men-who-killed-google/">he describes</a> the degradation is intentional on Google&#39;s part: enshittification at work.</p>
<p>Still, search <a href="https://arstechnica.com/gadgets/2026/08/remembering-the-pre-google-web-when-search-was-an-experiment/">is now</a> a fundamental part of how we interact with the web and we want something that works. One remedy I have heard is to use LLMs as a search engine. This is highly dubious practice in my view. Even the best models would sooner lie to your face than accurately describe the contents a simple web page.</p>
<p>My recommendation is a search engine called <a href="https://kagi.com/">Kagi</a>. It is truly great. As good as Google was back in the day I find that Kagi consistently yields high quality and authorative sources while returning a minimum of spam and AI slop. I started using this product already back in 2023 and I recommend it to everyone.</p>
<p>One feature worth pointing out: Kagi search is a paid product. I pay 5 dollars plus tax for up to 300 searches per month &#40;which is more than enough&#41;. Because the user pays, the user is the customer. This is unlike Google, DuckDuckGo, or most other search engines, where the user is the product. You can feel the difference in how you are treated. Six dollars is a small price to pay for a functioning web.</p>
<h2 id="syndication">Syndication</h2>
<p>Second recommendation is an oldy but goldy: get yourself an RSS reader. It is astounding the number of people I talk to &#40;young or old&#41; who do not use one of these.</p>
<p>RSS is a web protocol thingy, and almost every website participates. You can load special RSS urls into a software called an RSS reader, and the software will put all the new updates from all your subscribed websites into a chronological feed.</p>
<p>RSS is an amazing technology. You can follow your favorite newspaper, get your daily xkcd comic, and follow the latest papers in your ArXiv categories all in the same software. Every time you find a cool website, you can easily subscribe. That way you slowly build your own personal chronological feed of cool things and stay up-to-date with all you care about.</p>
<p>There are a lot of good RSS readers out there, either local on your device or as a web app. I like <a href="https://www.inoreader.com/">Inoreader</a>, they have a comfortable free tier. Do not worry about vendor lock-in: every RSS reader I know allows to export your list of feeds to a .ompl file which you can use to move to a different product.</p>
<p>I recommend you install a browser add-on to more easily find the RSS feed for a given webpage. On Firefox a good one is <a href="https://addons.mozilla.org/en-US/firefox/addon/want-my-rss/">Want My RSS</a>, which puts a little logo in the address bar when a feed is available. On Chrome I will not recommend anything, I don&#39;t like them because <a href="https://blog.mozilla.org/en/firefox/firefox-manifest-v3-adblockers/">they are destroying</a> their add-on ecosystem as we speak. But perhaps you can find something there too.</p>
<p>If you are a colleague in theoretical computer science, subscribe to <a href="https://theory.report/">theory.report</a> to stay up-to-date with all the bloggers in the community. On arXiv they have <a href="https://info.arxiv.org/help/rss.html">separate feeds per category and subject class</a> you can subscribe to. RSS is by far the easiest way to see all new papers coming out. If you are in optimization, note that <a href="https://optimization-online.org/">Optimization Online</a> also has a feed.</p>
<p><img src="https://sophie.huiberts.me/blog/2026/inoreader.png" alt="Screenshot from my Inoreader. On the side you see some of the feeds I subscribe to, such as Wikipedia featured article, Theory of Computing Blog Aggregator, kottke.org, Quanta Magazine, Wikipedia Watchlist, and a number of folders containing more feeds called art, news, misc, comics, math, cs, blogs, fictie, vids. In the main window you see individual unread articles, including some new articles from Colossal, Ars Technica, Parool and TCS Blog Aggregator, all 5 hours or less old. Also visible are some older unread articles, namely today&#39;s xkcd, one update from ArXiv math.OC, one message on dmanet, and one post from arg min blog." /></p>
 ]]>
  </content:encoded>
    
  <pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate>  
  
  
  <atom:author>
    <atom:name>Sophie Huiberts</atom:name>
  </atom:author>
        
</item>

<item>
  <title>
    <![CDATA[  The Failure of Sparse Smoothed Analysis  ]]>
  </title>
  <link> https://sophie.huiberts.me/blog/2026/sparse-smoothed/index.html </link>
  <guid> https://sophie.huiberts.me/blog/2026/sparse-smoothed/index.html </guid>
  <description>
    <![CDATA[  A proof that Dantzig&#39;s and Bland&#39;s pivot rules have exponential sparse smoothed complexity.  ]]>
  </description>  
  
  <content:encoded>
    <![CDATA[  
<p>Earlier this week I posted a list of arguments why smoothed analysis is a poor model to study the running time of the simplex method. &#40;Hence why we introduced <a href="https://arxiv.org/abs/2510.21613">by-the-book analysis</a> which has none of those problems.&#41;</p>
<p>One thing I mentioned was that the standard Klee-Minty cube is stable under zero-preserving perturbations. Someone asked me for a proof. Since there is currently no written source for this lore, I will write a quick proof here.</p>
<p>Let&#39;s start with some traditional Klee-Minty cubes:</p>
\[\begin{aligned}
\operatorname{maximize} \quad &x_d \\
    \operatorname{subject~to} \quad & 0 \leq x_1 \leq 1 \\
    & 0.2 x_{j-1} \leq x_j \leq 1-0.2 x_{j-1} \qquad \forall j \in \{2,\dots,d\}.
\end{aligned}\]
<p>Assume the inequalities are ordered as shown: first we list both inequalities for \(j=2\) and then both inequalities for \(j=3\) and so on.</p>
<p>We shift the means slightly and then perturb all non-zero coefficients. This yields a linear program</p>
\[\begin{aligned}
\operatorname{maximize} \quad x_d \hphantom{\leq}& \\
    \operatorname{subject~to} \quad  0.1 + \alpha_1 \leq& (1+\gamma_1) x_1 \\
    & (1+\delta_1) x_1 \leq 0.9+\varepsilon_1 \\
     0.1 + \alpha_j + (0.2 + \beta_j)  x_{j-1} \leq& (1+\gamma_j) x_j \\
    & (1+\delta_j) x_j \leq (0.9+\varepsilon_j) - (0.2 + \eta_j) x_{j-1} \qquad \forall j \in \{2,\dots,d\}.
\end{aligned}\]
<p><strong>Theorem.</strong> If \(\alpha,\beta,\gamma,\delta,\varepsilon,\eta \in [-0.05,0.05]^d\) then Bland&#39;s rule takes exponentially many pivot steps.</p>
<p><strong>Proof.</strong> We go by induction. We prove that there are exactly \(2^d\) bases, and Bland&#39;s rule will visit all bases when it starts at the basis minimizing \(x_d\) and works to maximize \(x_d\). All basic feasible solutions \(x\) satisfy \(x \in [0,1]^d\). The Bland path is reversible: if we start at the basis maximizing \(x_d\) and we use Bland&#39;s rule to minimize \(x_d\) then the same bases are visited but in reverse order.</p>
<p>We can check the base case \(d=1\) easily. The starting basis consists of the constraint \(0.1 + \alpha_1 \leq (1+\gamma_1)x_1\) and the end basis consists of the constraint \((1+\delta_1)x_1 \leq 0.9 + \varepsilon_1\). The two basic feasible solutions \(\frac{0.1 + \alpha_1}{1+\gamma_1}\) and \(\frac{0.9+\varepsilon_1}{1+\delta_1}\) are easily verified to be in \([0,1]\).</p>
<p>When \(d \geq 2\), assume that the induction statement has been proven for \(d-1\). The starting basis for \(d\) consists of all lower-bounding constraints: \(0.1 + \alpha_1 \leq (1+\gamma_1)x_1\) and \(0.1 + \alpha_j + (0.2+\beta_j)x_{j-1}\leq(1+\gamma_j)x_j\) for all \(j \in \{2,\dots,d\}\).</p>
<p>Take the Bland path for \(d-1\), and append to every basis in it the constraint \(0.1 + \alpha_j + (0.2+\beta_j)x_{j-1} \leq (1+\gamma_j)x_j\). These bases are now bases for the KM-cube in \(d\) variables. The associated basic solutions are identical on coordinates \(1,\dots,d-1\) and have \(x_d = \frac{0.1 + \alpha_j + (0.2+\beta_j)x_{d-1}}{1+\gamma_j}\). The Bland path for \(d-1\) contains \(2^{d-1}\) bases and increases the value of \(x_{d-1}\) in every step. Since \(1+\gamma_d \in [0.95,1.05]\) and \(0.1 + \alpha_d \in [0.05,0.15]\) and \(0.2 + \beta_d \in [0.15,0.25]\) and \(x_{d-1} \in [0,1]\) we get \(x_d \in [0, 0.43]\).</p>
<p>When we consider the constraint \((1+\delta_d)x_d \leq (0.9+\varepsilon_d)-(0.2+\eta_d)x_{d-1}\), we see that the left-hand side is at most \(1.05 \cdot 0.43 \leq 0.46\) and the right-hand side is at least \(0.85-0.25 = 0.6\). That is all we needed to check in order to verify that the bases constructed so far are feasible.</p>
<p>Every step on our path so far is improving. Due to our chosen ordering of the inequalities, the constraint \(0.1 + \alpha_j + (0.2+\beta_j)x_{j-1} \leq (1+\gamma_j)x_j\) will not leave the basis until there is no other possible improving direction left. Hence our path so far is all part of the Bland path for our KM-cube in \(d\) variables.</p>
<p>At the end of our path so far, Bland&#39;s rule will pivot out the constraint \(0.1 + \alpha_j + (0.2+\beta_j)x_{j-1} \leq (1+\gamma_j)x_j\) and pivot in \((1+\delta_d)x_d \leq (0.9+\varepsilon_d)-(0.2+\eta_d)x_{d-1}\), since it is the only available improving move.</p>
<p>Now take again the Bland path for \(d-1\), but reverse its order and append to every basis in it the constraint \((1+\delta_d)x_d \leq (0.9+\varepsilon_d)-(0.2+\eta_d)x_{d-1}\). This yields \(2^{d-1}\) more bases for the \(d\)-variable KM-cube. Because we reversed the order, the Bland path is decreasing \(x_{d-1}\). Since \(0.2+\eta_d > 0\) and \(1+\delta_d > 0\), the path is thus increasing the value of \(x_d\). We have now constructed our full Bland path of \(2^d\) bases. It remains to show that these final \(2^{d-1}\) bases are feasible and in \([0,1]^d\). Note that \(1+\delta_d \in [0.95,1.05]\), \(0.9+\varepsilon_d \in [0.85,0.95]\) and \(0.2+\eta_d \in [0.15,0.25]\). Since \(x_{d-1} \in [0,1]\) we get \(x_d = \frac{0.9+\varepsilon_d - (0.2+\eta_d)x_{d-1}}{1+\delta_d} \in [0.57, 1]\). The only constraint that can lead to infeasiblity is \(0.1 + \alpha_j + (0.2+\beta_j)x_{j-1} \leq (1+\gamma_j)x_j\) but its left-hand side is at most \(0.4\) and its right-hand side is at least \(0.57\), hence the bases are all feasible. <em>QED</em></p>
<h2 id="interpretation">Interpretation</h2>
<p>This theorem directly shows us that Bland&#39;s rule has exponential complexity under both relative and zero-preserving smoothed analysis. When we rescale the inequalities by large numbers in the standard way, it follows directly that Dantzig&#39;s most-negative reduced cost rule has exponential complexity for relative smoothed analysis.</p>
<p>In my <a href="https://sophie.huiberts.me/blog/2026/beyond-worst-case/">previous post</a> I interpreted the above theorem by stating that zero-preserving smoothed analysis is a dead end. While I stand by that statement, I do want to give a second possible interpretation.</p>
<p>Namely, you can conclude that Bland&#39;s rule is just bad.<sup id="fnref:agree">[1]</sup> More specifically: Bland&#39;s rule is purely combinatorial in nature. Perturbations are &#40;stochastic&#41; geometry. It is no wonder that Bland&#39;s pivoting decisions fail to benefit from perturbations. Dantzig&#39;s rule <a href="https://www.youtube.com/watch?v&#61;tbOZvbpZp44">is also bad</a> of course. In this case, specifically because it fails to be scale-invariant with respect to rescaling the inequalities. Dantzig thus similarly fails to be a geometrically-steered pivot rule.</p>
<p>When your pivot rule does incorporate the ambient geometry, you can do significantly better than zero-preserving smoothed analysis. In fact, in the <a href="https://arxiv.org/abs/2510.21613">by-the-book paper</a> we bound the running time of a simplex method in a much weaker probabilistic model: only the right-hand side is perturbed.<sup id="fnref:btba">[2]</sup> That is part of why we are so proud of the BTB paper: its both mathematically stronger and scientifically more robust than what we had before.</p>
<h3 id="update_300726">UPDATE 30/07/26</h3>
<p>I did a bit more lit search after posting. Tuns out that Bland&#39;s rule was already mentioned to have exponential running time under zero-preserving smoothed analysis, as mentioned in <a href="https://www.cs.yale.edu/homes/spielman/BAP/lect14.pdf">Dan Spielman&#39;s lecture notes</a> from 2002&#33; A slightly different model was studied by <a href="https://doi.org/10.1145/3564246.3585220">Miranda Christ and Mihalis Yannakakis</a>, who perturb the non-zero transition probabilities in an MDP. They find MDP&#39;s with \(n\) states for which adversarial zero-preserving perturbations of magnitude at most \(1/n\) take time \(2^{\sqrt{n}}\) to be solved when using a simplex method with Dantzig&#39;s pivot rule on the standard LP formulation.</p>
<p><table class="fndef" id="fndef:agree">
    <tr>
        <td class="fndef-backref">[1]</td>
        <td class="fndef-content">Every practitioner will agree.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:btba">
    <tr>
        <td class="fndef-backref">[2]</td>
        <td class="fndef-content">We use the semi-random shadow vertex pivot rule, which generally prefers steeper edges over shallower edges. Hence it incorporates the ambient geometry. The analysis also needs some additional minor assumptions to make the definitions make sense: RHS perturbations alone lack scale.</td>
    </tr>
</table>
</p>
 ]]>
  </content:encoded>
    
  <pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate>  
  
  
  <atom:author>
    <atom:name>Sophie Huiberts</atom:name>
  </atom:author>
        
</item>

<item>
  <title>
    <![CDATA[  Smoothed Analysis is Bullshit*  ]]>
  </title>
  <link> https://sophie.huiberts.me/blog/2026/beyond-worst-case/index.html </link>
  <guid> https://sophie.huiberts.me/blog/2026/beyond-worst-case/index.html </guid>
  <description>
    <![CDATA[  Honesty posting.  ]]>
  </description>  
  
  <content:encoded>
    <![CDATA[  
<p>Last week we organized a <a href="https://www.dagstuhl.de/en/seminars/seminar-calendar/seminar-details/26292">workshop at Schloss Dagstuhl</a> on analysis of algorithms beyond the worst case. Here, beyond worst-case<sup id="fnref:BWCAbook">[1]</sup> refers to a pressing tension in the scientific study of algorithms: theory is often useless shit.<sup id="fnref:spicy">[2]</sup> I mean this with love.</p>
<p>Theoretical computer science has given us many great pieces of theory, predominantly following the classic modeling paradigm called &#39;worst-case analysis&#39;. Under this paradigm, we specify a single algorithm &#40;or class of algorithms&#41; with mathematical precision and rigor, along with the set of valid inputs. A worst-case analysis then attempts to find the worst-possible performance of the algorithm &#40;in time, memory, or output solution quality&#41;. We describe that worst-case performance as a function of the size of the input, often counted as the number of bits or number of numbers. In some parts of computation, whether modern or undergrad curriculum, worst-case analysis is a useful paradigm for understanding your algorithm&#39;s performance.</p>
<p>Other parts of computation spit in the face of theory. Paging, SAT, graph coloring, linear programming, mixed-integer linear programming, clustering, traveling salesperson. Each of these works better, is solveable faster, or returns better quality solutions than what worst-case analysis would predict. SAT and MILP are NP-hard in theory. In practice they are easy.<sup id="fnref:explanatorycommaSATMIP">[3]</sup> The simplex method for linear programming runs in exponential time under worst-case analysis. In practice its blazingly fast.<sup id="fnref:explanatorycommaLP">[4]</sup></p>
<p>We need different approaches, new modeling strategies. And the problem is, mathematicians like us are poorly equipped to think critically about what we do. Nobody believes in average-case analysis. But also smoothed analysis is kinda bullshit,<sup id="fnref:smoothedistrash">[5]</sup> even if people still believe in it.<sup id="fnref:godel">[6]</sup></p>
<p>So let me describe you how I got radicalized against smoothed analysis, so that you too can stop falling for its cursed allure. These arguments mostly come from discussions with my PhD student <a href="https://eleonbach.github.io/">Eleon Bach</a>. They were published in <a href="https://arxiv.org/abs/2510.21613">this paper</a> but here on the blog I can write with more zest.</p>
<h2 id="hypersparsity">Hypersparsity</h2>
<p>Real-world linear program constraint matrices have a property called hypersparsity. For one, that means that the matrix is very sparse: 99.99&#37; of matrix entries are zero &#40;and thus not even stored in memory&#41;. Only 0.01&#37; is non-zero. This is important for real-world codes: the simplex method is <a href="https://www.mixedinteger.org/EUROMIP/2025/slides/laurent-porrier.pdf">memory-bound</a>, so if you destroy all zeroes then your running time blows up. The instances we study in smoothed analysis have no sparsity: with probability 1, all entries of the matrix are non-zero. This is bad.</p>
<p>The second part of hypersparsity is the structure of the non-zeroes: most non-zero matrix entries share a handful of values. Most entries are probably equal to 1, but even among the remaining entries there are only a limited number of unique values. This is a problem for smoothed analysis: almost surely, all entries have distinct values. This is bad.</p>
<h2 id="worst-case_instances_are_sparse_and_stable">Worst-case instances are sparse and stable</h2>
<p>So smoothed instances do not look like real-world instances for sparsity reasons. This is unlike worst-case instances: the Klee-Minty cubes are hypersparse. Looking purely at the patterns in the constraint matrix, one would assume that KM-cubes are more like real-world instances than smoothed analysis instances are.</p>
<p>You may think &quot;could we do smoothed analysis in a sparse way? We could only perturb the non-zero entries in the input data&quot;. This thought puts you in good company: Spielman and Teng <a href="https://arxiv.org/abs/cs/0111050">propose</a> the same thing. Too bad its a dead end. If you choose the parameters right, then the behavior of the KM-cube is stable under constant-magnitude zero-preserving perturbations. That is, the zero-preserving smoothed complexity of the simplex method &#40;with the most-negative reduced cost pivot rule&#41; is exponential.</p>
<h2 id="even_imprecise_numbers_are_precise">Even imprecise numbers are precise</h2>
<p>Next issue. Some linear programs do contain numbers that &#39;look inaccurate&#39;: numbers like 15.79081 or 43.15593. Maybe those numbers contain some type of independent Gaussian noise to make them look like that? I don&#39;t think so. If you allow yourself to change such &#39;ugly&#39; numbers by as little as 0.01&#37; then the previously-optimal solution will violate some constraints by as much as 50&#37;. This holds for 13 out of 90 NETLIB instances, quite a large amount.<sup id="fnref:robust">[7]</sup> Feel free to disagree with my interpretation, but I personally think that means that the &#39;ugly random-looking numbers&#39; have important non-trivial relations between eachother. Hence they cannot be changed in isolation. This would violate a key assumption of smoothed analysis: that all random noise entries are independently distributed.</p>
<h2 id="singular_matrices_should_stay_singular">Singular matrices should stay singular</h2>
<p>In a typical LP, not every maximal square submatrix is a basis. Some submatrices are singular. Singular submatrices are good: the simplex method will never pivot to them, so they don&#39;t cost any extra time. If you add small random Gaussian noise to your constraint matrix, then every submatrix will be basic. This is a disaster: what used to be a singular submatrix &#40;good&#41; is now a basic submatrix with high condition number &#40;very bad&#41;.</p>
<p>If you read your favorite solver&#39;s user manual or talk to their helpdesk, you will learn this: please write your input data in maximum precision. Use integer numbers if you can, or 64-bit floats if you must. Do not use 32-bit floats, for they are too imprecise and that imprecision hurts solver performance. One reason that is given for this advice is what I say above: low precision may cause nominally singular submatrices to pass the threshold and become basic. A basis with high condition number will ruin your numerical stability and your simplex method performance along with it.</p>
<p>So: smoothed analysis says &#39;more noise &#40;less precision&#41; is good&#39;. The user manual says &#39;more precision is good&#39;. Smoothed analysis is wrong, the user manual is correct.</p>
<h2 id="philosophical_incoherence">Philosophical incoherence</h2>
<p>Final issue. In smoothed analysis, we assume that there is an idealized piece of input data which gets perturbed by random noise added after its formulation. What is this noise? Where does it come from? What does it model?</p>
<p>Some people suggest the noise as modeling floating-point inaccuracy, implicitly advocating for a value of \(\sigma = 2^{-53} \approx 10^{-16}\) as per IEEE 754. Other people speak of the noise as modeling measurement error, which would endorse a value of \(\sigma \approx 10^{-2}\). This disagreement is ridiculous. Imagine admitting this to a real scientist, like a physicist: &quot;yeah we have a theoretical understanding, except we don&#39;t agree what our model models and our opinions about the central parameter&#39;s value differ by 14 order of magnitude.&quot; Not a good look.</p>
<h2 id="smoothed_analysis_is_trash">Smoothed analysis is trash</h2>
<p>So that&#39;s the deal, those are the arguments that radicalized me against smoothed analysis for LP. Its instances don&#39;t pass the most basic sanity checks, its conclusions seem to contradict the user manual ground truth, and the whole theory lacks a coherent philosophical grounding.</p>
<p>This all leaves a crucial question: how should one analyze an algorithm when worst-case analysis fails? At the workshop we had talks from different subfields, and people had different partial answers to this question. Some people went deeper into the theory, other people proposed to engage more with computational experiments in one form or another. Some people thought that a good analysis method would be broadly applicable, others were happy to exploit more problem-specific features. This is an exciting set of questions and a lively research field.</p>
<p>For the simplex method, by far the best current analysis framework is <a href="https://arxiv.org/abs/2510.21613">by-the-book analysis</a>, our new baby &#40;STOC &#39;26&#41;. It is not perfect but it is a big step up from all that came before.</p>
<p>I am curious to see where all the workshop&#39;s topics and participants will go next. Although none of us has all the answers, we are all making progress.</p>
<p><table class="fndef" id="fndef:BWCAbook">
    <tr>
        <td class="fndef-backref">[1]</td>
        <td class="fndef-content">For an overview of items falling under this umbrella, take a look at <a href="https://www.cambridge.org/9781108494311#resources">this book edited by Tim Roughgarden</a> and use password &#39;BWCA&#95;CUP&#39; to open it.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:spicy">
    <tr>
        <td class="fndef-backref">[2]</td>
        <td class="fndef-content">I am not pulling any punches today. The literature doesn&#39;t capture people&#39;s feelings, and normally you can only observe those by attending an IRL event. However, events like this workshop, broadly scoped on BWCA in its entirety, happen only once every 12 years and only permit 25 attendees. As such, you probably don&#39;t often hear the spicier takes. This blog post collects a few more critical notes, some mine and some taken from others. Don&#39;t get discouraged by any of this criticism: it applies to everyone&#39;s work, including my own. I built my career on doing smoothed analysis of the simplex method, so mostly I am throwing in my own windows here. The point is to reflect critically, and sometimes that is easier when we don&#39;t mince our words. Anyway, see for yourself what you can get out of this blog post: use it to help develop your own sense of critical evaluation. Nobody trains us mathematicians how to do this, and we gotta learn somehow.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:explanatorycommaSATMIP">
    <tr>
        <td class="fndef-backref">[3]</td>
        <td class="fndef-content">Crafting hard instances is not difficult. But somehow, we have reams and reams of practical real-world instances which are easy to solve. Electronics designs get verified bug-free by showing that huge boolean formulas are UNSAT. Swathes of global shipping and manufacturing get planned by solving MIPs. 10k variables is tiny for these solvers, but should be huge for any true believer in NP-hardness.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:explanatorycommaLP">
    <tr>
        <td class="fndef-backref">[4]</td>
        <td class="fndef-content">For the simplex method, crafting hard instances is difficult. What I mean by that is, crafting numerically unstable instances is easy and your solver will struggle with those. But instances without numerical problems, but which do exhibit super-polynomial running times on real physical IEEE 754 compliant computer hardware? Constructing those is an open research problem.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:smoothedistrash">
    <tr>
        <td class="fndef-backref">[5]</td>
        <td class="fndef-content">At least it is trash for the context of studying linear programming, as I will lay out in this blog post. For other algorithms and applications areas, these arguments may not apply. Maybe for your problem, smoothed analysis is fine. I invite you to consider this matter critically in the context of the algorithm you study.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:godel">
    <tr>
        <td class="fndef-backref">[6]</td>
        <td class="fndef-content">People really did believe in this theory. Spielman and Teng&#39;s <a href="https://www.sigact.org/prizes/g&#37;C3&#37;B6del/2008.html">Gödel Prize citation</a> claims that smoothed analysis &quot;provides a new rigorous framework for explaining the practical success of algorithms&quot;. Those are big claims: not only is it rigorous &#40;mathematically? scientifically? who knows&#41;, but it provides actual explanation&#33;</td>
    </tr>
</table>
 <table class="fndef" id="fndef:robust">
    <tr>
        <td class="fndef-backref">[7]</td>
        <td class="fndef-content">These facts are taken from <a href="https://web.archive.org/web/20251211052055/https://www2.isye.gatech.edu/~nemirovs/FullBookDec11.pdf">this book</a>, although the authors give a very different interpretation of what these same facts mean.</td>
    </tr>
</table>
</p>
 ]]>
  </content:encoded>
    
  <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate>  
  
  
  <atom:author>
    <atom:name>Sophie Huiberts</atom:name>
  </atom:author>
        
</item>

<item>
  <title>
    <![CDATA[  Solving LP by Hand  ]]>
  </title>
  <link> https://sophie.huiberts.me/blog/2026/hand-computation/index.html </link>
  <guid> https://sophie.huiberts.me/blog/2026/hand-computation/index.html </guid>
  <description>
    <![CDATA[  Historical anecdotes.  ]]>
  </description>  
  
  <content:encoded>
    <![CDATA[  
<p>As narrated by Dantzig in many retrospective articles, he invented linear programming in the summer of 1947 with helpful suggestions of Leonid Hurwicz and Tjalling Koopmans. The first computational experiment with the simplex method finished April 10th,<sup id="fnref:NBS">[1]</sup> 1948. This was the famous diet problem computation, described from Dantzig&#39;s point of view in <em>Linear Programming and Extensions</em> and described from the computer&#39;s point of view in <em>When Computers Were Human</em> &#40;David Alan Grier&#41;. Notably, this computation was performed by hand: 5 people worked on this for 21 days.<sup id="fnref:letters">[2]</sup></p>
<p><img src="https://sophie.huiberts.me/blog/2026/computers-mathtables.jpg" alt="Black and white photograph. Twelve humans sit, quite packed, in rows at small desks. Each person has a large calculator in front of them. In terms of size and button shape they look like Comptometers, but they also seem to have rounded corners and cables leading from the back. Ten of the humans I would describe as white women, one I think is a white man, and the last one is a black man. The desks have enough space for the calculator, plus maybe two pieces of paper side by side without overlap." /></p>
<p><em>Human computers of the Mathematical Tables Project, where the 1948 diet LP computation was performed.</em></p>
<p>Even after this demonstration, a number of real applications of LP were performed by hand. Lets look a bit of a timeline for electronic computers first. The first specialized simplex method for transportation problems<sup id="fnref:transportation">[3]</sup> was coded in 1950 for the SEAC. In 1952, Orchard-Hays got the first simplex code working on the IBM Card Programmed Calculator, and later on the more recognizeable IBM 701 machines. These early hardwares and softwares were very error-prone and needed a lot of highly-skilled babysitting, but Orchard-Hays&#39; later codes were commercially useful.</p>
<p>Charnes, Cooper and Mellon famously presented the first work on LP in fossil fuel blending in 1951. They do not directly specify, but we can be fairly sure that their computation was done by hand. Although the LP had no workable structure that aided computation, it was fairly small problem: maybe 9 inputs, 6 outputs.</p>
<p>Dantzig writes in 1954<sup id="fnref:largescale">[4]</sup> that often, when studying a particular structure of LP, human hands with a specialized algorithm were faster than an electronic computer with a general LP code. For example, a transportation problem<sup id="fnref:transportation">[3]</sup> with a hundred combined rows &#40;sources&#41; and columns &#40;sinks&#41; can be &#39;handled nicely by clerks&#39;. Dantzig writes that already in 1953, Heinz<sup id="fnref:advances">[5]</sup> used LP to ship ketchup from 6 plants to 70 warehouses. We can be fairly sure that a small transportation problem like this was solved by hand. And this is presumably without the 1956 Ford-Fulkerson algorithm.</p>
<p>One other application of a transportation problem solved by hand is described in 1955<sup id="fnref:advances">[5]</sup>. The RAND Corperation employed a large number of computers,<sup id="fnref:facilities">[6]</sup> as well as many researchers who had computations they wanted to see performed. In order to form a schedule that takes both priority and urgency into account, a transportation problem was formulated. Every week has a number of computer-hours available, every tasks needs a certain hours before it is completed. Dantzig gives an example where one has 18 projects and 10 weeks, resulting in a problem with 28 equations in 180 unknowns. He adds upper bounds of 40 hours on the individual edges to indicate that only one <em>person</em> can work on a project at a time.</p>
<p>This is perhaps the ultimate showcase that human computers remained important well into the mid-1950s: humans were solving an LPs, by hand, to decide in what order the different computing tasks should be solved &#40;also by humans&#41;.</p>
<p><table class="fndef" id="fndef:NBS">
    <tr>
        <td class="fndef-backref">[1]</td>
        <td class="fndef-content">Date is from the <a href="https://nvlpubs.nist.gov/nistpubs/Legacy/RPT/nbsreportApr-Jun1948.pdf">NBS report</a>. Note the involvement of famous matrix theorist Olga Taussky-Todd. I am not aware of any other document crediting her involvement with LP or computation. I asked David Alan Grier about this, he speculated that perhaps Taussky-Todd did not want to be credited: computation was seen as low-skilled &#40;women&#39;s&#41; work, and Taussky-Todd may not have felt comfortable being associated with that.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:letters">
    <tr>
        <td class="fndef-backref">[2]</td>
        <td class="fndef-content"><a href="https://sophie.huiberts.me/files/dantzig-von-neumann-1948.pdf">Correspondence from Dantzig to Von Neumann</a>. The 5 computers were supervised for 4 hours per day by Jack Laderman. Note that only Laderman is credited by name, not the computers and not Taussky-Todd.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:transportation">
    <tr>
        <td class="fndef-backref">[3]</td>
        <td class="fndef-content">Given a bipartite graph, with supplies of a commodity available on the one side and demands on the other side, how to route the goods at minimal cost?</td>
    </tr>
</table>
 <table class="fndef" id="fndef:advances">
    <tr>
        <td class="fndef-backref">[5]</td>
        <td class="fndef-content"><a href="https://www.rand.org/pubs/research_memoranda/RM1475.html">Recent Advances in Linear Programming</a>, Dantzig, April 12th, 1955.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:facilities">
    <tr>
        <td class="fndef-backref">[6]</td>
        <td class="fndef-content">Dantzig writes &quot;The RAND Corporation has extensive computing facilities that are in constant use by the research personnel.&quot; Despite how he phrases it, he is talking about human being here.</td>
    </tr>
</table>
 <table class="fndef" id="fndef:largescale">
    <tr>
        <td class="fndef-backref">[4]</td>
        <td class="fndef-content"><a href="https://apps.dtic.mil/sti/tr/pdf/ADA596199.pdf">Status of Solution of Large-Scale Linear Programming Problems</a>, Dantzig, November 30th, 1954.</td>
    </tr>
</table>
</p>
 ]]>
  </content:encoded>
    
  <pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate>  
  
  
  <atom:author>
    <atom:name>Sophie Huiberts</atom:name>
  </atom:author>
        
</item>

<item>
  <title>
    <![CDATA[  Website revamp  ]]>
  </title>
  <link> https://sophie.huiberts.me/blog/2026/website/index.html </link>
  <guid> https://sophie.huiberts.me/blog/2026/website/index.html </guid>
  <description>
    <![CDATA[  I am thinking of starting a blog. Hence the website redesign  ]]>
  </description>  
  
  <content:encoded>
    <![CDATA[  
<p>As an academic, having an online presence gives you a big leg up. Some of the key functions are:</p>
<ol>
<li><p>collect your papers together for easy perusal</p>
</li>
<li><p>show who your advisor and advisees are &#40;this helps editors know if you have a conflict of interest as a potential reviewer&#41;</p>
</li>
<li><p>picture &#40;people want to recognize you at events&#41;</p>
</li>
<li><p>email address &#40;so that your colleagues can reach you&#41;</p>
</li>
</ol>
<p>If you are a PhD student, and you have at least one paper online, then you should make your own website <em>right now.</em></p>
<p>My first website was made using <a href="https://academicpages.github.io/">Academic Pages</a>. It worked well enough, until one day in 2023 Jekyll started screaming and stopped compiling. Since then I have been writing html by hand. Starting today, I want to try something new. I rebuilt my website using <a href="https://franklinjl.org/">Frankin</a>. Its another static website generator, with easy support for LaTeX and code highlighting. I host my website through <a href="https://docs.github.com/en/pages">GitHub Pages</a>, linked to my own domain name.</p>
<p>With the new Franklin tech, I want to start blogging. They say its good to practice your writing frequently. The first few posts will be information that I have tweeted before. Putting that into more a more archive-friendly and longer form format will be my first step towards making it into something useful.</p>
<p>At least, I think I will. Depends on how well this Github Pages deployment with the new tech will go lmaosob</p>
 ]]>
  </content:encoded>
    
  <pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate>  
  
  
  <atom:author>
    <atom:name>Sophie Huiberts</atom:name>
  </atom:author>
        
</item>
</channel></rss>