From: Martin Mares Date: Wed, 31 Oct 2007 08:32:29 +0000 (+0100) Subject: Prednaska o Dinicove algoritmu dosahla sve prvni verze. X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=474c5ac87584bb44ba13762c4f7722d3223e2338;p=ads2.git Prednaska o Dinicove algoritmu dosahla sve prvni verze. --- diff --git a/3-dinic/3-dinic.tex b/3-dinic/3-dinic.tex index d6cb670..181b24d 100644 --- a/3-dinic/3-dinic.tex +++ b/3-dinic/3-dinic.tex @@ -1,26 +1,34 @@ \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 @@ -28,33 +36,44 @@ b \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)$. @@ -63,13 +82,13 @@ P \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 @@ -79,7 +98,14 @@ Uva 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. diff --git a/3-dinic/sitc.eps b/3-dinic/sitc.eps new file mode 100644 index 0000000..ef69b1f --- /dev/null +++ b/3-dinic/sitc.eps @@ -0,0 +1,192 @@ +%!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 diff --git a/all/Makefile b/all/Makefile index c7017eb..4a84909 100644 --- a/all/Makefile +++ b/all/Makefile @@ -1,5 +1,5 @@ P=ads2 -X:=$(shell for a in 1 2 ; do echo ../$$a-*/$$a-*.tex ; done) +X:=$(shell for a in 1 2 3 ; do echo ../$$a-*/$$a-*.tex ; done) %universe: all ChangeLog