The Postal Owl

Logged in: Santa Claus (home)   

Algoritmy a datové struktury 1

Back to the course

Bludiště se stráží

Deadline: 2022-03-17 10:40 (294 days ago)

Pavel Veselý — 2022-03-04 10:12 (307 days ago) — reply

Máme bludiště ve čtvercové síti o rozměrech $M\times N$ se zdmi, hrdinou a pokladem. Chceme najít nejkratší cestu hrdiny k pokladu, aniž by potkal stráž (vyskytl se na stejném políčku jako ona). Stráž má zadanou trasu délky $L$ jako posloupnost (sousedních) políček a po této trase chodí tam a zpět.

Santa Claus — 2022-03-12 13:23 (299 days ago) — editreply

Nebýt stráže, spustíme BFS.

Když přidáme stráž, můžeme taky jednoduše spustit BFS, ale každý stav nyní popisuje nejen pozice hráče, ale také pozice strážce. Hráč má obecně $M \times N - 2$ možných pozic, strážce má L různých pozic, ale lze nahlédnout, že jeho stav také zahrnuje směr, kterým jde, celkem $(L-2)\times 2 = 2L - 4$ stavů (na koncových bodech směr nemá). 

Celkově je počet stavů lineárně asymptoticky úměrný k součinu $LMN$.

Spustíme tedy BFS. Jeho časová asymptotická složitost bude dána počtem možných stavů. $O(LMN)$. Nalezená cesta bude nejkratší, stejně jako bez strážce. Kdyby existovala kratší než nalezená cesta, byla by nalezena dříve... Formálně mezi stavy úlohy se strážcem či bez není rozdíl.

Pavel Veselý — 2022-03-12 23:07 (298 days ago) — reply

správně

Points: 10.00

Pavel Veselý — 2022-03-16 13:51 (295 days ago) — reply

Upřesnění zadání: Stráž je jen jedna (tedy v každém čase na jednom políčko) a hrdina zdá počáteční polohu stráže a směr jejího pochodu. Je tedy schopen dopočítat, kde je stráž v jakémkoliv časovém kroku. Cílem hrdiny je udělat co nejméně kroků, ale kvůli stráži může být nutné vstoupit na jedno políčko víckrát (nebo "zůstat stát").

New post (You can use Markdown with KaTeX math here)

Preview: