The Surprise

Common sense says that adding a road can only help: more capacity, more options, faster trips. In 1968 the German mathematician Dietrich Braess proved that common sense is wrong. In the right network, opening a brand-new shortcut makes every single driver's commute longer — even though nobody is forced to use it.

The catch is that drivers are selfish. Each one picks the route that is fastest for them right now, given what everyone else is doing. The traffic settles into a stand-off — a Nash equilibrium — where no individual can do better by switching. Braess showed that the extra road can drag that equilibrium to a worse place for the whole crowd.

This isn't a quirk of one toy example. It has been measured on real streets, and the same effect shows up in power grids, water pipes and computer networks. A new connection, freely available, can leave everyone worse off.

Try It Yourself

Below is the classic Braess network. 4000 drivers travel from Start to End. Two roads have a fixed 45-minute cost; the other two get more congested the more cars use them (their time is cars ÷ 100 minutes). A dashed shortcut in the middle is instant — and you can open or close it.

<p class="hint">{{hint}}</p>
<div class="net">
  <svg viewBox="0 0 320 200" id="svg">
    <line class="edge cong" x1="40" y1="100" x2="160" y2="40" />
    <line class="edge fix"  x1="160" y1="40" x2="280" y2="100" />
    <line class="edge fix"  x1="40" y1="100" x2="160" y2="160" />
    <line class="edge cong" x1="160" y1="160" x2="280" y2="100" />
    <line class="edge cut" id="cut" x1="160" y1="40" x2="160" y2="160" />
    <text class="lbl" x="86"  y="58">cars/100</text>
    <text class="lbl" x="214" y="58">45</text>
    <text class="lbl" x="86"  y="150">45</text>
    <text class="lbl" x="214" y="150">cars/100</text>
    <text class="lbl cutlbl" id="cutlbl" x="168" y="104">0</text>
    <circle class="node" cx="40" cy="100" r="13" /><text class="nlbl" x="40" y="104">S</text>
    <circle class="node" cx="160" cy="40" r="13" /><text class="nlbl" x="160" y="44">A</text>
    <circle class="node" cx="160" cy="160" r="13" /><text class="nlbl" x="160" y="164">B</text>
    <circle class="node" cx="280" cy="100" r="13" /><text class="nlbl" x="280" y="104">E</text>
  </svg>
</div>
<div class="status" id="status"></div>
<div class="btns">
  <button id="toggle" type="button">{{open_shortcut}}</button>
  <button id="solve" type="button" class="ghost">{{let_drivers}}</button>
</div>
* { box-sizing: border-box; }
body { font-family: system-ui, sans-serif; color: #222; margin: 0; }
.hint { font-size: .9rem; color: #444; margin: 0 0 .6rem; line-height: 1.45; }
.net { display: flex; justify-content: center; }
svg { width: 100%; max-width: 360px; height: auto; }
.edge { stroke: #6b7785; stroke-width: 5; stroke-linecap: round; }
.edge.cong { stroke: #e8833a; }
.edge.fix  { stroke: #3b6fb0; }
.edge.cut  { stroke: #2aa15a; stroke-width: 4; stroke-dasharray: 6 6; opacity: .2; }
.edge.cut.on { opacity: 1; }
.node { fill: #1d3557; }
.nlbl { fill: #fff; font: 700 13px system-ui; text-anchor: middle; }
.lbl { fill: #555; font: 600 11px ui-monospace, monospace; text-anchor: middle; }
.cutlbl { fill: #2aa15a; }
.status { font-size: .98rem; font-weight: 600; margin: .6rem 0; min-height: 3em; line-height: 1.4; }
.big { font-size: 1.5rem; }
.ok { color: #0a7d33; } .bad { color: #c92f3c; }
.btns { display: flex; gap: .5rem; flex-wrap: wrap; }
button { font: 600 14px system-ui; padding: .45rem .9rem; border: 1px solid #1d3557;
         background: #1d3557; color: #fff; border-radius: 8px; cursor: pointer; }
button.ghost { background: #fff; color: #1d3557; }
// Code not found

With the shortcut closed, drivers split evenly and everyone needs 65 minutes. Open the shortcut and each driver, acting selfishly, is tempted onto it — until everyone funnels through the two congestible roads and the trip jumps to 80 minutes. The road that was supposed to help made the whole network 23% slower, and no driver can fix it alone. Close it again and the commute drops right back to 65.

The Real Story

What exactly goes wrong? Two different "best" answers pull apart.

  • The social optimum is the routing that minimizes total travel time — what a benevolent traffic controller would impose. In the network above, that's everyone splitting and finishing in 65 minutes.
  • The selfish equilibrium is where each driver minimizes their own time given everyone else. With the shortcut open, that's 80 minutes for all.
  • The gap between them has a name. The ratio of equilibrium cost to optimal cost is the price of anarchy. Here it is 80/65 ≈ 1.23.
  • It's bounded — but real. In 2002 Tim Roughgarden and Éva Tardos proved that for networks with linear travel-time functions the price of anarchy is at most 4/3 (≈1.33). Selfish routing is never more than a third worse than optimal — but it can get that bad, and adding a road can push it there.

The paradox is not a paradox at all once you see it: there is no contradiction, just a system where individually rational choices add up to a collectively bad outcome. It is the same tension behind the prisoner's dilemma — selfishness has a price, and Braess gave it a road map.

Where It Matters

Braess's paradox is not a chalkboard curiosity — engineers plan around it:

  • Urban traffic: cities have removed roads and watched congestion fall. Closing 42nd Street in New York for Earth Day, and tearing out Seoul's Cheonggyecheon highway, both improved flow — textbook Braess in reverse.
  • Internet routing: packets, like drivers, take the path that looks fastest. Adding a link between routers can shift selfish flows and increase average latency.
  • Power grids: electricity follows physics, not plans. Adding a transmission line can redistribute load and lower the grid's capacity — a documented Braess effect.
  • Network design: any system where independent agents share limited capacity — ride-hailing, logistics, load balancing — must check that new capacity actually helps.

The lesson is humbling: you cannot improve a self-organizing network just by adding to it. Sometimes the fix is to take something away.

Conclusion

Braess's paradox is one of those results that feels impossible until you trace it through: add a road, and because everyone independently grabs the new shortcut, the whole network grinds slower. Nobody behaves irrationally; the equilibrium itself is the problem.

It reframes how we think about networks. More capacity is not automatically better, and the gap between "what's best for me" and "what's best for us" — the price of anarchy — is a measurable, bounded, stubborn thing. The next time a new road, link or line fails to deliver, remember: sometimes the smartest upgrade is a closure, and the paradox is just self-interest doing exactly what it always does.

Share this article

Pick a channel — or use your device's native share sheet.

Comments

Loading comments...

https://www.kipuhub.com/en/article/braess-paradox/Content licensed under CC BY-NC 4.0.