Kupac (adatszerkezet)

Kupac
TípusFa

A kupac (más néven halom, angolul heap) egy speciális fa alapú adatszerkezet, amely eleget tesz a kupac tulajdonságnak, azaz ha a B csúcs fia az A csúcsnak, akkor kulcs(A) ≥ kulcs(B) - és ebben az esetben a kupacot max-kupacnak (vagy maximum-kupacnak) nevezzük. Az összehasonlítás megfordításával min-kupacot (azaz minimum-kupacot) kapunk, melyben minden A csúcsból leszármazó B csúcshoz kulcs(B) ≥ kulcs(A). A kupac egy maximálisan hatékony implementációja a prioritási sor adatszerkezetnek.

Alkalmazása

Egy bináris maximum-kupac

A kupac adatszerkezet különböző fajtáit több algoritmus hatékony implementációja során alkalmazhatjuk:

  • Tömbök kupacos rendezése során, mivel a bináris kupacok tömb formájában is felírhatóak.
  • Kiválasztó algoritmusokban a k-adik legkisebb vagy legnagyobb elem megkeresése lineáris időben elvégezhető kupaccal.
  • Súlyozott gráfokat bejáró algoritmusok gyorsíthatóak kupacok alkalmazásával (pl. Dijkstra-algoritmus)


Műveletek kupacokban

Művelet Bináris Binomiális Fibonacci
létrehoz Θ(1) Θ(1) Θ(1)
maxkeres Θ(1) O(log n) Θ(1)
maxtöröl Θ(log n) Θ(log n) O(log n)
növel Θ(log n) Θ(log n) Θ(1)
beszúr Θ(log n) O(log n) Θ(1)
összefűz Θ(n) O(log n) Θ(1)

A max-kupacokon értelmezett alapműveletek:

  • Létrehoz: Egy üres kupac létrehozása.
  • Maxkeres: A kupac maximális kulcsát adja vissza.
  • Maxtöröl: A kupac gyökerét (maximális kulcsát) törli.
  • Növel: Egy kulcs növelése.
  • Beszúr: Egy újabb kulcs beszúrása.
  • Összefűz: Két kupacot összefűz, mindkettő elemeit megtartva.

A min-kupacokon hasonló műveleteket értelmezünk; a maximumkeresés és -törlés helyett minimumkeresést és törlést, illetve a kulcsnövelés helyett kulcs-csökkentést.

A főbb kupactípusokban az egyes műveletek komplexitása max-kupac esetén (min-kupacban a megfelelő művelet komplexitása megegyezik) a jobb oldali táblázatban látható. A táblázatban O(f) esetén a lépésszám felülről becsülhető f konstansszorosával (lásd O jelölés), θ(f) esetén pedig a lépésszám pontosan f konstansszorosa.

Típusai

  • 2-3 kupac
  • Bináris kupac
  • Binomiális kupac
  • Fibonacci-kupac
  • Intervallumkupac
  • Párosító kupac

Források

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Új algoritmusok. Scolar Kiadó, 126–140. o.. ISBN 978 963 9193 90 1 
Sablon:Adatszerkezetek
  • m
  • v
  • sz
Adatszerkezetek
Típusok
Collection • Container
Absztrakt adattípusok
  • Asszociatív tömb (associative array, map)
  • Kétvégű sor (deque)
  • Fa (tree)
  • Gráf (graph)
  • Halmaz (set)
  • Hash (hash)
  • Prioritásos sor (priority queue)
  • Sor (queue)
  • Verem (stack)
Tömbök
  • Bittáblázat (bitboard)
  • Bittérkép (bitmap)
  • Dinamikus tömb (dynamic array)
  • Magassági mező (heightmap)
  • Mátrix (2 dimenziós tömb, matrix)
  • Párhuzamos tömb (parallel array)
  • Ritka tömb (sparse array)
  • Ritka mátrix (sparse matrix)
  • Tömb (array)
Láncolt adatszerkezetek
  • Láncolt lista (linked list)
  • Kétszeresen láncolt lista (doubly linked list)
  • Kifejtett láncolt lista (unrolled linked list)
  • Önrendező lista (self-organizing list)
  • Ugrásos lista (skip list)
  • VLista (VList)
  • XOR láncolt lista (xor linked list)
Fa adatszerkezetek
  • AA-fa
  • AVL-fa
  • Bináris fa (binary tree)
  • Bináris keresőfa (binary search tree)
  • Bűnbak fa (scapegoat tree)
  • Intervallum fa (interval tree)
  • Önkiegyensúlyozó bináris keresőfa (self-balancing binary search tree)
  • Piros-fekete fa (red-black tree)
  • Súlyozott fa (weight-balanced tree)
Kupacok
  • 2-3 kupac
  • Bináris kupac (binary heap)
  • Binomiális kupac (binomial heap)
  • D-kupac (D-ary heap)
  • Fibonacci kupac (Fibonacci heap)
  • Kupac (heap)
  • Párosító kupac (pairing heap)
  • Treap
Gráf adatszerkezetek
Hash
  • Bloom szűrő
  • Elosztott hash tábla
  • Hash fa
  • Hash lista
  • Hash-tábla
  • Hash trie
  • Prefix hash fa
  • Informatika Informatikai portál • összefoglaló, színes tartalomajánló lap
Ez az informatikai tárgyú lap egyelőre csonk (erősen hiányos). Segíts te is, hogy igazi szócikk lehessen belőle!