From: Martin Mares Date: Mon, 16 Jan 2012 17:10:00 +0000 (+0100) Subject: Toky: Cviceni X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=897433833b8cffad0eb4d10d400960ccc957aa4b;p=ads2.git Toky: Cviceni --- diff --git a/2-toky/2-toky.tex b/2-toky/2-toky.tex index 2345b84..b797d89 100644 --- a/2-toky/2-toky.tex +++ b/2-toky/2-toky.tex @@ -316,4 +316,46 @@ tok Fordov èase pøelo¾íme na~párování. V¹e dohromady trvá $\O(m'n') = \O(mn)$. \qed +\exercises + +\ex{Najdìte pøíklad sítì s~nejvý¹e 10 vrcholy a 10 hranami, na ní¾ Fordùv-Fulkersonùv +algoritmus provede více ne¾ milion iterací.} + +\exx{Najdìte sí» s~reálnými kapacitami, na ní¾ Fordùv-Fulkersonùv algoritmus nedobìhne.} + +\ex{Navrhnìte algoritmus, který pro zadaný orientovaný graf a jeho vrcholy $u$ a~$v$ +nalezne nejvìt¹í mo¾ný systém hranovì disjunktních cest z~$u$ do~$v$.} + +\ex{Upravte algoritmus z~pøedchozího cvièení, aby nalezené cesty byly vrcholovì +disjunktní (a¾ na krajní vrcholy).} + +\ex{Mìjme ¹achovnici $R\times S$, z~ní¾ políèko¾rout se¾ral nìkterá políèka. Chceme na ni +rozestavìt co nejvíce ¹achových vì¾í tak, aby se navzájem neohro¾ovaly. Vì¾ mù¾eme postavit +na libovolné nese¾rané políèko a ohro¾uje v¹echny vì¾e v~tém¾e øádku èi sloupci. Navrhnìte +efektivní algoritmus, který takové rozestavìní najde.} + +\ex{Situace stejná jako v~minulém cvièení, ale dvì vì¾e se neohro¾ují, pokud je na +jejich pøímé spojnici alespoò jedno políèko se¾rané.} + +\ex{Opìt ¹achovnice po zásahu políèko¾routa. Chceme na nese¾raná políèka rozmístit kostky +velikosti $1\times 2$ políèka tak, aby ka¾dé nese¾rané políèko bylo pokryto právì jednou kostkou.} + +\ex{Dopravní problém: Uva¾ujme továrny $T_1, \ldots, T_p$ a obchody $O_1, \ldots, O_q$. V¹ichni +vyrábìjí a prodavají tentý¾ druh zbo¾í. Továrna $T_i$ ho dennì vyprodukuje $t_i$ kusù, obchod +$O_j$ dennì spotøebuje $o_j$ kusù. Navíc máme bipartitní graf urèující, která továrna mù¾e +dodávat zbo¾í kterému obchodu. Najdìte efektivní algoritmus, který zjistí, zda je po¾adavky +obchodù mo¾né splnit, ani¾ by se pøekroèily výrobní kapacity továren, a~pokud je to mo¾né, +vypí¹e, ze~které továrny se má pøepravit kolik zbo¾í do kterého obchodu.} + +\exxx{Uva¾ujeme o~vybudování dolù $D_1,\ldots,D_p$ a továren $T_1,\ldots,T_q$. Vybudování +dolu~$D_i$ stojí cenu~$d_i$ a od té doby dùl zadarmo produkuje neomezené mno¾ství $i$-té +suroviny. Továrna~$T_j$ potøebuje ke~své èinnosti zadanou mno¾inu surovin (pøiøazení +surovin továrnám je dáno jako bipartitní graf na vstupu) a pokud jsou v~provozu v¹echny +doly produkující tyto suroviny, vydìláme na továrnì zisk~$t_j$. Vymyslete algoritmus, +který spoèítá, které doly postavit, abychom vydìlali co nejvíce.} + +%% FIXME: Zmínit permanent + +\endexercises + \bye diff --git a/3-dinic/3-dinic.tex b/3-dinic/3-dinic.tex index eac80f0..4dc6c11 100644 --- a/3-dinic/3-dinic.tex +++ b/3-dinic/3-dinic.tex @@ -245,4 +245,6 @@ jeden siln algoritmem z~minulé pøedná¹ky je slo¾itost Dinicova algoritmu omezena $\O(\sqrt n \cdot m)$. +%% FIXME: Dinic pomocí DFS + \bye