ADŠ prednáška 15: Generovanie kombinácií a variácií. Pažravé platenie najmenším počtom mincí.
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Prednáška nadväzuje na predchádzajúcu tému generovania kombinatorických objektov hrubou silou. Najprv sa poukazuje na vlastnosť klasického binárneho kódovania podmnožín, kde pri spracúvaní ľubovoľnej množiny sú už nutne spracované všetky jej podmnožiny s menším kódom. Následne sa rozoberá generovanie k-prvkových kombinácií pomocou funkcie next_permutation nad poľom núl a jednotiek, jeho časová zložitosť N nad k krát N a porovnanie so špecializovanými backtrackingovými algoritmami s lepšou zložitosťou N nad k krát k. Ukazuje sa tiež, ako kombináciou permutácií generovať variácie (napríklad usporiadanú top šestku) a komplikovanejšie štruktúry, napríklad výber skupiny s predsedom, pomocou vhodného kódovania hodnôt v poli. Na záver sa načrtáva prechod k zložitejším úlohám, ako je hľadanie najlacnejšej kostry grafu, kde už hrubá sila nie je efektívnym riešením.
- - Pri klasickom binárnom generovaní podmnožín sú v momente spracovania množiny už spracované všetky jej vlastné podmnožiny.
- - Generovanie k-prvkových kombinácií pomocou next_permutation na poli núl a jednotiek má zložitosť N nad k krát N.
- - Špecializované backtrackingové algoritmy (napr. Python itertools.combinations) dosahujú lepšiu zložitosť N nad k krát k.
- - Rozdiel medzi prístupmi je významný najmä pri extrémnych pomeroch N a k (veľké N, malé k).
- - Kombináciou generovania kombinácií a permutácií možno generovať variácie, napríklad usporiadané poradie top šestky.
- - Vhodným kódovaním hodnôt v poli (napr. jednotky, dvojka pre predsedu, nuly) možno riešiť aj zložitejšie kombinatorické úlohy jedným krokom.
- - Hrubá sila nie je vhodná pre všetky úlohy, príkladom je hľadanie najlacnejšej kostry grafu medzi trafostanicami.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky