]> mj.ucw.cz Git - ads1.git/commitdiff
Pridana druha prednaska, nulta verze.
authorMartin Mares <mj@ucw.cz>
Wed, 25 Apr 2007 18:13:22 +0000 (20:13 +0200)
committerMartin Mares <mj@ucw.cz>
Wed, 25 Apr 2007 18:13:22 +0000 (20:13 +0200)
2-rozdel/2-rozdel.tex [new file with mode: 0644]
2-rozdel/Makefile [new file with mode: 0644]
2-rozdel/figure1.eps [new file with mode: 0644]
2-rozdel/figure2.eps [new file with mode: 0644]

diff --git a/2-rozdel/2-rozdel.tex b/2-rozdel/2-rozdel.tex
new file mode 100644 (file)
index 0000000..d72b13f
--- /dev/null
@@ -0,0 +1,330 @@
+\input ../lecnotes.tex
+
+\prednaska{2}{Rozdìl a panuj}{(zapsali J. Záloha a P. Ba¹ista)}
+
+\s{O èem bude dne¹ní pøedná¹ka?} Pøevá¾nì o metodì Rozdìl a panuj (\>{\sl Divide et Impera})
+
+\noindent
+Pro porovnávání algoritmù si musíme zavést nìjaké kritérium. Vìt¹inou se zajímáme o èas a pamìt, které spotøebují pro svùj bìh. Proto, abychom v¹ak mohli takto algoritmy porovnávat bez ohledu na prostøedí, stroj a podobné vìci, zavádíme takzvanou $O$ notaci.
+
+\s{Definice:} Pøedpokládejme, ¾e funkce, které porovnávame jsou dle následujícího pøedpisu:
+
+$f:{N} \rightarrow {R}^{+}$
+
+\noindent
+Potom øekneme, ¾e$ f(n) $ je $ O(g(n))$ právì tehdy kdy¾ existuje nìjaké $c>0: \forall ^{*} n \in {N}: f(n) \leq c.g(n)$
+
+\>{\sl Poznámka:} $ \forall ^{*} n$ znamená $\exists n_{0}: \forall n \geq n_{0} :$. Nebo je¹tì jinak: výrok platí pro v¹echna $n$ a¾ na koneèný poèet vyjímek. Tato definice tedy øíká, ¾e funkci $f(n)$ je mo¾né ohranièit shora nìjakým reálným násobkem funkce $g(n)$ pro $\forall n \in N$. Èasto zapisujeme $f(n)=O(g(n))$ - jedná se o za¾itou vìc, ale uvìdomme si v¹ak, ¾e tento zápis neoznaèuje rovnost! (proto¾e platí napøíklad $\log{n}=O(n)$ ale neplatí $n=O(\log{n})$ To znamená, ¾e neplatí symetrie, odtud vyplývá, ¾e nemù¾e jít o rovnost). Ale: "Je to èuòaèina." Formálnì jde o nìjakou mno¾inu nebo tøídu funkcí $f(n)$, pro které platí, ¾e se dají shora ohranièit kladným reálným násobkem funkce $g(n)$. A potom pí¹eme $f \in O(g)$.
+
+napøíklad:
+
+$$
+2,5n^{2} \dots O(n^{2})
+$$
+$$
+2,5n^{2}+30n \dots O(n^{2})
+$$
+
+Platí:
+
+$$
+O(f)+O(g)=O(f+g)
+$$
+
+proto¾e:
+
+$$
+f^{\prime} \leq c.f
+$$
+$$
+g^{\prime} \leq d.g
+$$
+$$
+f^{\prime} + g^{\prime} \leq c.f+d.g \leq (c+d).(f+g)
+$$
+
+\noindent
+A zde vidíme, ¾e $(c+d)$ se schová do $O$. Naprosto stejnì se doká¾e odobný vztah také pro násobení:
+
+$$
+O(f).O(g)=O(f.g)
+$$
+
+Rovnì¾ platí:
+
+$$
+O(f+g)=O(max(f,g))
+$$
+
+\noindent
+nebot libovolný $n$-násobek funkce s exponentem $k$ je v¾dy asymmptoticky men¹í ne¾ $n$ násobek funkce s exponentem $l>k$.
+To nám umo¾nuje zanedbávat pomaleji rostoucí èleny:
+
+$$
+O(n^{2})+O(n)=O(n^{2}+n)=O(n^{2})
+$$
+
+\noindent
+$O$ notace v¹ak popisuje nejhor¹í pøípad. U nìkterých algoritmù nejhor¹í, nejlep¹í a tudí¾ i prùmìrný pøípad splývají. Je ale mnoho algoritmù, které se v tìchto parametrech diametrálnì li¹í, proto zavádíme dal¹í notace.
+
+
+\s{Definice:}
+
+\itemize\ibull
+\:$f(n)$ je $\Omega(g(n)) \Longleftrightarrow \exists c>0: \forall ^{*} n \in {N}: f(n) \geq c.g(n)$
+$\Omega$ notace øíká, ¾e algoritmus se v¾dy chová stejnì èi lépe ne¾ nìjaký $c$-násobek funkce $g$.
+\:$f(n)$ je $\Theta(g(n)) \Longleftrightarrow f(n)$ je $O(g(n)) \wedge f(n) $ je $ \Omega(g(n))$
+
+nebo:
+
+$f(n)$ je $\Theta(g(n)) \Longleftrightarrow \exists c_{1},c_{2}: c_{1}.g(n) \leq f(n) \leq c_{2}.g(n)$
+existují-li nezáporné konstanty $c_{1},c_{2}$ takové, ¾e se funkce $f(n)$ dá ohranicit $c_{1}$ a $c_{2}$ násobky funkce $g(n)$
+\endlist
+
+\noindent
+$\Theta$ notace tedy vyjadøuje, ¾e nejlep¹í a nejhor¹í pøípad chování algoritmu jsou stejné tøídy, li¹í se nanejvý¹ multiplikativní konstantou.
+
+\s{Porovnání rùstu funkcí:} (aneb jak moc máme algoritmy rádi podle jejich chování od nejlep¹ích k nejhor¹ím)
+
+\itemize\ibull
+\: $\Theta(1) \ldots$ funkce zespoda i shora ohranièené konstantami
+\: $\Theta(\log{( \log{n} )})$
+\: $\Theta(\log{n})$
+\: $\Theta(n^{\varepsilon}), \varepsilon \in (0,1)$
+\: $\Theta(n)$
+\: $\Theta(n^{2})$
+
+$\vdots$
+
+\: $\Theta(n^{k}), k \in {N}$
+
+$\vdots$
+
+\: $\Theta(2^{n})$
+\: $\Theta(3^{n})$
+
+$\vdots$
+
+\: $\Theta(k^{n}), k \in {R}^{+}, k > 1$
+
+$\vdots$
+
+\: $\Theta(n!)$
+
+$\vdots$
+
+\: $\Theta(n^{n})$
+\endlist
+
+\>{\sl Poznámka:} Pøi logaritmech a odhadech slo¾itosti se dá v¾dy hovoøit o logaritmu s libovolným základem, proto¾e platí:
+$$
+\log_k{n}={{\log_c{n}}\over{\log_c{k}}}={{1}\over{\log_c{k}}}.\log_c{n}
+$$
+kde ${1}\over{\log_c{k}}$ je jen konstanta, tak¾e ji mù¾eme zanedbat.
+
+\>{\sl Pøíklady:}
+
+\s{Eukleidùv algoritmus:} Pokd jej pustím na 2 èísla o $n$ bitech, potom poèet iterací bude $O(n)$, ka¾dá iterace trvá $O(n^{2})$ krokù. Tak¾e celkovì má tento algoritmus èasovou slo¾itost: $O(n^{3})$
+
+\s{Rozdìl a panuj:} A nyní pøestaòme chodit okolo horké ka¹e a øekòeme si, co to ono vý¹e zmiòované ``rozdìl a panuj'' znamená. Mìjme nìjaký problém, který má tu vlastnost, ¾e kdy¾ jej rozdìlím na nìjaké podproblémy, které mají stejný charakter a ty  vyøe¹ím, tak slo¾ením jejich øe¹ení získám øe¹ení pùvodního problému. Ten po¾adavek na stejný charakter je podstatný, nebot nám umo¾ní se podívat na tyto podproblémy pod stejným úhlem a opìt je rozdìlit na ``podpodproblémy'' a tak dále, a¾ se dostanu na úroveò, kterou je mo¾né vyøe¹it triviálnì, popøípadì jiným ménì nároèným zpùsobem, teï je provedeno rozdìlení. Po jejich vyøe¹ení se zaènu vynoøovat z logické rekurze a na jednotlivých hladinách skládám øe¹ení, a¾ se octnu na hladinì pùvodního problému, tu slo¾ím a u¾ mohu panovat.
+
+\s{Odboèka:} \>{\sl (Mergesort)} Pøi prùbìhu algoritmu mergesort nejprve rozdìlujeme vstup na dvì ``stejnì'' (v hor¹ím pøípadì a¾ na jednotku) velká pole. To nám zabere na ka¾dé hladinì konstantní práci: 
+$T(1) \dots O(1)$. 
+
+\noindent
+Kdy¾ se v¹ak vynoøujeme z logické rekurze, musíme na ka¾dé hladinì strávit linárnì èasu sluèováním: 
+$T(n)=2.T({{n}\over{2}})+O(n)$
+
+\s{Strom volání: }
+
+\figure{figure1.eps}{Strom volání}{2in}
+
+\noindent
+Souèet práce pøes jednu hladinu stromu je $O(n)$. A jedodu¹e odvodíme, ¾e celkový poèet hladin je $O(\log{n})$, tudí¾ jsme si ukázali slo¾itost $O(n\log(n))$.
+
+\s{Rychlej¹í algoritmus pro násobení:} \>{\sl (rychlej¹í ne¾ $O(n^{2})$)} Pokud násobíme dvì èísla zpùsobem, který nás uèili na základní ¹kole, dostaneme se na èasovou slo¾itost $O(n^2)$. Proto¾e se jedná o dost èastou operaci, zamyslíme se, jestli by ne¹la zjednodu¹it. Nasmìrujme na¹e úvahy na postup ``rozdìl a panuj''. Rozdìlíme ka¾dého èinitele na dvì stejnì dlouhé èásti a pro jednoduchost pøedpokládejme, ¾e dìlení probìhne v¾dy bez zbytku:
+
+$$
+X=A.10^{{n}\over{2}}+B
+$$
+$$
+Y=C.10^{{n}\over{2}}+D
+$$
+
+\noindent
+Potom získáme výsledek pùvodního výrazu jako:
+
+\noindent
+$X.Y=(A.10^{{n}\over{2}}+B).(C.10^{{n}\over{2}}+D)=A.C.10^{n}+A.D.10^{{n}\over{2}}+B.C.10^{{n}\over{2}}+B.D=A.C.10^{n}+(A.D+B.C).10^{{n}\over{2}}+B.D$
+
+\noindent
+Nyní, jak vidíme, staèí spoèítat souèin ètyø ${n}\over{2}$ ciferných císel. Spoèítejme, jak se tím zmìní celková èasová slo¾itost:
+
+\noindent
+$T(n)=4.T({{n}\over{2}})+O(n)=4.T({{n}\over{2}})+c.n=4.(4.T({{n}\over{4}})+c.{{n}\over{2}})+c.n=4^{2}.T({{n}\over{4}})+2.c.n+c.n=4^{2}.T({{n}\over{4}})+3.c.n=4^{2}.(4.T({{n}\over{8}})+c.{{n}\over{4}})+3.c.n=4^{3}.T({{n}\over{8}})+4.c.n+3.c.n=4^{3}.T({{n}\over{8}})+7.c.n=\ldots$
+
+\noindent
+takto bychom mohli pokraèovat dále, a¾ bychom se dostali na:
+
+$$
+T(n)=4^{4}.T({{n}\over{16}})+15.c.n
+$$
+$$
+T(n)=4^{5}.T({{n}\over{32}})+31.c.n
+$$
+$$
+\vdots
+$$
+Odtud mù¾eme vypozorovat, ¾e se vztah pro $T(n)$ vyvíjí zøejmì podle vzorce:
+$$
+T(n)=4^{k}.T({{n}\over{2^{k}}})+2^{k-1}.c.n+2^{k-2}.c.n+2^{k-3}.c.n+2^{k-4}.c.n+\ldots+2^{0}.c.n
+$$
+$$
+T(n)=4^{k}.T({{n}\over{2^{k}}})+(2^{k}-1).c.n
+$$
+kde k je poèet vìtvení a n je velikost úlohy. Kdy¾ uvá¾íme, ¾e se strom volaní v¾dy vìtví pravidelnì na dva podstromy, tak platí: $k \approx \log{n}$. Kdy¾ dosadíme:
+$$
+T(n)=4^{\log{n}}.T({{n}\over{2^{\log{n}}}})+(2^{\log{n}}-1).c.n
+$$
+$$
+T(n)=2^{\log{n}}.2^{\log{n}}.T({{n}\over{2^{\log{n}}}})+(2^{\log{n}}-1).c.n
+$$
+$$
+T(n)=n.n.T({{n}\over{n}})+(n-1).c.n
+$$
+$$
+T(n)=n^{2}.T(1)+(n-1).n.c
+$$
+$$
+T(n) \doteq n^{2}.(T(1)+c)
+$$
+Pokud $T(1)$ a $c$ jsou konstanty, mù¾eme psát: $T(n)$ je $O(n^{2})$. Tak¾e jsme si pøíli¹ nepomohli, proto¾e i klasický algoritmus na násobení má kvadratickou èasovou slo¾itost. Podívejme se v¹ak, jako vypadá tabulka vìtvení pro daný algoritmus:
+
+\medskip
+
+\vbox{\halign{# \quad \vrule \quad & # \quad \vrule \quad & #\cr
+poèet vìtvení & poèet úloh & velikost podúlohy\cr
+\noalign{\medskip\hrule\bigskip}
+0 & $4^{0}$ & ${n}\over{2^{0}}$\cr
+1 & $4^{1}$ & ${n}\over{2^{1}}$\cr
+2& $4^{2}$ & ${n}\over{2^{2}}$\cr
+3 & $4^{3}$ & ${n}\over{2^{3}}$\cr
+\vdots & \vdots & \vdots\cr
+k & $4^{k}$ & ${n}\over{2^{k}}$\cr}}
+
+\medskip
+
+\noindent
+Naskýtá se otázka, jestli bychom nemohli, kdy¾ se pozornì zamyslíme, èasovou nároènost zlep¹it. Existuje nìkolik mo¾ností:
+- zlep¹it èlen $O(n) \ldots c.n$, to znamená zlep¹it èas spojování podúloh $\rightarrow$ to v¹ak rychleji nejde (pokud ètenáø nevìøí, mù¾e si dokázat)
+- sní¾it poèet vìtvení $\rightarrow$ nech» se algoritmus nevìtví na $4$ vìtve, ale na ménì. To, ale jak dále uvidíme u¾ mo¾né je\vdots Staèí si uvìdomit, ¾e vlastnì potøebujeme spoèítat:
+$$
+X.Y=A.C.10^{n}+(A.D+B.C).10^{{n}\over{2}}+B.D
+$$
+Pøièem¾ ale nepotøebujeme znát souèiny $A.D$ ani $B.C$ samostatnì, nebo» nám staèí zjistit èlen $A.D+B.C$. Jako kdybychom poèítali $A.C$, $B.D$ a potom $(A+B).(C+D)=A.C+A.D+B.C+B.D$, tak odèítáním $(A.D+B.C)$ od $A.C+A.D+B.C+B.D$ dostaneme hledaný prostøední èlen: $A.D+B.C$, který potøebujeme, abychom spoèetli $X.Y$. Nyní nám ji¾ staèí jen tøi násobení, jedno sèítání a jedno odèítání navíc.Otázka je, zda-li to bude výhodné. Sèítání i odèítání nám zaberou nanejvý¹e lineární èas, tak¾e to skuteènì je výhodná úprava. Jak se tím zmìní výsledný èas? Podívejme se opìt na tabulku vìtvení:
+
+\medskip
+
+\vbox{\halign{# \quad \vrule \quad & # \quad \vrule \quad & #\cr
+poèet vìtvení & poèet úloh & velikost podúlohy\cr
+\noalign{\medskip\hrule\bigskip}
+0 & $3^{0}$ & ${n}\over{2^{0}}$\cr
+1 & $3^{1}$ & ${n}\over{2^{1}}$\cr
+2& $3^{2}$ & ${n}\over{2^{2}}$\cr
+3 & $3^{3}$ & ${n}\over{2^{3}}$\cr
+\vdots & \vdots & \vdots\cr
+k & $3^{k}$ & ${n}\over{2^{k}}$\cr}}
+
+\medskip
+
+\noindent
+Spoèítejme si práci,která se musí udìlat na jedné hladinì. Pøedpokládejme, ¾e $k \approx \log{n}$. Dostávame:
+$$\sum_{k=0}^{n}3^{k}.{{n}\over{2^{k}}}=\sum_{k=0}^{n} \left( {{3}\over{2}} \right) ^{k}.n=n.\sum_{k=0}^{n} \left( {{3}\over{2}} \right) ^{k}=n.{{ \left( {{3}\over{2}} \right) ^{k+1}-1}\over{{{3}\over{2}}-1}}=
+$$
+$$
+=n{{ \left( {3}\over{2} \right) ^{\log{n}+1}-1}\over{{{1}\over{2}}}}=2.n. \left[ \left( {{3}\over{2}} \right) ^{\log{n}+1}-1 \right] \approx O \left( n. \left( {{3}\over{2}} \right) ^{\log{n}} \right) =
+$$
+$$
+=O \left( n.{{3^{\log{n}}}\over{2^{\log{n}}}} \right)=O \left( n.{{3^{\log{n}}}\over{n}} \right)=O \left( 3^{\log_2{n}} \right)=O \left( (2^{\log_2{3}})^{\log_2{n}} \right)=
+$$
+$$
+=O \left( 2^{\log_2{n}.\log_2{3}} \right)=O \left( (2^{\log_2{n}})^{\log_2{3}} \right)=O \left( n^{\log_2{3}} \right) \doteq O \left( n^{1,585} \right)
+$$
+Z toho vyplývá, ¾e jsme na¹li algoritmus s èasovou slo¾itostí men¹í ne¾ $O(n^{2})$. "Rozumné" implementace tohoto algoritmu jsou v¹ak trochu modifikované, a to tak, ¾e se rekuzivnì nevolají a¾ na jednociferná èísla, ale asi na 50 ciferná, a ty u¾ násobí standardním zpùsobem, nebo» re¾ie algoritmu není nulová a takto se dosahuje nejlep¹ích výsledkù.
+
+\noindent
+Pro násobení èísel existuje je¹tì efektívnìj¹í algoritmus, který má èasovou slo¾itost $O(n.\log{n})$, av¹ak tento u¾ vyu¾ívá rùzné pokroèilé techniky jako diskrétní Fourierova transformáce a podobnì, tak¾e jej zde nebudeme rozebírat.
+
+\s{Vìta:} \>{\sl (Master Theorem)}
+
+\noindent
+Pokud $T(1)=O(1)$ a $T(n)=a.T(\lceil {{n}\over{b}} \rceil)+O(n^d)$, kde $a \geq 1$, $b>1$ a $d \geq 0$, potom $T(n)$ je:
+\halign{#&#\cr
+$O(n^d)$ & kdy¾ $a<b^d$\cr
+$O(n^d.\log{n})$ & kdy¾ $a=b^d$\cr
+$O(n^{\log_a{b}})$ & kdy¾ $a>b^d$\cr}
+
+
+\proof \>{\sl 1. pøípad: }Pøedpokládejme nejdøíve, ¾e $n=b^x, x \in {N}$, aby platilo $\lceil {{n}\over{b}} \rceil = {n}\over{b}$. Uká¾eme si "dùkaz stromem":
+
+\figure{figure2.eps}{Dùkaz stromem}{4in}
+
+\noindent
+Jak vidíme, strom sa v¾dy vìtví na stejný poèet vìtví - oznaème si jejich poèet $a$ a sestavme si tabulku vìtvení:
+
+\medskip
+
+\vbox{\halign{# \quad \vrule \quad & # \quad \vrule \quad & #\cr
+poèet vìtvení & velikost podúlohy & èas potøebný na vyøe¹ení v¹ech podúloh\cr
+\noalign{\medskip\hrule\bigskip}
+$1$ & $n$ & $O(n^d)$\cr
+$a$ & ${n}\over{b^1}$ & $O(({{n}\over{b^1}})^d).a^1$\cr
+$a^2$ & ${n}\over{b^2}$ & $O(({{n}\over{b^2}})^d).a^2$\cr
+$a^3$ & ${n}\over{b^3}$ & $O(({{n}\over{b^3}})^d).a^3$\cr
+\vdots & \vdots & \vdots\cr
+$a^k$ & ${n}\over{b^k}$ & $O(({{n}\over{b^k}})^d).a^k$\cr}}
+
+\medskip
+
+\noindent
+Zkoumejme èas potøebný na vyøe¹ení v¹ech podúloh na jedné hladinì: 
+$$
+O \left(  \left( {{n}\over{b^k}} \right) ^d \right) .a^k=O \left( a^k.n^d \left( {{1}\over{b^k}} \right) ^d \right)=O \left( a^k.n^d \left( {{1}\over{b^d}} \right) ^k \right)=O \left( n^d \left( {{a}\over{b^d}} \right) ^k \right)
+$$
+Celkem je tedy èas potøebný na vyøe¹ení v¹ech podúloh na v¹ech hladinách (to znamená celé úlohy):
+$$
+T(n)=\sum_{k=0}^{\log_b{n}}O \left( n^d \left( {{a}\over{b^d}} \right) ^k \right)=O \left( n^d \sum_{k=0}^{\log_b{n}} \left( {{a}\over{b^d}} \right) ^k \right)
+$$
+V¹imnìme si výrazu ${a}\over{b^d}$. Na jeho hodnotì závisí hodnota výsledné sumy, proto¾e se vlastnì jedná o kvocient geometrické posloupnosti. Proto rozli¹me následující pøípady:
+
+\>{\I 1} ${a}\over{b^d}<1$ jinými slovy, práce na jednotlivých hladinách exponenciálnì ubývá a souèet sumy se dá omezit nìjakou konstantou, která se schvá do $O$, a tak mù¾eme psát $T(n)=O(n^d)$.
+
+\>{\I 2} ${a}\over{b^d}=1$ práce na jednotlivých hladinách je stejnì, to znamená, ¾e ¾e souèet sumy je právì $\log(n)$ a to nás opravòuje psát: $T(n)=O(n^d \cdot \log(n))$.
+
+\>{\I 3} ${a}\over{b^d}>1$ to znamená, ¾e práce na jednotlivých hladinách pøibývá a potom musíme psát:$ T(n)=O(n^d.({{a}\over{b^d}})^{\log_b{n}})$ To sice vypadá jako slo¾itý výraz, ale mù¾eme je dále upravit:
+$O(n^d.({{a}\over{b^d}})^{\log_b{n}})=O(n^d.a^{\log_b{n}}({{1}\over{b^d}})^{\log_b{n}})=O((b^{\log_b{a}})^{\log_b{n}}.n^d.{{1}\over{(b^d)^{\log_b{n}}}})=O((b^{\log_b{n}})^{\log_b{a}}.n^d.{{1}\over{(b^{\log_b{n}})^d}})=O(n^{\log_b{a}}.n^d.{{1}\over{n^d}})=O(n^{\log_b{a}})$
+
+\noindent
+A nyní vidíme, ¾e vìta je správná a zároveò rozdìlení pøípadù je naprosto oprávnìné.
+
+\>{\sl 2. pøípad: }Vratme se k mo¾nosti $n \neq b^x, x \in {N}$. Potom ale platí: $b^k<n<b^{k+1} \ldots$ v tomto pøípadì zaokrouhleme $n$ a poèítejme s $n'=b^{k+1}$. Pokud platí $b^{k+1}=b.b^k<b.n$, je odtud hned vidìt, ¾e platí $n'<b.n$ a odtud vyplývá, ¾e vstup se nám zvìt¹í pøinejhor¹ím konstanta-krát, co je z asymtotického hlediska, které nás zajímá nejvíce nezajímavé, a tak tuto konstantu "schováme" do $O$ a máme algoritmus stejné slo¾itosti.
+\qed
+
+\noindent
+Porovnejme si nìkteré známé algoritmy a jejich èasovou slo¾itost pomocí \>{\sl Master Theorem}:
+
+\medskip
+
+\vbox{\halign{# \quad \vrule \quad & # \quad \vrule \quad & # \quad \vrule \quad & # \quad \vrule \quad & #\cr
+algoritmus & a & b & d & èasová slo¾itost\cr
+\noalign{\medskip\hrule\bigskip}
+Mergesort & 2 & 2 & 1 & $O(n.\log{n})$\cr
+Násobení I. & 4 & 2 & 1 & $O(n^2)$\cr
+Násobení II. & 3 & 2 & 1 & $O(n^{\log_2{3}})$\cr
+Binární vyhledávání & 1 & 2 & 0 & $O(\log{n})$\cr}}
+
+\medskip
+
+\s{Domácí úkol nakonec: } Vymyslete algoritmus, který by z $n$ zadaných bodù v rovinì (prostoru) na¹el takové dva, které jsou od sebe nejménì vzdálené (zde existuje takový algoritmus s èasovou slo¾itostí $O(n.\log{n})$).
+
+\bye
diff --git a/2-rozdel/Makefile b/2-rozdel/Makefile
new file mode 100644 (file)
index 0000000..52028b8
--- /dev/null
@@ -0,0 +1,3 @@
+P=2-rozdel
+
+include ../Makerules
diff --git a/2-rozdel/figure1.eps b/2-rozdel/figure1.eps
new file mode 100644 (file)
index 0000000..68bd382
--- /dev/null
@@ -0,0 +1,366 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: inkscape 0.44.1
+%%Pages: 1
+%%Orientation: Portrait
+%%BoundingBox: -248 -109 876 872
+%%HiResBoundingBox: -248.81635 -109.5562 875.90534 871.0076
+%%DocumentMedia: plain 596 842 0 () ()
+%%EndComments
+%%Page: 1 1
+0 842 translate
+0.8 -0.8 scale
+gsave [1 0 0 1 0 0] concat
+gsave [1 0 0 1 908.1641 -12.97378] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+3 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.874906 0 0 0.87344 1191.699 354.3683] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+3.4318151 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.874906 0 0 0.87344 507.0091 378.2228] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+3.4318151 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.731389 0 0 0.728143 1014.198 710.9212] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.1109161 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.639617 0 0 0.634621 87.04209 1086.516] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.7087326 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.639617 0 0 0.634621 867.8961 1098.368] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.7087326 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.731389 0 0 0.728143 603.8051 718.0061] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.1109161 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.731389 0 0 0.728143 1301.237 701.4743] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.1109161 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.731389 0 0 0.728143 240.8561 739.2613] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.1109161 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.639617 0 0 0.634621 659.9141 1086.828] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.7087326 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.639617 0 0 0.634621 453.7441 1086.828] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.7087326 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.639617 0 0 0.634621 304.3751 1086.828] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.7087326 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.639617 0 0 0.634621 1228.112 1089.198] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.7087326 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.639617 0 0 0.634621 1070.445 1093.315] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.7087326 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+gsave [0.639617 0 0 0.634621 1385.778 1080.964] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+4.7087326 setlinewidth
+1 setlinejoin
+2 setlinecap
+newpath
+-457.14284 59.505039 moveto
+-457.14284 104.45361 -493.62284 140.93361 -538.57141 140.93361 curveto
+-583.51998 140.93361 -619.99998 104.45361 -619.99998 59.505039 curveto
+-619.99998 14.556467 -583.51998 -21.923534 -538.57141 -21.923534 curveto
+-493.62284 -21.923534 -457.14284 14.556467 -457.14284 59.505039 curveto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+297.44616 129.45983 moveto
+98.989471 357.57517 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+450.46905 129.45983 moveto
+649.67508 333.72067 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-3.1106382 502.8186 moveto
+-120.47064 721.80116 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+73.989438 502.8186 moveto
+177.94142 700.54596 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+699.58258 478.9641 moveto
+637.80151 693.46106 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+760.5873 478.9641 moveto
+873.77625 684.01416 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-171.6203 843.37779 moveto
+-241.19346 1071.1087 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-132.97399 843.37779 moveto
+-57.663661 1071.4207 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+193.05934 822.12259 moveto
+123.99479 1071.4207 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+227.56035 822.12259 moveto
+299.9874 1071.4207 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+604.87196 815.03769 moveto
+536.90499 1082.9607 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+637.33945 815.03769 moveto
+711.05518 1077.9077 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+903.56206 805.59079 moveto
+886.92988 1073.7907 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+929.11055 805.59079 moveto
+1022.2491 1065.5567 lineto
+stroke
+grestore
+showpage
+%%EOF
diff --git a/2-rozdel/figure2.eps b/2-rozdel/figure2.eps
new file mode 100644 (file)
index 0000000..6105f70
--- /dev/null
@@ -0,0 +1,1134 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: inkscape 0.44.1
+%%Pages: 1
+%%Orientation: Portrait
+%%BoundingBox: -1066 -808 1886 1310
+%%HiResBoundingBox: -1066.2102 -808.40663 1885.0231 1309.6885
+%%DocumentMedia: plain 596 842 0 () ()
+%%EndComments
+%%Page: 1 1
+0 842 translate
+0.8 -0.8 scale
+gsave [1 0 0 1 0 0] concat
+gsave [0.338263 0 0 0.338263 -788.415 263.3811] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.338263 0 0 0.338263 75.57971 261.903] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 -611.8357 970.4724] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 -799.6925 978.9312] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 -1249.658 984.4112] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.338263 0 0 0.338263 806.7104 258.4159] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 -967.5788 972.8998] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.39934 0 0 0.39934 331.6575 -657.2877] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+438.44686 -411.89125 moveto
+211.2762 323.34776 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+882.44771 319.86066 moveto
+509.23232 -411.89125 lineto
+stroke
+gsave [0.338263 0 0 0.338263 1632.914 295.1559] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+551.57974 -435.69138 moveto
+1672.7807 376.76069 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+378.72257 -430.39223 moveto
+-602.12874 340.49721 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-727.59559 471.24542 moveto
+-1126.5505 1030.163 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-697.8984 471.24542 moveto
+-866.58381 1018.6516 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-679.65453 471.24542 moveto
+-712.28192 1024.683 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-659.26441 471.24542 moveto
+-539.60762 1016.2242 lineto
+stroke
+gsave [0.251871 0 0 0.251871 277.7847 993.6972] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 83.27105 996.1249] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 -285.1594 992.5203] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 -95.50096 990.0931] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+147.68692 469.76732 moveto
+-170.45676 1038.2721 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+167.55637 469.76732 moveto
+4.4068681 1035.8449 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+186.43968 469.76732 moveto
+169.11835 1041.8767 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+206.85099 469.76732 moveto
+348.43371 1039.449 lineto
+stroke
+gsave [0.251871 0 0 0.251871 1213.956 1009.323] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 1017.641 1000.864] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 609.9691 989.4269] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 815.9196 999.0622] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 2076.638 1015.63] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 1865.207 1013.828] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 1446.024 1014.453] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+gsave [0.251871 0 0 0.251871 1677.976 1020.486] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+10 setlinewidth
+0 setlinejoin
+2 setlinecap
+newpath
+545.71428 398.07648 moveto
+545.71428 514.78505 450.99428 609.50505 334.28571 609.50505 curveto
+217.57713 609.50505 122.85713 514.78505 122.85713 398.07648 curveto
+122.85713 281.3679 217.57713 186.6479 334.28571 186.6479 curveto
+450.99428 186.6479 545.71428 281.3679 545.71428 398.07648 curveto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+896.07575 466.28022 moveto
+711.82131 1035.1787 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+917.74787 466.28022 moveto
+901.63473 1044.814 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+938.61009 466.28022 moveto
+1087.8221 1046.6158 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+958.44628 466.28022 moveto
+1269.3671 1055.0748 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1722.9268 503.02022 moveto
+1547.3941 1060.2048 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1747.7051 503.02022 moveto
+1760.8962 1066.2378 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1767.7532 503.02022 moveto
+1933.1993 1059.5798 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1790.2572 503.02022 moveto
+2127.8738 1061.3818 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-1189.2535 1139.1872 moveto
+-1332.2627 1466.8439 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-1180.043 1139.1872 moveto
+-1268.8216 1471.0733 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-1169.4333 1139.1872 moveto
+-1192.6923 1458.3851 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-1159.8783 1139.1872 moveto
+-1125.0219 1479.5321 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-905.95674 1127.6758 moveto
+-1044.6632 1462.6145 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-895.89279 1127.6758 moveto
+-972.76329 1462.6145 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-884.64484 1127.6758 moveto
+-892.40458 1462.6145 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-872.11053 1127.6758 moveto
+-799.35766 1479.5321 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-723.12526 1133.7072 moveto
+-769.75182 1466.8439 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-713.58847 1133.7072 moveto
+-702.08133 1462.6145 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-703.62802 1133.7072 moveto
+-630.18143 1471.0733 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-694.88217 1133.7072 moveto
+-562.51094 1483.7616 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-528.35591 1125.2484 moveto
+-532.9051 1471.0733 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-527.63883 1016.2242 moveto
+-527.63883 1016.2242 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-519.23036 1125.2484 moveto
+-465.23461 1475.3027 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-510.85761 1125.2484 moveto
+-401.79353 1479.5321 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-503.15772 1125.2484 moveto
+-338.35245 1492.2204 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-216.32266 1147.2963 moveto
+-308.74661 1475.3027 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-207.96189 1147.2963 moveto
+-249.53493 1471.0733 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-200.02841 1147.2963 moveto
+-194.55266 1466.8439 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-192.49452 1147.2963 moveto
+-139.57038 1487.991 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-22.879672 1144.8691 moveto
+-93.046923 1475.3027 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-15.598208 1144.8691 moveto
+-42.294056 1483.7616 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+-7.5547776 1144.8691 moveto
+16.917622 1500.6792 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0.87349092 1144.8691 moveto
+80.358706 1500.6792 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+160.05204 1150.9009 moveto
+114.19395 1487.991 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+168.88321 1150.9009 moveto
+177.63503 1487.991 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+178.30313 1150.9009 moveto
+245.30552 1487.991 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+186.34171 1150.9009 moveto
+304.5172 1492.2204 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+358.08567 1148.4732 moveto
+334.12304 1483.7616 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+366.36619 1148.4732 moveto
+393.33472 1483.7616 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+374.18769 1148.4732 moveto
+448.31699 1479.5321 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+382.48236 1148.4732 moveto
+511.75808 1492.2204 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+677.53067 1144.2029 moveto
+575.19916 1479.5321 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+685.31495 1144.2029 moveto
+630.18143 1483.7616 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+692.93391 1144.2029 moveto
+685.16371 1487.991 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+702.28159 1144.2029 moveto
+752.8342 1483.7616 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+885.50766 1153.8382 moveto
+799.35766 1475.3027 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+895.52564 1153.8382 moveto
+867.02815 1492.2204 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+905.38789 1153.8382 moveto
+938.92804 1500.6792 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+915.73073 1153.8382 moveto
+1006.5985 1471.0733 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1091.5435 1155.64 moveto
+1031.975 1471.0733 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1100.2684 1155.64 moveto
+1091.1866 1471.0733 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1111.7688 1155.64 moveto
+1171.5453 1483.7616 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1120.5996 1155.64 moveto
+1234.9864 1487.991 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1292.7089 1164.099 moveto
+1260.3629 1487.991 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1301.7673 1164.099 moveto
+1323.8039 1496.4498 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1310.7067 1164.099 moveto
+1387.245 1496.4498 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1318.8241 1164.099 moveto
+1446.4567 1500.6792 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1522.5717 1169.229 moveto
+1476.0626 1500.6792 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1530.9425 1169.229 moveto
+1535.2742 1496.4498 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1536.8356 1169.229 moveto
+1577.5683 1504.9086 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1547.063 1169.229 moveto
+1649.4682 1500.6792 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1751.4636 1175.262 moveto
+1687.5328 1500.6792 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1760.5661 1175.262 moveto
+1750.9739 1500.6792 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1768.768 1175.262 moveto
+1810.1856 1517.5968 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1776.9015 1175.262 moveto
+1869.3973 1517.5968 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1943.6776 1168.604 moveto
+1907.4619 1513.3674 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1952.9165 1168.604 moveto
+1975.1324 1513.3674 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1962.8755 1168.604 moveto
+2047.0323 1509.138 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+1971.7352 1168.604 moveto
+2114.7028 1517.5968 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+2157.3338 1170.406 moveto
+2135.8498 1504.9086 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+2165.5289 1170.406 moveto
+2195.0615 1513.3674 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+2174.7955 1170.406 moveto
+2266.9614 1530.285 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+2186.2202 1170.406 moveto
+2355.7789 1534.5144 lineto
+stroke
+gsave [0.08115751 0 0 0.08115751 506.7197 1520.494] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+786.66943 2097.0254 moveto
+786.66943 2267.4535 636.03493 2405.772 450.4317 2405.772 curveto
+264.82847 2405.772 114.19397 2267.4535 114.19397 2097.0254 curveto
+114.19397 1926.5973 264.82847 1788.2788 450.4317 1788.2788 curveto
+636.03493 1788.2788 786.66943 1926.5973 786.66943 2097.0254 curveto
+closepath
+fill
+grestore
+grestore
+gsave [0.08115751 0 0 0.08115751 517.4962 1867.624] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+786.66943 2097.0254 moveto
+786.66943 2267.4535 636.03493 2405.772 450.4317 2405.772 curveto
+264.82847 2405.772 114.19397 2267.4535 114.19397 2097.0254 curveto
+114.19397 1926.5973 264.82847 1788.2788 450.4317 1788.2788 curveto
+636.03493 1788.2788 786.66943 1926.5973 786.66943 2097.0254 curveto
+closepath
+fill
+grestore
+grestore
+gsave [0.08115751 0 0 0.08115751 509.0374 1698.448] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+786.66943 2097.0254 moveto
+786.66943 2267.4535 636.03493 2405.772 450.4317 2405.772 curveto
+264.82847 2405.772 114.19397 2267.4535 114.19397 2097.0254 curveto
+114.19397 1926.5973 264.82847 1788.2788 450.4317 1788.2788 curveto
+636.03493 1788.2788 786.66943 1926.5973 786.66943 2097.0254 curveto
+closepath
+fill
+grestore
+grestore
+grestore
+showpage
+%%EOF