\input ../lecnotes.tex
-\prednaska{2}{Toky v sítích (2. èást)}{(zapsali Jakub Melka, Petr Musil)}
+\prednaska{3}{Toky v sítích (2. èást)}{(zapsali Jakub Melka, Petr Musil)}
Na minulé pøedná¹ce jsme si ukázali \s{Ford-Fulkersonùv} algoritmus. O nìm víme, ¾e kdy¾ se zastaví, tak \uv{vydá} maximální tok. Jen¾e on se zastavit nemusí (napøíklad pro sítì s reálnými kapacitami), nebo trvá pøíli¹ dlouho.
+Uká¾eme si lep¹í algoritmus, {\I Dinicùv}, který má výraznì men¹í slo¾itost a zastaví se v¾dy.
-\s{Definice:} Sí» rezerv $R$ k síti $S=(V,E,z,s,c)$ a toku $f$ v $S$ je sí» $R=(V,E\cup\overleftarrow{E}, z,s, r)$, pro $\forall e\in E : $
+
+Idea je následující : v algoritmu budeme pou¾ívat {\I sí» rezerv }, která bude obsahovat \uv{rezervy} - kolik je¹tì po dané hranì mù¾eme pustit, aby to nepøekroèilo její kapacitu.
+Sí» rezerv pak budeme urèitým zpùsobem vyu¾ívat k vylep¹ování toku.
+
+\s{Definice:} {\I Sí» rezerv }$R$ k síti $S=(V,E,z,s,c)$ a toku $f$ v $S$ je sí» $R=(V,E\cup\overleftarrow{E}, z,s, r)$, pro $\forall e\in E : $
\itemize\ibull
-\: $r(e)=c(e)-f(e)$
-\: $r(\overleftarrow{e})=f(e)$
+\:$r(e)=c(e)-f(e)$
+\:$r(\overleftarrow{e})=f(e)$
\endlist
-Kde hrana $\overleftarrow{e}$ vznikne z hrany $e$ tak, ¾e se zorientuje opaèným smìrem. V pøípadì, ¾e tam u¾ opaènì orientovaná hrana je, pak vznikne multigraf\foot{Graf, který mù¾e mít mezi dvìma vrcholy více stejnì orientovaných hran} s multiplikací maximálnì 2.
+\>kde hrana $\overleftarrow{e}$ vznikne z hrany $e$ tak, ¾e se zorientuje opaèným smìrem. V pøípadì, ¾e tam u¾ opaènì orientovaná hrana je, pak vznikne multigraf\foot{Graf, který mù¾e mít mezi dvìma vrcholy více stejnì orientovaných hran} s multiplicitou maximálnì 2.
+
-\s{Vìta:} Je-li $f$ tok v síti $S$ a $g$ tok v pøislu¹né síti rezerv, pak $\exists f'$ v $S$ takový, ¾e $\mid f'\mid = \mid f\mid + \mid g\mid$.
+\>Musíme ale zjistit, zda vùbec jde vylep¹ovat tok pomocí sítì rezerv. K tomu nám bude slou¾it následující vìta :
+
+\s{Vìta:} Je-li $f$ tok v síti $S$ a $g$ tok v pøíslu¹né síti rezerv, pak $\exists f'$ v $S$ takový, ¾e $\vert f'\vert = \vert f\vert + \vert g\vert$.
\proof
Rozebereme si jednotlivé pøípady pro $\forall e\in E$.
\numlist\nalpha
-\: $g(e)=g(\overleftarrow{e})=0 \Rightarrow f'(e)=f(e) $
-\: $g(e)>0$ a zároveò $g(\overleftarrow{e})=0\Rightarrow f'(e) = f(e) + g(e)$
-\: $g(e)=0$ a zároveò $g(\overleftarrow{e})>0\Rightarrow f'(e) = f(e) - g(\overleftarrow{e})$
-\: nastává cirkulace, odeèteme $\varepsilon$ od obou hran $e$ a $\overleftarrow{e}$,
-kde $\varepsilon=\min(\lbrace g(e), g(\overleftarrow{e}) \rbrace )$
+\:$g(e)=g(\overleftarrow{e})=0 \Rightarrow f'(e)=f(e) $
+\:$g(e)>0$ a zároveò $g(\overleftarrow{e})=0\Rightarrow f'(e) = f(e) + g(e)$
+\:$g(e)=0$ a zároveò $g(\overleftarrow{e})>0\Rightarrow f'(e) = f(e) - g(\overleftarrow{e})$
+\:nastává cirkulace, odeèteme tedy $\varepsilon$ od obou hran $e$ a $\overleftarrow{e}$,
+kde $\varepsilon=\min(\lbrace g(e), g(\overleftarrow{e}) \rbrace )$. Pøevedeme tím tento pøípad na jeden ze tøí uvedených vý¹e.
\endlist
Je v¹ak $f'$ tok? Tok $f'$ urèitì nemù¾e klesnout pod $0$, proto¾e se odeèítá jen v pøípadì $3$, a tam je z definice vidìt, ¾e to pod $0$ klesnout nemù¾e. Kapacita také nemù¾e
\qed
+\>Tato vìta nám øíká, ¾e pokud existuje je¹tì tok v síti rezerv, pak jde tok v standardní síti je¹tì zvý¹it o tento tok v síti rezerv. Pokud bude tok v standardní síti maximální, tak tok v síti rezerv bude nulový.
+
\s{Dinicùv algoritmus}
\algo
-\: $f\leftarrow$ nulový tok
-\: sestrojíme sí» rezerv $R$
-\: $l$ je délka nejkrat¹í cesty $z\rightarrow s$ cesty v $R$
-\: kdy¾ $l=\infty$, tak skonèi
-\: sestrojíme proèi¹tìnou sí» $C$\foot{Ponecháme vrcholy a hrany z $R$, které le¾í na nejkrat¹ích $z\rightarrow s$ cestách}
-\: $g\leftarrow$ blokující tok v $C$
-\: zlep¹íme tok $f$ podle $g$ a jdi na bod 2
+\:$f\leftarrow$ nulový tok
+\:sestrojíme sí» rezerv $R$
+\:$l$ je délka nejkrat¹í cesty $z\rightarrow s$ cesty v $R$
+\:kdy¾ $l=\infty$, tak skonèi
+\:sestrojíme proèi¹tìnou sí» $C$ a to následujícím zpùsobem%\foot{Ponecháme vrcholy a hrany z $R$, které le¾í na nejkrat¹ích $z\rightarrow s$ cestách}
+\::spustíme BFS\foot{Breadth-First Search, standardní prohledávání do ¹íøky} algoritmus ze zdroje
+\::BFS nám rozdìlí uzly do vrstev, vyhodíme hrany za spotøebièem a slepé ulièky
+\:$g\leftarrow$ blokující tok v $C$ takto :
+\::$g\leftarrow$ nulový tok
+\::Dokud existuje cesta od zdroje ke spotøebièi
+\:::Nasytíme cestu - po¹leme po ní tolik, aby obsahovala nasycenou hranu
+\:::Sma¾eme nasycené hrany a doèistíme sí» (sí» nyní mù¾e obsahovat slepé ulièky díky smazání nasycených hran)
+\:zlep¹íme tok $f$ podle $g$ a jdeme na bod 2
\endalgo
+\>Provedeme podrobnou analýzu algoritmu z hlediska slo¾itosti, a uvidíme, ¾e má slo¾itost $O(n^2m)$. Nejprve analyzujeme hledání
+blokujícího toku, pak se podíváme, kolik fází maximálnì mù¾e Dinicùv algoritmus mít.
+
\figure{sitc.eps}{Pøíklad proèi¹tìné sítì}{\hsize}
-\s{Postup tvorby proèi¹tìné sítì :} prohledáním do ¹íøky vytvoøíme vrstvy, zahodímì ty za spotøebièem, ponecháme
+\s{Postup tvorby proèi¹tìné sítì podrobnìji :} prohledáním do ¹íøky vytvoøíme vrstvy, zahodíme ty za spotøebièem, ponecháme
pouze hrany mezi $C_i$ a $C_{i+1}$. Je¹tì musíme odstranit slepé ulièky - cesty, které konèí v $C_m : m < l$, proto¾e ty urèitì nejsou souèástí nejkrat¹í $z\rightarrow s$ cesty.
Proèi¹tìní zvládneme v lineárním èase $O(n+m)$, v pøípadì souvislého grafu pouze $O(m)$.
-\s{Definice:} $f$ je blokující tok, pokud na ka¾dé orientované cestì $P$ ze zdroje do spotøebièe $\exists e\in P : f(e)=c(e)$.
+\s{Definice:} $f$ je {\I blokující tok}, pokud na ka¾dé orientované cestì $P$ ze zdroje do spotøebièe $\exists e\in P : f(e)=c(e)$.
\s{Algoritmus hledání blokujícího toku}
\algo
-\: $g\leftarrow$ nulový tok
-\: Dokud $\exists z\rightarrow s$ cesta $P$ v síti $C$ :
-\:: $\varepsilon = \min\limits_{e\in P}\lbrace c(e)-f(e) \rbrace$
-\:: $\forall e \in P :g(e)=g(e)+\varepsilon$, pokud $g(e)=r(e)$ tak sma¾eme hranu $e$ - proèistíme sí».
+\:$g\leftarrow$ nulový tok
+\:Dokud $\exists z\rightarrow s$ cesta $P$ v síti $C$ :
+\::$\varepsilon = \min\limits_{e\in P}\lbrace c(e)-f(e) \rbrace$
+\::$\forall e \in P :g(e)=g(e)+\varepsilon$, pokud $g(e)=r(e)$ tak sma¾eme hranu $e$ - proèistíme sí».
\endalgo
Pøi ka¾dém prùchodu se sma¾e v¾dy alespoò 1 hrana, tedy maximálnì $m$-krát provádíme $O(n)$. Èi¹tìní pak maximálnì sma¾e celý graf, jedno mazání nás stojí konstantní èas, tedy celková slo¾itost tohoto algoritmu bude $O(m\cdot n)$.
\s{Lemma: } Pøi ka¾dé fázi $l$ vzroste alespoò o jedna.
\proof
-Uva¾me sí» $R$, rozdìlenou na vrstvy, je¹tì pøed proèi¹tìním. Po proèi¹tìní, nìkteré hrany zmizí. Pøibýt mohou jen zrcadlové
+Uva¾me sí» $R$, rozdìlenou na vrstvy, je¹tì pøed proèi¹tìním. Po proèi¹tìní nìkteré hrany zmizí. Pøibýt mohou jen zrcadlové
protìj¹ky ji¾ existujících hran (døíve tam byl tok $O$, zvý¹ením vznikne zrcadlová hrana).
Uva¾me cestu $P$ délky $\leq l$ ze $z\rightarrow s$ :
\numlist\nalpha
-\: $\not\in P\Rightarrow$ zablokování
-\: $\in P\Rightarrow$ délka $ > l$
+\:$\not\in P\Rightarrow$ zablokování
+\:$\in P\Rightarrow$ délka $ > l$
\endlist
\qed
Plyne pøímo z pøedchozího lemmatu a slo¾itosti algoritmu hledání blokujícího toku.
\qed
-Takto napsaný algoritmus je pro implementaci pøíli¹ pracný. Napøíklad namísto pøepoèítávání tokù na rezervy a naopak. Mù¾eme
+\s{Vìta: } Dinicùv algoritmus najde v¾dy maximální tok.
+
+\proof
+Nech» algoritmus probìhne. Skonèit mù¾e jedinì tehdy, kdy¾ nenajde ¾ádnou cestu ze zdroje do spotøebièe v síti rezerv, kterou by
+mohl být tok vylep¹en. Tedy tok musí být nutnì maximální.
+\qed
+
+Takto napsaný algoritmus je pro implementaci pøíli¹ pracný. Napøíklad namísto pøepoèítávání tokù na rezervy a naopak, mù¾eme
minimálnì vnitøní cyklus poèítat jenom v rezervách. Proèi¹tìní se dá dìlat jednou namísto $2\times$. Napøíklad prohledávat do hloubky a mazat pøi vracení se z vrcholù. Dokonce i hledání blokujícího toku lze øe¹it v rámci prohledávání do hloubky,
cesta si pamatuje minimum rezerv a pøi vracení se pak hned rezervu sni¾uje.
--- /dev/null
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 475 173
+%%Pages: 0
+%%Creator: Sun Microsystems, Inc.
+%%Title: none
+%%CreationDate: none
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+%%BeginResource: SDRes
+/b4_inc_state save def
+/dict_count countdictstack def
+/op_count count 1 sub def
+userdict begin
+0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit[] 0 setdash newpath
+/languagelevel where {pop languagelevel 1 ne {false setstrokeadjust false setoverprint} if} if
+/bdef {bind def} bind def
+/c {setgray} bdef
+/l {neg lineto} bdef
+/rl {neg rlineto} bdef
+/lc {setlinecap} bdef
+/lj {setlinejoin} bdef
+/lw {setlinewidth} bdef
+/ml {setmiterlimit} bdef
+/ld {setdash} bdef
+/m {neg moveto} bdef
+/ct {6 2 roll neg 6 2 roll neg 6 2 roll neg curveto} bdef
+/r {rotate} bdef
+/t {neg translate} bdef
+/s {scale} bdef
+/sw {show} bdef
+/gs {gsave} bdef
+/gr {grestore} bdef
+/f {findfont dup length dict begin
+{1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def
+currentdict end /NFont exch definefont pop /NFont findfont} bdef
+/p {closepath} bdef
+/sf {scalefont setfont} bdef
+/ef {eofill}bdef
+/pc {closepath stroke}bdef
+/ps {stroke}bdef
+/pum {matrix currentmatrix}bdef
+/pom {setmatrix}bdef
+/bs {/aString exch def /nXOfs exch def /nWidth exch def currentpoint nXOfs 0 rmoveto pum nWidth aString stringwidth pop div 1 scale aString show pom moveto} bdef
+%%EndResource
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%EndPageSetup
+pum
+0.02833 0.02826 s
+0 -6120 t
+/tm matrix currentmatrix def
+gs
+tm setmatrix
+-601 -423 t
+1 1 s
+601 423 m 17365 423 l 17365 6542 l 601 6542 l 601 423 l eoclip newpath
+gs
+601 423 m 17365 423 l 17365 6542 l 601 6542 l 601 423 l eoclip newpath
+601 423 m 17366 423 l 17366 6543 l 601 6543 l 601 423 l eoclip newpath
+0 lw 1 lj 0.000 c 3569 5040 m 3293 5040 3069 4256 3069 3290 ct 3069 2324 3293 1540 3569 1540 ct
+3845 1540 4069 2324 4069 3290 ct 4069 4256 3845 5040 3569 5040 ct pc
+5603 5040 m 5327 5040 5103 4256 5103 3290 ct 5103 2324 5327 1540 5603 1540 ct
+5879 1540 6103 2324 6103 3290 ct 6103 4256 5879 5040 5603 5040 ct pc
+7702 5040 m 7426 5040 7202 4256 7202 3290 ct 7202 2324 7426 1540 7702 1540 ct
+7978 1540 8202 2324 8202 3290 ct 8202 4256 7978 5040 7702 5040 ct pc
+12162 5040 m 11886 5040 11662 4256 11662 3290 ct 11662 2324 11886 1540 12162 1540 ct
+12438 1540 12662 2324 12662 3290 ct 12662 4256 12438 5040 12162 5040 ct pc
+14123 5040 m 13847 5040 13623 4256 13623 3290 ct 13623 2324 13847 1540 14123 1540 ct
+14399 1540 14623 2324 14623 3290 ct 14623 4256 14399 5040 14123 5040 ct pc
+1751 3540 m 1613 3540 1501 3428 1501 3290 ct 1501 3152 1613 3040 1751 3040 ct
+1889 3040 2001 3152 2001 3290 ct 2001 3428 1889 3540 1751 3540 ct pc
+gs
+gs
+pum
+1580 3509 t
+12 0 m 12 0 12 0 12 -45 ct 12 -45 12 -45 221 -287 ct 197 -286 176 -285 158 -285 ct
+158 -285 158 -285 24 -285 ct 24 -285 24 -285 24 -330 ct 24 -330 24 -330 293 -330 ct
+293 -330 293 -330 293 -293 ct 293 -293 293 -293 115 -84 ct 115 -84 115 -84 81 -45 ct
+106 -47 129 -48 151 -48 ct 151 -48 151 -48 303 -48 ct 303 -48 303 -48 303 0 ct
+303 0 303 0 12 0 ct p ef
+pom
+gr
+gr
+15851 3540 m 15713 3540 15601 3428 15601 3290 ct 15601 3152 15713 3040 15851 3040 ct
+15989 3040 16101 3152 16101 3290 ct 16101 3428 15989 3540 15851 3540 ct pc
+gs
+gs
+pum
+15682 3509 t
+20 -100 m 20 -100 20 -100 75 -107 ct 78 -85 87 -68 101 -57 ct 115 -45 135 -39 161 -39 ct
+187 -39 206 -44 218 -55 ct 231 -65 237 -77 237 -91 ct 237 -104 231 -114 220 -121 ct
+213 -126 193 -132 163 -140 ct 122 -150 93 -159 77 -167 ct 61 -174 49 -185 41 -198 ct
+33 -211 29 -226 29 -242 ct 29 -257 32 -270 39 -283 ct 46 -295 55 -306 67 -314 ct
+75 -320 87 -326 102 -330 ct 117 -335 134 -337 151 -337 ct 177 -337 200 -333 219 -326 ct
+239 -318 253 -308 263 -296 ct 272 -283 278 -266 282 -245 ct 282 -245 282 -245 227 -238 ct
+225 -255 217 -268 205 -277 ct 193 -286 177 -291 155 -291 ct 129 -291 111 -287 100 -278 ct
+89 -270 83 -260 83 -249 ct 83 -241 85 -235 90 -229 ct 94 -223 102 -218 111 -214 ct
+117 -212 133 -208 161 -200 ct 201 -190 228 -181 244 -174 ct 260 -167 272 -158 281 -145 ct
+290 -132 294 -116 294 -97 ct 294 -79 289 -61 278 -45 ct 267 -28 251 -15 231 -6 ct
+210 3 187 7 161 7 ct 118 7 85 -2 63 -20 ct 41 -38 26 -65 20 -100 ct p ef
+pom
+gr
+gr
+3576 2273 m 3507 2273 3451 2217 3451 2148 ct 3451 2079 3507 2023 3576 2023 ct
+3645 2023 3701 2079 3701 2148 ct 3701 2217 3645 2273 3576 2273 ct p ef
+3576 2273 m 3507 2273 3451 2217 3451 2148 ct 3451 2079 3507 2023 3576 2023 ct
+3645 2023 3701 2079 3701 2148 ct 3701 2217 3645 2273 3576 2273 ct pc
+gs
+gs
+pum
+9809 3509 t
+56 0 m 56 -64 l 120 -64 l 120 0 l 56 0 l p ef
+234 0 m 234 -64 l 298 -64 l 298 0 l 234 0 l p ef
+412 0 m 412 -64 l 476 -64 l 476 0 l 412 0 l p ef
+pom
+gr
+gr
+3576 3173 m 3507 3173 3451 3117 3451 3048 ct 3451 2979 3507 2923 3576 2923 ct
+3645 2923 3701 2979 3701 3048 ct 3701 3117 3645 3173 3576 3173 ct p ef
+3576 3173 m 3507 3173 3451 3117 3451 3048 ct 3451 2979 3507 2923 3576 2923 ct
+3645 2923 3701 2979 3701 3048 ct 3701 3117 3645 3173 3576 3173 ct pc
+3576 4473 m 3507 4473 3451 4417 3451 4348 ct 3451 4279 3507 4223 3576 4223 ct
+3645 4223 3701 4279 3701 4348 ct 3701 4417 3645 4473 3576 4473 ct p ef
+3576 4473 m 3507 4473 3451 4417 3451 4348 ct 3451 4279 3507 4223 3576 4223 ct
+3645 4223 3701 4279 3701 4348 ct 3701 4417 3645 4473 3576 4473 ct pc
+5576 2473 m 5507 2473 5451 2417 5451 2348 ct 5451 2279 5507 2223 5576 2223 ct
+5645 2223 5701 2279 5701 2348 ct 5701 2417 5645 2473 5576 2473 ct p ef
+5576 2473 m 5507 2473 5451 2417 5451 2348 ct 5451 2279 5507 2223 5576 2223 ct
+5645 2223 5701 2279 5701 2348 ct 5701 2417 5645 2473 5576 2473 ct pc
+5576 4273 m 5507 4273 5451 4217 5451 4148 ct 5451 4079 5507 4023 5576 4023 ct
+5645 4023 5701 4079 5701 4148 ct 5701 4217 5645 4273 5576 4273 ct p ef
+5576 4273 m 5507 4273 5451 4217 5451 4148 ct 5451 4079 5507 4023 5576 4023 ct
+5645 4023 5701 4079 5701 4148 ct 5701 4217 5645 4273 5576 4273 ct pc
+7676 2673 m 7607 2673 7551 2617 7551 2548 ct 7551 2479 7607 2423 7676 2423 ct
+7745 2423 7801 2479 7801 2548 ct 7801 2617 7745 2673 7676 2673 ct p ef
+7676 2673 m 7607 2673 7551 2617 7551 2548 ct 7551 2479 7607 2423 7676 2423 ct
+7745 2423 7801 2479 7801 2548 ct 7801 2617 7745 2673 7676 2673 ct pc
+7676 4073 m 7607 4073 7551 4017 7551 3948 ct 7551 3879 7607 3823 7676 3823 ct
+7745 3823 7801 3879 7801 3948 ct 7801 4017 7745 4073 7676 4073 ct p ef
+7676 4073 m 7607 4073 7551 4017 7551 3948 ct 7551 3879 7607 3823 7676 3823 ct
+7745 3823 7801 3879 7801 3948 ct 7801 4017 7745 4073 7676 4073 ct pc
+14076 3373 m 14007 3373 13951 3317 13951 3248 ct 13951 3179 14007 3123 14076 3123 ct
+14145 3123 14201 3179 14201 3248 ct 14201 3317 14145 3373 14076 3373 ct p ef
+14076 3373 m 14007 3373 13951 3317 13951 3248 ct 13951 3179 14007 3123 14076 3123 ct
+14145 3123 14201 3179 14201 3248 ct 14201 3317 14145 3373 14076 3373 ct pc
+12176 2473 m 12107 2473 12051 2417 12051 2348 ct 12051 2279 12107 2223 12176 2223 ct
+12245 2223 12301 2279 12301 2348 ct 12301 2417 12245 2473 12176 2473 ct p ef
+12176 2473 m 12107 2473 12051 2417 12051 2348 ct 12051 2279 12107 2223 12176 2223 ct
+12245 2223 12301 2279 12301 2348 ct 12301 2417 12245 2473 12176 2473 ct pc
+12176 4073 m 12107 4073 12051 4017 12051 3948 ct 12051 3879 12107 3823 12176 3823 ct
+12245 3823 12301 3879 12301 3948 ct 12301 4017 12245 4073 12176 4073 ct p ef
+12176 4073 m 12107 4073 12051 4017 12051 3948 ct 12051 3879 12107 3823 12176 3823 ct
+12245 3823 12301 3879 12301 3948 ct 12301 4017 12245 4073 12176 4073 ct pc
+3451 2148 m 3122 2490 l 2983 2224 l 3451 2148 l p ef
+1 lw 0 lj 1750 3040 m 3132 2315 l ps
+3576 3173 m 3159 3399 l 3107 3104 l 3576 3173 l p ef
+1927 3466 m 3222 3236 l ps
+3451 4348 m 2986 4252 l 3137 3993 l 3451 4348 l p ef
+1927 3466 m 3139 4168 l ps
+5451 4148 m 5050 4402 l 4978 4110 l 5451 4148 l p ef
+3922 4526 m 5102 4234 l ps
+5451 2348 m 5089 2654 l 4977 2376 l 5451 2348 l p ef
+3701 3048 m 5117 2482 l ps
+7676 2673 m 7405 3062 l 7226 2822 l 7676 2673 l p ef
+5701 4148 m 7388 2888 l ps
+7551 3948 m 7113 3767 l 7309 3540 l 7551 3948 l p ef
+5701 2348 m 7279 3713 l ps
+7676 2423 m 7221 2556 l 7232 2256 l 7676 2423 l p ef
+5701 2348 m 7316 2409 l ps
+14076 3123 m 13604 3080 l 13724 2805 l 14076 3123 l p ef
+12301 2348 m 13746 2979 l ps
+13951 3248 m 13595 3562 l 13478 3286 l 13951 3248 l p ef
+12301 3948 m 13620 3389 l ps
+15601 3289 m 15147 3426 l 15156 3126 l 15601 3289 l p ef
+14201 3248 m 15241 3278 l ps
+5451 2348 m 4987 2446 l 5021 2148 l 5451 2348 l p ef
+3701 2148 m 5093 2307 l ps
+gr
+gs
+601 423 m 17365 423 l 17365 6542 l 601 6542 l 601 423 l eoclip newpath
+gr
+gr
+0 6120 t
+pom
+count op_count sub {pop} repeat countdictstack dict_count sub {end} repeat b4_inc_state restore
+%%PageTrailer
+%%Trailer
+%%EOF