From c5074db5bdbfbe08f5384ff5b9ae073c410dd816 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 09:36:56 -0700 Subject: [PATCH 01/15] Add blog post about shortest-path modeling --- content/authors/amcandio.md | 5 + .../checkpoint_trick.png | Bin 0 -> 75006 bytes .../networkx/hacking-shortest-paths/index.md | 165 ++++++++++++++++++ .../hacking-shortest-paths/sentinel_trick.png | Bin 0 -> 48515 bytes 4 files changed, 170 insertions(+) create mode 100644 content/authors/amcandio.md create mode 100644 content/posts/networkx/hacking-shortest-paths/checkpoint_trick.png create mode 100644 content/posts/networkx/hacking-shortest-paths/index.md create mode 100644 content/posts/networkx/hacking-shortest-paths/sentinel_trick.png diff --git a/content/authors/amcandio.md b/content/authors/amcandio.md new file mode 100644 index 00000000..d2227179 --- /dev/null +++ b/content/authors/amcandio.md @@ -0,0 +1,5 @@ +--- +title: Alejandro Candioti +--- + +đź‘‹ Hi! You can find me on [GitHub](https://github.com/amcandio) and [LinkedIn](https://www.linkedin.com/in/amcandio). \ No newline at end of file diff --git a/content/posts/networkx/hacking-shortest-paths/checkpoint_trick.png b/content/posts/networkx/hacking-shortest-paths/checkpoint_trick.png new file mode 100644 index 0000000000000000000000000000000000000000..fc04e93b84f9ec68608f332a185e5218972e3baf GIT binary patch literal 75006 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 RwIKT7b!U&0wgoV-{0rSb{xE z7x|*T_56f#5cp5PHbgj4Ktt5_8gFXC25aPQw!BfidqtC0bmY<052++OZl%``aC
1B*@M+ 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 BEtmiR literal 0 HcmV?d00001 diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md new file mode 100644 index 00000000..4a5eb4ef --- /dev/null +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -0,0 +1,165 @@ +--- +title: "Hacking Shortest Paths: Solve Harder Problems by Tweaking Graphs" +description: "Modeling Constraints in Shortest Path Problems using NetworkX and Graph Transformations" +date: 2025-08-02 +draft: false +tags: ["networkx", "shortest-paths", "dijkstra"] +displayInList: true +author: ["Alejandro Candioti "] +resources: + - name: featuredImage + src: "checkpoint_trick.png" + params: + showOnTop: false +--- + +Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. [NetworkX](https://networkx.org/) provides robust, optimized implementations of [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation? + +Instead of designing a new algorithm from scratch, a powerful approach is to **transform your problem into a standard shortest path query by modifying the input graph**. This lets you **leverage existing, well-tested tools**. + +In this post, I’ll present a few common “tricks” to encode more complex shortest-path-like problems using simple graph modifications. Each trick includes a real-world example and can be implemented with just a few lines of NetworkX code. + +### Trick 1: Multiple Targets with a "Sentinel" Node +_Reach the closest among several goals_ + +**Problem**: Find the shortest path from a source node to the closest of several target nodes: + +$$ +\min_{\substack{p \in \mathcal{P}(s, t) \\ t \in \text{targets}}} \mathrm{length}(p) +$$ + + +**Classic scenario**: You're part of an emergency response team trying to reach the closest hospital. You know the locations of several hospitals across the city, and you want to get to the nearest one as quickly as possible. + +**Solution**: Add a new sentinel (or sink) node and connect it to each target node with a zero-weight edge. Then, compute the shortest path from the source to the sentinel. The path will route through the closest original target. + +#### Example: + +```python +import networkx as nx + +# Create your city map (graph) +# This Erdős-Rényi model generates random graphs for demonstration. +G = nx.erdos_renyi_graph(n=15, p=0.2, seed=111) + +ambulance_location = 0 +hospitals = [1, 11] + +# Add sentinel node +G.add_node('sentinel') +for h in hospitals: + G.add_edge(h, 'sentinel', weight=0) + +# Find shortest path from ambulance to the closest hospital (via sentinel) +path = nx.shortest_path(G, source=ambulance_location, target='sentinel', weight='weight') +print("Route to closest hospital:", path[:-1]) +``` + +**Output:** +``` +Route to closest hospital: [0, 8, 3, 11] +``` + +By adding just a single sentinel node and a few zero-weight edges, you can turn a multi-target search into a single-target shortest path problem. + +![Path to nearest hospital.](sentinel_trick.png) + +While it’s possible to modify Dijkstra’s algorithm to support multiple targets directly—by stopping as soon as one is reached—doing so often requires reimplementing logic already handled efficiently by libraries like NetworkX. In contrast, the sentinel trick keeps your code simple and makes full use of existing, battle-tested tools. + +### Trick 2: Forced Detours — Pass Through a Set of Nodes +_Add Mid-Route Requirements Without Changing the Algorithm_ + +**Problem**: You want the shortest path from a source to a target, but the path must pass through at least one node from a specific set $C$ (checkpoints): + +$$ +\min_{\substack{p \in \mathcal{P}(s, t) \\ p \cap C \ne \emptyset}} \mathrm{length}(p) +$$ + + +**Scenario**: You're heading home but need to stop at any one of several nearby convenience stores to pick up a specific item (like a prescription, snack, or package). You want the shortest overall route home that includes at least one store stop. + +**Solution**: Create **two versions of each original node**: one for the **before checkpoint** state and one for **after checkpoint**. Edges from the original graph are duplicated within each state. Next, add the state transition edges: connect the pre-checkpoint version of each checkpoint node to its post-checkpoint version with a zero-weight edge. + +This effectively models the constraint into the graph’s structure. Solution to the problem is equivalent to finding the shortest path from source ("before checkpoint") to target ("after checkpoint"). + +#### Example: + +```python +import networkx as nx +from itertools import groupby + +# Create your city map (graph) +# This Erdős-Rényi model generates random graphs for demonstration. +G = nx.erdos_renyi_graph(n=15, p=0.2, seed=111) + +checkpoints = [5, 10] +source, target = 0, 14 + +G2 = nx.Graph() + +# For each edge in the original graph G, +# add corresponding edges in the expanded graph G2 for both states: +# - (node, False): before visiting a checkpoint +# - (node, True): after visiting a checkpoint +for u, v in G.edges(): + G2.add_edge((u, False), (v, False)) + G2.add_edge((u, True), (v, True)) + +# Checkpoints allow you to transition from "before checkpoint" to "after checkpoint" +for checkpoint in checkpoints: + G2.add_edge((checkpoint, False), (checkpoint, True)) + +# Start from (source, False), end at (target, True) +path_with_state = nx.shortest_path(G2, source=(source, False), target=(target, True), weight='weight') + +# We remove the state and use `groupby` to drop duplicated consecutive locations +# because the path in the stateful graph may include the same location multiple times +# with different states (e.g., before and after visiting a checkpoint). +# This collapses consecutive duplicates to produce a cleaner path over original nodes. +path = [node for node, _ in groupby(path_with_state, lambda x: x[0])] + +print("Shortest Path through checkpoint:", path) +``` + +**Output:** +``` +Shortest Path through checkpoint: [0, 8, 13, 5, 13, 3, 11, 14] +``` + +The shortest path from node $0$ to node $14$ that passes through at least one checkpoint ($5$ or $10$) is $0, 8, 13, 5, 13, 3, 11, 14$. In the graph below, blue nodes represent the states before visiting a checkpoint, while green nodes represent the states after visiting a checkpoint. Checkpoint nodes are colored red and are the only ones that allow transitions from "before checkpoint" to "after checkpoint" states. + +![Shortest Path through checkpoint.](checkpoint_trick.png) + +The path begins in the "before checkpoint" state, moving from node $0$ to $5$ via $8$ and $13$. Upon reaching checkpoint $5$, the state transitions to "after checkpoint", allowing the rest of the path to continue from $5$ through $13$, $3$, $11$, and finally $14$. + +**Note:** the resulting path is not loop-free: it traverses over node $13$ twice, which is allowed in this state-expanded graph because the node is visited in different contexts—before and after satisfying the checkpoint constraint. + +### Generalization: Modeling Arbitrary State + +The previous approach introduces the idea of stateful graphs, where **each node encodes not just a location but a context—like "before or after checkpoint"**. And once you start thinking in terms of state, a whole new world of graph transformations opens up. + +You can extend this framework even further. The same idea applies for more complex types of states, it's just a matter of encoding the context. Here are a few examples of what you can model: + +- **Multiple types of checkpoints**. e.g. before getting home, you need to stop at a grocery store, a pharmacy and a coffee shop. +- **Weight-changing nodes**. e.g. you can stop by the mechanic, upgrade your car so it becomes 2x faster. +- **A budget of fuel or money**. e.g. each edge consumes a given amount of fuel, you can stop at service stations to recharge. + +All of these can be modeled by attaching a state to each node and adjusting the graph accordingly. Therefore turning the specific shortest path problem into a shortest path over an expanded state-space graph, but **the underlying algorithm (e.g., Dijkstra’s) remains untouched**. + +For example, to model a budget of $5$ coins where each edge has a cost, you can construct a stateful graph in which each node is labeled with its location and remaining budget. So a node $A$ with $5$ coins becomes $(A, 5)$, and an edge of cost $1$ from $A$ to $B$ corresponds to a transition from $(A, 5)$ to $(B, 4)$. Edges are only added if the cost does not exceed the current budget, ensuring that invalid paths are automatically excluded. + +#### Limitations + +One key limitation of this approach is that **modifying the input graph to encode additional constraints can lead to a significant increase in its size**. For example, when enforcing multiple checkpoint or detour requirements by duplicating nodes, adding sentinel structures, or expanding the state space (e.g., tracking visited checkpoints in the node label), the graph can grow **exponentially** in the number of constraints. + +This size explosion impacts **both memory and runtime performance**. Even if the underlying shortest path algorithm remains efficient (e.g., Dijkstra's or A\*), it now operates on a much larger graph, potentially becoming impractical for real-time or large-scale scenarios. + +Careful encoding and pruning strategies may mitigate this to some extent, but in general, there is a trade-off between **expressiveness of the constraint** and **feasibility of the graph transformation**. + +#### Wrapping Up: Transform the Input, Reuse the Algorithm + +**Transforming your input data to encode constraints and problem variations is a powerful and reusable technique that extends far beyond shortest path problems.** By modifying the input structure—whether it’s a graph or another data form—you can solve more complex challenges while continuing to use well-established, efficient algorithms unchanged. + +This approach simplifies development, improves reliability by leveraging battle-tested implementations, and often leads to cleaner, more maintainable code. + +So next time you encounter a “non-standard” problem, ask yourself: **can I modify the input to fit a classic algorithm instead of creating a new one from scratch?** This mindset opens up a broad toolbox of solutions across many algorithmic domains. \ No newline at end of file diff --git a/content/posts/networkx/hacking-shortest-paths/sentinel_trick.png b/content/posts/networkx/hacking-shortest-paths/sentinel_trick.png new file mode 100644 index 0000000000000000000000000000000000000000..6af1bb6db8a2df6f797df5f19b2aa02085a0e6b1 GIT binary patch literal 48515 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 literal 0 HcmV?d00001 From dd3c80e50875f046067df2d54b46e00c8bc02e73 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 09:41:56 -0700 Subject: [PATCH 02/15] Compressing images --- .../checkpoint_trick.png | Bin 75006 -> 25666 bytes .../hacking-shortest-paths/sentinel_trick.png | Bin 48515 -> 15750 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/content/posts/networkx/hacking-shortest-paths/checkpoint_trick.png b/content/posts/networkx/hacking-shortest-paths/checkpoint_trick.png index fc04e93b84f9ec68608f332a185e5218972e3baf..2debe764cf3f0ff9e3831fbe23fe6a7525a2975e 100644 GIT binary patch literal 25666 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 literal 75006 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 RwIKT7b!U&0wgoV-{0rSb{xE z7x|*T_56f#5cp5PHbgj4Ktt5_8gFXC25aPQw!BfidqtC0bmY<052++OZl%``aC
1B*@M+ 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 BEtmiR diff --git a/content/posts/networkx/hacking-shortest-paths/sentinel_trick.png b/content/posts/networkx/hacking-shortest-paths/sentinel_trick.png index 6af1bb6db8a2df6f797df5f19b2aa02085a0e6b1..56cda792f039a85cf55b92fca1ddee04750c3362 100644 GIT binary patch literal 15750 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πs)@CbAzM-K# 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 G0{;g_JH}4{ literal 48515 zcmbq*byQXD*DWEUgdl=Qiy%lzgCHdWN=QjJDj_Z1pnwPnsI;UY(%sz+(%miHDRI|+ z-{1G$Z;U(c{pUJ{Lj=w~dq2;Lx#pbD@spQ*hKogtg@S^DEBRbZ5d{U!69onJ_}W$Y z&X|%G0sO;nE3Rhy($dh@LEqW{<%Pbjm6@fj+1pol?G3DL-db94K4fQm$jyA$*w)s{ zhM$$y{J($Wp{2DEtNLH#$8eSFR?pRKP*Cvnk-w;^!YOZ2P%5`1#hxfR#;i{|xc1v! z)b6NC^!HUU6tEP8=6A&9r{s$@p*pXw#KuhV)je%`sqi~%xjNqJf&Zt351-5)xIC2} zWr>#Me;Q49a&hq~Ff{w;i|;{4dpk2fx{mhFU8f}b_b0oR82l6OdgF^;qb9{E%0NfH z@W$tsCJ=#tL_b}X`2YT57N67TH|@Q9^=am2Q^P1a$W+rEq!=xX>76P~i<;>b zL@C%lkoNLA9$rgBgO_2~clK9}*MyE|&{K+CPIe7+oLBDOpx|E^uunIgt@lY)ViXV% zD79TtOj~>U5r>+Nt{LO2a`vOc_6xqpqxPZk9v4w{UYNH?N&Qn&=(9A6UX2yLJv&{? zc^L4v?c4pzznc}Z<_%NvVbL{Pl$4Z(ro%xklrEn`LkTO!JvNGl)yk}sCy$hyM{_3q ziJ0zi8sgN|)%~&M|ITCHUih|ur1V`<|CsHsV4>62U&76XzhmC^ce|M%)9gt&SH(r> zI7@!p;g?!lMe%mCUmvMsDVY%M2xoEn^TYQVHuikI5BB<4QNYoZOR#!@Az#);M+7UU z<&?m^d-wi~6`A^(!rk*37L2|%R~6USr_QOlDDS`Z`WY#gF@69s>%*N9FFc{=IXYF2 z$Fsg!!A>qN5l$YCj*o_ObX&T*y3*c_&2{lkFRY}*8*b0kb;b#j$;rvd#tU_w9;}@l zj$4ulIu}aMY2?4TzO%Cjz2+cc-D88#^D(YwU+I@MbBoY=$%0^7Cd%vz;iEGEl$f<4Z>a&y_TwaV&|CF3!> zGhSkuqFdvB!+dyD==2ZG2QM$C7ZVp}%fg(l$5v~@l9G~@+x6H2XWI=pO-zJgJ7Z?;r@I9vPV zY_B^?(1qtkG>@I#Bc8W|=|r&Kj5{MV!2+TgDp{q=aW3su-Nsz6c%pk(Y#m{x9(PKS z1WH^S&v7}y(9ujZ{E4n z8tX9C25%u1%0NjVXup1^WWpLdE-sGCbm%h%_HDHe$h@dHK^HWu%kv{mUs``(UW+(% zH38xcWakUIg_7*nhDs|c`U{NY4mT$?8Gp~W1asQ0DxsmH?`&`1<>3jBcRx+T%ITq6 z>WuPgdoy=1teaD4_O4!$+(=C9ip^5zkKEi`F+Onx$Hg#Jovv4fwcp2VfV^DzBel?D+>z?JvAPe961pOI^5A+ zm8Yv2T$WShczAdpamkuj`ctICG>grm4g@L4$vXv)CSIDPdcY$%y12kSlQaiW1Ox}; zIZV6pLRHW|SRI6S%I=)qudf%?aorJzBH&d~@fhxVCdw#|;Xp{O#DW6-Do*Y6G?k^L z2NIh*RS0a;d8&{K(hJS*(VVXwbcrZ6_UGmAP+m^ zh2v9GA56LKbrH1b=DBQDMd(yHE2{;wYz1Vf=2*kF_E$RDOiWI`?fZGXWYV6jt*z~T zdzN~^$M@)%bBl{U@R;+>flLQBI_latZ{CD`$u;P>y|$(ttCLUjEC{K@8bu~PzP_0H z`ua$ozIpQ|^nt2C_ufd}YngbVSWi!st2lR1)ZCkq+6slul_4s)x;!2Cl4@^|f&qLDVu<-DVmVd`KwzR172X73j>KbfLl*vT%1Y%OT zekm;ELaO#vT+&7;z|yo|Aw^$9WXr?}L_sL*K>6QWFX-+|dr9B?ndGVO4GPDT#RzF! zX(b-of;Vjh);2aLd-0c_rIKIOeZW9oRbbSu;evaMfZ)$`jd0g@?)kFixQ337fUWAk zL4LRB^IcD@>0W$SN*-q9;P?iGJs4sv29iFzUZ)nhBk_RS>=62KuDg=noGhBfZ(4#V zpqfTAsb)WVLpd0s>n{1^2`ZlO8QbRO=9Q~g!=tn)`K-N>{aIRSZom_kflPutpIwgk zSb|kzDcFQSVS~7WEL4ZUgO-A_K3d?bX;J1wtm~Rrk9XSBBTve0(g;t`nWSR?QY-4CX%AsRm%}#~XD2^@{@k8&*~)`* zqqy}pskb#%A?XgA9*Sl42_59Gw~x=)*x0V70Ai=*SO-txkNsVSoKVb|-o1N=RAJjc zJ@1pA1@HcTyk)h!Ah{M(?(Kc0IhaZgHroj{>79ea^8QM{*>p8ULc1`N0iVqh4$6}! zPf#kMl}$LWWlgvpP2Rz|T77<~X;E`-uac$FRQhfnMXl2DUD{i8UOWm}2$I&;=S$u3 z-LOo@a{;W^aB&v{d8Z!mhQlgVPYiEDa^R3~c=xBs?Tx$+zDYvTmT%Az$!9~SuC6X{ zaXh~`L`F>f%+QbyDL|xw&6~s5%sg~uqBwluW&t*c!=k69rDbZC1nn(%Yle)%<8r=k z#(~1xL}pp}UMFXHK3LeW))SRnz_CXoJHLF&?MNG5=u=WsauA#a*{Zs7@_sQm2;vUO z!&|p+ONff1#k(DnT)%!D8h3`$oGY}9{$g`Y9hVJmLUB~R!}U>SwOr5Zx9HeR1|Hm? z66%DNe*k~p<*>x-Qd3jAp6#>9Y`Of9n7DA8SQ)aWwDEv&Jflwjk40?#aM3Mp* zX<%Q8rS2kBCWWDF?TkA(9|;z}g@h0VN+cn5@IIxm^L}dLpoz4AkmI%!^>Z4RO1y6IcN`b-A@eCN)0j` zqv!5kx3DG^8IM^cl8MO)3ALw@qh>0w`YDCx<3pz-zg|QWii{S%ed&|a3!$Ed(mqw? z5(WYMKqE`#WPJKUW$py9P4DT!kEgzbB2L?Nn9>7#125$mJoDepONc8F-sk34hKAb? zAwXC#YR1BA^qU+*9_~utZC&^BGyi_j33_4=? z@f1Tl)wCCqPkp7jj z63+fkUp_3^oS4u8^rVYmP$>cTgH`3G?(Xi>QWiUy7i`x@6rkAUzUW?)FsSmdxR_${ zPlVRQi!*lesY zO{{8aYU=*dcYxQ<2dhn^1x6V}TNDlxPeepK57y?UzRWpua&nHAzN3LXrs3rsCN+|f zxC-5P4&bOk_Ck>|g7TmQoj_kHwO*8pGH^dxBu2RaNE+&R)f?G&D4+%8LeHyp}f{d4QW3g;QR={3Vljqb`)5g(Wacvt+jx z9j^z<5W#ResR;lKBf!-#?c@S5Aeerfi-XSS|Eiy@yV7Y-4N&!Dx!voHu_A%XvpodS zZBAB%L`JHmpF!sfmQ5*eciVF@fPMQ3@F1e*EV)sj<=uSqO(G(LbD_yUz0at!xPHHa zX(0*XKulab>^P1Hui^G(C*cv@`SE=44c%idfX||$qQsh#aSYik zp`$|yz>48$YL3Uv)ir&fIBP2aYUYprm61v(PH5sx1=+ATU&F$hv>hgu=L8dajsHwm zlpF}^Noxn$&mUDMBzW%c+n(;Ppvx~ET`q0y0Agb!4Ln<9^RL90No!gTxMbPgP z=vNEARPMEUY*r8`Dw%3^kGCotU_1G2|KRub_QvqrVTmgkj~AOq*-ca$CjkmcCinn| zC5W6)F-y%-mf!!D{~TTybcv(~ST@VQ5d>l|^!599lXDC;qDz=D)GHm?VRGW%syfn1 zTZ0bvG)o2ICz>GG*T-jeYpWZ|NamuaV$R#=&!4A>t-za;^I89#xYBhq;O;#d8YY&P zF#@CI8(rSlZy8UNvcsaXI3(u@ZkDe-ME+V^TaQ$^@M04`d;-|0K`r#smaCii@$pHDtWr#@n)$PYxVI51fT#`3DR%) z$nLcJ=9g@&zlL^IP1+@3pq^~)$Aua!P;7odN58+SRb)bhpcTMOjO?s=nQyA^5mgOU zS6AD&xNT1GjX^_NJ#qNcQ|DYI(6q6*v@|xk8EB_^SZxK38=CA4q{2^#HR$2KJM%3z z({4vMZ{NPEHif?3GSRX7swny4vyRTrH&c~PNP|lj5(c~>9aeL)_v6^E{KV!V8(Yu) zc-{H~nAaO@`6*x*e;ReiA;a_Et(tg9ryc0%FlH&FDM6O~>U84fy|iYv+zj0PJMlF= zJ#%V~GBhR5*&hmDnEK%o9b3dayyIB7HhA6WS61D=R0+r-2yL{4(vC^ zlq&+sT&|ECw1+YwV zIUnR_qg9U5?`z#6Ss>P#}b$q&RF? zZM~AFwi8ZoVPSFqu+F;B<6F(}s%xR370=bc^Yvqf@%kwRdq(PID4&93nFjqiUIXKGX<>kSG zr%q6x>_R}(%f>tyd}=e-czx}lJ@iNjCVp;TJSxMHT>Y@>;XxDbhL5p0e(I=%}|X7Shcg~y8cL($pVn!39jQ7~ncXxK_# z%Wnup!QdiHM<6)M@y?swg*Ia@QlKAH(<>7nBp2Vv72gq3gmtu^){Fyi{t<_yJ|*5= z!%*}~c=*y6dyNu{E|@|a;Ct;5QPNsukL{U7(!$D`1fMizFu@81MMslSxo$u48!pTw zs)9Fr4Yep!yP|lYC^M7!v&3t=xS%em=64{{E{{AeTTb?trL~yW+DKEDh@T9|v4)!t}ZLEzdhrRbC@$@J-O^2BGodp33A$bRl zJc#14TDdI)48Ic|m*<{~4S&K^b@Ty>)6&y(zMB(sb#;9%CG`phJ!H5MI2d?oUj)6` z^z8f`R!eSsXQvLPNICVIQKNXIDbCb+0dm0$xXtovuF(&nN<8mJIj^RrL<)Nd z0sCTv%$EX=Utr_ZN+cN$A@%qA<%HSY&m4h1lnka6Z0+t|1{mrJGY33DM0tz)l*gqT z%;+LVo0Cq!_4$4NOv}d?1#uSPq!gu*wFDRtc{616hKAlWR`6<#hYbiwz$LvYa#Rw* zlrP|ZTHD)SEw+aNNDYK>c}!4d3C2?xh3Wv1bi-|ztz}naj=KS%*@l5)@|Uyo{+~Js znv)jciznT2f;)$YhV|apCxE1IJ(_et&;*j%7w3Opb3{FIKYIjygaX>*eF#OE6r!M7 zaac?|s&8lj@V=N7ER+cCd+2;9W~Tu8{*?P)bGWlE=t9WPp_t>Dj}ZDD!|K;yaDDztI9bnj7c@$sGAa|6@{g$;%ZjeIDs~Zw@4myQotIl?}j#zA6`o&B{GlNX|zd7Xm=b{DR@Z6*hurQ2ET+4Pv!&x19+P z?MI;Ste1&Z8X?GGO3Bl!L-Y6d2jELmbAA|Y=kZ*V%VHw3g~}rap$_2&!+=M!0pzo` zJRDf%RP64~Z8Grb&mUvRG^q;v4Ve2Ov3?Cv7BN`NeF$qwBn1qegpfE=N=l(~8yi`G zm6M@~v_qQ>g+Gdm5v;n|ICt1Yc6N6ak$DHmrNtbN^9*aK*rrj@CE^VBdqWTXUyU~3 z=jYexH7UAZ%<#aHEHb}XGU2m1`tKONqzRxEq}0?RfxY+zM57D|kaD{aBbpsb2Jnk< zx8zq(ZW9qP>@9V@gkD6%%gdV#+)6u87}91hk{CAc!`Ip*r)wGaFgfm>oi zh91aOB4}&LfPdO2%51WREhn!2iqy$by^2Sf38Wtrtd=5S)1kQ@EO;o;CRzwTO+ZPR z4eTcq6e+0^i^))r%fHk2i(MG9ZASAAcmyMor6U-j61;?76joa+vbb5XRcsNWXaqP_gBYMaK2$k~)S% z*cm1u`VdN&C`%=S>usM{*?iFB(5`4+&5qC`KKaqVpt@+Etm$5+!yLh&qoV^XdVF7n zgXLnyRy7k*3uH+sKrse)cXxkZU*A5cjRwG_wgYv&p1!s^nDNi(4iy|D*GU>8<$ams zPU3;lNO!kf8MOH@kS!ukotU>=GGXtzNW&0L15!>3%6%x10*uI5E-(KD>P2wq15=1~ zsMw*Dg3b^4V`YoI(_Sn2&wWs@K?EwRGU$cS@)5F`QIO*K04oQkJbd36C0n;fXEkrm z$$OCRm+Zic|N1s0N;}9XB+zYP{Ap}z+5zI5&3d8Lx_jgHK?JQQTvZHVS&RTcW8Y@J zOHbcY&b9yz;+>swJ;s|G35YNzhE8LH;`5JIc1QC6?+d=`Vu;Xo1ICfEk6Ji%==^~< zsABOL!`cV+{i2_vJwPNmrh?JWb$YpLao&Yj!YMV|<2qa(IUd~Q`$)dVtsBcaSzq3p z@s@S-Q?*wRH3bEQwb$&@(npD;ch9x031g7kL}9ywLwo$ zy{TN0M4VX3{a8ed1B~2sO=2Yp76RnwY+lhg_O{2kA8KlZVPgh2mBX$e%ZmTNzaC%) z10!Q1WMk^!BI~Wz(zrU|p>wY-f|{pUimz47r0<}bo;>ECs2iu5qRUlCpsCL}A{2j; zGaT~$yFXkHk~~et?HdXfT<$|+;ync?Cmj?OneQc`K%`J0mtnsU6az{Ar~X= zlej0DH4cKYqz>uUg19eWfCrKeCWmZ|hPr$#HRPruWy0Ucru2ttEM%MM?Uf_5UQ*rNP-jE$G3^w0S+|po7_Wh>4Nz`ahw-Sa`Z%Qtfxy zJlm$r9`fpyB&mw8v~Yjb zZO)JW4#%5M2W!+%KW+od3L2msKIkdH)}X*Ntao<2b9{O_H$UHia0oU_pAV{$Srzox z84xmHs)dp0Yiy3c&A)N|$$F!@lq_jfjmA8xlg?gu%zRi7vJ%R30kAPx*x1tAywP1q zb$nxJ2sFxV!165smXLC_9%R{@C=Ttc*mC+eeY|Tu)Mf+<1Ep>@QTi1+{T`4ndR!Vh zImqY-fc`x|{;Lph)QBrg}K2*?s*+e-!E9<% zEMqX=YF3oe`42VV+C3?%|jIEDwm^&@3Q!xmGb%T|C8p4GW>z2DrNkMlW=3ZdwVNAKhTLEYRy0)9x??? zOvA(!06#$iz=Y6net+>O_?6z00VQY%(P}^!fG`v=&ktn21#-sw=TF*j7R}}l7}%v7#p8E`TpuB5 z9lG}t#3`brAnFey`;(Dj*TPbbg8T}t|MHRDDk1XJpk;>@pF_ZZ4GC#LBv$Bj$j?Ak zUuyKbg@TNXP#5%TnX%Ta_+B>h5$ti&r&Tlegg~Z6)*?DgR=wCkHB#dM=WA*9nW~-?KTnXZZAgY zA~*m*P$w+DsW@JORGCwcCQ?OlWkHkzX&sdOx!GBLH`m`E`OaKgYE0iS-O1AE;5?6; z9n{a^ugWSMJu?zlW+s#NJ3bvsA)V}_ZJEI(j zw4GB|(I1L@CFNS`dm7;GVh8z^^8LHLT()x3+TgZ=jHnGp{?jSq|OT)x$ibxhyH^SgW> z7exu}vWnJ&TLug}tGV+eW#lq#&6y(t-D6UyomlXnB}a*D&iY%T1DvsngvIAnS5`LU z&MbZ@GaodbQ`t({$+*_ra~#r$QG|siFRMAPp!d%^Y|S*0yzHnnx+oFu&o&KK45pIq zZg`qRT|eDF`wokG)$cRT9d@*?1GK-FbIiUfsQVafu8(NxL=*PWh6thKrh4t-O58{> zR8=!vukuKIk&=C%5*s`CLCM*V0W(nnI}UnSvtsoEX32!KeY64-_9*6q-`_EGJvK(l z#mg2#bUyL_(Ual{W105f?2WEY>XsGNh&K`C5;SB*Xog-zZ_jA~Q~Wi0C{tczI7hleeIE*L2!YxwUBr3pbpE z_;pqp5f}wiWaU~c9-aE&*PFBv^bE;+d{r@h+bsb&ZO8)%K_JLS)bifuvaD*@yNM%QU080H1IGd1uZdwK%3Js}+){E^#Yr}{t4#STTkOu41 zHSxfz-vF^Frk$4l{WS&OH$;SaJ6g_Rn{I!pg7aM_NyEwcy(E&-a@Tvd_09wrQXf&1 ze&djflqcLi@{Ni4j@>v+oS!d}oWEB5AFt1surOtdD3Aszofd9Vx~#L;_Prd=(&Pp9 zK%d116!mWr5iRM;8JWS8Hr;}m8b$3IN87UvB;bT9FuHtazXQOf33%;>#f}Kn4)R(e zCKWc&(#YbzvjRbg3M60dTG`}tS+tvps2r;ETSYT;FW7IBJgC$;X`>o^`|O%R@WRrN z*)C@I;jYxyJCmHsN&&we_27`A(bR2|-qAM}#+t_QuF?hFHy-wPs=d z`ug}j+2qx!4`Uy*$j#vCdr?YF#52*yCac{ZBT%;Qr=;iox6-n*+56SN0%~Xn?DNna({KMgrA84cEAI;*>?czf ze`)>*2pCVZ+^(tBdl<*pR=!m&y4?H8CC;_FkEe2i%Q&`bIs!k@VtXgAvn^wV&(q#w zS}`1yf?Y6sAml#)1JI(H%o@;2z}Uxb+;bNpyO4MXR{?wnH=RsELI*Ty#8d%OLlkgS zCPm*tdb~wN)eZO!O>K$T0x|`-wfW7>ATaO937>PlOp(10))qi1`3_q;zht5mH~TU8Un3B`QFA7?b@R3Q_BrYI5(`cJ$@J+pV$o~0 z`S|m{_^f3ubByFFh&@9WH%g}I?%wqTx{w|29@IW@U>cdKay)?M+HIppxO`h+IdwhG z!;rPR|Iz*#xF{gRkKvVnMhocOPWNX4N5KFxp|O-zGWBY*+^*2L_XDT{KYEQ@TU%$U z|86G1@*_hCNbqcyQJW0+UVDiSl z-`FT}d2twvF>!7C;=HD~&log_=-~G@zd+XUBPr( zDYU(QFs~<7+_1V%y6PJtD@5RpZxAU+)*Q@w>1>lg)kA8G;W%aW0xt&RH_BtrfW-lQ z4)w7#3|N}Ss=hO}yKiA5iB`5Gf3!8`?XOx!l2WWc^{z2m#PGq#?Js?2HLSfo=@2fK zrKUQgk|3y8&k?b(6eKElm-G+H#MKxS_bWH14rdmVd#)A#~rp-=qGjIF*F zf#>oWxh}E^Sn?SOF0X|XKcv?ze!x$R`#Xbv4J)74bgEX@Gv)nU);3pYymG2X&F`(n z_>*&YR^|f?4E0rFZp1FUTKe2WPD0EZf9~z*qoRDV++*iYDM2@HQupoAd*{B8$IsNo z+Yr!0?O8r**_h<5E_J1vnHJH+ldgLIKFD8bMC2nRIA*1-#?``W_fm2{0WebC!|s@1 z9{X=pmp`U@O}}Ods}hA!-(${!6E{4rk@)@XL0p*;#JRkBQ`dpFoa-ji#D3qQX*LqDF4M={*aIm&^pQaZCmy2!o`t0<;zlGg7`{w zCRmz33w?s#vZT858$5B8Zu<%v#b$osK7 zFY&8J08bpq#)L#fW&AkQV%lLucq>8DKiiEy6h3N|Lh<-3iyrlVWe^5MQ~E*KT^itt z5qE|bzKo!J1(r5x5#^`n;*41a4@Pc)riJuX-YG{f#DBKEZH1UGV2CP%X*SD%5+o~_ z^ey!Q#nA{o0M zl%xI$sSx1*6bzcR9<-;8@&s7dMq*kB@l10Vv=c&yYJuW9Qe;XDDxyAkFI{(WZ zLn0!c$;-?8xd0XWJBrgNQ}-Ec{`}svXrKV8xw!{7w*>_S-$Lb&I)GnCY`7QuDZ)E2 z{;GG}32Y|SeSYtsrGhchJC!4(j(g+#hUGAr{QslgBP0%#)Ybsj>Q>#0UE=RtZ|i{$ zk)E92+Oj|WDzpnUGI=~nB%D;Ncereksj0Xk<8G;xFh&UDm9Wc}RefpGY?ZzK_ zBP7lF?_IzpkwA-EAFiu!LVY$FRM!56GK9L5w!_RxVgqjz&Do1y~Q+ae7ax?BE zbeuuuci8+4aQpA!#%owmt`Y;|lnCe=rLHF&aF2!nbQ+tR#|C7<*$5T~ zIzB!U7zWVLGwjVK0nQ`tosVFT2j}Lm+}tk!-QR7DaU*_IXTHX?Pw;DIN&j}Myl^tg!c==&fU3;rZrOL{<*a zD-R3?n_&0>^=V<%${W8(>3@ZSL+&a~BYOmcs7s7Ku=eomQbx-aKlP&Bv8t zv7ueO2BZF-cD)0N{e2JKaNX~@p*Jp9YI{SIZUid~urvvJa^OJ%-M`syYDFbN<1LpH zRZRLw62-OUCb#LB~DfqCW&sy!7t zeYylet;W5l@pYe?Xj*v}R3D!(87j&wknNIGJ3fjU=47gQG9cZwcY&}@O6o16p68m0 zBP~~Y3t}feKA^j<$HH#fmD%oc@wt|N=EV%rjLnS9Nz-g_T&;Rdr?pyUqQzHAkzvm7 zT`>53b($1Wd2+Lvah-+ETbi2;bJpQ~yQIrt8dvy_X~TTaykD)1Ga7maZG*12E?+ES zsG_xa3W?mcx^_$&iRvBU5iQA{N9%sw!J%4H1(R2V1G9(Q8Y|#=d!G$=&6l&pK93Qn zvbWdvtm*rvZ|ORy$Fi6NTMvJ1c1Ka=^`vgFHq1#%m91j541RUg87Qn@;(d1}6Y^)G+!jAE)%UH5##2WN;r#fC>(*Kil} zi|(5_v+%fswv|Th*1OYpr>SN&n&=ho;4H?}&r)7#81fqGcqjOtF)+DWf2~g2J}cKp zCkIn1{?RMe6;#{2;{nHF-4Pw9y4Rjqf8I5`wh(d9L;n(ZpM)70sGAPdLEZyb_&>H^ z8UHA@gfbKZP{sFULDuq!>Y;=4&H-1|d%L!`0QYG6ru(C)u@oL=sRY3JqPK6~mX?+M zP>JYepY6Rpn1K6duK5G?EoE+Jw6JNH3mkNnB*#LZ4g8(-hQg#Y#`+o*0DH6RV}rjVf7=Ob*8 zbazHy6;{FnD1iu6K@^(sAPmuiqJ~|g~E4IF`Bn8Aiza>?1Zy*T+#L(f$aWT&01{Fn@S?PQSI&RbknaXzns~?({Os z;6}3Ht+})YX?m*O#HF-BlX1DoPm#ta5n-OI69mtvaid(M<0#gb0vL1YuN-~cUP(QF zoMd5^|%$>-Kj!^7r+^EWBnd;w?IWav3yp`FH=GIO=Q4NZf>>_e0~^1#aS9 zU#|4{;Lwqkj|7~c7%cib@oG6pR3z$v*9EfZI+8_$;}?5{#&sQqYklYiZDO)2C(#A} zA-2An-K1Hi48xlE8S?pqq`kV~$>HMqUbS+J!|CnFn;nKdU8%MhR_y;W z?P0`(2mZ94zu$4!9*F33m2bK1!B#QR)WW}4~v_r-9 zU3s+c$vme$-D>aM#lEBe+9mbRXkiL7%3Dvc_Zs$A-~=p?5&nDp;SCyJi9vK^vh4l%5fs$;B^>+5XBboE745Ph~3!LRZSW;i%r z71u=xb;^od{fD9?S&-|{xYx@0>EI~4MS9ssVlkDP3YW2R`#`O`c<=p<^p^wT8dr%hEve>lf?y zCPvfMd&AkG!+LmhRioXdd{XjOyck>&Wr1WSkNd8sKevp9MYtG5T1z{4t2F9`;2gpx zZSFlrB3o0l`5hs^HW;wx_Y4c7;CxTdy;6(}Dz&cFm5i0~N>&t&qT9-RDM9J->bxNq zKR2X54V!$ZsuoRp$hYo7OLTkPYSRY4C}bane+t-4^=enXvZ$59oguY+9?X@0h=5aDYr|}e?2Eu54swx@~Uthj~G8@2wLOYn>3L_70ImQg9VaZwn&^m zT>PN5-T!^KaR;mawVtHwiMe3e4fog^fmN})N@6TZF(~a)GpjJsfkzn^PLcJ%Ar*jU zZ>nw+EqGN(G|Uc|5n@!__D#*Ty=#wq5V8R31`TXEMyDYs49m@6iUL+nRZS&Xadv+5 zrG6Cg)w*gXD~_b~wW#6Qoucgn+MZTg&#O(!UY%m3c`8%sPZ{CCE(Dt$6075yh>?&@a=n#cC*Gsipgg%*?F;UE&&k=j|dlKVLl z#PNZYqBU44`>w0DWZ0`?L0Vrq;kSPjI#@0Gi4~l*v$;->^C*INQqRMhMn(oj95 zpiZ}Sbs2yb4#z~k!b!VFSrobs$5uGTOvkd9_P1|SywkXr82(R3%O!v#oM6<$ixKvS zLoDq;fu@|jqw~hkh87=SHkywCI)w9q^#$W+3;k`|8vl;Ua$JJG7)pOD>J`+?5%9&S zms#Hj^&dIW1wMfaep+Zeq|kVf{nDy-jRJ$6ddad?v2R7g%=T^$nauVG>le$^uU6jJ z&(YM1KYT!g!&4onU?xAcA49h^z zFIb0>g3%bPX4z?<#9r9g*o08eL?hNgpz1@ueX9q5zzR6}P1F+*Ptrn2_Q$5CCNSqn z#0$BZRBqt2Iyw+8#yl|Fal3c+MeQ}UA1SS%r-wYD4`kjpoV1!>TkC)WTE?UK$r%j< z5J^zNa3O~Xm%HPQKouskpk0$e*QnQJ9DTQR^1|v+qpOj|B#74YHn=%~#V@d&7Am(} zYlfp#5E|BYYEZe7AjPQR$KWIH`SpS<;)v_43ePr2Z#J*`8l@(>&o`z4CV*GCLa3FF zJNKqNE(L+|`Aj7oH!`9|vP&e&^?bKY_37N)9F(N}HPtrj3DTKg?~k5o7Jp)p6D6&z zu3CCU@O$`6$@~A58|2K$moNChKZ}CVN1GxXU$pcytta;kkVarw?XU6hfHV186gN;< zTxSFIi6TyFp5|_v1$xt%h&-i016pShhPydf%l*yCXxQm~IIW`Ud*2)XA#f=nM1+L+ zaI){s8(KKNZEg4H{%3RSBir=S&X;R5QWmftF&Wf!o-i;n>sH6C4d>XvF(YuP5-X+q zhd;SaE!J=sF0wI_hc2%0XS${)<0(V`#1niXrHg}1v<{~_37f7a+L$D2b98X6ehLV9 z4TJ@9oEm%>_@tz(tGV9zi9>+a{2)47;GFTwa1K>m9FbY=vM8m-u@y5{`b=SlV8pDK zAUAP{RnW&i^hj|1wudqCy_>rNM~L+rKizz&X~zmfXBfamI72#8Y)%Gk>DYf z=IHuUUm)IVFzt0R{fxZ}xV)8X>E+`7ISBKHgB=Ec7>czizTt}wNPR=$Z-X0QCk;gG z9)mwd-e_=5jAfs#8Ddag5^>}VYsu8-fwj%BfTW=8B5;|Qh$!!EKOK+d6qJIjNZ@{+ zJR#~dM?UdEmOzBQ6e0i|{0VaLLUx8;>S0(qWLPZc?W`f+@Z>J8`YYPJyWY}k!ZLq$ zkVVW!L*oU9wcdl-!lG>PHguO)ZrR{NYKIK=B7*m^TT}VYZ7KofETbVWAo%f_5l*S{ zcJ@f5*(jyNfMAoPf}6&*Z{Wm*#Q~!!By#eQTnXID7<6LHaX2)Cfq{WT%GEmfLrHSE zdE4whcKC8jU2o`jzh{pSyS%)xGYXs!I{}el1jHT%1qGRyM>mCQu*!45tQQLVjILc~ z?E_L^FPIs@=B-5`8+M*XHbJ0pad40G%noe{z*p(~jWkP|m^ z5WDr@7f*Yc0^;fHKk*{_?MlxR#3Wm5LYu8R*`sCknwsq~yx!iE>rm`yWZ*(DtO>)>1dREq8I5FD; zoU8LmOBhrWP~?=~@I;TofwTAT--GnjG&uWcvUP~9;9JVczH@2hOU|87>1kcdsL?WX z$OmgcgT0Q8{TdzwcChT9^^AbBn26vl$j&d+Pf0ty_eat1^8Y+r!C%q6IN%aIo9AWgPm5^mXc@ExCtKw)KEZl@H1 z1ps>j9GxPA^?D6fL*TY6Xm7(+{=iifL`BgU7#MIU1xCt$SUeqOAY8&pE$#e3VfDuZ zsypK{9835{SqoZ;`|&I$a_9mP&mUPOoRMFr_QrxPE5)%6L>u^`o}j>u$u0lTU#=4S!Sa^LLpp`x@2jYlpfMm}&drV3{lQKi zf3-lr910J{uAkO>NF*>2ii4RFKGML(?op8j99|RKf(B8DA!|4wBamqJTL%Mb59SSW zy}@+lRb7a?f*gS z-Fum~_TLD2VYQ6*p;l=vv~M`n{qR%qW^d|jRWIAAX{n05eN+g^_U>&*bG5E!I%b&v zS+Qy6;V>j&6%}zp=Low3;g%1PuEA?!>{BB@LfF~&yjC_UTKv$ z7q&hai|Gi`LO84L?}N2rL}>#DY5@q>U{Dztzrw~K-3_Fg?|>b%VDJKS)zejz2NOlx zvv;=B^_FA2RA;kd0eql@Nq9APl+-uL5dl5`?|Yv6x$}2k%in-7Nzckg;9|sSgvl4? z-O-k8`49PUZAiM;y_Vzj_S(1FtBwj-{$4lHaz?Arz@WJ&y4^SUSHZ?t!-zc%8 zeEjiIXjVWx%G!ZEGR*xAJAJwg^%MDY38*w5@u+0=^b&5-fNx>e>>&Fw6DY?@RX--y zHY%F>sx{60S_qD|er=!HT@8%a+H}MElFs|(rJ9mHtKWl-MQW=Vte7&D!-M^`?W3Yx zN5!TTziZ>lb~`WsHQ|+epWXz)T|wa{VxxxoU1&KS2iQQ9_#1dAQ!7>{$!mf8JzT;c zSIH7fR%Ew2`-#<&=ANTF($e3>LDf_BLHpU^kCJ%p|X7UHb6Xrg2=eH8_L68$L zugIszAl0EQ9`gOx!Dj!NiTe-jn*Gn>;_GUAx8NBF#wx{q48o?@wiL6jk^TCEf4nRb zSy6VzVY%r&)%C-7om$HPLiI3SdbZ`#y)lgjlh17*-)U6+?4Zcu4*y9Ifx)ob5x1s? z#_!~x{R_(r_;u2Di!8k7zZNdW-?=}=N>r5mKX1f&F|kq{6NX^@hXmXHz= z>F$(9O1jUy-S78a-#ORW|J>XCJkNcvwdR_0%rVB?B_*KvMLK~;NO0rVYG#o8!NGmg zIG>}|mmhS-%l1cI2+vjXkXTZn97S*MO$*>xVVJ`Bo*Y*=%Q~+n=mFcLR8>@gBai!&7$J ziGhfClBv(&Yb8`0c3^WfRC+S?w=?+jj3(>haS z0}jp@`D&7=#|Ql7Giu*%Zw$@i|9+Lv+7LlWRrj}+jjHoA^jj(VdsKq`OP)khMvHDU z^BZHqphE(Ohl0!f{e7vzA`O9x0bvSkA@=42Y*Paco+jgl<{md~b;7ryW3@-C()hTW zkD}5EP-reuF80nER{DKP_G{Q)L1}rC13&p6sVQ6m`%x)3H-D)!CHfDA@AXkRUA8Z+ z)LxKtedz3z=i=hxcmGQd3_}#?Dj*&R^Z}4`fl62PSYSwl;z1oZ)(iOft)kWMBTx8V3{7Xl|LZIIIm*x5D_Iih4YP<=L0Q#UypI+MbCEAIQBj;N}- zyrm;$2&f3VT`D0{d0v;HipKml6`uVf*9|ib;LG%s8mAsKc3z*=9@ilqFOrhNwnk`7 z0Gog3@Gu85lHoR742h6WoZQ?oP-p=ng%VB?o1(L_wG}CCJahJ=W+Cre$>|*`*}JD6 zDX37-cjUZI9uQuCklFVb#51J*TuogwM*9?4*vwq-MHTy|rPSfpvnuw8M?rgG{ih9> z##CcQ>Cd#*3fYqtW&R@%3`2aT<>RZ8eD)zJsS})ze8r;MVdGgpBO@a6&&kW{S3wHPFv67zr0XUVfQ%E)cAj>vUOS zu?!3hfWjIQ7FI55$4OT0y7BSB-A+imLG4F${tY)gC`cynQ!n_wDW;5!_v0_&m+kGv zF7KlE77O5{=j~|3G}TLN=gEQH6u#E_0|jq`c6Q8}{cA5upZ18tex-Ip2Xw z8tkn=-f|tbd4ZfF#}|Ty_~HwEZ#%q%yg0id@5JG#1gERM_YZ|pLYq_VL$YQ*=vek; zi`)tq7I5Q=QecgnU)|^!lu2bKjEUDde`yQZpk^*yw2FTOQldJ(?A2L~+yv^D>bolR zJD)|Ro&xo?j4`0~va7q2z7`%;OswI?6C*>z+tbq(bQiybt5Cm%07a}e?T-Gf45l_^ z&81%&0NVo?FL~lQF08v{B_JTc;Bf%?f1wH*>>cnQ`f`Ddg~h_%B$gDd_k3r7PQo+F z_4s+hhIid7KGgJZt+OT8?_1N4#UvJE*b`WYE2tOr`BdjP&ex_=P#>?g8*=CdR2KNK8vIggPUi062ynp2RT@SnbJMgfQJ^BF3 z1_U&0H7);Exif~1hbNsgFs5n`&D7zr=Wt3wUD|s&VJ& zwrWY=-7xoAo%but08V~B>%V9`IL zH%G;$l|1ik~V14<4gzkdB1D~pAWhGw%F?&QxPV{{-* zHq8?6xbat+sCJnD{SE3r3aalSf1}lfG#N5Stz>0oMa7#ZyqewI)Xy-7uO7UM{SuyV zm?6i=bylhTU;4FnMk5aAR@O=xb2fZ!9qr8;BAs6%F*7v4n7@wmUmh>f*#9>APwl4)?K<>vsKNuYWT+PM}A=_bin={1HLk%|{VF96;WR zX|O{j4?0~0`QQ6W4S_SI?R5#QCYcN zzz}>ZIiiTNv$7mPb7O6vURC9mXJi6#Au+N+=tH!g-9_nQ+v38q$?mTaR?D$rC+W$b zLYt57v)WuZl0!n2bx?&aC;Ebup?31vCN#qV*e})@@xVKQfATgopn$uMhsOxpSN#^? zWD9=3Oz1^LXkxW(HEw8*kcc4x3h-sASWw>v1Mdj&-CH+?cvnzRa6=>jV6%tCRa9L$ z@I=?IGk+0LFf=sGYsH7H@@cJOjF6&tc^Pe%hDvwd@v>KW(CUG9Rp~Md%YVuQ!f%^) z!y6i*G4-XD29^_*_tMkTE1X(iNU^ulEO=;R+&i5V_jvR)3-ZTS2vdxoQjk0R`qTTz z?@948)$AQuTMj@+1k+G?lL6Ipw(L!b- z0g*l^On95WtL!h@Mm;b6Wu&m#hyoOXA{_7Sq`ACJnuph6Yz#``O6$|u@fE;<;6p!x zVroECcr?3JY5dK4l2CO}UyNO=N;Gtkat}c%>wsA{CaL?(TkNk0LZXN+STQ zDt2nwF891~u3jB(%NG92Kal#evcFPID!`wTi@Ne$);5C~3;d`aLi!9e_h-9=9Xe;K znwmd>Xs!UN?3Lld#J3rc-al1YQ1YI;(Yj1|dU`qlBINbo$0OL9o)_9#he15nk6zf& zfQTXp9__TMU^z%>rcI3B|I4AU@?3prqEK>X?Qns z0xo{z=1tHT$Q33{fCRVM5!f^pvQe@smI>8Etj7xhImg>0{BN2+qV<|DXcCnr6i<7^ zzW&WPf0IDdh}s=PB_Tvv&kV5KGV@56>5O_nXa&IW0APD2aKPO`1@&w0gS8R+hfkLi zY(GS8uk*bP{zG7_a1pvsB^cVgJ|d8)*<=K~E0qzbxM|?>Ml20p_&7Ll!d9RXa_wx2 zLN=f+^1DLE1MkU|4h$4bbWQ%WU_)!PVX5y;XW1BJ0OTHs^Sz*VuuA5-K~0T#_!Uy> zAb~UW-~U-v^p|#)k+ATwAW6^SCvJvYkvjD^Dzp_|*5VOsqyc8N2%iE?uSTG5DJBc5 z<)=Vz1t{i<&!1=b-9boRl%V&r0_W6l4TknHTb~nbv$7DMY3>jt?Jt%i`TMKou*Cel z7$@0@>2-JuOP!cPvC$gW15b7VE~gOzK=epC^gjWteD^Kr}UTsuF|Q>bOeIR{3PXSYMPj(=R}GoCDkn zV6QPF7i2+2fImGb2uIi7W6fcY3pa*5B4=He-UmgR+spkr28X}Wp@b1N`7vT#3XYK= z`4r?iMqhz;6Li18)=RKlAGu+Hd6A*MHav={Rt#jiR)x?-&G4(w z*Ls^p*^|SWdT~#9=SBXfBV0WFfV_^`s38aT{EtTb?=qM{t>Xvwbl}vIG>lkSK}dzb zoKpeM)cgS1ZQ82u@S$K&S2sFLdPp3Hn~IKI6jg3b_xp`vnLEZLF}jryi;goz;Jv{3 zs)y?LR&a!%(*<&Gz*vhrcVAJr0{0WPpYxy5`zD1Spg`t`MhVsC=%0xJQn~-jHQ!%1 zo95SPQv`u@&iP4>2SF1-PV%9YWA}tplbaeNXyTSc6#0ecbqsd@9{g&%^v6)idmj8r zhr}9u5WcT&NXf_mH@gLnN%AxTZGEJhXbcu)_+R#UI|qyRLSlSkASZ_#pg}t>m&SD? zHoRqKT@?NO{RrS!kZ)F%;-^v7w1aaxZ?S4VCgxy6NmZkn#RXqPD=L}-Ma0~O-qf7q z1Oom7WC8jKHM$Kr%?_e)oh1K%1(7vpinf4|f}q2{$z#R7r}zBxveed$2c)yBEno(*w)zKyfy?; zz7BtJ%am%$9iAc3IDN8z!m=EkV(^kwpp$oxf$r9)kf7SrI@aDld5 zmcMJmQU(4t!XhFNA>TSv);xjcZ|~|0C(#mE6gpTGj8^D)0A2H4VqypU8qUNnAKihb znN!UhO_qHJ_XM?Eew8XO#M-{w@DI2H0RYL`0ZqAPdsSviz)w9t3+UqD?MoGtw^vdN z%TNOhv%c9Y7#Lh2sbDwwCat@RY*((1MFj{V zwm@G!_F2fuUD*==BYV0I=Z>NrP}ZBo#I3O5zk=xZ>teZ82S$IQdE<=7>mcfZ?E}5n zA#z5;6sM%2f2Kf{1K)jW_u>uk@nK!ENWrdQ4HbDtJ`kip3+V?e!_Usnf|7zNyp%uI zTFg$K*G@@7&tCMyLR9eoWG|@m0=N>o5WpEm1i&(K-RbK2ArTQvAi@H3R*fJ!h?Ep? zj&W183(bzU=OCh%!oCMVH)}l;0IpP+`8g7oB$ZXBoJ~2WM%&^?e+k}yiLV%fKnE$% zZ9&2D1B@g#FkvbiV_QatV;N0_izO3Vw1T8_%&~neQzD`_k%aJJ@hT5ye^| zV<@G{LPmjUy%jhTDDFTvF(Lo!O^`+tb;sP}(8c@UbX%lX8yp;*1|q8iF+!%d5fO|4 zTmt%DD@X)!OAXQd@WGEaT=*FUDvJQ<0*t#9tK+)4m9i1J7cf;@+cdZxGJM#+Cw#$r zR=G|FElSwPZQU!@(uk|Y;bFY~L%14R;JwW=g7c2)&v&$7UK$N_>oMr8Vo5mmCrzA`X*a4K)1<(P-*N7{6Wr%|W;T@9@L-b!ai?Y<5m$cTsrk%SYpq+&s9 z4~z}OLNs4jDM$IpmFvt6tsJl9{9ETbryF|wFMMmW_)teRwsF@?{ zaL*^@O90=^h$%K>F#FY2S}VwDej+gq+6oZUpslG<+npqSWJ2TRNPx9LHJ?mnnqWLS zm@{sqI)VH>*mGbnQG_Q2Kr1!qQi5f{fC(HBz~uIeb!21cQB4c?xzT{PgSE~nS0hbC z%R8wO!)puU4jIAR@FSd|?NVA=s!JIRekir@82-4Shu7gIMqG41$VX@;^mUSM?oG5x z=!+3jnt3J%Fdp^j%iTE|BIK;GpwI_;0r>rwGK9fKyAQqtMsz+tK8W%S`o!RW>G(J~ zAt3?svM?P_sqJ$f+|}bHu>Nh!Kk=T^TsD`PyCLc4NzdhoX5ix>(a5&28GkaicNt zWcv7@hl*YqE|S%8f%3LQ1!5j_a_~VPTQDs85~vRd{{=(>ar|2&3h3Omjd2OvkMVoQ z95a4KyydjR6h5ZZZ7+1Pa0RVQHrO#j&NwLV2leG=1<)paP6J>X*^Qt>0gDj(!*j-% z5D3tHz#)V7iIy3;nA-;t6yE7;Rh4D+c2|!?2?NjY;dXK#GAMhN2aggR6$L(7_r`Oi z5nB>C3K^lu9s);wxY?ORM5c;7BdG+$p&JgzqOjZs+u+C$r=SkqgSVnS9F5Maq^(rh zr2XkKJCP-LV?kM4N(QbuYu6E(@f{c>0eVqP92^s9h%GFQ^Dcc%P3?i&1h#Dxc-1Z) z)C4q@=54q02bY}l_V00e(uHZEB}ONgDFZ@J2uU&YKf!X@!3!Op7~w6^etwic#07@T z(2&vu^<_XntbJ#d=b;_^d1bo3c4{L}l`|W+pq5mh0_Vb&jYuE?mD|VPQ@!y%6C07` zND(y{y@Pd|&^ITDA$W-3XJ`;OD{#X~K=20$tk5B{5g1lZCwrElo(fRR$#+T=#GRZW zuI%;=s-37(rr$&h(?e4#^m|{&5~K_+OV=RsEJ45dC#nSOnp(tU0Uc@W!LNkG1FTk^ z6EOcL2LrCnctx49nvB$jN8>KKQA<5%Q+L3fj)%}RK;DE%DdBhX zyLCq^P(%I<8{gw_b7Sv7jfHH4WOxSM`I`2@&GMlgoN70Q$*LQQqg7?$YGB(5COgH$ zjAO96Nr)=&ADsoU;RWUz)HG6FUc$iX0cZI9AI}{|n*FAX*5!{>_#Dc9=XiGrkkwyF z(Zj!cd{B`;WMv7H2*7kJ{$D_igMfOS30@3h+IQvZ)g7=&O;gWDI&*T*cMg3?F|!FW|X@z-uuy z^v}<3udeW(W}MwLD;TEL&12JHX__R~i zepYiZmpPK5x&GDCTkc!a&$t27yS>$!&85dL+(V0lJl0mAfZ|AA_k04+Ad1M>m_|!Y zvB5(V%!4)?r_Lk2HE-Owf$)URPxk3x4om=H+`ZM0rkY11+y_(3ix`pLnL;0j|@Xf%~<W2OSL9;FO@2r^{bPeg~dhi~% zDAz1mBMw#k^>HNKTeO5qbiW|>c8 z6)#Zw*$t2eK$U!5^0lS2w|PFtLMX+Tri=~u&Oc995?=*eS7=rX_DFRU@?^K6h?)Z` z!K7mwHRKEvFO)z=3WF8E_Ybiq9tjmeV|8AlsJnHoVanmBjB)Xu6iSPkxhA-=%(KIq zl{J4}v#wOrbbTpV0vZVj&cL@6=YOcEh$j<4l@5`am&peO%;LdQ_apQz5W4}rBhLaC z6faTKIK|hB>2Yl*6@wEm#D9kKP~bi?Qs`S&ue(`+)$#c`g!%}?g9fhz*dPB>8%-Ss z`ulT&?KX1MAa*4YBs=d};)zXRZbiINOb@WIIpVq7yWajau4!nu{j6@A8_#Y+GDj4h zrA`L5XldfBTm@7=SVI>(jI>r?LC7Bs{TGN^pN0J=;P!oK(+pV6+F= zGy`J`k?X-;rg~P)o!2pb*edNU9lpHRC!wqO`RvcvwSON$k0b{fh|@=$zK~461rN~p zZoohz(Ea-98`NqvdaU!PeH&5MMDZ2n7|Gj!Eynx=x%+Pej}dIb0Plo}Hx4h)1(PG7 zk~QQ?ID%O>(BQzcZ+ZGpNI}eGK1QB(c%6rY_>1Wx*Na=Xcq{uu|E@-B|y@hQ!xj2Td;eNkC#)m8eWNj4Wp!U=It7r!VfiW>ER- z{@&2|A(xXSmz&zMrt%NnvS~=_Yw?t}y?l zXTP_G;Zo!~j(^{ffY@?f1@}EIFiA$n*FePz48->keg1+Rz8}ox0W(?X*M#OX!VX7_ zgFbMkcbbe@@Wz;P8mSWvvJg+#^fP(s{(3DG*AkEvI_VWCse>XWarR5fv@`jwBh0-D>nplY5diZsfEgL`0%#3lUZm7hy8LMf1Ass}*hP>>Ag!YK z@9%(`57fFIRiilZ_t4U}($M}W+kfp#^8wcF*zIWk*;e@{p4-nrqbs>QP>H>!W%5kBH3BBLI! zgL+fPyk?1Bn*Z)XSDMIfLTs_z00Bv29L!4n!F3kO+B zdc*(NEZ1?iwG`33CZv^XgETc*j!Wo z%m4usXa0U>h22rj6SjSA>3kxoB+HiBjVoGhy66e#!{7bu z&DE`t;!~Psn#3+MFy{{$voQmccXlm$XO^3r+IW_+Q~|=mH$-n;t0~2&1r!iN4!kF3 zBX?i<`T0SaP!B9-Fp3`Ug_wy)#oq|FN+>`1$UVi3%iF zW0NmXvQ1e+7D7u$m-!>`RYyNBL7aTxtTb`FPU;n(^Q$;?10DS2_+15(VgL7mvn|+jBvH7T zj$du!Q@NcRO}|}L28{t`rXFH=3b+FMX323d5WXy+x-fPSIHrnypwVc4?(xn>*;t(g zaf?GSyBe`fGB?8b5&R|j>EvrGu;17-N*FRcnH}dwcE|T{_?@`ZAd+GRw^+BW=_0&V z%kD)YWunpVv@Vt(C7tf~xKDJ9=6iFpC0s$hMI3*+k8`%6@dPb^01f$HbzNO~!FLg+ zAmDNo%N~&CW&R%vxh0!sLdX{U$m=t|=3BF-d~m?dzdV%sx`>};rn7uy7=v1z%^B^S z^$D7f0IpKO)l6sCAFx1z63ARdhb*v_gb6}YPzmT!hYo-`EIXs(B50nM`?4=VQo4OCY!%S z8uE*WLCz-thTnA3VGlF&QcwLCh)AM7bNE!Nr^a_&>k(0mq-}Y*R^MZ*Ka`J>=YbCW zCWgvj$BGEr?R}FE7w8MB@2*_DxS`7O(wyFc9+OC%=i%QzCJK5e>mYr!1h4a`sHh^m zHcPMqR4vbTpZH8{l9hA+JY*S4KBAR<-c+iLllqJCY?WM7#k6A2*2P!Cs7giXF*w(- zX(?_aU@#Hr-5}S6ipSZ7SAvvHvRxoeU=iW%R;%%Entw8@^5n)* zi{nezdecNo*yGI5J+^Q_dR*Ft>@Gao-ZAzqJET`nys(N5%omamcXE8bp*>8EGQLkj zyfe|?I(b}`V@c8XxmoZZJFfa89Jl4fg4lx)ZXw=_`Me%ya7^Gug&4u@$GQB-6Y;jhKTBt z44y6fZ~AN)dkmWkm~+)w>Rc$w`RLt&pNtF;1tCTs_?(eSuaQBf2Z;nANHAOp8Cvuo zJqx_WU}g@GKiZq*2^X0x&VR@owl33@&Yjw?44V7y@9cNPrS(~@j^@v+_3PU)7%Yz$ znR9Etr0mqh9AV}Exsab3C-C}`;`wngTwi?95E4Xaxc_6|q`R@Um`&T+kqn(hMJfSF z7*z@^X~##OhKzYA+JQ5}=mGsuhUj`=n1M0{S`dtYEx{kwe+&nylnNwfak#O5Q1447 z6I@i}WxpheX@A_7;vF(m7L(j?(YX+0PB_Y6aMnl^&?{YGe$zr{|3U;a>DajS$?QB` z+*R6L4CI2(^-+~IHI@_~Fw<$-h%G;h_NP zTGa(Gg21OXU$T^xib@{HV1SswPb`Hq{zX)vexCPj=+WH3;n-2jv!bjlg2{3Ly56;eTBSYV3sWC2zbyHY)`zDcksd0B|O|vc%V)uig$=uEVf6>nn4ifsE zQa$Luhv?VOo8Ujp?9+^?pZ8HyIQSL)j}YFK&Z;xSLPkjVCSLJvpTz<+I-u^3Nk|9* zBZ&L=?}Jw!USZ`y57(Cmm|i86XU=K=_W7e551%q2D9VRt$8q$PYty5V*O~UOP~czy zm$V>6-@RSmu}2?-KLZ*JBZKR1aOs1E^b+0jfSKM)9WB5&Q{5PIA2?Ep`LX~yWDJt7NoBCj1e7k~C# z7+634y!P$BU#c9}(IeBG51IS?)TlB1(p7u(T`L*-`mHLU$*6s^9*|5VovFMU{@X*@ zI~eP4QHea52SHj1ZOKVN;YpBlY1gB9b_l%u8A!j~cWc|m2YIh9VEK?STwve9^L$diWFb`AbmHmX*#oh%7bqV1 zG%fx3(+m9xDlb;~t`BYPR~s#2GC(Vvd z?7G>%8`DiFI%798HPxeSia|`$4?z#cgg$xv_%;+!P<(4@;E%*XuQLjo120WnAV36p zKFWOKvsd_a6iV5raI06051okz*&0O0reOK@Y_%ocZOqGG{d3`nZusN?A|%*AmEbK7 z@0%2}!6*#`q2Jq@NsZ{bXO5!b8XZb^e00aR?>cQ#7SVh#mL zjVbZ#`Dr)|8pPOhRe9_PBT{9ig!&6uKpglM8hO9~sbCqig&qx*By@meL&$@*r@M0} zI3y$;H0SIg)-NbQ0)Dnn%Bj{%d=7xN(rkhL15(ggtIBL>XE1-q?ZnegEkBQ^IbN#g zBjep?m!5ghV!1Kss!^rr@{rzuZFIc551B`tJ&QXZc5w3MZ9(57_kEg;EYKmt>TPEOwNITJpOVN-!vpI|n((znyQADu`@RI8F}W+7<;kd4b} z;ivY4J?poWK|wI6mLDcI1IvgJOgrI3!*EV3`iPy4#)8J*)_L2S^~V$UoY5{PGo_n> zug`*TmbCwKA&n(@qbuwjI&$H~LEELxxg2vj2P&&hCw;qaoegar7QW>V=& z9NVv6F}l}m3GS%Gy}xE+*u&3ri@_#F>}(sIB0LbvqT!mDC!Zyr60L7Nu}o40h$ELjy4uuo;MFN@%DrO)NM7KxQjDYg>0i-(K1N zd$>Txr|_Cp&4sls4O z04?Mu9*eSC_M$m!kA|x z1l39aF-YD6&^7lalmk%3xN3S&QJxacZH-E%@d~`$zKwXqL1*3H-@h8fn>CIvM@_i2 zH1PTCCP$5Iy(sZ}>~iZSttI9*#~ZLCA)kkYc90xVrp2XbYsMQGd&*xLgT zo+&~oUmcQ*$YuswV?j#`P|V?@VG_3l!m!~Iu3KR4oYr*zIug{RcYnxE5t_$fZ22?? zx%l5l2aFY@l^ScR1en@a7NzgkE-O7HdUduVgM)z%BQqUODw$nCEecakVH)B~$FC=`n|MY{g#EqjLoYg7_tO9~g<~8tR>HM3jo^CmYS9hlTw0)9Q3N<$LKRwvc zgn&;gBIN{X2h#1J68x@ZU}|a#fe6MH!>S`b`!INkW#sG8^)qLcR#VkR%9go^2sJxs zUH;FHhDZtXI2e^u!n)fc|0i#qWYf0gF|3RG@iRqlZC{gXKRYsM+>2-vA?1 zyibM$j$B_pna05tmH=q_4FUF^%MBb|WE2_H zbpTJ~et+=)GWX!o74}J)d372NGcFMjid0IE8+3AD=`US8f(&IZU!?M6VsYKwF3HKs zad}z&G_zDG=59}X&}`N{;`pbi_L2VW)SszJVgH4k#Syst0Hqpu9U{|iYe3z)bI3fV zG5{1PARi;dRL1OAO4T5BAcIJ23S5imGc`XT1p*(S+-58qDuXD{=0h_V*<7&G8KGyk zq&9TuR*^*X_wVrE4rWc>80o7qnJl^BYsp87gVDR%*w)6Crv`8J@hg>JL0S;4z==b| z_lcg*p_y(0Y!=|}gKq|cf5J>HL|rp9H%JLCA~2N77lxBKo*g+tpAM!iyw_`K@mVu# zpSq|hJmbRJUa(KYV4VJN3zXi}8 z;-LvWX}Cjk_adW}4qL1piARdnn>;gThX?YFF1$v+QI~6TCa`HObg8oRS~ObtUz{6t zQ;`W(QuHWa?|a8n@EcV!`8{-QU`ENxL{;(B&A)&e0;04u-&)#(SG0~86#qBBH$8blCU(npvs~DM zCocKy^`c{D-``6iw`TDFJ)C-%pcP=wBWcmb~? zP5{e>#%HT|kt7V3)*R>BV1%Eky$_=K z`OVF4xYE|8&~iuCkscdB|A^)F&|GjL!exZU1h79$r*uyi+G7|3gJ`x2rJvrOFD@%+ z`R3l(@OrB8)-1&~1Ltn`$sr214~N?o&SyU?`CCO^mzgz<7zk~(!{`Mzm_}ih1<0== z3>XAsSFpet`YZ=CYhfr2z(&hyu(s^%c);lf76({h=lTMf1W?^MaN#ro?-B6bMLI}) zGhQvwH9G2uC6*W74tE*lqkc*L_)3kc@)k!UsU~lfo!V0r#u!t|1cO(Ooi}fY53(Xj zjwQ7E;8AW6tMzSGS7PJiGr>Ix&~nh=G7F4&WdQUWf=>Jg9Y!k-_zA$Gy2&Vy7)T&) z-;lV)9Cvav^8slFO&7J>Xcd#KC-Wh12|n3Vt=|;krgG%a_YFaoRlxg%2Y_4z@RVIH ziOT{H9{AzFM%sFJqMHtyK;R~Uc`bA+o4?UKm4nV9Vj;A-Iv!gxkn=R5YuI}8;Rjq7 z9t<1N_uVF?Y#2`-mxyVCeFd14 zq4Z!YCxdU3rR~lNy;k=mnlgTncbS!9h5oFwyPcnQ{WmUV16UQkeJEMz1g7>7)>mM} zamzX$oMULgfSawLo4%cs6BhzKgBY5ZCV<==ZTPc}6+U3~2-`gn=7YuV{~@ zvNT*h|1V?Au{yo#h&_1QbZ{2I^nCzExIq3(t?vVUfcpvZ!0sBGa}iPjAO*$-Bf%Pg z=W4;EOZ%An+z2n7?rYMe6$~4Bz>$PO{Q3vgafNVH399tywr* z0f9ZR_&_fq<8ur7zrmbgo!a^;oZU;uI)E^?3 zFy}^^KVE0Zh@RL$L;@zJrca+e<0?MnO6(dO9`2u*kn`|3shhSgqQbidT5noVg}slB z4X72kquE^UEN3f$E}@`sG=8C%+4t_Gc&z5D(@u;PyehpxV&~WFF~KHxd}TiV(tSA7j^asX1?+S=ME%xwqe;+$Q?b;bZR_2R(8>BJW+0*x4994aSt z4u8*5X;7bS6NO$x?nZ`lFdQ%MHYC38Ij))c_#jO=tx@I1UAVqs#HH`Yb=O)Z{~vNK z^ETqfX|L}`OBlPDr@HAWSgDh6c)k2E*va-$RIvH-;w@#ia8+?t5b_uk7k`V7dT8{S zPd7xxsOs)>l!_&VuG~gd_8)>MNd_AcdWy8QInWh?2ng2}`yIK@FhB!o&_P=G^-pO> z^Ay#6n&ColsQ#dewPY!bYCoC3?1Sn>qJ(0DdNCK>5$;n@PJ^nP^>@-fjtHwYNj$Tm z@ui~$l}|)NFMmuUS!nO57?*7Pd9!Xezk+aH!fPMj^RB~h9rJJQ6xA#a+(f_KYwFf3 z#>K+${Cgd;#6Qf+p6ckx0Z#aslpnGk)Re0vKuw~pwNGPVWks|$;M)GX4nO2A=hsua zRGsqV>$8LT33Jc=zTEFQ7hjq0CClCEY^>nd!z>n(cYTuUmqx-S4#11+- zHm*dSUVYadf~B+2t4plQv-z!^y>`V<{66QzKN_1W3CbAY6?FmC6yyLsVNMv`!j{T`xQ$g>&^bU(Q5y3t;{=JDhl-T zF}K>Ou!smnax%b3$f>B394(SqI8$zsC954d*G`?Cr8cz3@=c15eI9y|Y?F9Km1b<= zPh3|0jewgLeuR{c4kg&mLZTXIs(}~N{v7}xhp)PX+-(+KDrBKN`@X2&mwcYYd zwEH;Y$)B8ZDtR|R{IzuEqs+d}74(?m0M2;!P;v^243HK+vrx@d{bXBhq+Y+f)o@}^ z&O5l{c6qR+B5H3j*#4m-Ku}yiQSwDJ3bT0kqSF_!`hyYxXrMYp%3yYB)gSi|-xfei_k% z&b?JpfseO6&#mOJevTg%C30@voz@aU`v@)VgV^5z2JuYSRUI z`%>v3Wdr$4dPWACUlYORQn0f7f!1TCL;niHXL-US-Unl|`h0=m*Q6z^)(W~WTR2{I zj;=6MR!+%|wDZ;|R`yM-YHf*(&d9(Yr8!t`Y(^KJeix3p^^ouxS~F%kj>56=Kba|Fcbqe6azGW*OYvI4m5ZszUdGi5F1xYWuz6tE>y>oczcYj ztEyUTj?)+*+s%_VdW0LHo-isKYaU-$*V9ulFrZ028O*t3CYo_QeX+x6gnhL1s)iDW z>B+&@{RJ&Z4S=A3ak&*HB14AJX|m(Zi8nf`k{(XHY82l0S$5x?8H&)hxmw`#Co9Z9Sn zC(2l5-Ox)4P45f26tzEFA|1VUA}}z7`EclT%OSgr+Luz)Q!GGEOnRNBy9~zP}HDyrDxtaCsiL^8Z=>Mh-L9;KMI#U|_3~tw- z&}R>Vep8(E<0n{s^T|~#jj||$zdb&@%Sbk{Hh3?>EV?d1G@(qD$UKJO^Gu!Gz1%Q zr(Nk)bXZu}yJ;QCl*`=L_TPNw)}s$HCtX(<)Kf-#e#KmSEa=uZ-Q-bk?pfusE-aNo zw;-WbutGy_dK!}AUV9OD7Ut`UMtiGKhFiM!5}nfEwt&pv{=PPB7MDBHt3AqISA9E*9B z4cLw6tdm~(&k3mTdM$3>Z682qZWgDZk%?26sG7Q;|EBkX*;l@han^PgYF+s75Avi- zcu=PgQ(_1S3c@p^3+I1mLxfcq#Q5fD9i{INzLCb1!fISzF7ftc(M{Iy6I0GRD0d zpuB#gz42Ceq}TmR`?K`T)qa>wa03eoQ8(oztycEN%#R>tO5H{e>NH60F{D9BS?AZL^=`f$ty0y>wy%s!>(HMYM1i*O13T<;D z6u49)UhKOE`DRmMQiv7tej3PE?SEdTLXbh~MfmkkW{Gnsu4NJa)S&8p?8Vjg@A<0J zBX1JIuCs3AoECM;Vrm`jN)@UjMoX@)m4{!TFNs<2-__Mst;-Ik?x6p^DQ<*}i5O!{nF8bu7IO~no9k{WXe3~Hs;Jmqj#^Sv)?+^wG;{t(M)Nbi!=ekH5qm9; zjuM~GtDShS^MR3_?>-lpDwbb+c7GUH@GfOt`>jKW{qtK)@7A_AoBmae<)CtbJ3j|y z83O%RFuewzvc$rkh)GH5j%JWUAtNW>IUsO#bp;0(zm~b?ec0ARS@|#sjWO-MZ z@4sBPCN0qa`(*vt!sV!Rj5$o>#?}Iy9P9sCpijJl_CMQ1*RAIW_ITX(2PSBmn7)&OX!p17m`Hp zUr)X-#uq2-X)3;=b#KjrI*Wg?o_M*q;W?g^VQcgJi>3(`oXcNp287{6SXVLpQ2m-7 zT3X(nP2hduNd6JB6lB<4qe|&g|MMZ0*z^Re_ZYVyu)ZY~6_&R$BT=BCp7XhE-J>Lu zTxSly@{o`RfC7lG0oKL!ywBBryFez_X2{t)KEB3{;))aA`Er7(Y9hR_DyVM0KQGno z;)K=grS}&H>NQ`x+AU+*fSij|f-i<%Sg=I`LYL9e(Wk%q!<#`gwecMR+Jz~~fj=yG zGKM??&2uQTP=g1)$9zn9ka-}r&fL}P8Bapk4mqrO&n-Yk5XWM>?t<`Q4ATM=6`AX z%IYdW#{;KF?~Iq`woIJqIL-$6n02(8hN`9rdj`ffpz1^v6n?|_}srDCt7{GbO zo`Ww2KH2*7bOW*U&yem?WAV-|{)=|K1S^izKCj0F3$1&smri)z)hLqhBc)&JfDH|giT7z>Il(?O=vjU7_q^el3pWV=Zw1YnkZHbp&&s!& z>XmVZhexi>7;*ZLDd<#N=lWkyR1Qy(9AFLyl2Msig|+~6!BUUDGohvYt|S0H2#|Q7 zl+Vh|4F(CE@fS@p*=~9xM^UVRt#=3cObuPH52wxcALsyl@nyH-GQq)X_g?COr_$Au z$D}l!_7al0d^syX-t)^C?5&Urwjli9XE1C1udX8D(En3rHZ2|xh~_?J9%hnlo=iaj*hPjE{N|OL8PnUS9`cvGkw&> zQG&ncoZV4o@oDYcjelSauMs!3o<^^9dfB~?R~FLzPFY*qd*|opz^r^Qset)0DvFST zlJbit8=~Qb{ajSD#scQaf2M|ustV)nYFo@7t@xZoUheFy>=8Z8R==rsRXV^v*-v?D z?(%4#>x}h#!M*<00h=-m&`qr-<~bh{~|XK`afR;YGTNCA&Yh3 zGadfpDuj!RtI0-ka(W64Ekwi<9ev}*O_5khXrO`W_=7`=Vy2mtI@VC~1s`QdLpR?USbePHC z%s(nw+g-dkr;5j7?D;+cAB4!WFq7bH(;*fMK%eViuVsVP()95W16w?}4vecNfLLY- za|nn?Nx{hZEF~WDC0$)AD1KrBYdQvELNxOD`-g%iy23WnacF zVl2tNm#r{DV;SbX#`k@H=e*~<|H11VCx_1S%=6s$eJ!8sbA2wEvXx^zr@snlO}}50 zIlhryRh9Va6{B6n?_^!Anlk4<)03C8{R`m{+W9W$>M3!yu1=X|HBO?o$DJJg`3E2a6JL53CKU> zGXJE0<{w5yw}>4AfRJ)3os;iEF3uVV^|$I<_Nq?E9v73_6Zj)JL#!m7jY^wXTOY_0 z747Zqi^f*Q9}NK5+R2-lnF+Wl9OcD7e|TXwK!3j;G-<%r@Te~TYC|roQmCo9@A5nQ ze}_1jgf5ksEneS$tM|r^N5c7~RwQAA!F5x|DmdHN(kMKm1=27G!T_oXg^tJcqq_X(&x5wsRVPGkf=Mnf zpZu$0GWO?m@gWLg_tzI3Hn`2rpNA%}ifhcJ)&2>8c-zqMI4kRd#~HJaFC!!2dLgaW zAQQ#6FTG=U6%_^`ynonR7Z|p<|_`rS0tPtwCi(zaZhA3n0wj2M4_)u0r4n(*z)0 z5qaS)l4>iS`0>*xAd!F)aY|s%DPoPgB*(_cm14vnxg+}l0SvRZUB5_?_ScWxw;Bvb zidnZs07%>Z{cYStucWJ?)Zqt2$yv@Ya6dIHK6|vyy5Gf*FH6ui~QwJwdArX{{GcnCG=_Ms^W@oL_YHTRS zFqps!qYcRXfUQXyR{_7Dooj9&s~B<2E+}A3?mpSuX$^=7DkGYEn(fI)it2qwtxtNG zxTn44Fo35`9l;_GZ9)kU3BtRQalr#TH)-7s()PR}B0Z*`r7mCgm|T@%2c`kkdH|}% ze7FyZ!zQAwGS`q;V9JpDJi{RZi88xMZpo13Ol1Ja9Tw6oVCUCHNy!h}QY$zic6OFt zUTmN>0L9Y_7cVB=E}qu`x-`seWCP5qUH)HjV9)c2h?p}Nws}wOy1lSJ`+^~~IURl# zC$3AxoW23aPAPAYn&T0<*tKi(!av6Q`e42#IUgTiYI+*;6SazO_GBw zKm65y7xVml7%(&xTzcdLn{3UV%C{64+|p z%^22f`gz3hTBcs^yx+c#IK;_7)-5l;26j2yzn+1ty`1#iS5Thri=)sk75@go)@tJD zxh5ZeY2O^Y?bY1G?=mNNhySpAv*uC`Yo39RJ1_upD))iZ1l5MuDYdRsTW{XH0aM&= z|Am?bai3PQyiTeWR|uyc6_QMe5de+1X(R0PpIe3ku2mV;rBPsc|88PXrfO<5V7=$( zZBuUXgUA`FVh+L`W%(mb-8SNGAjt#aci9IwSRhIa+o1c&W#4_S2IpNY6N*->kQbqv z0YUV?nYH8prEeYh0cNk&ajE~DDa1K|OT=3QNRi-b;U63q;SS5o_R=ykIl@uQtgP+R zmaYe!EluKsvr+wz1kBh5%tMj7u93ZU&<>>Z|E0#E!WS zE_$vb;tdNNtIOx~^RDNt6Dk2QAhmqoy~_!fUw{P)b#$ac0|*6j3!dg={GYs>f-X>; z=F&B-s|3M17!Q2oEZL<_gD2(*8&7iQGhxzv>evm7*k(@jRz>Bw$fVEG9l{jWKMC!< z^Y|p|Zfe3$Qqe&C>ZIvsZ@_t>I9pITOQ)fs!Smk8LjZ0ICI=d`M^8U5q2;~ym;v=T z4AMkR1Pe+TaU@VT3vClCQbUw_(6B$FZ+HB-*Q|oYIjO5h1G^>ANyNwds^)(47G9ep ztbVBr)YX3&4;&Uu1vr{v3jyA@vF@ZS3y~tA5%8riV*gs@Z1K{{1s|e&jMYP%K}l9r zivZ~+t+r_;-!<%o6@mQcwnv{CA_UX!mV zw)fK|xiFCY2}t8t!W2L31X0`Y*;BwpqvDm0v!z2wKU2*X+7e%OMRKKGT5{8}=DC;2 zIC@(6K-*A&t!IUdInamJ%+esWjDSv9(uziWR5raO*9a!xjG|qo=amxoNPEdz{ns^%a z)Rd@^58__1Ka1xrF+oLeEXdc&u!(i3B})mZ4LiQhb;Pc+tAm+Z{r5y_B3T=VlnAMv zfd(ZipESs06T#K|tq}|d3mC`AZ`q6>|8$un`ySmzONHm2bz;xnfEn<5tNZSMbTC?Wtznl(5aVufOEVbDgws#)9y3;r~f9Nx^VKrZ{ zu$6ICjO?G$mJmVZ8mxz<5fh*?YV&J;J+V->vpWrqeCxB!MHPxte=u?Ez+uW5M(Qd< zEEXCX`Y}gJbQIj&r0<#>gt;bM5q4Q@j~o*qW4&$L`w%q*LkDP;9UFYrPWk(B7@HiO z@C?J6V^p&J4%V<}nYrH=0j7Os>Oy1@78ZuMk|Z)kqSLy$i2=h*tVY-jJU(40dETIg zxA#ugTnU%!rbl)5W_tmIZ&mo zu9k*|3;{vG%&aV+*nO>eshkJUM5Jow6hdH+Oszp_rPreeFZPzaoF$|j6uOVm!g*HB z(Jkc>3|;Q2PrvJN-;hqayM^m5XebyKnro@3P=Qy?f@?#mw-ikb0L>{b$p{of3R})IdV4|9G>(v%R&yIe{Y^T5P1vKGYHv8)6xLP zh1^7bckvvF7d6`&0Z+oOpn%pB9YMt>C20W50&J@uA{Or9S;l_r-=2cV1~CNrT7%q@ zMeq=<{15(BZ2W%RmEe_a*nDyBr`1$qM`tI`f2#EZI7N*?FdUcL$B8>+3iClB;hPz)_L$!8`{XCPB6oGA{EEfGo8|%|0^S9pfwneP@Y}HSW8>mr7FyGfwnV*L1K>6HkB)W% zskJUjlgV;3$$q=y3MZYu66tg$TsRWQ^BJ^GK(xUI1}Z~U6cUS%1qIokKE0@|l_ez> zi8lvU^*N3}*%UHhNN|Qt>2-Y&nM1L8=nr^p+G8_-Du%y41iY`YUvo^)&3z8^N<_S8qRS@MK#-q`3inJOA1Z zo>{PLaYDvTfO$%K%rn5V!4)A30-HDKA3itxw8Dsw4L&sl2xaBvJ`~el>}qOidh7JNxtSnK`T8b#x)BmEd?@IH!iJcn))X3`GY^YQaPKry9JmU7fN#H;O2l7?(49MTK z*D$#WoU~4X<&;kIesavZ6xP@}{~QyA{cMBbdd zNfT%>K}W)})gj&#gdFxeSfh~PVWi@$%vMI8^} zg!Ip!BM)<)xdqSlNpr8C$F^5ouIEz53*tQ5)6n<{+@Dg{zH9D0e`WtZ@XBw*7n^oX zhYf|1OtzRQ>1u9OW&pwIT3Bd1I0$Ndcmp%&VE=#Z=}FybdYyE7xO$M8{9QmB6-9>L zbsuTRDaNjN?13~ClOnITVl6S)r>k5p!A^V`PB3%eTO7c~rQp<{E=Iy`c6Wg|1?Lh@ z`pIGWmaA8b9s&s2ElhZ+pDRnR;<@q$$rd!JK$b=fUc0w`QIc@h?p)rrDu|dM^Q2AB z%%q5DMR|B!zLgULt4%tV$=&sM?$wo0KF#?_h=bQtG1bzi7++mN6GaH+Kk&ucEKOKv zMkikgMnrfKbZ*DOnj1lrB^SI}US0%vFqcA0d;8^3{z-p{T0)5g;V8K_*18lB+PXkBjU z5_Vpg9f33=RE<0xIRK6JBnu2^OGL8X3W36k7jWXNREjwR zrEEVJb%7s#YlYQg&a>GxhWNFvAifTwM*3(+6W$gEJ2cTZ;g>T{PN0b8m#BLVLCcz4 z26;0d;%y&`9+Oq8nfVz=oJ)&F2!t2~!itD7@8NwtaS5USHX0u6NyZ&bAyX9z=v~?z z*A5vpXl}?m+4w#SKv!Dsr@)s(2D#T{e6s(M6D4|f>&x1WCO+)?BmjTNDl42Fm|o6DocBJRF3z;ZqV1dqWeoa(b78x+#yD^HYbXZ zLH%~w=pL4na~J;oaX?lbH(FY#jfclCQ$6QXcLtP3G&Ek|v2Jc9c%$B7`5sGZcoPMlAyAliA8W8ABJbqwkNMZ&H z)SJnLhgXu+8(j$w`Gzt%4bMJa>ZiXQrTE)r{o6A)ttZdo2VnS&YtW9f(Y{biSA93^ zJko+*UVrI=(bwJ)qKaWE+m*`yMQ{tu#7v31iB7MPwP|YW<<0b|&D2aCt@H*gf}K|M zU~p)t9a<$+;tls0p25sWV8gJ`sbKJC(LFyfzNU?RzV+=uUc1@6K|%$XEY8hp)Kez}vJ zqKA>Ur6nR~fH@W_Z_@9aQIfUW*k$9@H^;@#)!}mZN>_LG&@wahL`GqSK*F~O#z;Kn zqycN}jAbaQv7&xU_+Xuj=+-j?@>v!pGg^UVtr+l_ z_@rjp9O2=T14jDt;p6;22wxpWR-beP0LJHm5$u2xs<&g`$w)jj8UYyViwVDw#`CBs ze2ujfZ-m~hx`2Sj_D#6Uc)h1Pf-ru*(m}3e?^FGpC+fFmG@421RU}%5I|N6vHl^!- zN^z?-y<_a-$dBMfsuy59izCKsS`)*u-7So*H( z$qyX$tWk|myQ@8 zUl(GrX<~lTlyTC_ipFMX<}21~b)So=(V`yVKtB`YAQyE)Yjr#&J(t;;D6u^|=sI;< zBcK=^iA5i57#J87Z4xdz*G%-lt0HwhFv)M9g$581@xu+@i|U)4>|qMP1)tsT2Ca@w zl5=1^B&o^%rLEn3!{5=(OZ!TJSWq(^rVyEw+E4{4I@VYoV=Bt!z;ts;yp4W>H4fP6viQ3>piP0>Uqh!s zHBlcpe(LH+5Ts{;kXLr=yT0Fwg9W6YSfW-4k|!Jl*u$$dG=o`z8)AWvbtcn3_5i){ zgM|+3hLa_34b4b2yv8krfsQt?JV1KkbY+nMM7&`T8;*{Sdi{K@Rym*KKtjnY4|ac7 zk$#46IPz!3xPy4ZLf6qRMbUn|tWC>)IUmtO1Krjg4=$ePQ_pcK` zzgM=mzes|0Euhn<5o)WAG+f{6$sq7k0>wNKpBtOsdA#{CN5YjDAn9s33(PdR&&H6g zHBLOC$?x#EvNwd@zq4AiCJ&X`j~_omVCqETyg}g5KRir}@yAar;0Z5Id}wh}SlAzp z6Zm)!LE0sd80k7_C_d+NJ>Swqe#yStbvUq~vlhn4{YaG{KmvuK>UMLZ)!xHITjj){L*Ac*Y?&gQ1WF8p3iOqsZVMe zn*9oWT5i;hc?2CdPu###R$-w_(>)T!aR&{YHb{}yVY6J8l$2Z|tgbri@GGSRsNx4( zgPj;X$e$1R!sO=;&L`uI&`ID8)U)$)6Sk!Q>R$_Eha>Rq22(nc$NDG(14*+Sp1KEy zT7o&Yh5`Udtbfga%@?>p=3X;Y&XqINaUyp+S?h6BP>cQsQUG4WeS9Bi39mdt ziy!x3U}P+@>*E2*%yx)U7pru3rKkPL-!0+yeW!!cnk6iPJQyoo1{lcGQBolNL0`B2v*G?-^0I4S^rKJjSlTGnc0Dvxv}f{^yb>>s9#l+?G>8a%qStY!+W+Cag?wA-5l<| zdT5&`epMA9Q9{VWzqJ>QUp8~7-XKt1KKgVa&851_gOe1KQ>l{nll54x1UR_fI(nAn z4G#+cI-!fQasjJi+PU$3QD2`jako4rrA6EbN41PCzQqxy2aFgyV(2|LAM8KpQ@>>e z{Xg`iA+3XeSqFs~_Zlllq#2`*z2ZAcI+aRO7*%~8$OIrUh~#PO;6cK_sBpIb`3)Qn sk_u|L80mw;Pu7vJ_W%F>mklD>xfBr%E9T&@2>4Q0xuslyvV8i#01I2wFaQ7m From 73ae39d99dbedbca01b372865d98b9f9104e23f8 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 09:52:16 -0700 Subject: [PATCH 03/15] Updating date to Aug 4th --- content/posts/networkx/hacking-shortest-paths/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index 4a5eb4ef..e9a58555 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -1,7 +1,7 @@ --- title: "Hacking Shortest Paths: Solve Harder Problems by Tweaking Graphs" description: "Modeling Constraints in Shortest Path Problems using NetworkX and Graph Transformations" -date: 2025-08-02 +date: 2025-08-04 draft: false tags: ["networkx", "shortest-paths", "dijkstra"] displayInList: true From c5e600117116c2910e5bf2068bf3d00357523ab0 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 10:38:48 -0700 Subject: [PATCH 04/15] Applying pre-commit --- content/authors/amcandio.md | 2 +- .../networkx/hacking-shortest-paths/index.md | 22 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/content/authors/amcandio.md b/content/authors/amcandio.md index d2227179..64fef211 100644 --- a/content/authors/amcandio.md +++ b/content/authors/amcandio.md @@ -2,4 +2,4 @@ title: Alejandro Candioti --- -đź‘‹ Hi! You can find me on [GitHub](https://github.com/amcandio) and [LinkedIn](https://www.linkedin.com/in/amcandio). \ No newline at end of file +đź‘‹ Hi! You can find me on [GitHub](https://github.com/amcandio) and [LinkedIn](https://www.linkedin.com/in/amcandio). diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index e9a58555..be851a88 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -13,13 +13,14 @@ resources: showOnTop: false --- -Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. [NetworkX](https://networkx.org/) provides robust, optimized implementations of [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation? +Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. [NetworkX](https://networkx.org/) provides robust, optimized implementations of [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) like Dijkstra’s, Bellman-Ford, and A\*. But what if your problem doesn’t fit the classic shortest path formulation? Instead of designing a new algorithm from scratch, a powerful approach is to **transform your problem into a standard shortest path query by modifying the input graph**. This lets you **leverage existing, well-tested tools**. In this post, I’ll present a few common “tricks” to encode more complex shortest-path-like problems using simple graph modifications. Each trick includes a real-world example and can be implemented with just a few lines of NetworkX code. ### Trick 1: Multiple Targets with a "Sentinel" Node + _Reach the closest among several goals_ **Problem**: Find the shortest path from a source node to the closest of several target nodes: @@ -28,7 +29,6 @@ $$ \min_{\substack{p \in \mathcal{P}(s, t) \\ t \in \text{targets}}} \mathrm{length}(p) $$ - **Classic scenario**: You're part of an emergency response team trying to reach the closest hospital. You know the locations of several hospitals across the city, and you want to get to the nearest one as quickly as possible. **Solution**: Add a new sentinel (or sink) node and connect it to each target node with a zero-weight edge. Then, compute the shortest path from the source to the sentinel. The path will route through the closest original target. @@ -46,16 +46,19 @@ ambulance_location = 0 hospitals = [1, 11] # Add sentinel node -G.add_node('sentinel') +G.add_node("sentinel") for h in hospitals: - G.add_edge(h, 'sentinel', weight=0) + G.add_edge(h, "sentinel", weight=0) # Find shortest path from ambulance to the closest hospital (via sentinel) -path = nx.shortest_path(G, source=ambulance_location, target='sentinel', weight='weight') +path = nx.shortest_path( + G, source=ambulance_location, target="sentinel", weight="weight" +) print("Route to closest hospital:", path[:-1]) ``` **Output:** + ``` Route to closest hospital: [0, 8, 3, 11] ``` @@ -67,6 +70,7 @@ By adding just a single sentinel node and a few zero-weight edges, you can turn While it’s possible to modify Dijkstra’s algorithm to support multiple targets directly—by stopping as soon as one is reached—doing so often requires reimplementing logic already handled efficiently by libraries like NetworkX. In contrast, the sentinel trick keeps your code simple and makes full use of existing, battle-tested tools. ### Trick 2: Forced Detours — Pass Through a Set of Nodes + _Add Mid-Route Requirements Without Changing the Algorithm_ **Problem**: You want the shortest path from a source to a target, but the path must pass through at least one node from a specific set $C$ (checkpoints): @@ -75,7 +79,6 @@ $$ \min_{\substack{p \in \mathcal{P}(s, t) \\ p \cap C \ne \emptyset}} \mathrm{length}(p) $$ - **Scenario**: You're heading home but need to stop at any one of several nearby convenience stores to pick up a specific item (like a prescription, snack, or package). You want the shortest overall route home that includes at least one store stop. **Solution**: Create **two versions of each original node**: one for the **before checkpoint** state and one for **after checkpoint**. Edges from the original graph are duplicated within each state. Next, add the state transition edges: connect the pre-checkpoint version of each checkpoint node to its post-checkpoint version with a zero-weight edge. @@ -110,7 +113,9 @@ for checkpoint in checkpoints: G2.add_edge((checkpoint, False), (checkpoint, True)) # Start from (source, False), end at (target, True) -path_with_state = nx.shortest_path(G2, source=(source, False), target=(target, True), weight='weight') +path_with_state = nx.shortest_path( + G2, source=(source, False), target=(target, True), weight="weight" +) # We remove the state and use `groupby` to drop duplicated consecutive locations # because the path in the stateful graph may include the same location multiple times @@ -122,6 +127,7 @@ print("Shortest Path through checkpoint:", path) ``` **Output:** + ``` Shortest Path through checkpoint: [0, 8, 13, 5, 13, 3, 11, 14] ``` @@ -162,4 +168,4 @@ Careful encoding and pruning strategies may mitigate this to some extent, but in This approach simplifies development, improves reliability by leveraging battle-tested implementations, and often leads to cleaner, more maintainable code. -So next time you encounter a “non-standard” problem, ask yourself: **can I modify the input to fit a classic algorithm instead of creating a new one from scratch?** This mindset opens up a broad toolbox of solutions across many algorithmic domains. \ No newline at end of file +So next time you encounter a “non-standard” problem, ask yourself: **can I modify the input to fit a classic algorithm instead of creating a new one from scratch?** This mindset opens up a broad toolbox of solutions across many algorithmic domains. From 8ee50e2ebe88f9a5bc01ff4a648229d26fa0d924 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 15:34:44 -0700 Subject: [PATCH 05/15] Adding post summary --- content/posts/networkx/hacking-shortest-paths/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index be851a88..30f8341e 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -1,6 +1,8 @@ --- title: "Hacking Shortest Paths: Solve Harder Problems by Tweaking Graphs" description: "Modeling Constraints in Shortest Path Problems using NetworkX and Graph Transformations" +summary: | +Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. [NetworkX](https://networkx.org/) provides robust, optimized implementations of [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) like Dijkstra’s, Bellman-Ford, and A\*. But what if your problem doesn’t fit the classic shortest path formulation? date: 2025-08-04 draft: false tags: ["networkx", "shortest-paths", "dijkstra"] From f7a17e15cadd39540c67a5594e337709cac99e14 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 15:40:39 -0700 Subject: [PATCH 06/15] Fixing summary --- content/posts/networkx/hacking-shortest-paths/index.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index 30f8341e..fe814e28 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -1,8 +1,11 @@ --- title: "Hacking Shortest Paths: Solve Harder Problems by Tweaking Graphs" description: "Modeling Constraints in Shortest Path Problems using NetworkX and Graph Transformations" -summary: | -Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. [NetworkX](https://networkx.org/) provides robust, optimized implementations of [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) like Dijkstra’s, Bellman-Ford, and A\*. But what if your problem doesn’t fit the classic shortest path formulation? +summary: > + Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. + [NetworkX](https://networkx.org/) provides robust, optimized implementations of + [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) + like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation? date: 2025-08-04 draft: false tags: ["networkx", "shortest-paths", "dijkstra"] From 16911bcee38006624c46d69bbff3d65f97733957 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 16:10:03 -0700 Subject: [PATCH 07/15] Fixing summary --- content/posts/networkx/hacking-shortest-paths/index.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index fe814e28..f1b81a1f 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -2,10 +2,7 @@ title: "Hacking Shortest Paths: Solve Harder Problems by Tweaking Graphs" description: "Modeling Constraints in Shortest Path Problems using NetworkX and Graph Transformations" summary: > - Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. - [NetworkX](https://networkx.org/) provides robust, optimized implementations of - [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) - like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation? + Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. [NetworkX](https://networkx.org/) provides robust, optimized implementations of [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation? date: 2025-08-04 draft: false tags: ["networkx", "shortest-paths", "dijkstra"] From d2fbe26b0c625086827b537f65a8f41c5f96b168 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 16:13:43 -0700 Subject: [PATCH 08/15] Fixing summary --- content/posts/networkx/hacking-shortest-paths/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index f1b81a1f..5e108054 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -2,7 +2,7 @@ title: "Hacking Shortest Paths: Solve Harder Problems by Tweaking Graphs" description: "Modeling Constraints in Shortest Path Problems using NetworkX and Graph Transformations" summary: > - Many **real-world shortest path problems** include constraints that classic algorithms don’t directly handle. [NetworkX](https://networkx.org/) provides robust, optimized implementations of [algorithms](https://networkx.org/documentation/stable/reference/algorithms/shortest_paths.html) like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation? + Many real-world shortest path problems include constraints that classic algorithms don’t directly handle. NetworkX provides robust, optimized implementations of algorithms like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation? date: 2025-08-04 draft: false tags: ["networkx", "shortest-paths", "dijkstra"] From ca62b9b401c0090354968dc983b607e5160630f9 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 16:16:07 -0700 Subject: [PATCH 09/15] Fix description --- content/posts/networkx/hacking-shortest-paths/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index 5e108054..8bc8004b 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -1,8 +1,7 @@ --- title: "Hacking Shortest Paths: Solve Harder Problems by Tweaking Graphs" description: "Modeling Constraints in Shortest Path Problems using NetworkX and Graph Transformations" -summary: > - Many real-world shortest path problems include constraints that classic algorithms don’t directly handle. NetworkX provides robust, optimized implementations of algorithms like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation? +summary: "Many real-world shortest path problems include constraints that classic algorithms don’t directly handle. NetworkX provides robust, optimized implementations of algorithms like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation?" date: 2025-08-04 draft: false tags: ["networkx", "shortest-paths", "dijkstra"] From 3f929c043e84b251558b7dc9d52983f791cbae1e Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 17:36:49 -0700 Subject: [PATCH 10/15] Fixing date --- content/posts/networkx/hacking-shortest-paths/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index 8bc8004b..ccc93837 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -2,7 +2,7 @@ title: "Hacking Shortest Paths: Solve Harder Problems by Tweaking Graphs" description: "Modeling Constraints in Shortest Path Problems using NetworkX and Graph Transformations" summary: "Many real-world shortest path problems include constraints that classic algorithms don’t directly handle. NetworkX provides robust, optimized implementations of algorithms like Dijkstra’s, Bellman-Ford, and A*. But what if your problem doesn’t fit the classic shortest path formulation?" -date: 2025-08-04 +date: 2025-08-03 draft: false tags: ["networkx", "shortest-paths", "dijkstra"] displayInList: true From f8901a0bea7975c04168e846886334ff62189e88 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Sun, 3 Aug 2025 23:39:48 -0700 Subject: [PATCH 11/15] Adding example paragraph + simplifying code-examples + improving writing --- .../networkx/hacking-shortest-paths/index.md | 40 ++++++++----------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index ccc93837..77ccbe55 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -22,8 +22,6 @@ In this post, I’ll present a few common “tricks” to encode more complex sh ### Trick 1: Multiple Targets with a "Sentinel" Node -_Reach the closest among several goals_ - **Problem**: Find the shortest path from a source node to the closest of several target nodes: $$ @@ -32,7 +30,7 @@ $$ **Classic scenario**: You're part of an emergency response team trying to reach the closest hospital. You know the locations of several hospitals across the city, and you want to get to the nearest one as quickly as possible. -**Solution**: Add a new sentinel (or sink) node and connect it to each target node with a zero-weight edge. Then, compute the shortest path from the source to the sentinel. The path will route through the closest original target. +**Solution**: Add a new sentinel (or sink) node and connect it to each target node. Then, compute the shortest path from the source to the sentinel. The path will transit through the closest original target (at its second to last hop). #### Example: @@ -49,12 +47,10 @@ hospitals = [1, 11] # Add sentinel node G.add_node("sentinel") for h in hospitals: - G.add_edge(h, "sentinel", weight=0) + G.add_edge(h, "sentinel") # Find shortest path from ambulance to the closest hospital (via sentinel) -path = nx.shortest_path( - G, source=ambulance_location, target="sentinel", weight="weight" -) +path = nx.shortest_path(G, source=ambulance_location, target="sentinel") print("Route to closest hospital:", path[:-1]) ``` @@ -68,21 +64,19 @@ By adding just a single sentinel node and a few zero-weight edges, you can turn ![Path to nearest hospital.](sentinel_trick.png) -While it’s possible to modify Dijkstra’s algorithm to support multiple targets directly—by stopping as soon as one is reached—doing so often requires reimplementing logic already handled efficiently by libraries like NetworkX. In contrast, the sentinel trick keeps your code simple and makes full use of existing, battle-tested tools. +While it’s possible to modify Dijkstra’s algorithm to support multiple targets directly—by stopping as soon as one is reached—doing so requires reimplementing logic already handled efficiently by libraries like NetworkX. In contrast, the sentinel trick keeps your code simple and makes use of preexisting tools. ### Trick 2: Forced Detours — Pass Through a Set of Nodes -_Add Mid-Route Requirements Without Changing the Algorithm_ - **Problem**: You want the shortest path from a source to a target, but the path must pass through at least one node from a specific set $C$ (checkpoints): $$ \min_{\substack{p \in \mathcal{P}(s, t) \\ p \cap C \ne \emptyset}} \mathrm{length}(p) $$ -**Scenario**: You're heading home but need to stop at any one of several nearby convenience stores to pick up a specific item (like a prescription, snack, or package). You want the shortest overall route home that includes at least one store stop. +**Scenario**: You're heading home but need to stop at any one of several nearby convenience stores to pick up a specific item. You want the shortest overall route home that includes at least one store stop. -**Solution**: Create **two versions of each original node**: one for the **before checkpoint** state and one for **after checkpoint**. Edges from the original graph are duplicated within each state. Next, add the state transition edges: connect the pre-checkpoint version of each checkpoint node to its post-checkpoint version with a zero-weight edge. +**Solution**: Create **two versions of each original node**: one for the **before checkpoint** state and one for **after checkpoint**. Edges from the original graph are duplicated within each state. Next, add the state transition edges: connect the pre-checkpoint version of each checkpoint node to its post-checkpoint version with an edge. This effectively models the constraint into the graph’s structure. Solution to the problem is equivalent to finding the shortest path from source ("before checkpoint") to target ("after checkpoint"). @@ -114,12 +108,10 @@ for checkpoint in checkpoints: G2.add_edge((checkpoint, False), (checkpoint, True)) # Start from (source, False), end at (target, True) -path_with_state = nx.shortest_path( - G2, source=(source, False), target=(target, True), weight="weight" -) +path_with_state = nx.shortest_path(G2, source=(source, False), target=(target, True)) # We remove the state and use `groupby` to drop duplicated consecutive locations -# because the path in the stateful graph may include the same location multiple times +# because the path in the stateful graph includes the checkpoint location twice # with different states (e.g., before and after visiting a checkpoint). # This collapses consecutive duplicates to produce a cleaner path over original nodes. path = [node for node, _ in groupby(path_with_state, lambda x: x[0])] @@ -139,13 +131,13 @@ The shortest path from node $0$ to node $14$ that passes through at least one ch The path begins in the "before checkpoint" state, moving from node $0$ to $5$ via $8$ and $13$. Upon reaching checkpoint $5$, the state transitions to "after checkpoint", allowing the rest of the path to continue from $5$ through $13$, $3$, $11$, and finally $14$. -**Note:** the resulting path is not loop-free: it traverses over node $13$ twice, which is allowed in this state-expanded graph because the node is visited in different contexts—before and after satisfying the checkpoint constraint. +**Note:** the resulting path is not loop-free: it traverses over $13$ twice, which is allowed in this state-expanded graph because the location is visited in different contexts—before and after satisfying the checkpoint constraint. ### Generalization: Modeling Arbitrary State The previous approach introduces the idea of stateful graphs, where **each node encodes not just a location but a context—like "before or after checkpoint"**. And once you start thinking in terms of state, a whole new world of graph transformations opens up. -You can extend this framework even further. The same idea applies for more complex types of states, it's just a matter of encoding the context. Here are a few examples of what you can model: +You can extend this framework even further. The same idea applies for more complex types of states, it's just a matter of encoding the context. For example, you could model: - **Multiple types of checkpoints**. e.g. before getting home, you need to stop at a grocery store, a pharmacy and a coffee shop. - **Weight-changing nodes**. e.g. you can stop by the mechanic, upgrade your car so it becomes 2x faster. @@ -157,16 +149,18 @@ For example, to model a budget of $5$ coins where each edge has a cost, you can #### Limitations -One key limitation of this approach is that **modifying the input graph to encode additional constraints can lead to a significant increase in its size**. For example, when enforcing multiple checkpoint or detour requirements by duplicating nodes, adding sentinel structures, or expanding the state space (e.g., tracking visited checkpoints in the node label), the graph can grow **exponentially** in the number of constraints. +One key limitation of this approach is that **modifying the input graph to encode additional constraints can lead to a significant increase in its size**. For example, when enforcing multiple checkpoint requirements by duplicating nodes, the graph can grow **exponentially** in the number of constraints. + +This size explosion impacts **both memory and runtime performance**. Even if the underlying shortest path algorithm is efficient (e.g., Dijkstra's or A\*), it now operates on a much larger graph, potentially becoming impractical for large scenarios. -This size explosion impacts **both memory and runtime performance**. Even if the underlying shortest path algorithm remains efficient (e.g., Dijkstra's or A\*), it now operates on a much larger graph, potentially becoming impractical for real-time or large-scale scenarios. +Pruning strategies may mitigate this to some extent but there is a trade-off between how accurate we can express constrains vs. the size of the transformed graph. -Careful encoding and pruning strategies may mitigate this to some extent, but in general, there is a trade-off between **expressiveness of the constraint** and **feasibility of the graph transformation**. +For instance, in our node-budget state graph example, modeling all different possible budget values can make the stateful graph explode. One possible pruning strategy could be considering only budgets that are multiple of ten. Which reduces the size of the graph by sacrificing accuracy in the final result (solution becomes an approximation). #### Wrapping Up: Transform the Input, Reuse the Algorithm -**Transforming your input data to encode constraints and problem variations is a powerful and reusable technique that extends far beyond shortest path problems.** By modifying the input structure—whether it’s a graph or another data form—you can solve more complex challenges while continuing to use well-established, efficient algorithms unchanged. +**Transforming your input data to encode constraints for problem variations is a powerful technique that extends far beyond shortest path problems.** By modifying the input structure you can solve more complex challenges while continue reusing well-established, efficient algorithms. -This approach simplifies development, improves reliability by leveraging battle-tested implementations, and often leads to cleaner, more maintainable code. +This approach simplifies development, and can lead to cleaner, more maintainable code. So next time you encounter a “non-standard” problem, ask yourself: **can I modify the input to fit a classic algorithm instead of creating a new one from scratch?** This mindset opens up a broad toolbox of solutions across many algorithmic domains. From 50ab12f68adb7cee62d51f0b1caba8c21f4f0322 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Mon, 4 Aug 2025 06:06:15 -0700 Subject: [PATCH 12/15] Update content/posts/networkx/hacking-shortest-paths/index.md Co-authored-by: Ross Barnowski --- content/posts/networkx/hacking-shortest-paths/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index 77ccbe55..a8f1e89a 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -78,7 +78,7 @@ $$ **Solution**: Create **two versions of each original node**: one for the **before checkpoint** state and one for **after checkpoint**. Edges from the original graph are duplicated within each state. Next, add the state transition edges: connect the pre-checkpoint version of each checkpoint node to its post-checkpoint version with an edge. -This effectively models the constraint into the graph’s structure. Solution to the problem is equivalent to finding the shortest path from source ("before checkpoint") to target ("after checkpoint"). +This effectively models the constraint into the graph’s structure. The solution to the problem is equivalent to finding the shortest path from source ("before checkpoint") to target ("after checkpoint"). #### Example: From e6c13ba6721acd04b331b250a8a4aa9f8daf2371 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Mon, 4 Aug 2025 06:06:25 -0700 Subject: [PATCH 13/15] Update content/posts/networkx/hacking-shortest-paths/index.md Co-authored-by: Ross Barnowski --- content/posts/networkx/hacking-shortest-paths/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index a8f1e89a..c52ef06c 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -153,7 +153,7 @@ One key limitation of this approach is that **modifying the input graph to encod This size explosion impacts **both memory and runtime performance**. Even if the underlying shortest path algorithm is efficient (e.g., Dijkstra's or A\*), it now operates on a much larger graph, potentially becoming impractical for large scenarios. -Pruning strategies may mitigate this to some extent but there is a trade-off between how accurate we can express constrains vs. the size of the transformed graph. +Pruning strategies may mitigate this to some extent but there is a trade-off between how accurate we can express constraints vs. the size of the transformed graph. For instance, in our node-budget state graph example, modeling all different possible budget values can make the stateful graph explode. One possible pruning strategy could be considering only budgets that are multiple of ten. Which reduces the size of the graph by sacrificing accuracy in the final result (solution becomes an approximation). From 6cda0cac7e5163ac8c0cf1ddcd0a7b354750e911 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Mon, 4 Aug 2025 06:06:34 -0700 Subject: [PATCH 14/15] Update content/posts/networkx/hacking-shortest-paths/index.md Co-authored-by: Ross Barnowski --- content/posts/networkx/hacking-shortest-paths/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index c52ef06c..7c792582 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -155,7 +155,7 @@ This size explosion impacts **both memory and runtime performance**. Even if the Pruning strategies may mitigate this to some extent but there is a trade-off between how accurate we can express constraints vs. the size of the transformed graph. -For instance, in our node-budget state graph example, modeling all different possible budget values can make the stateful graph explode. One possible pruning strategy could be considering only budgets that are multiple of ten. Which reduces the size of the graph by sacrificing accuracy in the final result (solution becomes an approximation). +For instance, in our node-budget state graph example, modeling all different possible budget values can make the stateful graph explode. One possible pruning strategy could be considering only budgets that are multiple of ten. Which reduces the size of the graph by sacrificing accuracy in the final result (the solution becomes an approximation). #### Wrapping Up: Transform the Input, Reuse the Algorithm From 0dc572c99d0a139230756aaa8dbd568004efbc41 Mon Sep 17 00:00:00 2001 From: Alejandro Candioti Date: Mon, 4 Aug 2025 07:13:05 -0700 Subject: [PATCH 15/15] Highlighting pruning tradeoffs --- content/posts/networkx/hacking-shortest-paths/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/posts/networkx/hacking-shortest-paths/index.md b/content/posts/networkx/hacking-shortest-paths/index.md index 7c792582..b474b2ef 100644 --- a/content/posts/networkx/hacking-shortest-paths/index.md +++ b/content/posts/networkx/hacking-shortest-paths/index.md @@ -153,9 +153,9 @@ One key limitation of this approach is that **modifying the input graph to encod This size explosion impacts **both memory and runtime performance**. Even if the underlying shortest path algorithm is efficient (e.g., Dijkstra's or A\*), it now operates on a much larger graph, potentially becoming impractical for large scenarios. -Pruning strategies may mitigate this to some extent but there is a trade-off between how accurate we can express constraints vs. the size of the transformed graph. +**Pruning strategies** may mitigate this to some extent but there is a **trade-off between how accurate we can express constraints vs. the size of the transformed graph**. -For instance, in our node-budget state graph example, modeling all different possible budget values can make the stateful graph explode. One possible pruning strategy could be considering only budgets that are multiple of ten. Which reduces the size of the graph by sacrificing accuracy in the final result (the solution becomes an approximation). +For instance, in our node-budget state graph example, modeling all different possible budget values can make the stateful graph **explode**. One possible pruning strategy could be considering only budgets that are multiple of ten. Which reduces the size of the graph by **sacrificing accuracy** in the final result (the solution becomes an approximation). #### Wrapping Up: Transform the Input, Reuse the Algorithm