Haldy

Description

PAL
Michal Roch
Mind Map by Michal Roch, updated more than 1 year ago
Michal Roch
Created by Michal Roch about 8 years ago
38
0

Resource summary

Haldy
  1. Typy
    1. Binární halda
      1. Popis
        1. Kompletní binární strom - všechny úrovně kromě jsou plně obsazeny
        2. Operace
          1. Insert
            1. Přidat na konec haldy
              1. Swapovat s parentem dokud není platná podmínka
              2. AccessMin
                1. Vrátí kořen
                2. Delete / DeleteMin
                  1. Prohoď prvek s posledním prvkem haldy
                    1. Swapuj dokud není obnovena podmínka haldy
                      1. Smaž poslední prvek
                      2. BuildHeap
                        1. Seřadí pole do haldy
                          1. Od dolní meze poloviny délky pole až po první prvek volá Heapify
                            1. Pokud jeden nebo více potomků je větší než rodič
                              1. Prohod většího z potomků s rodičem
                              2. O(n)
                            2. Reprezentace
                              1. Spojový seznam
                                1. Pole
                                  1. X(1)- kořen
                                    1. X(n) - prvek
                                      1. X(2n) / X(2n+1) - potomci
                                  2. Binomiální halda
                                    1. Popis
                                      1. Les binomiálních stromů odlišného stupně
                                        1. Každý strom daného stupně může být přítomen max 1
                                          1. Binomiální strom je definován rekurzivně
                                            1. Stupeň 0 je jeden prvek
                                              1. Stupeň k má kořen, jehož potomci jsou stromy stupňě k-1, k-2,...,1,0
                                              2. Výška binomiálního stromu je rovna jeho stupni
                                                1. Kořen binomiálního stromu má právě k potomků
                                                  1. Binomiální strom má právě 2^k prvků
                                                    1. i-tá úroveň binomiálního stromu obsahuje právě k nad i prvků
                                                    2. Reprezentace
                                                      1. Kořeny jsou v linked listu protože na kořeny se nedotazujeme náhodně
                                                        1. Udržujeme minpointer který odkazuje na strom s nejmenším kořenem
                                                        2. Operace
                                                          1. Insert
                                                            1. Vytvoří novou haldu s jedním stromem 0 stupně a zavolá merge na původní haldu
                                                            2. AccessMin
                                                              1. Vrátí kořen z minpointeru
                                                              2. Merge
                                                                1. Spojí dvě haldy do jedné
                                                                  1. Spojí linkedlisty v pořadí podle stupně stromů
                                                                    1. Zleva kontroluje stromy stejného stupně - 4 cases
                                                                      1. k[x] <= k[x+1]
                                                                        1. x+1 je potomek x
                                                                        2. k[x] > k[x+1]
                                                                          1. x je potomek x+1
                                                                          2. k[x] != l[x+1]
                                                                            1. Jdi dál
                                                                            2. k[x] == k[x+1] == k[x+2]
                                                                              1. Jdi dál
                                                                          3. Delete
                                                                            1. Přidej potomky min stromu jako nové bin. stromy nové haldy
                                                                              1. Smaž původní min strom
                                                                                1. Zavolej merge
                                                                                2. DecreseKey
                                                                                  1. Stejné jako u binárního stromu
                                                                                  2. Delete
                                                                                    1. Klíč prvku je -INF
                                                                                      1. Stane se novým minimem
                                                                                        1. Zavolej delete min
                                                                                  3. Fibonacciho halda
                                                                                    1. Vlastnosti
                                                                                      1. Amortizovaná složitost lepší než bin. halda
                                                                                        1. Nevhodná pro real-time systémy protože některé operace mají lineární složistot
                                                                                          1. Složitá na implementaci
                                                                                          2. Operace
                                                                                            1. DeleteMin
                                                                                              1. Všechny potomky stromu nalinkovat na původní místo kořene
                                                                                                1. Consolidate
                                                                                                  1. Začni od minima a postupuj doprava dokud neprojdeš všechny kořeny
                                                                                                    1. Do pole A ukládej odkaz na strom na pozici d kde d je stupeň stromu
                                                                                                      1. Jakmile narazíš na strom, který je stejného stupně jako už dříve objevený (A[d] je obsazeno)
                                                                                                        1. Kořen s menším klíčem nalinkuj jako potomka většího klíče
                                                                                                          1. Zvyš stupeň stromu a znovu prověř, jestli už nebyl takový strom nalezen
                                                                                                        2. Náhodný kořen je nový min
                                                                                                        3. Instert
                                                                                                          1. Přidej nový strom s jedním prvkem
                                                                                                            1. Nastav mark na false
                                                                                                            2. DecreaseKey
                                                                                                              1. Sniž hodnotu klíče
                                                                                                                1. Pokud je menší než rodič, odřízni ho a přidej jako nový strom
                                                                                                                  1. Pokud rodič byl marked odřízni ho taky
                                                                                                                2. Delete
                                                                                                                  1. DecreaseKey na nekonečno a deleteMin
                                                                                                                3. Popis
                                                                                                                  1. Uvolněná varianta bin. haldy
                                                                                                                    1. Markuje uzly při odebrání potomka
                                                                                                                      1. Je-li odebrán potomek označenému uzlu, rodič je odtržen a přidán jako nový strom
                                                                                                                        1. Díky tomu je velikost podstromu stupně k alepsoń Fk+2 kde Fk je kté Fibb. číslo
                                                                                                                        2. Nepotřebné operace odkládá na později
                                                                                                                          1. Spojení stromů se dělá jen při DeleteMin (consolidate)
                                                                                                                            1. Amortizovaná složitost většiny operací je tak konstantní
                                                                                                                          2. Reprezentace
                                                                                                                            1. Obousměrný kruhový seznam sousedů a kořenů
                                                                                                                              1. Odkaz na prvního potomka
                                                                                                                            2. n-ární halda
                                                                                                                              1. Zobecnění binární haldy
                                                                                                                                1. Operace analogicky stejné
                                                                                                                                  1. Asymptotická složitost operací stejná
                                                                                                                                    1. Přesná složitost odlišná podle základu logaritmu
                                                                                                                                      1. BInární halda je efektivní protože lze využívat binárních posunů pro průchod stromem
                                                                                                                                        1. n-ární halda je rychlejší pro haldy, které se nevlezou do paměti počítače
                                                                                                                                      2. Datová struktura (obvykle strom), která splňuje podmínku haldy
                                                                                                                                        1. Pokud B je potomek A, pak key(B)>=key(A)
                                                                                                                                        Show full summary Hide full summary

                                                                                                                                        Similar

                                                                                                                                        Computing
                                                                                                                                        Kwame Oteng-Adusei
                                                                                                                                        Pythagorean Theorem Quiz
                                                                                                                                        Selam H
                                                                                                                                        A level Computing Quiz
                                                                                                                                        Zacchaeus Snape
                                                                                                                                        Geometry Vocabulary
                                                                                                                                        patticlj
                                                                                                                                        Algebra 2 Quality Core
                                                                                                                                        Niat Habtemariam
                                                                                                                                        Types and Components of Computer Systems
                                                                                                                                        Jess Peason
                                                                                                                                        Input Devices
                                                                                                                                        Jess Peason
                                                                                                                                        Output Devices
                                                                                                                                        Jess Peason
                                                                                                                                        Project Communications Management
                                                                                                                                        farzanajeffri
                                                                                                                                        Common Technology Terms
                                                                                                                                        Julio Aldine Branch-HCPL
                                                                                                                                        Network Protocols
                                                                                                                                        Shannon Anderson-Rush