*Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Žabovi na
*
Táto úloha voľne nadväzuje na úlohu Pavúčí sklad z prechádzajúceho kola. Odporúčame si preto aspoň letmo prečítať jej zadanie aj vzorové riešenie. Na vyriešenie tejto úlohy to síce nie je nutné, myslíme si však, že vám to vie pomôcť.
Spomínate si ešte na pavúka Jonáša a jeho siete? Ukladal si do nich mušky, ktoré sa mu podarilo chytiť. Dodržiaval pri tom veľmi prísne pravidlá. Z každej mušky viedli dodola najviac dve vlákna – ľavé a pravé. Naviac, pre každú mušku v sieti platilo, že všetky mušky, ktoré boli pod ňou naľavo boli ľahšie ako ona, a všetky mušky, ktoré boli pod ňou napravo boli ťažšie ako ona. Jonášova pavučina teda mohla vyzerať napríklad takto.
Keďže Jonáš sa chcel naučiť tkať ešte krajšie siete, vybral sa na skusi do sveta. Ako prvých navštívil svojich bratrancov v Španielsku, kde sa dozvedel, že v móde sú hlboké siete. A keďže nevedel, čo je hĺbka siete, jeho bratranci mu to vysvetlili.
Každá muška v sieti je v nejakej hĺbke. Najvyššia muška v sieti je v hĺbke 0, tie zavesené priamo pod ňou sú v hĺbke 1, tie pod nimi v hĺbke 2 atď.. Presnejšie, muška zavesená priamo pod muškou v hĺbke $x$ je v hĺbke $x+1$. Hĺbka siete je potom najväčšia hĺbka, v ktorej je ešte nejaká muška. Na obrázku vyššie teda vidíte sieť hĺbky 3.
Pavučinu z prvého obrázku by Jonáš vytvoril, keby mušky pridával v nasledovnom poradí: 42, 29, 15, 68, 3, 35, 55, 47, 24, 30, 1001. Pri riešení môžete použiť napríklad nasledovný nástroj btv.melezinek.cz/binary-search-tree.html. Keď vedľa tlačidla Insert
(po slovensky pridaj) napíšete nejaké číslo a tlačidlo stlačíte, do stromu sa zadané číslo pridá dodržujúc všetky Jonášove podmienky.
Po Španielsku sa Jonáš vybral do Nemecka. Nemecké pavúky sú oveľa praktickejšie a snažia sa tkať svoje siete čo najplytkejšie. Komu by sa totiž chcelo behať celý deň po sieti, keď môže mať všetky mušky poruke, iba pár vlákien od vrchu.
Rovnako ako v predchádzajúcej úlohe pri riešení použite btv.melezinek.cz/binary-search-tree.html.
Jonáš sa z potuliek svetom vrátil múdrejší. Uvedomil si, že záleží na tom, ako jeho sieť vyzerá. A keďže je od prírody lenivý a za jedlom sa mu chodiť nechce, zapáčil sa mu viac nemecký spôsob stavania pavučín – čím menšia hĺbka, tým lepšie.
Keď sa však pozrel na svoju pavučinu (Obr. 2) zdala sa mu prihlboká. Hlavne vľavo bolo oveľa viac mušiek ako vpravo. Preto mu napadlo presunúť mušku 42 na vrch pavučiny. Výsledok jeho snaženia vidíte na Obr. 3. Teraz ho však zaujíma, či by takýto posun vedel robiť aj všeobecne.
Presunutím ľavej mušky dostal Jonáš z obrázku 2 obrázok 3, presunutím pravej mušky mohol zase z obrázku 3 vzniknúť obrázok 2. Dajte si pozor, že obrázok neukazuje všeobecný a ani najťažší prípad, ktorý sa Jonášovi pri presúvaní môže stať.
Ani toto Jonášovi však nestačilo. Prišiel na to, že ak by na vrch pavučiny dal mušku, ktorej váha je v strede medzi všetkými muškami, napravo aj naľavo by bolo rovnako veľa mušiek. V jeho pavučine je to muška s váhou 35, lebo práve päť mušiek je ľahších a práve päť je ťažších. Ako však dostať mušku 35 na vrch siete?
Presúvanie mušiek bez konkrétneho plánu je únavné a častokrát zbytočné. Jonáš si preto nakreslil, ako má jeho pavučina vyzerať. Ostáva už len presunúť mušky v jeho sieti. Ako to však spraviť?
Pri riešení môžete použiť riešenia podúlohy c) a d). Nemôžete však sieť stavať od začiatku. Dovolené máte robiť iba také zmeny, po ktorých bude sieť stále celistvá a bude spĺňať podmienky zadania. To znamená, že môžete presunúť mušku naľavo na vrch siete (ako v podúlohe c)) alebo previazať zopár vlákien, ale nemôžete povedať, že na vrch dáte mušku 27 a zvyšné mušky si zatiaľ niekam odložíte.
Ako príklad si môžete predstaviť, že Jonášova pavučina vyzerá ako na obrázku 2 a jeho cieľom je ju upraviť tak, aby vyzerala ako na obrázku 1.