Syntax highlighting of Archiv/TIN066 Základní haldy

Mějme uspořádané univerzum, naší strukturou "protékají" prvky, chceme rychle najít další prvek na vytažení, na druhou stranu nepotřebujeme efektivní MEMBER a u DELETE budeme znát přesnou pozici ve struktuře. Máme uspořádávací funkci <math>f\colon S \to \mathbb{R}</math>, tu navíc chceme moci změnit operacemi INCREASE (zvýší hodnotu prvku) a DECREASE (sníží hodnotu). Nakonec máme navíc ještě operace:

* DELETEMIN - smazání prvku s nejmenší hodnotou f
* MAKEHEAP - máme S a f, vyrobíme haldu
* MERGE - vyrobí konjunkci dvou hald (neověřuje jejich disjunknost)

Pak '''halda''' je strom, který splňuje ''podmínku haldy'': <math>\forall x \in S: f(otec(x)) \le f(x)</math>.

{{TODO|rozepsat zbytek}}

== Regulární haldy ==

Definice.

Algoritmus.

Složitost.

Aplikace.

== Leftist haldy ==

Definice.

Algoritmus.

Složitost.

Amortizovaná složitost.