Ciele cvičení:
- poznať a vedieť implementovať algoritmy na nájdenie najlacnejšej kostry
- vedieť, čo sú to greedy algoritmy
- vedieť argumentovať, že greedy algoritmus vypočíta korektné riešenie
Najlacnejšia kostra
Implementujte Primov (a/alebo) Kruskalov algoritmus
- nemusí ísť o tak efektívnu implementáciu, ako bola prezentovaná na prednáške (t.j. s prioritnou frontou a Union/Find údajovou štruktúrou)
Algoritmy si môžete precvičiť pri riešení úlohy z ŠVK 2012:
Rozdiskutujte formálny dôkaz korektnosti Primovho (a/alebo) Kruskalovho algoritmu.
Greedy algoritmy
Ďalšie úlohy
- Ali a Boris su true partyboys ! Keďže majú v srdiečkách miesto pre každého tak sa rozhodli, že po skončení semestra usporiadajú obrovskú párty, kam chcú pozvať všetkých svojich kamarátov. Aby sa party dobre rozbehla a aj pokračovala dostali odporúčanie od sociológov, že je dobre ak každý hosť pozná aspoň 5 iných hostí a aspoň 5 hostí nepozná a môže sa s nimi zoznámiť. Ali a Boris si spravili zoznam všetkých hostí a všetkých dvojíc ktoré sa poznajú. Vymyslite algoritmus, pomocou ktorého nájde najväčšiu množinu hostí ktorá spĺňa dané podmienky.
- Martin ako správny informatik si uvedomuje, že znalosti z jedného predmetu môže aplikovať aj v inom predmete a tým byť ešte lepší. Na princípoch počítačov sa učil pracovať s jednoduchým počítačom. Ten však nemal konštanty iné ako 0 a 1 (ktorú bolo náročné dosiahnuť). Ale ak má jednotku pomocou základných operácii pripočítanie 1 a vynásobenie čísla dvojkou z nej môže dostať ľubovoľné prirodzené číslo. Napríklad
10=1+1+1+1+1+1+1+1+1+1
. Ale existuje aj rýchlejšia cesta 10=(((1+1)*2+1)*2)
. Navrhnite algoritmus, ktorí vypočíta minimálny počet operácii potrebných na dosiahnutie čísla n
.