Dalam ilmu komputer, timbunan atau tumpuk (bahasa Inggris: heapcode: en is deprecated ) adalah struktur data berbasis pohon khusus yang memenuhi sifat timbu…

Dalam ilmu komputer, timbunan atau tumpuk (bahasa Inggris: heap) adalah struktur data berbasis pohon khusus yang memenuhi sifat timbunan (heap property). Dalam literatur bahasa Indonesia, istilah "timbunan" lebih disarankan untuk digunakan guna menghindari kerancuan dengan struktur data stack (tumpukan).
Berdasarkan sifatnya, timbunan dibagi menjadi dua jenis utama:[1]
Timbunan merupakan salah satu implementasi struktur data yang paling efisien untuk membangun antrean prioritas (priority queue). Timbunan tidak sama dengan struktur data yang terurut secara ketat seperti pohon pencarian biner (BST). Timbunan hanya menjamin hubungan parsial antara induk dan anak, bukan urutan antarsaudara (kiri dan kanan).
Bentuk timbunan yang paling umum dijumpai adalah timbunan biner (binary heap). Timbunan biner adalah sebuah pohon biner lengkap (complete binary tree), di mana seluruh tingkat pohon terisi penuh kecuali mungkin pada tingkat paling bawah, dan simpul-simpul pada tingkat terbawah diisi dari sisi paling kiri.[2]
Karena strukturnya yang padat dan teratur, timbunan biner hampir selalu diimplementasikan secara efisien menggunakan larik (array) biasa, tanpa memerlukan penunjuk (pointer) sama sekali.
Jika elemen akar diletakkan pada indeks 0 dalam larik, maka untuk setiap simpul pada indeks , posisi kerabatnya dapat dihitung dengan operasi aritmetika dasar:
Pendekatan menggunakan larik ini membuat timbunan sangat cepat secara komputasi karena memanfaatkan lokalitas rujukan (cache locality) yang ramah terhadap memori prosesor.
Operasi-operasi pada timbunan biasanya memiliki kompleksitas waktu yang sangat terukur secara logaritmik:[1]
Peek / Find-Max / Find-Min): Mengembalikan nilai dari elemen akar tanpa menghapusnya. Operasi ini berjalan dalam waktu konstan .Insert / Push): Elemen baru ditambahkan pada akhir tumpukan (posisi terbawah pohon), lalu "diapungkan" ke atas (bubble up atau sift-up) dengan cara ditukar berulang kali dengan simpul induknya hingga sifat timbunan terpenuhi. Kompleksitas waktunya adalah .Extract-Max / Extract-Min / Pop): Mengambil dan menghapus elemen akar. Posisi akar kemudian digantikan oleh elemen paling terakhir di dasar pohon. Elemen tersebut lalu "ditenggelamkan" (sift-down atau heapify) ke bawah dengan cara ditukar dengan salah satu anaknya yang lebih besar (atau lebih kecil) hingga sifat timbunan kembali terpenuhi. Kompleksitas waktunya adalah .Timbunan memiliki peran penting dalam berbagai algoritme dan rekayasa perangkat lunak:
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.