5.4 Reprezentace
Paměťová reprezentace prvků BH
Prvek v BH bude v počítači reprezentován pomocí následující struktury:
- Ukazatel na otce
- Ukazatel na levého sourozence
- Ukazatel na nejpravějšího syna
- Hodnota \(k(v)\)
Tvrzení
BHMergeTree i vytvoření BH ze seznamu synů kořene lze v čase \(O(log n)\), kde \(n\) je počet prvků ve výsledné BH
K Zamyšlení
Jak v minimové BH udělat operace:
- BHDecreaseKey v čase \(O(log n)\)?
- BHDelete v čase \(O(log n)\)?
- BHIncreaseKey v čase \(O(log n)\)?
Všechny operace dostanou ukazatel na prvek, se kterým se pracuje
Srovnání binární a binomiální haldy
Operace | Binární | Binomiální |
---|---|---|
Vložení prvku do haldy velikosti \(n\) | \(O^{*}(log n), O(log n)\) | \(O^{*}(1), O(log n)\) |
ExtractMin z haldy velikosti \(n\) | \(O(log n)\) | \(O(log n)\) |
Sloučení 2 hald velikosti \(n\) | \(O(n)\) | \(O(log n)\) |
Binomiální haldy jsou nejjednodušším řešením tzv. mergeable heaps, které dokážou velmi efektivně provést operaci sloučení a ostatní operace mají na operaci sloučení postavené.