PDF soubor

Transkript

PDF soubor
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

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 ...

Více

Zde

Zde ∇i V j = ∂i V j + Γj ki V k .

Více

Základy algoritmizace

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...

Více

důkaz elimanator

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...

Více

Tradicn´ı b´ıteˇsské hody

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...

Více