-\h{Celoèíselné délky}
-
-Uva¾ujme nyní grafy, v~nich¾ jsou v¹echny délky hran nezáporná celá èísla omezená
-nìjakou konstantou~$L$. V¹echny vzdálenosti jsou tedy omezeny èíslem~$nL$, tak¾e
-nám staèí datová struktura schopná uchovávat takto omezená celá èísla.
-
-Pou¾ijeme jednoduchou pøihrádkovou strukturu: pole indexované hodnotami od~0 do~$nL$,
-jeho $i$-tý prvek bude obsahovat seznam vrcholù, jejich¾ ohodnocení je rovno~$i$.
-Operace \<Insert> a \<Decrease> zvládneme v~konstantním èase, budeme-li si u~ka¾dého
-prvku pamatovat jeho polohu v~seznamu. Operace \<ExtractMin> potøebuje najít první
-neprázdnou pøihrádku, ale jeliko¾ víme, ¾e posloupnost odebíraných minim je monotónní,
-staèí hledat od místa, kde se hledání zastavilo minule. V¹echna hledání pøihrádek
-tedy zaberou dohromady $\O(nL)$ a celý Dijkstrùv algoritmus bude trvat $\O(nL + m)$.
-
-Prostorová slo¾itost $\O(nL+m)$ je nevalná, ale mù¾eme ji jednoduchým trikem
-sní¾it: V¹imneme si, ¾e v¹echna koneèná ohodnocení vrcholù nemohou být vìt¹í
-ne¾ aktuální minimum zvìt¹ené o~$L$. Jinými slovy v¹echny neprázdné pøihrádky
-se nacházejí v~úseku pole dlouhém~$L+1$, tak¾e staèí indexovat modulo~$L+1$.
-Pouze si musíme dávat pozor, abychom správnì poznali, kdy se struktura
-vyprázdnila, co¾ zjistíme napøíklad pomocí poèítadla otevøených vrcholù. Èas si
-asymptoticky nezhor¹íme, prostor klesne na~$\O(L+m)$.
-
-Podobný trik mù¾eme pou¾ít i pro libovolnou jinou datovou strukturu: rozsah èísel
-rozdìlíme na~\uv{okna} velikosti~$L$ (v~$i$-tém oknì jsou èísla $iL,iL+1,\ldots,(i+1)L-1$).
-V~libovolné chvíli mohou tedy být neprázdná nejvý¹e dvì okna. Staèí nám proto
-poøídit si dvì struktury pro ukládání èísel v~rozsahu $0,\ldots,L-1$ -- jedna
-z~nich bude reprezentovat aktuální okno (to, v~nìm¾ le¾elo minulé minimum),
-druhá okno bezprostøednì následující. Minimum ma¾eme z~první struktury; pokud
-u¾ je prázdná, obì struktury prohodíme. Operace \<Insert> podle hodnoty urèí,
-do~které struktury se má vkládat. S~operací \<Decrease> je to slo¾itìj¹í --
-hodnota z~vy¹¹í struktury mù¾e pøeskoèit do té ni¾¹í, ale v~takovém pøípadì
-ji ve~vy¹¹í struktuøe vyma¾eme (to je \<Decrease> na $-\infty$ následovaný
-\<ExtractMin>em) a do~té ni¾¹í vlo¾íme. To se ka¾dému prvku mù¾e pøihodit nejvý¹e
-jednou, tak¾e stále platí, ¾e se ka¾dý prvek úèastní $\O(1)$ vlo¾ení a $\O(1)$
-extrakcí minima.
-
-Ukázali jsme tedy, ¾e pro na¹e potøeby postaèuje struktura schopná uchovávání
-èísel men¹ích nebo rovných~$L$.
-
-Nabízí se pou¾ít van Emde-Boasùv strom z~kapitoly o~výpoèetních modelech.
-Ten dosahuje slo¾itosti $\O(\log\log L)$ pro operace \<Insert> a \<ExtractMin>,
-operaci \<Decrease> musíme pøekládat na \<Delete> a \<Insert>. Celková
-slo¾itost Dijkstrova algoritmu vyjde $\O(L+m\log\log L)$, pøièem¾ èas~$L$
-spotøebujeme na inicializaci struktury (té se lze za jistých podmínek vyhnout,
-viz zmínìná kapitola).
-
-Vra»me se ale je¹tì k~vyu¾ití pøihrádek\dots
-
-\h{Víceúrovòové pøihrádky}
-
-Podobnì jako u~tøídìní èísel, i~zde se vyplácí stavìt pøihrádkové struktury
-víceúrovòovì (pùvodnì popsáno Goldbergem a Silversteinem \cite{goldberg:mlb}).
-Jednotlivé hodnoty budeme zapisovat v~soustavì o~základu~$B$,
-který zvolíme jako nìjakou mocninu dvojky, abychom mohli s~èíslicemi tohoto
-zápisu snadno zacházet pomocí bitových operací. Ka¾dé èíslo tedy zabere nejvý¹e
-$d=1+\lfloor\log_B L\rfloor$ èíslic; pokud bude krat¹í, doplníme ho zleva nulami.
-
-Nejvy¹¹í patro struktury bude tvoøeno polem $B$~pøihrádek, v~$i$-té z~nich
-budou ulo¾ena ta èísla, jejich¾ èíslice nejvy¹¹ího øádu je rovna~$i$. Za~{\I aktivní}
-prohlásíme tu pøihrádku, která obsahuje aktuální minimum. Pøihrádky s~men¹ími
-indexy jsou prázdné a zùstanou takové a¾ do~konce výpoètu, proto¾e halda
-je monotónní. Pokud v~pøihrádce obsahující minimum bude více prvkù, budeme
-ji rozkládat podle druhého nejvy¹¹ího øádu na dal¹ích~$B$ pøihrádek atd.
-Celkem tak vznikne a¾~$d$ úrovní.
-
-\>Struktura bude obsahovat následující data:
+\h{CeloÄ\8dĂselnĂŠ dĂŠlky}
+
+UvaĹžujme nynĂ grafy, v~nichĹž jsou vĹĄechny dĂŠlky hran nezĂĄpornĂĄ celĂĄ Ä\8dĂsla omezenĂĄ
+nÃ\84Â\9bjakou konstantou~$L$. VĹÄ\84echny vzdÄ\82Ä\84lenosti jsou tedy omezeny Ã\84Â\8dÄ\82Âslem~$nL$, takĹže
+nĂĄm staÄ\8dĂ datovĂĄ struktura schopnĂĄ uchovĂĄvat takto omezenĂĄ celĂĄ Ä\8dĂsla.
+
+PouĹžijeme jednoduchou pĹ\99ihrĂĄdkovou strukturu: pole indexovanĂŠ hodnotami od~0 do~$nL$,
+jeho $i$-tĂ˝ prvek bude obsahovat seznam vrcholĹŻ, jejichĹž ohodnocenĂ je rovno~$i$.
+Operace \<Insert> a \<Decrease> zvlĂĄdneme v~konstantnĂm Ä\8dase, budeme-li si u~kaĹždĂŠho
+prvku pamatovat jeho polohu v~seznamu. Operace \<ExtractMin> potĹ\99ebuje najĂt prvnĂ
+neprĂĄzdnou pĹ\99ihrĂĄdku, ale jelikoĹž vĂme, Ĺže posloupnost odebĂranĂ˝ch minim je monotĂłnnĂ,
+staÄ\8dĂ hledat od mĂsta, kde se hledĂĄnĂ zastavilo minule. VĹĄechna hledĂĄnĂ pĹ\99ihrĂĄdek
+tedy zaberou dohromady $\O(nL)$ a celĂ˝ DijkstrĹŻv algoritmus bude trvat $\O(nL + m)$.
+
+Prostorovå sloŞitost $\O(nL+m)$ je nevalnå, ale můŞeme ji jednoduchým trikem
+snĂĹžit: VĹĄimneme si, Ĺže vĹĄechna koneÄ\8dnĂĄ ohodnocenĂ vrcholĹŻ nemohou bĂ˝t vÄ\9btĹĄĂ
+neĹž aktuĂĄlnĂ minimum zvÄ\9btĹĄenĂŠ o~$L$. JinĂ˝mi slovy vĹĄechny neprĂĄzdnĂŠ pĹ\99ihrĂĄdky
+se nachĂĄzejĂ v~Ăşseku pole dlouhĂŠm~$L+1$, takĹže staÄ\8dĂ indexovat modulo~$L+1$.
+Pouze si musĂme dĂĄvat pozor, abychom sprĂĄvnÄ\9b poznali, kdy se struktura
+vyprĂĄzdnila, coĹž zjistĂme napĹ\99Ăklad pomocĂ poÄ\8dĂtadla otevĹ\99enĂ˝ch vrcholĹŻ. Ä\8cas si
+asymptoticky nezhorĹĄĂme, prostor klesne na~$\O(L+m)$.
+
+PodobnĂ˝ trik mĹŻĹžeme pouĹžĂt i pro libovolnou jinou datovou strukturu: rozsah Ä\8dĂsel
+rozdÄ\9blĂme na~\uv{okna} velikosti~$L$ (v~$i$-tĂŠm oknÄ\9b jsou Ä\8dĂsla $iL,iL+1,\ldots,(i+1)L-1$).
+V~libovolnĂŠ chvĂli mohou tedy bĂ˝t neprĂĄzdnĂĄ nejvýťe dvÄ\9b okna. StaÄ\8dĂ nĂĄm proto
+poĹ\99Ădit si dvÄ\9b struktury pro uklĂĄdĂĄnĂ Ä\8dĂsel v~rozsahu $0,\ldots,L-1$ -- jedna
+z~nich bude reprezentovat aktuĂĄlnĂ okno (to, v~nÄ\9bmĹž leĹželo minulĂŠ minimum),
+druhĂĄ okno bezprostĹ\99ednÄ\9b nĂĄsledujĂcĂ. Minimum maĹžeme z~prvnĂ struktury; pokud
+uĹž je prĂĄzdnĂĄ, obÄ\9b struktury prohodĂme. Operace \<Insert> podle hodnoty urÄ\8dĂ,
+do~kterĂŠ struktury se mĂĄ vklĂĄdat. S~operacĂ \<Decrease> je to sloĹžitÄ\9bjĹĄĂ --
+hodnota z~vyĹĄĹĄĂ struktury mĹŻĹže pĹ\99eskoÄ\8dit do tĂŠ niŞťĂ, ale v~takovĂŠm pĹ\99ĂpadÄ\9b
+ji ve~vyĹĄĹĄĂ struktuĹ\99e vymaĹžeme (to je \<Decrease> na $-\infty$ nĂĄsledovanĂ˝
+\<ExtractMin>em) a do~tĂŠ niŞťà vloĹžĂme. To se kaĹždĂŠmu prvku mĹŻĹže pĹ\99ihodit nejvýťe
+jednou, takĹže stĂĄle platĂ, Ĺže se kaĹždĂ˝ prvek ĂşÄ\8dastnĂ $\O(1)$ vloĹženĂ a $\O(1)$
+extrakcĂ minima.
+
+UkĂĄzali jsme tedy, Ĺže pro naĹĄe potĹ\99eby postaÄ\8duje struktura schopnĂĄ uchovĂĄvĂĄnĂ
+Ä\8dĂsel menĹĄĂch nebo rovnĂ˝ch~$L$.
+
+NabĂzĂ se pouĹžĂt van Emde-BoasĹŻv strom z~kapitoly o~vĂ˝poÄ\8detnĂch modelech.
+Ten dosahuje sloĹžitosti $\O(\log\log L)$ pro operace \<Insert> a \<ExtractMin>,
+operaci \<Decrease> musĂme pĹ\99eklĂĄdat na \<Delete> a \<Insert>. CelkovĂĄ
+sloĹžitost Dijkstrova algoritmu vyjde $\O(L+m\log\log L)$, pĹ\99iÄ\8demĹž Ä\8das~$L$
+spotĹ\99ebujeme na inicializaci struktury (tĂŠ se lze za jistĂ˝ch podmĂnek vyhnout,
+viz zmĂnÄ\9bnĂĄ kapitola).
+
+VraĹĽme se ale jeĹĄtÄ\9b k~vyuĹžitĂ pĹ\99ihrĂĄdek\dots
+
+\h{VĂceĂşrovĹ\88ovĂŠ pĹ\99ihrĂĄdky}
+
+PodobnÄ\9b jako u~tĹ\99ĂdÄ\9bnĂ Ä\8dĂsel, i~zde se vyplĂĄcĂ stavÄ\9bt pĹ\99ihrĂĄdkovĂŠ struktury
+vĂceĂşrovĹ\88ovÄ\9b (pĹŻvodnÄ\9b popsĂĄno Goldbergem a Silversteinem \cite{goldberg:mlb}).
+JednotlivĂŠ hodnoty budeme zapisovat v~soustavÄ\9b o~zĂĄkladu~$B$,
+kterĂ˝ zvolĂme jako nÄ\9bjakou mocninu dvojky, abychom mohli s~Ä\8dĂslicemi tohoto
+zĂĄpisu snadno zachĂĄzet pomocĂ bitovĂ˝ch operacĂ. KaĹždĂŠ Ä\8dĂslo tedy zabere nejvýťe
+$d=1+\lfloor\log_B L\rfloor$ Ä\8dĂslic; pokud bude kratĹĄĂ, doplnĂme ho zleva nulami.
+
+NejvyĹĄĹĄĂ patro struktury bude tvoĹ\99eno polem $B$~pĹ\99ihrĂĄdek, v~$i$-tĂŠ z~nich
+budou uloĹžena ta Ä\8dĂsla, jejichĹž Ä\8dĂslice nejvyĹĄĹĄĂho Ĺ\99ĂĄdu je rovna~$i$. Za~{\I aktivnĂ}
+prohlĂĄsĂme tu pĹ\99ihrĂĄdku, kterĂĄ obsahuje aktuĂĄlnĂ minimum. PĹ\99ihrĂĄdky s~menĹĄĂmi
+indexy jsou prÄ\82Ä\84zdnÄ\82Å a zĹŻstanou takovÄ\82Å aĹž do~konce vÄ\82Ë\9dpoÃ\84Â\8dtu, protoĹže halda
+je monotĂłnnĂ. Pokud v~pĹ\99ihrĂĄdce obsahujĂcĂ minimum bude vĂce prvkĹŻ, budeme
+ji rozklĂĄdat podle druhĂŠho nejvyĹĄĹĄĂho Ĺ\99ĂĄdu na dalĹĄĂch~$B$ pĹ\99ihrĂĄdek atd.
+Celkem tak vznikne aĹž~$d$ ĂşrovnĂ.
+
+\>Struktura bude obsahovat nĂĄsledujĂcĂ data: