Čínský mobil
Na cvičení proběhl rozbor řešení úlohy na dynamické programování.
Zadání úlohy je v CodExu. Značíme-li počet kláves jako K
a počet znaků jako S
, jsou hlavní ideje řešení následující:
- - použijeme tabulku velikosti
K x S
(K
řádků aS
sloupců) - - buňka na pozici
[i,j]
obsahuje údaj o optimální ceně pro podúlohu, kdy bereme symboly pouze poj
-tý znak dělíme je nai
tlačítek - - první řádek snadno vyplníme - jde o úlohu, kdy dáváme všechny symboly až po
j
-tý na jedno tlačítko - - každý další řádek vyplňujeme s použitím hodnot z předchozího řádku. Zkoumáme vlastně jak rozšířit optimální řešení pro
i
tlačítek o další tlačítko. Ze všech možných způsobů jak to lze udělat přitom vybíráme ten nejlevnější. - - můžeme si předem předpočítat tabulku velikosti
S x S
cen všech možných tlačítek, ve které buňka[i,j]
obsahuje cenu tlačítka, které začínái
-tým symbolem a končíj
-tým
Topologické třídění
Byl probrán algoritmus na topologické třídění.
Hlavní myšlenkou algoritmu je použít DFS a číslovat uzavřené vrcholy (takové, jejichž všechny sousedy už jsme prošli).
Pokud chcete znát detaily, mohou vám pomoct tyto studijní materiály k nejrůznějším algoritmům včetně topologického třídění.
Anketa
V závěru cvičení proběhla studentská anketa týkájící se cvičení.