Підтримка
www.wikidata.uk-ua.nina.az
Dvijkova kupa angl binary heap ce struktura danih sho ye masivom yakij mozhna rozglyadati yak majzhe povne dvijkove derevo Kozhen vuzol cogo dereva vidpovidaye pevnomu elementu masiva Na vsih rivnyah krim mozhlivo ostannogo derevo povnistyu zapovnene zapovnenij riven takij sho mistit maksimalno mozhlivu kilkist vuzliv Ostannij riven zapovnyuyetsya poslidovno zliva napravo do tih pir doki v masivi ne zakinchatsya elementi Dvijkova min max kupa Tip dvijkove derevo kupa Vinajdeno 1964 Vinajshli J W J Williams Obchislyuvalna skladnist u zapisi velikogo O Serednya Najgirsha Prostir O n O n Poshuk O n O n Vstavlyannya O 1 O log n Vidalennya Priklad povnoyi dvijkovoyi maksimalnoyi kupi Navedeno yiyi predstavlennya u viglyadi masiva Priklad povnoyi dvijkovoyi minimalnoyi kupi Dlya masivu A u koreni dereva znahoditsya element A 1 Dali derevo buduyetsya za nastupnim principom yaksho yakomus vuzlu vidpovidaye indeks i to indeks jogo batkivskogo vuzla obchislyuyetsya za dopomogoyu proceduri Parent i indeks livogo dochirnogo vuzla za dopomogoyu proceduri Left i a indeks pravogo dochirnogo vuzla za dopomogoyu proceduri Right i Parent i return i 2 displaystyle lfloor i 2 rfloor Left i return 2 i displaystyle 2i Right i return 2 i 1 displaystyle 2i 1 Rozglyadayut dva vidi binarnih kup nespadni i nezrostayuchi V oboh vidah znachennya sho roztashovani u vuzlah kupi zadovilnyayut vlastivosti kupi angl heap property Vlastivis nezrostayuchoyi kupi angl max heap property polyagaye v tomu sho dlya kozhnogo vuzla krim korenevogo vikonuyetsya nerivnist A P a r e n t i A i displaystyle A Parent i geqslant A i Inshimi slovami znachennya vuzla ne perevishuye znachennya batkivskogo vuzla Takim chinom najbilshij element znahoditsya v koreni dereva Princip pobudovi nespadnoyi kupi angl min heap protilezhnij Vlastivist nespadnoyi kupi angl min heap property polyagaye v tomu sho kozhen element krim korenevogo ye nemenshim za svij batkivskij element A P a r e n t i A i displaystyle A Parent i leqslant A i Pidtrimka vlastivostej kupiPidtrimku vlastivosti kupi mozhna zdijsnyuvati za dopomogoyu proceduri Max Heapify dlya nezrostayuchih binarnih kup Na vhid podayetsya masiv A j indeks i cogo masivu Pri vikliku proceduri Max Heapify pripuskayetsya sho binarni dereva korenyami yakih ye elementi Left i i Right i ye nezrostayuchimi kupami ale sam element A i mozhe buti menshim za jogo dochirni elementi i tim samim porushuvati vlastivist nezrostayuchoyi kupi Procedura Max Heapify spuskaye znachennya elementa A i vniz po kupi do tih pir doki derevo v yakomu cej element bude kornem ne stane nezrostayuchoyu binarnoyu kupoyu Max Heapify A i 1 l L e f t i displaystyle l gets Left i 2 r R i g h t i displaystyle r gets Right i 3 if l h e a p s i z e A displaystyle l leq heap size A and A l gt A i displaystyle A l gt A i 4 then l a r g e s t l displaystyle largest gets l 5 else l a r g e s t i displaystyle largest gets i 6 if r h e a p s i z e A displaystyle r leq heap size A and A r gt A l a r g e s t displaystyle A r gt A largest 7 then l a r g e s t r displaystyle largest gets r 8 if l a r g e s t i displaystyle largest neq i 9 then Swap A i A l a r g e s t displaystyle A i leftrightarrow A largest 10 Max Heapify A largest Chas roboti proceduri v najgirshomu vipadku proporcijnij visoti kupi Yaksho kupa skladayetsya z n elementiv to yiyi visota log2 n Tomu ocinka chasu roboti odnogo vikliku Max Heapify ye O log n Dlya pidtrimki vlastivosti nespadnoyi binarnoyi kupi mozhna skoristatis proceduroyu Min Heapify Vona povnistyu podibna do Max Heapify tilki v ryadkah 3 i 6 algoritmu znak gt treba zaminiti na lt Pobudova kupiZa dopomogoyu proceduri Max Heapify mozhna peretvoriti masiv A 1 n de n length A u nezrostayuchu kupu Vsi elementi pidmasivu A n 2 1 n displaystyle A lfloor n 2 rfloor 1 n ye listami dereva tomu kozhen z nih mozhna vvazhati odnoelementnoyu kupoyu z yakoyi mozhna pochati proces pobudovi Procedura Build Max Heap prohodit po vsih inshih vuzlah i dlya kozhnogo z nih vikonuye proceduru Max Heapify Build Max Heap A 1 h e a p s i z e A l e n g t h A displaystyle heap size A gets length A 2 for i l e n g t h A 2 displaystyle i gets lfloor length A 2 rfloor downto 1 3 do Max Heapify A i Po zavershennyu roboti proceduri masiv A organizuyetsya v nezrostayuchu kupu Chas roboti proceduri Build Max Heap mozhna zapisati tak O n h 0 log 2 n h 2 h O n h 0 h 2 h O n displaystyle O left n sum h 0 lfloor log 2 n rfloor frac h 2 h right O left n sum h 0 infty frac h 2 h right O n Dlya stvorennya nespadnoyi kupi neobhidno zaminiti u tretomu ryadku algoritmu viklik Max Heapify na Min Heapify Algoritm vporyadkuvannya kupoyuRobota algoritmu sortuvannya kupoyu pochinayetsya z vikliku proceduri Build Max H za dopomogoyu yakoyi z pochatkovogo masivu A 1 n stvoryuyetsya nezrostayucha kupa Dali poslidovno z kupi vijmayetsya najbilshij element yakij minyayut z ostannim v kupi Pislya kozhnogo obminu rozmir kupi zmenshuyut na odinicyu V kinci otrimuyut povnistyu vidsortovanij nespadnij masiv Heapsort A 1 Build Max Heap A 2 for i l e n g t h A displaystyle i gets length A downto 2 3 do Pominyati A 1 A i displaystyle A 1 leftrightarrow A i 4 h e a p s i z e A h e a p s i z e A 1 displaystyle heap size A gets heap size A 1 5 Max Heapify A 1 Chas roboti proceduri Heapsort rivnij O n log n oskilki vsogo potribno n 1 viklikiv Max Heapify kozhen z yakih pracyuye za O log n Cherga z prioritetamiDokladnishe Cherga z prioritetom Dlya togo shob realizuvati na kupi operaciyi chergi z prioritetami vikoristovuyut she odnu dopomizhnu proceduru Un Max Heapify A i Cya procedura pidtrimuye vlastivist nezrostayuchoyi kupi analogichno Un Min Heapify A i dlya nespadnoyi kupi za umovi yaksho vlastivist kupi porushuyetsya v elementi z indeksom i vin mozhe buti bilshim za batkivskij element Pri comu pripuskayetsya sho v usih inshih elementah vlastivist vikonuyetsya i batkivskij element i go bilshij kozhnogo z nashadkiv i go elementa Procedura pidnimaye element ugoru po derevu doti doki vin ne perestane porushuvati vlastivist kupi Un Max Heapify A i 1 if i 1 2 then return 3 if A Parent i lt A i 4 then Pominyati A P a r e n t i A i displaystyle A Parent i leftrightarrow A i 5 Un Max Heapify A Parent i Chas roboti proceduri ye O l o g n displaystyle O logn Procedura chergi z prioritetami Insert realizuyetsya takim chinom v kinec kupi dopisuyetsya odin element pri comu rozmir kupi zbilshuyetsya na 1 potim za dopomogoyu Un Max Heapify cej element pidnimayetsya na neobhidnij riven Insert A x 1 h e a p s i z e A h e a p s i z e A 1 displaystyle heap size A gets heap size A 1 2 A h e a p s i z e A x displaystyle A heap size A gets x 3 Un Max Heapify A heap size A Maksimalnij element znahoditsya v pershomu elementi kupi tomu procedura Maximum realizuyetsya trivialno Maximum A 1 if heap size A 0 2 then Pomilka Cherga pusta 3 else return A 1 V proceduri Extract Max rozmir kupi zmenshuyetsya na 1 ostannij element zapisuyetsya na misce pershogo pri comu porushuyetsya vlastivist kupi Vlastivist kupi vidnovlyuyetsya proceduroyu Max Heapify Extract Max A 1 if heap size A 0 2 then Pomilka Cherga pusta 3 m a x A 1 displaystyle max gets A 1 4 A 1 A h e a p s i z e A displaystyle A 1 gets A heap size A 5 h e a p s i z e A h e a p s i z e A 1 displaystyle heap size A gets heap size A 1 6 if heap size A gt 0 7 then Max Heapify A 1 8 return max U proceduri Change Key mozhlivi tri varianti klyuch elementa zbilshivsya klyuch elementa zmenshivsya klyuch elementa ne zminivsya V zalezhnosti vid variantu vlastivist kupi pislya zmini klyucha treba vidnovlyuvati abo proceduroyu Un Max Heapify abo proceduroyu Max Heapify Change Key A i k 1 o l d k e y A i displaystyle old key gets A i 2 A i k displaystyle A i gets k 3 if k gt old key 4 then Un Max Heapify A i 5 elseif k lt old key 6 Max Heapify A i Asimptotichna skladnist operacij Procedura Maximum vikonuyetsya za O 1 displaystyle mathit O 1 proceduri Insert Extract Max Change Key vikonuyutsya za O log 2 n displaystyle mathit O log 2 n PrimitkiTomas Kormen Charlz Lejzerson Ronald Rivest Kliford Stajn 2009 1990 Rozdil 6 1 Kupi Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 DzherelaTomas Kormen Charlz Lejzerson Ronald Rivest Kliford Stajn 2009 1990 Rozdil 6 1 Kupi Vstup do algoritmiv vid 3rd MIT Press i McGraw Hill ISBN 0 262 03384 4 Algoritm sortuvannya kupoyu buv zaproponovanij Vilyamsom 1964 Algorithm 232 Heapsort Communications of the ACM 7 6 347 348 doi 10 1145 512274 512284 Vin takozh opisav sho za dopomogoyu kupi mozhna realizuvati chergu z prioritetom Procedura Build Max Heap bula rozroblena Flojdom Robert W Floyd Algorithm 245 TREESORT Communications of the ACM 7 701 1964 Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi
Топ