PDF soubor
Transkript
Algoritmy a datové struktury I 2015/2016 1. cvičenı́: 24.2.2016 • Stránky cvičenı́: http://iuuk.mff.cuni.cz/~bok/ads1-1516.html • Zápočet je za alespoň 50 bodů. Body je možné zı́skat za: • úlohy za dohromady minimálné 100 bodů - na každém cviku počı́naje od druhého bude zadáno několik menšı́ch úloh (1 až 3), po 14 dnech bude na cviku řečena nápověda a úlohu bude možné odevzdat do konce letnı́ho zkouškového, ale za polovinu bodů. • aktivitu na cvičenı́ch Úloha 1. (Na rozjezd) Dosteneme čı́slo N . Jak co nejrychleji zjistit, kolik čı́sel menšı́ch než N nenı́ dělitelných trojkou nebo pětkou. Úloha 2. (Vajce) Máme N-patrový dům a vı́me, že hodı́me-li vajı́čko z alespoň K-tého patra, rozbije se. Známe N a chceme zjistit K. Jak to udělat na co nejméně pokusů, máme-li k dispozici jediné vajı́čko? A co když máme libovolne mnoho vajı́ček? (Pokus = hozenı́ vajı́čka znějakého patra.) Úloha 3. (Hledánı́ v seřazené posloupnosti) Jistá část přednášky a cvičenı́ se bude věnovat třı́děnı́ posloupnostı́ čı́sel. To prozatı́m necháme a budeme předpokládat, že už setřı́zeno (seřaděno?) máme. Jak najı́t v posloupnosti délky N nejrychleji nějaké čı́slo k? http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 Úloha 4. (Milionová permutace) Permutace lze uspořádat lexikograficky, např. permutace čı́sel 0, 1 a 2 majı́ toto pořadı́: 012 021 102 120 201 210. Jak co nejrychleji najı́t miliontou permutaci množiny {0, . . . , 9}? Úloha 5. (Následujı́cı́ permutace) Vezmeme to trošku jinak. Vı́me N , tedy jaká čı́sla 1 až N permutujeme. Máme navı́c nějakou permutaci. Jak co nejrychleji najı́t následujı́cı́ v lexikografickém pořadı́? Úloha 6. (Děravá matice) Mějme matici velikost N × M . Dı́ra v matici je souvislá podmatice samých nul. Jak co nejrychleji najı́t tu největšı́ dı́ru v zadané matici? (Optimálnı́ řešenı́ je algoritmus běžı́cı́ v čase O(N M ).) Úloha 7. (Sı́to) Jak hledat co nejrychleji prvočı́sla? Tj. čı́sla dělitelná jen jedničkou a sebe samou? Úloha 8. (Trojúhelnı́ková čı́sla) i-té trojúhelnı́kové čı́slo je čı́slo vzniklé součtem 1+2+· · ·+i. Jak co nejrychleji najı́t prvnı́ trojúhelnı́kové čı́slo, které má vı́ce než k dělitelů? Pro představu, prvnı́ch 7 trojúhelnı́kových čı́sel je na tom s děliteli takto: 1: 1 3: 1,3 6: 1,2,3,6 10: 1,2,5,10 15: 1,3,5,15 21: 1,3,7,21 28: 1,2,4,7,14,28 • Co bude přı́ště? Takže rekurze! Dojde i na želvı́ grafiku. http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 2. cvičenı́: 9.3.2016 Úloha 1. (Následujı́cı́ permutace) Vezmeme to trošku jinak. Vı́me N , tedy jaká čı́sla 1 až N permutujeme. Máme navı́c nějakou permutaci. Jak co nejrychleji najı́t následujı́cı́ v lexikografickém pořadı́? Úloha 2. (Děravá matice) Mějme matici velikost N × M . Dı́ra v matici je souvislá podmatice samých nul. Jak co nejrychleji najı́t tu největšı́ dı́ru v zadané matici? Úloha 3. (Collatz) Zavedeme jednoduché pravidlo, které pro každé čı́slo dá nějaké dalšı́ čı́slo, a takto zı́skáme jistý řetězec. n → n/2 je-li n sudé, n → 3n + 1 je-li n liché. začneme-li s čı́slem 13, dostaneme tuto posloupnost: 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 (Tzv. *Collatzova domněnka* řı́ká, že at’ začneme v jakémkoliv čı́sle, dojdeme nakonec do jedničky. Zatı́m se ji nikomu nepodařilo dokázat — čeká na vás!) Jak co nejrychleji přijı́t na to, které čı́slo pod jeden milion vyprodukuje nejdelšı́ řetı́zek, než dojde do jedničky? http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 3. cvičenı́: 11.3.2016 Asymptotická notace podrobněji zdroj: Wikipedia Rekurze Úloha 1. (Fibonacciho čı́sla) Navrhněte algoritmus, který co nejrychleji spočte n-té Fibonacciho čı́slo. (Pro účely tohoto cvičenı́ trvajı́ aritmetické operace jeden krok bez ohledu na velikost čı́sel s nimiž pracujı́.) Řešenı́. Triviálnı́ algoritmus, který vycházı́ z rekurzivnı́ho pravidla Fn = Fn−1 + Fn−2 je exponenciálnı́. Snadná úprava vede na algoritmus lineárnı́, ve kterém si vždy pamatujeme poslednı́ dvě Fibonacciho čı́sla a vypočı́táme z něj nové. Existuje ještě jeden způsob, který vede na logaritmickou složitost. Jeho základem je náhled, který ukazuje, že se Fibonacciho čı́sla dajı́ vyčı́st z mocnin jisté speciálnı́ matice. Vı́ce viz http://pavel.klavik.cz/vyuka/2014_2015/lingebra/sada1.pdf Klı́čem k řešenı́ je potom vyřešit nalezenı́ n-té mocniny takovéto matice v logaritmickém čase, což lze dostat jako důsledek toho, že každé n lze zapsat jako součet mocnin dvojky (binárnı́ zápis). Úloha 2. (Hánojské věže) Hanojské věže je matematický hlavolam, který vymyslel francouzský matematik Édouard Lucas v roce 1883. Skládá se ze třı́ kolı́ků (věžı́). Na začátku je na jednom z nich nasazeno několik kotoučů různých poloměrů, seřazených od největšı́ho (vespod) po nejmenšı́ (nahoře). Úkolem řešitele je přemı́stit všechny kotouče na druhou věž (třetı́ přitom využije jako pomocnou pro dočasné odkládánı́) podle následujı́cı́ch pravidel: • V jednom tahu lze přemı́stit jen jeden kotouč. • Jeden tah sestává z vzetı́ vrchnı́ho kotouče z některé věže a jeho položenı́ na vrchol jiné věže. • Je zakázáno položit většı́ kotouč na menšı́. Vyprávı́ se legenda, že někde ve Vietnamu stojı́ klášter, v němž jsou hanojské věže se 64 zlatými kotouči. Mniši (kněžı́) každý den v poledne za zvuku zvonů slavnostně přemı́stı́ jeden kotouč (v jiných verzı́ch probı́há přemist’ovánı́ nepřetržitě). V okamžiku, kdy bude přemı́stěn poslednı́ kotouč, nastane konec světa. Vyřešenı́ tohoto hlavolamu pro 64 kotoučů však vyžaduje 264 − 1 = 18446744073709551615 tahů (viz úloha), takže i kdyby mniši stihli provést jeden tah každou sekundu (a postupovali nejkratšı́m možným způsobem), trvalo by jim vyřešenı́ celého hlavolamu přibližně 600 miliard let. http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 Řešenı́ v Pascalu: procedure Hanoj ( n : integer ; p o c a t e c n i begin i f n>1 then Hanoj ( n−1, p o c a t e c n i , writeln ( ’ Presuneme kotouc z v e z e i f n>1 then Hanoj ( n−1, o d k l a d a c i , end ; , c i l o v a , o d k l a d a c i : char ) ; odkladaci , c i l o v a ) ; ’ , p o c a t e c n i , ’ na vez ’ , c i l o v a ) ; cilova , pocatecni ) • Zkuste dokázat, že tento algoritmus skutečně udělá exponenciálně mnoho kroků. • Dále zkuste dokázat, že lépe to nejde. Řešenı́. Exponenciálnı́ složitost lze nahlédnout indukcı́. Dále ukážeme, že počet kroků 2n−1 je nejlepšı́ možný. Označme si Tj jako nejmenši počet kroků jak přesunout j největšı́ch kotoučů. Zajı́ma nás Tn . V jistý moment hry musı́me přesunout kotouč n na cı́lovou tyč. V takovou chvı́li však musı́ být všech ostatnı́ch n − 1 kotoučů na pomocné tyči. To trvá Tn−1 kroků. Nynı́, po přesunutı́ poslednı́ho kotouče n musı́me přesunout poslednı́ch ještě poslednı́ch n − 1 disků z pomocného na cı́lový. To umı́me nejlépe na Tn−1 kroků. Z tohoto nám tedy vycházı́ dolnı́ odhad na Tn : Tn ≥ 2Tn−1 + 1 . Vyřesı́me tedy rekurenci Tn = 2Tn−1 + 1, napřı́klad indukcı́. Základ indukce je jasný: T0 = 0 = 20 − 1 a T1 = 1 = 21 − 1. Dále udělejme indukčnı́ krok: Předpokládáme Tk = 2k − 1. Tk+1 = 2Tk + 1 = 2(2k − 1) + 1 = 2k+1 − 2 + 1 = 2k+1 − 1 Což jsme chtěli. Úloha 3. (Želvı́ grafika) Přı́kazy: kompletně viz https://docs.python.org/2/library/turtle.html Ukázka: Spirála http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I t = t u r t l e . Turtle () f o r i in range ( 1 , 1 0 0 ) : t . forward (20) t . l e f t (360/ i ) Ukázka: Sierpinského trojúhelnı́k import t u r t l e def d r a w s i e r p i n s k i ( l e n g t h , depth ) : i f depth==0: f o r i in range ( 0 , 3 ) : t . fd ( length ) t . l e f t (120) else : d r a w s i e r p i n s k i ( l e n g t h / 2 , depth −1) t . fd ( length /2) d r a w s i e r p i n s k i ( l e n g t h / 2 , depth −1) t . bk ( l e n g t h / 2 ) t . l e f t (60) t . fd ( length /2) t . right (60) d r a w s i e r p i n s k i ( l e n g t h / 2 , depth −1) t . l e f t (60) t . bk ( l e n g t h / 2 ) t . right (60) t = t u r t l e . Turtle () draw sierpinski (100 ,2) http://iuuk.mff.cuni.cz/~bok/ads1-1516.html 2015/2016 Algoritmy a datové struktury I 4. cvičenı́ Bylo suplované Jirkou Setničkou. Bylo o BVS a úvodu do intervalových stromů. http://iuuk.mff.cuni.cz/~bok/ads1-1516.html 2015/2016 Algoritmy a datové struktury I 2015/2016 5. cvičenı́: 23.3.2016 Úloha 1. AVL Merge. Navrhněte algoritmus pro sloučenı́ dvou AVL stromů A a B, kde všechny prvky A ležı́ před všemi prvky B, do jediného AVL stromu C. Hledáme řešenı́ s lepšı́ složitostı́ než O(min(|A|, |B|), log(n)) (tj. triviálnı́ řešenı́ ”vše z menšı́ho vložit do většı́ho”). Úloha 2. Online algoritmy, aneb jak na běžı́cı́m pásu. Máte zadáno čı́slo k a na vstup vám přicházı́ postupně prvky posloupnosti x. Vašı́m úkolem je udržovat hodnoty následujı́cı́ch funkcı́ pro poslednı́ch k prvků vstupu: • součet, • maximum, • medián. Úloha 3. Nedomyšlená struktura. Elektrikář si chce udržovat seznam klientů podle jejich ID a s údajem, či jde o muže nebo ženu. Navrhněte takovou datovou strukturu, která bude umět následujı́cı́ operace v logaritmickém čase: • INSERT(K,C) – vložı́ nového klienta C s ID = K a označı́ ho jako ženu, • UPDATE(K) – klienta s ID K přeznačı́ na muže, • FINDDIFF(K) – spočı́tej rozdı́l počtu mužů a žen mezi klienty s ID ≤ K. http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 6. cvičenı́: 30.3.2016 Úkoly • demolice [5]: V řadě stojı́ N budov s h1 , . . . , hN patry a je potřeba je všechny zničit. K tomu máte doma eliminačnı́ laser, jı́mž na jeden výstřel můžete bud’to zničit celou jednu konkrétnı́ budovu, nebo celé jedno patro u všech budov (při zničenı́ patra L se všem budovám s počtem pater alespoň L zmenšı́ počet pater o 1). Na kolik nejméně výstřelů je možné eliminovat všechny budovy? (Pozor na to, že počet pater může být o hodně vyššı́ než N .) • avllevel [3]: Nejmenšı́ a největšı́ prvek v AVL stromu lze vždy najı́t bud’ na poslednı́ nebo předposlednı́ úrovni stromu. Je to pravda nebo ne? Úrovnı́ myslı́me vzdálenost od kořene. LCA a RMQ Úloha 1. Triviálnı́ nápady na LCA? Úloha 2. Triviálnı́ nápady na RMQ? Úloha 3. RMQ lze převést na LCA s lineárnı́m časem na předzpracovánı́ a konstantnı́m časem na převod dotazu. • Hlavnı́ výsledek: LCA i RMQ lze řešit se složitostı́ konstantnı́ pro dotaz a s lineárnı́m předzpracovánı́m. Úloha 4. Strom s nadváhou. Máme vážený strom. Najděte rychle vzdálenosti mezi danými dvěma vrcholy. Zdroje • http://mj.ucw.cz/vyuka/ga/ • M. A. Bender and M. Farach-Colton. The LCA problem revisited. In Latin American Theoretical INformatics, pages 88–94, 2000. http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 7. cvičenı́: 6.4.2016 LCA a RMQ Úloha 1. Triviálnı́ nápady na LCA? Úloha 2. Triviálnı́ nápady na RMQ? Úloha 3. RMQ lze převést na LCA s lineárnı́m časem na předzpracovánı́ a konstantnı́m časem na převod dotazu. • Hlavnı́ výsledek: LCA i RMQ lze řešit se složitostı́ konstantnı́ pro dotaz a s lineárnı́m předzpracovánı́m. Úloha 4. Strom s nadváhou. Máme vážený strom. Najděte rychle vzdálenosti mezi danými dvěma vrcholy. Zdroje • http://mj.ucw.cz/vyuka/ga/ • M. A. Bender and M. Farach-Colton. The LCA problem revisited. In Latin American Theoretical INformatics, pages 88–94, 2000. http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 8. cvičenı́: 13.4.2016 Intervalové stromy • Operace a konstukce intervalového stromu Úloha 1. Malı́ř Bonifác. Chodnı́k před radnicı́ měřı́ K kroků. Jeden jeho konec bude mı́t souřadnici 0, opačný konec má souřadnici K. V současnosti má celý chodnı́k asfaltově černou barvu. Malı́ř Bonifác použı́vá F jiných barev, očı́slovaných od 1 do F . Postupně dostal N přı́kazů. Každý z nich zapı́šeme ve tvaru ai bi fi , kde ai a bi jsou souřadnice začátku a konce úseku a fi je barva, kterou se má tento úsek obarvit. Na obarvenı́ jednoho kocourkovského kroku chodnı́ku potřebuje Bonifác jeden litr barvy. Pro každou z barev spočı́tejte, kolik litrů bude Bonifác potřebovat. Master theorem aka Kuchařková věta • Zněnı́ a důkaz věty. Úloha 2. O následujı́cı́ch rekurentnı́ch vztazı́ch rozhodněte, zda jejich čas běhu můžeme rozhodnout pomocı́ Kuchařkové věty či nikoliv a v přı́padě kladné odpovědı́ uved’te i čas běhu. • T (n) = 3T (n/2) + n2 • T (n) = T (n/2) + 2n • T (n) = 2n T (n/2) + nn • T (n) = 2T (n/2) + n log n Zdroje Dasgupta, Papadimitrou, Vazirani: Algorithms Kuchařková věta u Martina Mareše http://mj.ucw.cz/vyuka/ads/29-dac.pdf http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 9. cvičenı́: 20.4.2016 Amortizovaná složitost • Přı́klad s dynamickou alokacı́ pole. Dva hlavnı́ způsoby analýzy: • agregátnı́ metoda, • penı́zková metoda. http://iuuk.mff.cuni.cz/~bok/ads1-1516.html 2015/2016 Algoritmy a datové struktury I 2015/2016 10. cvičenı́: 27.4.2016 Master theorem aka Kuchařková věta • Zněnı́ a důkaz věty. Úloha 1. O následujı́cı́ch rekurentnı́ch vztazı́ch rozhodněte, zda jejich čas běhu můžeme rozhodnout pomocı́ Kuchařkové věty či nikoliv a v přı́padě kladné odpovědı́ uved’te i čas běhu. • T (n) = 3T (n/2) + n2 • T (n) = T (n/2) + 2n • T (n) = 2n T (n/2) + n7 • T (n) = 2n T (n/2) + nn • T (n) = 2T (n/2) + n log n Úloha 2. Odovd’te pomocı́ kuchařkové věty složitost: mergesortu, binárnı́ho vyhledávánı́, traverzovánı́ stromu. Třı́dénı́ na 100 způsobů ...nebo řazenı́? Úloha 3. Jaká je průměrná časová složitost bublinkového třı́děnı́? Přesněji: pokud dostaneme na vstupu náhodnou permutaci čı́sel 1 až n, jaká bude střednı́ hodnota doby výpočtu? Předpokládáme, že algoritmus se zastavı́, jakmile během jednoho průchodu nic neprohodı́. http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 11. cvičenı́: 11.5.2016 Třı́dénı́ - pokračovánı́ Úloha 1. Nemohli bychom mergesort zlepšit tı́m, že bychom vstup nerozdělili jen na 2, ale na k částı́ (které bychom pak trochu složitěji slévali)? Jakou má složitost takový mergesort? Úloha 2. Intervaly. Je zadána množina intervalů na přı́mce. Spočı́tejte, kolik je dvojic protı́najı́cı́ch se intervalů? (Intervaly mohou být zadány třeba v poli dvojic (a, b).) Úloha 3. Zopakovánı́ datové struktury trie. Reprezentace grafů, DFS a BFS Úloha 4. Repre. Pro tři základnı́ grafové reprezentace (seznam sousedů, seznam hran, matice) rozepište složitost následujı́cı́ch operacı́: přidat-hranu(u,v) smazat-hranu(u,v) sousedı́(u,v) stupeň(u) seznam-sousedů(u,v). Úloha 5. Zopakujte si druhy průchodů algoritmu prohledávánı́ grafu do hloubky. Úloha 6. Zopakujte si typy hran, které rozlišujeme u prohledávánı́ do hloubky. Úloha 7. Jedničky a nuly. Některá desı́tková čı́sla si vystačı́ pouze s ciframi jedna a nula. Pokud máme čı́slo v desı́tkové soustavě, které tuto vlastnost nemá, můžeme se pokusit čı́slo vynásobit nějakým přirozeným čı́slem a podı́vat se, či už tuto vlastnost má. Váš úkol je pro dané čı́slo najı́t nejmenšı́ takový násobek. Úloha 8. Strom? Navrhněte algoritmus, který o grafu G rozhodne, zda je to strom. Úloha 9. Bipartitnı́? Navrhněte algoritmus, který o grafu G rozhodne, zda je bipartitnı́. Dokažte vztah s problémem 2-obarvenı́. Zdroje Mad’arské tance :) https://www.youtube.com/watch?v=ywWBy6J5gz8 Možnost spustit vı́c řadı́cı́ch algoritmů najednou http://www.sorting-algorithms.com/ http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 12. cvičenı́: 18.5.2016 Úloha 1. Diameter. Na vstupu je dán neohodnocený neorientovaný strom. Zjistěte jeho průměr, což je délka nejdelšı́ cesty ve stromě. Úloha 2. Nezávislá. Podmnožina vrcholů grafu je nezávislá, pokud mezi žádnými dvěma vrcholy této podmnožiny nevede hrana. Jak pro daný strom spočı́tat, kolik je v němco do inkluze maximálnı́ch nezávislých množin? (Výsledek bude exponenciálnı́ v počtu vrcholů, ale pro jednoduchost můžete i s takto velkými čı́sly počı́tat v O(1).) Úloha 3. Boss. V paměti máte matici sousednosti orientovaného grafu G. Najděte v tomto grafu šéfa. Šéf je vrchol, ze kterého vede hrana do všech ostatnı́ch vrcholů a do něj samotného nevede žádná hrana. Najděte v G šéfa a nebo řekněte, že tam žádný šéf nenı́. Topologické uspořádánı́ grafu Úloha 4. Jak provést topologické třı́děnı́ orientovaného grafu v čase O(N + M )? Úloha 5. Jak poznat grafy, které lze topologicky uspořádat právě jednı́m způsobem? Které grafy lze uspořádat topologicky co nejvı́ce způsoby? Hledánı́ mostů a artikulacı́ v grafu http://iuuk.mff.cuni.cz/~bok/ads1-1516.html Algoritmy a datové struktury I 2015/2016 13. cvičenı́: 25.5.2016 Hledánı́ silné souvislých komponent • Algoritmus. Úloha 1. Každý poštovnı́ holub, je-li vypuštěn se zprávou, s nı́ doletı́ jen na jedno mı́sto, které je pro konkrétnı́ho holuba pevné. Ve spolku pěstitelů holubů má každý člen holuby, kteřı́ mohou doručit zprávu k několika dalšı́m členům. Svolat všepěstitelské setkánı́ je možné jen tak, že ho jeden ze členů vyhlásı́ rozeslánı́m zpráv všem členům, na které má holuby, a ti pak pošlou zprávu dál svými holuby. Když znáte strukturu spolku, v čase lineárnı́m s počtem zúčastněných holubů a členů zjistěte, zda vůbec existuje někdo, kdo má možnost setkánı́ všech členů svolat. Dijkstrův algoritmus a nejkratšı́ cesty Úloha 2. Dokažte, že jsou-li záporné hrany u vrcholu s, z něhož nejkratšı́ cesty hledáme, vrátı́ Dijkstra správný výsledek (tzn. záporné hrany v tomto přı́padě nevadı́.) Úloha 3. Nešlo by se záporných hran (v grafu bez záporného cyklu) zbavit přičtenı́m konstanty? Např. pokud minimum ze všech hran v grafu G je −K, nešlo by problém nejkratšı́ch cest vyřešit na grafu G0 , který je s G totožný, ale všechny délky hran zvětšı́me o K? Úloha 4. Vrcholy. Jak hledat nejkratšı́ cesty v grafu, ve kterém majı́ ohodnocenı́ i vrcholy? Úloha 5. Tunely. Mějme mapu silničnı́ sı́tě se zaznačenými tunely (některé jsou jednosměrné) a nejvyššı́m nákladem, který daným tunelem projede. Je zadaný startovnı́ vrchol s; najděte pro všechny ostatnı́ vrcholy, jaký nejvyššı́ náklad se do nich dá z s dopravit a jakou cestou. Úloha 6. Hroutı́cı́ se mosty. Máme mapu silničnı́ sı́tě s vyznačenými mosty (mohou být jednosměrné); u každého mostu je čı́slo pi ∈ [0, 1] udávajı́cı́ pravděpodobnost, že most při průjezdu nespadne. Pro zadaný vrchol s spočı́tejte pro všechny ostatnı́ vrcholy, jak se do nich lze dostat s co nejvyššı́ pravděpodobnostı́. (Pokud mám za sebou most s pravděpodobnostı́ pi a dalšı́ s pravděpodobnostı́ pj , pravděpodobnost úspěšného přejetı́ po těchto dvou za sebou je pi · pj ). Minimálnı́ kostry Úloha 7. Multigrafy. Rozmyslete, jak upravit nějaký algoritmus na hledánı́ minimálnı́ kostry tak, aby fungoval na multigrafu (grafu se smyčkami a násobnými hranami). Úloha 8. Mějme graf G a jeho minimálnı́ kostru T . Jak se změnı́ minimálnı́ kostra oproti T , jestliže se změnı́ váha jedné hrany? Zdroje Martin Mareš: Krajinou grafových algoritmů http://mj.ucw.cz/vyuka/ga/ O Tarjanově algoritmu http://davpe.net/download/mff/komponenty_silne_souvislosti.pdf Shellsort ve formě mad’arského tance :) https://www.youtube.com/watch?v=CmPA7zE8mx0 http://iuuk.mff.cuni.cz/~bok/ads1-1516.html
Podobné dokumenty
diplomov´a pr´ace - Katedra elektromagnetického pole
dynamicky vyvı́jel a zajisté bude vyvı́jet i dál.
A právě oblast na pomezı́ je v současné době v hledáčku mnoha velikánů světové
fyziky, chemie a teorie informace. Spadajı́ sem dodnes ...
Základy algoritmizace
který bude splňovat výše uvedené podmı́nky? Samozřejmě nejprve musı́me daný problém umět vyřešit. V následujı́cı́ch kapitolách se seznámı́me s některými postupy, které hledánı́ r...
důkaz elimanator
Důkaz: (sloupcový pohled): soustava má řešenı́ právě když vektor b ležı́ v lineárnı́m obalu sloupcových vektorů A1 , A2 , . . . , An ,
což je právě tehdy, když hod A = hod(A | b). V...
Tradicn´ı b´ıteˇsské hody
dřı́ve tančı́vala jen českou besedu, po letech se k nı́ přidala i moravská beseda. Pı́sař
předčı́tával smyšlené paragrafy. Inspiracı́ pro paragrafy byly tzv. Artikule obecnı́,
vydané ve...