Znovu sa rozprávame s Michalom Anderlem, ktorý je v našich očiach najväčší oborník na algoritmy. Pôvodne sme sa chceli najmä rozprávať o užitočnosti algoritmoch v reálnej práci, avšak diskusia bola natoľko zaujímavá a náučná (aspoň pre nás), že sme kecali aj o rôznych iných veciach.
Rýchlostné programovanie alebo competitive programming. Čo to je? Načo to je? Ako sa dá v tejto oblasti zdokonalovať na Slovensku? Sú súťaže iba o súťažení? Tieto a ďalšie témy rozoberáme s Michalom Anderlem, ktorý vedie algoritmický predmet na MatFyz-e, pracuje part-time vo Vacuumlabs a popri tom sa venuje programátorským a matematickým súťažiam – teraž už hlavne ako organizátor.
V predchádzajúcich epizódach sme sa venovali algoritmom a v tejto epizódke algoritmy konečne uzavrieme. Povedali sme si, čo to algoritmy vlastne sú, na čo sú, čo sú to dátové štruktúry a aké by si mal/a poznať a to isté v sme si povedali aj o algoritmoch.
Ako som už spomenul, dnes to uzavrieme. V trochu filozofickejšom podcaste rozoberáme, či algoritmy teda potrebuješ vedieť. Prípadne do akej miery. Alebo vôbec? Na to si už budeš musieť vypočut našu epizódu.
(00:00 – 40:00) – Diskusia o algoritmoch
Algoritmus je niečo, s čím sa začínajúci programátor alebo začínajúca programátorka stretne veľmi rýchlo. Chceš vypísať pole? Použíješ algoritmus. Chceš nájsť prvok v poli? Použiješ algoritmus. Chceš zistiť aká je najkratšia cesta z Bratislavy do Košíc? Použiješ Googlu, ale ten na pozadí využíva nejaký algoritmus (keby len jeden). Aké známe algoritmy by si si mal/a naštudovať a vyskúšať naprogramovať? V podstate o tom je táto epizóda.
(00:00) – Úvod
(02:15) – Lineárne a binárne vyhľadávanie
(07:40) – Sortovacie algoritmy
(19:19) – Grafové algoritmy
(27:46) – Brute force algoritmy
(30:00) – Dynamické programovanie
(37:50) – Greedy algoritmy
(43:00) – Umelá inteligencia
(46:21) – Genetické algoritmy
(53:12) – Záver
Dátové štruktúry sú základným stavebným prvkom programovania. Predstavujú rôzne spôsoby reprezentácie dát. Opíšeme si najzákladnejšie dátové štruktúry a rozdiely medzi nimi. Algoritmy spomínať nebudeme, to až v ďalšej epizóde.
(00:00) – Úvod
(02:35) – Čo su dátové štruktúry?
(05:59) – Polia (Arrays)
(12:39) – Zreťazený zoznam (Linked list)
(19:46) – Hash set
(27:44) – Hash map / Dictionary
(32:34) – Zásobník (Stack)
(35:17) – Rada (Queue)
(37:26) – Grafy
(43:07) – Stromy
(44:59) – Nečakaná zmena plánov
(46:47) – Záver
https://wp.streetofcode.sk/podcast/ep-46-datove-struktury/
Čo je to algoritmus? Ako sa meria efektivita algoritmov? Načo to vlastne celé je?
Touto epizódou začíname neoficiálnu sériu o algoritmoch. V ďalších dvoch (viac ich asi nebude) epizódach sa budeme baviť o konkrétnych algoritmoch, dátových štruktúrach a povieme si aj, načo to je celé dobré a čo z toho je dôležité vedieť pri bežnom programovaní.
(00:00) – Úvod
(03:00) – Čo je to algoritmus?
(07:16) – Ako sú zadefinované algoritmy?
(13:32) – Vlastnosti algoritmov
(17:11) – Ako porovnať efektivitu algoritmov?
(18:48) – Asymptotická zložitosť
(23:31) – Načo je asymptotická zložitosť dobrá?
(24:49) – Trade-off medzi pamäťou a rýchlosťou
(27:27) – Načo nám teda treba algoritmy?
(31:11) – Záver