• Tidak ada hasil yang ditemukan

Dasar Kerja Pengaplikasian Self-balancing Binary Search Tree untuk Pencarian sebagai Struktur Data yang Lebih Mangkus dan Sangkir

N/A
N/A
Protected

Academic year: 2021

Membagikan "Dasar Kerja Pengaplikasian Self-balancing Binary Search Tree untuk Pencarian sebagai Struktur Data yang Lebih Mangkus dan Sangkir"

Copied!
16
0
0

Teks penuh

(1)

1

MAKALAH IF2091 DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI

STRUKTUR DATA YANG LEBIH MANGKUS DAN SANGKIR TAHUN 2009

Dasar Kerja Pengaplikasian Self-balancing Binary Search Tree untuk Pencarian

sebagai Struktur Data yang Lebih Mangkus dan Sangkir

Michell Setyawati Handaka (135 08 045)

Program Studi Teknik Informatika

Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jl. Ganeca no. 10, Bandung e-mail: if18045@students.if.itb.ac.id

ABSTRAK

Proses pencarian adalah salah satu operasi paling krusial dalam pengolahan data, khususnya mengingat perkembangan ruang memori yang makin lama, tak ayal lagi, akan menjadi –dapat dikatakan– tidak terbatas. Dengan proses pencarian secara traversal, kompleksitas waktu dalam notasi asimptotik setara dengan O(n) yang dalam hal ini tergolong algoritma polinomial yang mangkus dalam spektrum waktu. Akan tetapi, dengan pencarian biner, kompleksitas dapat ditekan sampai kepada tingkat O(log n) saja, yang tentunya jauh lebih baik.

Pencarian secara rekursif dapat dilakukan dengan memanfaatkan tipe struktur data yang juga rekursif, seperti pohon –yang dalam hal ini adalah pohon biner–. Ide pencarian biner hanya dapat dilakukan terhadap suatu data yang sudah terurut dengan baik, dalam struktur data pohon, tipe yang demikian ini dikenal dengan nama pohon biner terurut.

Persoalan berikutnya adalah, pencarian pada pohon biner terurut sangat bergantung kepada tinggi pohon, sehingga akan sangat menguntungkan jika kedalaman suatu pohon dapat dibuat minimum. Hal ini dapat dicapai dengan pendekatan pohon biner seimbang, dimana kedalaman pasti minimum dan banyak simpul per aras berjumlah maksimum.

Untuk membangun suatu pohon seimbang sebenarnya sangat mudah. Akan tetapi permasalahan yang dihadapi adalah ketika kita ingin pohon seimbang ini terurut dan proses penyeimbangan haruslah tidak mengganggu keterurutan data.

Untuk menangani kasus ini, dapat digunakan suatu struktrur data baru yang dikenal sebagai

self-balancing binary search tree. Pada struktur data ini,

kompleksitas waktu pencarian akan selalu bernilai O(log n). Hal yang demikian ini dapat tercipta karena pohon merepresentasikan pohon terurutnya dalam porsi yang seimbang. Untuk menjaga struktur data yang demikian ini, diperlukan suatu operasi tambahan, yakni pemeliharaan struktur, setiap kali penyisipan atau penghapusan dilakukan. Menariknya,

operasi ini tidaklah mengubah kompleksitas waktu baik penyisipan maupun penghapusan tanpa pemeliharaan struktur : yakni tetap O(log n).

Kata kunci: pohon biner terurut, pohon biner seimbang, pencarian beruntun, pencarian biner, self-balancing binary

seacrh tree : pohon Red-black, pohon AVL, pohon AA,

pohon Splay, pohon Scapegoat, Treap.

1. PENDAHULUAN

Dewasa ini, kapasitas divais penyimpanan data / memori terus menerus bertumbuh membesar dengan laju yang mana kian lama kiat pesat. Sebagai acuan, dalam waktu satu tahun, kapasitas HDD –Hard Disk Drive– meningkat 50% dari yang semula hingga kini (tahun 2009) hanya mencapai 2TB akan segera menjadi 3TB pada tahun 2010[3].

Sementara itu, kapasitas memori selalu diidentikkan pertumbuhannya berlawanan dengan kecepatan pengolahan. Dapat diibaratkan, memori beranalogi dengan sebuah tas : semakin besar ukuran tas, semakin besar pula kapasitas tas tersebut untuk dapat menampung barang-barang yang akan dimasukkan ke dalamnya; akan tetapi, hal ini juga diimbangi dengan bertambah beratnya beban tas tersebut. Dengan demikian, salah satu hal yang menjadi concern masyarakat umum saat ini adalah mencari devais memori yang memiliki kapasitas besar namun tidak memberatkan, atau setidaknya memiliki efektivitas kinerja tinggi.

Salah satu operasi mendasar yang sering dilakukan dalam pengolahan maupun penggunaan data adalah

searching atau yang lebih dikenal sebagai proses

pencarian. Proses pencarian data mendapat porsi prioritas yang semakin tinggi seiring dengan meningkatnya ruang memori, mengingat hal ini menjadi krusial jika pengguna sedikit “jorok”. Bahkan, ketika pengguna berlaku apik sekalipun, bukan tidak mungkin tempat suatu data tertentu disimpan menjadi terlupakan akibat proses fragmentasi

(2)

DA LE me be su ko pe bin ten

2.

3.

be seb de po ASAR KERJA P EBIH MANGKU emori yang esarnya ukuran Adapun rata-uatu proses p ompleksitas as encarian meng

ner terurut han ntunya lebih b

. STRUKT

. DASAR T

Pada umumn eruntun (sequ bagai berikut engan Adapun skem ohon biner dap

Perik Jika Jika atau PENGAPLIKASI US DAN SANGK terlampau n memori. -rata jumlah w pencarian me simtotik adala ggunakan bin nya memakan baik.

TUR DATA

TEORI PR

nya, algoritm uential searc : atau O(n ma pencarian pat digambark

ksa akar poho ketemu −> s tidak ketemu upapohon kan

X

IAN SELF-BALA KIR banyak diak waktu yang di enggunakan ah O(n); seme nary search t n sejumlah O(l

A (TERLAM

ROSES PEN

ma untuk pr ch) pada sua n). n untuk struk kan sebagai be on selesai u −> cari d nan ANCING BINAR kibatkan kare ibutuhkan unt traversal dal entara itu, pro

tree atau poh

log n) saja, ya

MPIR)

NCARIAN

roses pencar atu list ada

ktur data beru erikut : di upapohon k Y SEARCH TRE ena tuk am ses hon ang ian lah upa kiri ko pr rin rek ur pe ter ot be up be ter se 9 50 EE UNTUK PENC dengan pro ompleksitas w Jadi, keuntun roses pencaria ngkas karena kursif. Lain halnya, rutkan sebelum encarian biner Pada proses rurut, algoritm Perik Jika Jika Jika −> Jika dengan demi omatis pasti erikutnya, jik papohon kiri s Adapun bent ergantung kep rurut masukan emakin baik, s Data 12 14 Urutan masuk 0 17 9 Hasil CARIAN SEBAG atau oses rekursi waktunya adala ngan pengguna an beruntun h a penangana , jika data y mnya. Ide in r (binary seacr s pencarian manya menjad ksa akar poho sama −> sel tidak sama − X yang dicar cari di upapoh lebih besar − at kian, besar w berkurang m ka diperluka saja atau upapo

tuk suatu po pada urutan n yang diberi ebagai contoh : 17 19 2 kan : 23 14 1 :

>>

<<

GAI STRUKTUR u if yang d ah aan struktur d hanyalah algor an kasus di yang kita mi nilah yang m rh). menggunakan di sebagai beri on esai −> bandingkan ri lebih kecil d hon kiri −> cari di upa tau waktu yang di mengingat sek an, hanya d ohon kanan sa ohon biner te masukan dan ikan hasilnya h : 23 50 54 19 12 76 R DATA YANG dst. demikian pu atau O(n). data pohon unt

ritma yang leb ilakukan sec iliki sudah k mendasari pro n pohon bin ikut : n daripada Akar apohon kanan iperlukan sec karang pencar dilakukan pa aja. erurut sangat n semakin tid akan cenderu 67 72 54 72 G un, tuk bih ara kita ses ner r(P) ara rian ada tlah dak ung 76 67

(3)

DA LE 50 (m ten (k bin be pr po wa ya co n) –le M pe jum jel ba seb pe mi pe se ba Ad se me ASAR KERJA P EBIH MANGKU Urutan masuk 0 17 12 Hasil Demikian pul membesar / me ntu berbeda kanan / kiri). Sementara itu ner terurut, be erpengaruh te roses pencaria ohon biner aktunya adala ang diberikan ontoh terakhir, , yang tentuny ebih mangku Mengapa hal in Jika kita p encarian selan

mlah dari pen laslah menun asis 2. Proses bagai proses p Pohon teruru encarian ada inimum deng er arasnya. Po imbang. Dengan de agaimana mem dapun algor imbang secara Yang menjad enggunakan a PENGAPLIKASI US DAN SANGK kan : 23 9 1 : la jika data ya engecil), mak pula, yakni u, dengan alg entuk pohon y erhadap kebut an. Seandain terurut con ah O(n). Aka n adalah yan , kompleksita ya tak dapat d us (efektif) d ni dapat terjadi erhatikan, pa njutnya hany ncarian sebelu njukkan suatu s pencarian y pencarian bine ut yang dapat lah pohon gan cara mem ohon yang dem emikian, ma mbuat suatu p ritma untuk a umum adala di pertanyaan b algoritma unt

IAN SELF-BALA KIR 4 19 72 ang dimasukk ka pohon yang terbentuk p oritma pencar yang menjadi tuhan waktu nya bentuk m ndong, maka an tetapi, jika ng menyerup s waktu menj disangkal lagi dan lebih san

i? ada kasus p ya dikenakan umnya. Kasus u fungsi log ang demikian er. t menekan k dengan jum maksimumkan mikian ini ada asalah selan pohon biner pembuatan ah sebagai ber berikutnya ad tuk membent ANCING BINAR 54 76

kan sudah teru g terbentuk ak pohon condo rian pada poh i input sangat daripada su masukan ada a kompleksi a bentuk poh pai pohon pa adi hanya O(l i akan lebih b ngkir (efisien pohon terakh pada seteng s yang demik garitmik deng n ini dinamak ebutuhan wak mlah kedalam n jumlah simp alah pohon bin njutnya ada

yang seimban pohon bin rikut ini :

dalah, bagaima tuk pohon bin

Y SEARCH TRE 67 urut kan ong hon lah atu lah itas hon ada log aik n)–. hir, gah ian gan kan ktu man pul ner lah ng. ner ana ner se Ja se

4.

T

m da m tet ba ya un pe m sim po lo lo ni di ek ke ag ata da bi se <so RE P tet op da pe as D tid m da alg pr ele de ter EE UNTUK PENC eimbang tanpa awaban dari p eimbang (self-b

. SELF-BA

REE

[11] Sebagian be embutuhkan w aripada poho enguntungkan tap minimal. S alanced binar ang secara o ntuk tetap m enyisipan dan Mengingat p emuat seba mpul, maka b ohon biner de g dengan og . Menjaga keda lai minimum lakukan meng ksploitasi y ebanyakan alg gar kedalaman as oleh suatu ari batas minim

Adapun impl

nary search

eperti yang tert ource-code / ilus

ED-BLACK TRE

Pohon Red-b tapi hal ini perasinya yan alam dunia pr enghapusan imtotik setara Dalam pengg daklah diguna emakan ruang aun-daun ini goritma pengo rakteknya, poi emen dummy engan semua rsebut. G CARIAN SEBAG a merusak ket persoalan ini balancing bin

ALANCING

esar operasi waktu yang s on tersebut, n jika kedalam Self-balancing ry search tree otomatis mem minimum deng / atau pengha pohon biner anyaknya 2 berlaku bahw engan jumlah n pembulatan alaman suatu mnya –log gingat algoritm yang berleb goritma self-b n dari suatu p u konstanta y mum log . ementasi sesu tree adalah tera di bawah strasi untuk setia EE / SYMMETR black memilik diimbangi d ng baik selain raktis : opera hanya mem a O(log n) saja gunaanya, da akan untuk me g memori pad tetap disimpa olahannya me inter kepada / sentinel saj a elemen da Gambar 4.1. P GAI STRUKTUR terurutan poho adalah pohon

nary search tre

G BINARY

pada pohon sebanding den sehingga ak man pohon da g binary sear e adalah poh mpertahankan gan cara mel apusan. dengan keda 2 2 ⋯ a kedalaman h simpul seb ke bawah, at pohon biner u – ternyata ma pengolaha bihan. Deng balanced BST pohon biner s yang merupak . ungguhnya da menggunaka ini, di antaran ap uraian di baw RIC BINARY B-ki struktur y dengan komp n daripada k si pencarian, miliki komp a. aun pada po enyimpan dat da praktisnya; an secara eks enjadi lebih se daun dapat h ja bagi satu p aun mengacu Pohon Red-blac R DATA YANG on biner terur n biner teruru ee).

Y SEARCH

n biner teru ngan kedalam kan jauh leb apat dijaga unt

rch tree / heig on biner teru n kedalamann lakukan oper alaman h da 2 2 − minimum su banyak n ada tau dapat ditu untuk tetap pa a tidaklah da annya melakuk gan demiki T hanya menja elalu dibatasi kan suatu fak ri self-balanc an struktur d

nya : wah ini terlampi

-TREES[12] yang komple pleksitas wak kemangkusann penyisipan, d leksitas wak ohon Red-bla a sehingga tid akan tetapi, j splisit, bebera ederhana. Dal hanya satu bu pohon Red-bla u pada alam ck

3

G rut. ut –

H

urut man bih tuk ght-urut nya rasi apat − 1 uatu alah ulis ada apat kan ian, aga i di ktor ing data ir> eks, ktu nya dan ktu ack dak ika apa am uah ack mat

(4)

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG

LEBIH MANGKUS DAN SANGKIR

Setiap simpul pada pohon Red-black memiliki atribut warna, yang mana hanya mungkin merah saja atau hitam saja. Adapun karakteristik lainnya –selain daripada karakteristik standar pada pohon biner terurut– dari pohon

Red-black adalah sebagai berikut ini :

1. Suatu simpul hanya dapat merah saja atau hitam saja. 2. Atribut warna akar adalah hitam. (atribut warna

suatu simpul yang menjadi akar hanya dapat berubah dari merah menjadi hitam).

3. Seluruh daun berwarna hitam.

4. Setiap anak dari seluruh simpul merah berwarna hitam.

5. Setiap lintasan sederhana dari suatu simpul yang diberikan kepada sebarang daun keturunannya berukuran sejumlah simpul hitam.

Batasan karakteristik di atas berimplikasi kepada sifat kritis dari sebuah pohon Red-black : lintasan terpanjang dari akar ke sebarang daun tidak mencapai dua kali ukuran lintasan terpendek dari akar ke daun lainnya. Dengan demikian, secara umum, pohon dapat dikatakan seimbang.

Karakteristik ini dapat terlaksana karena :

tidak ada lintasan yang mengandung dua simpul merah secara berturutan.

lintasan terpendek yang mungkin hanya mengandung simpul hitam, dan alternatif lintasan terpanjang yang mungkin mengandung simpul merah dan hitam berselingan.

setiap lintasan terpanjang berukuran sejumlah seluruh simpul hitam sehingga tidak mungkin ada lintasan yang mencapai lebih dari dua kali panjang lintasan lainnya.

Dampak lain daripada karakteristik di atas adalah setiap simpul internal pada pohon Red-black pastilah memiliki dua anak, yang mana salah satu atau keduanya mungkin kosong.

Operasi pembacaan pada pohon Red-black menyerupai operasi standar pada BST. Akan tetapi, pada operasi penyisipan dan penghapusan, dibutuhkan suatu mekanisme perbaikan untuk menjaga agar karakteristik pohon Red-black tidak dilanggar. Operasi perbaikan ini memiliki kompleksitas waktu yang sangat baik, yakni sebesar O(log n) atau O(1) saja dan merupakan operasi yang dibutuhkan untuk mengubah warna simpul dan tidak lebih dari tiga operasi tree rotation. Dengan demikian, operasi penyisipan dan penghapusan tetap memiliki kompleksitan waktu O(log n).

Penyisipan

Penyisipan dimulai dengan menambahkan sebuah simpul, seperti pada penyisipan dalam BST, yang kemudian diwarnai dengan merah. Penyisipan selalu menggantikan sebuah daun hitam dengan simpul dalam yang berwarna merah dengan dua buah anak berupa daun hitam.

Langkah selanjutnya ditentukan oleh warna simpul lain di sekitar simpul baru tersebut. Adapun kondisi pada saat penyisipan baru dilakukan adalah sebagai berikut ini :

Sifat (3) selalu tetap terjaga.

Sifat (4) terancam dilanggar hanya jika terjadi penambahan simpul merah, mewarnai ulang suatu simpul hitam menjadi merah, atau terjadinya rotasi.

Sifat (5) terancam dilanggar hanya jika terjadi penambahan simpul hitam, mewarnai ulang suatu simpul merah menjadi hitam, atau terjadinya rotasi.

Catatan : N −> simpul yang disisipkan; P −> ayah N; G −> ayah P; U −> saudara P. Dalam bahasa C, simpul U dan G ditemukan dengan cara :

struct node *

grandparent(struct node *n) {

if ((n != NULL) && (n->parent != NULL)) return n->parent->parent; else return NULL; } struct node * uncle(struct node *n) {

struct node *g = grandparent(n); if (g == NULL)

return NULL; // No grandparent means no uncle if (n->parent == g->left) return g->right; else return g->left; } KASUS 1:

SIMPUL N MENJADI AKAR POHON RED-BLACK, dengan demikian pewarnaan ulang menjadi hitam dilakukan untuk memenuhi sifat (2). Semenjak penambahan ini menambahkan satu simpul hitam ke seluruh lintasan sekaligus, sifat (5) tetap terjaga.

KASUS 2:

SIMPUL P BERWARNA HITAM, dengan demikian sifat (4) tetap valid. Karena simpul N berwarna merah, sifat (5) tetap berlaku.

KASUS 3:

Ketika baik simpul P MAUPUN SIMPUL U

BERWARNA MERAH, maka kedua simpul ini dapat diwarnai ulang menjadi hitam sementara simpul G menjadi merah untuk menjaga sifat (5). Akan tetapi, hal ini (simpul G diwarnai merah) dapat berimbas kepada pelanggaran sifat (2) atau (4) −> jika ayah G berwarna merah. Untuk menyelesaikan masalah ini, dapat dilakukan secara rekursif dengan “N” yang baru adalah G.

KASUS 4:

Pada kasus ini, SIMPUL P BERWARNA MERAH TETAPI SIMPUL U BERWARNA HITAM; JUGA BERLAKU SIMPUL N ADALAH ANAK KANAN DARI P, SEMENTARA P ADALAH ANAK KIRI DARI G. Dalam pada kasus ini, left rotation (pertukaran antara simpul N dan simpul P) dapat dilaksanakan untuk kemudian simpul P masuk ke dalam kasus 5 (penamaan ulang simpul N dan P) dikarenakan sifat (4) masih tetap terlanggar. Pada rotasi ini,

(5)

5

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG

LEBIH MANGKUS DAN SANGKIR

karena kedua simpul berwarna merah, maka sifat (5) tidak terganggu.

Catatan : untuk P sebagai anak kanan, left dan

right tinggal dipertukarkan.

KASUS 5:

SIMPUL P BERWARNA MERAH TETAPI SIMPUL U

BERWARNA HITAM, SIMPUL N ADALAH ANAK KIRI DARI P, DAN P JUGA ADALAH ANAK KIRI DARI G. Dalam pada kasus ini, right rotation terhadap simpul G dilakukan; hasilnya adalah pohon dimana P menjadi ayah dari baik simpul N maupun simpul G. Simpul G pastilah berwarna hitam karena jika tidak, P tidak mungkin berwarna merah. Dengan demikian, yang perlu dilakukan adalah menukar warna antara P dan G sehingga sifat (4) terpenuhi. Sementara itu, sifat (5) tetap terjaga karena ketika sebelumnya hanya terdapat satu buah simpul hitam G, maka sekarang juga hanya terdapat satu buah simpul hitam P.

Catatan : untuk P sebagai anak kanan, left dan

right tinggal dipertukarkan.

Penghapusan

Pada BST biasa, penghapusan sebuah simpul dengan kedua anak yang bukan daun, dilakukan dengan pertama-tama mencari elemen dengan nilai maksimum pada upapohon kirinya atau elemen dengan nilai minimum pada upapohon kanannya, untuk kemudian memindahkan nilai tersebut ke simpul yang dibuang. Simpul yang nilainya disalin ini kemudian dibuang (simpul ini pasti memiliki anak-bukan-daun kurang dari dua). Karena proses penghapusan yang demikian tidaklah mengganggu validitas pohon Red-black, kasus yang perlu diperhatikan selanjutnya hanyalah penghapusan simpul dengan anak-bukan-daun sebanyaknya satu saja.

Ketika sebuah simpul merah dibuang, kita dapat dengan mudahnya mengganti simpul tersebut dengan simpul anak yang pasti berwarna hitam. Dalam proses ini, sifat (3) dan (4) akan tetap terjaga karena perubahan pada lintasan yang terjadi hanyalah berkurangnya sebuah simpul merah yang dilalui. Kasus khusus lainnya adalah ketika simpul yang dibuang berwarna hitam dan anaknya berwarna merah. Dengan hanya memindahkan simpul tersebut akan berdampak kepada kerusakan sifat (4) dan (5), tetapi dengan pewarnaan ulang simpul anak menjadi hitam, masalah terselesaikan.

Kasus sesungguhnya yang cukup kompleks untuk diselesaikan adalah ketika simpul yang ingin dihilangkan dan anaknya sama-sama berwarna hitam. Penyelesaian ini dimulai dengan menggantikan simpul yang akan dibuang dengan anaknya.

Catatan : N −> simpul anak yang telah menggantikan simpul yang ingin dibuang; P −> ayah N; S −> saudara N; SL −> anak kiri S dan SR −> anak kanan S karena S tidak mungkin daun.

Warna putih dapat berarti hitam saja atau merah saja. Dalam bahasa C, simpul S dapat ditemukan dengan cara : struct node * sibling(struct node *n) { if (n == n->parent->left) return n->parent->right; else return n->parent->left; }

Fungsi replace_node menggantikan child ke tempat N.

void

delete_one_child(struct node *n) {

/*

* Precondition: n has at most one non-null child.

*/

struct node *child = is_leaf(n->right) ? n->left : n->right; replace_node(n, child); if (n->color == BLACK) { if (child->color == RED) child->color = BLACK; else delete_case1(child); } free(n); }

Dengan perlakuan yang seperti ini, sifat (5) akan menjadi terlangkahi karena simpul yang dibuang berwarna hitam sehingga jumlah simpul hitam berkurang satu dan berakibat pada perbedaan panjang lintasan yang melalui simpul tersebut dan yang tidak.

KASUS 1:

SIMPUL N MENJADI AKAR POHON RED-BLACK; dalam kasus ini, masalah selesai. Semenjak penghapusan ini mengurangi satu simpul hitam dari seluruh lintasan sekaligus, sifat (5) akan tetap terjaga. Dan akar yang baru berwarna hitam membuat seluruh sifat terpenuhi.

Catatan : Pada kasus 2, 5, dan 6, diasumsikan bahwa N adalah anak kiri dari P. Jika N adalah anak kanan, left dan right tinggal dipertukarkan.

KASUS 2:

S BERWARNA MERAH; dalam kasus ini, kita menukarkan warna antara P dan S, untuk lalu kemudian melakukan rotasi kiri pada P, menyebabkan S menjadi ayah P.

KASUS 3:

P,S, DAN ANAK DARI S BERWARNA HITAM; dalam kasus ini, kita cukup mewarnai ulang S menjadi merah. Pohon yang dihasilkan menyebabkan semua lintasan melalui S, yang berarti pasti tidak melalui N, memiliki lebih sedikit satu simpul hitam sebanyak satu buah. Faktanya adalah, pembuangan ayah asli dari N juga mengurangi satu simpul hitam pada setiap lintasan yang melalui N, sehingga masalah ini menjadi terpecahkan. Akan tetapi, sekarang semua lintasan yang melalui P menjadi

(6)

DA LE ASAR KERJA P EBIH MANGKU memiliki dibandin P, seh menyele ulang ter KASUS 4 S DAN BERWAR menukar akan be hitam pa menamb melalui dibuang. KASUS 5 S BERW BERWAR dalam ka S sehing N. Pertu ayah bar jumlah s mempun berwarna ayahnya KASUS 6 S BERW N ADALA melakuk ayah P dilakuka menjadi tetap m sehingga tetapi, N leluhur y menjadi Semen mempun Yang jumlah berubah PENGAPLIKASI US DAN SANGK i kurang ngkan dengan hingga sifat saikannya, rhadap P dimu 4: ANAK DARI S RNA MERAH; rkan warna an erpengaruh te ada lintasan bahkan satu N untuk m . 5: WARNA HITAM RNA HITAM, D

asus ini, kita ggaSL menjadi ukaran warna runya. Seluru simpul hitam y nyai saudara a merah (k tidak terpeng 6: WARNA HITAM AH ANAK KIRI

kan rotasi kiri dan SR. P an antara P d hitam. Upap mempunyai a a sifat (4) dan N kini memp yang berwarn hitam atau tam ntara itu, lint

nyai dua buah lintasan m sehingga b mana hany sehingga li simpul hita lintasan me sehingga be ayah S, dan merah; me yang hany warnanya m SR yang menjadi hi jumlah si berjumlah s manapun ya simpul hita sehingga sifat

IAN SELF-BALA KIR

satu buah n lintasan yan

t (5) dila dilakukan ulai dari kasus S BERWARNA H dalam kasus ntara P dan erhadap juml yang melalui simpul pada menggantikan M,SL BERWAR DAN N ADAL melakukan ro i ayah S dan s juga dilakuk uh lintasan ak yang tetap, ak yang mana asus 6). Ba garuh oleh tran

M,SR BERWAR DARI P; dalam i pada P sehi Pertukaran w dan S, semen pohon yang akar yang b n (5) tidaklah punyai tamba na hitam : m mbahan S yan tasan yang ti kemungkinan melalui sau berarti melalui a bertukar tem intasan tetap am yang tetap. elalui paman erarti yang se n anak kanan enjadi melalu ya melewati mengikuti aya warnanya itam. Hasil a impul hitam sama. ang terjadi, am pada lin t (4) dan sifat ANCING BINAR simpul hit ng tidak mela anggar. Unt penyeimbang s 1. HITAM, TETAP

ini, kita cuk S. Hal ini tid lah dari simp i S, akan tet a lintasan ya n simpul ya RNA MERAH, LAH ANAK KI otasi kanan pa saudara baru d an antara S d kan mempuny kan tetapi N k anak kanann aik N maup nsformasi ini. RNA MERAH, D m kasus ini, k ingga S menj warna kemud ntara SR dibu terbentuk ak berwarna sam dilanggar. Ak ahan satu bu mungkin P ya ng juga hitam. idak melalui n : dara baru i S dan P ya mpat dan war

memilki jum baru dari N, emula melalui S yang awaln ui lintasan ba S yang k ah lamanya d telah berub akhirnya ada m yang dila pada akhirn ntasan tidak (5) terjaga. Y SEARCH TRE am alui tuk gan PI P kup dak pul api ang ang SR IRI; ada dari dan yai kini nya pun DAN kita adi ian uat kan ma kan uah ang N N ang rna, lah SR i S, nya aru kini dan bah lah alui nya lah AV P tet da dik ya fa ak G AA P bl se pr EE UNTUK PENC VL TREE[13] Pohon AVL m tapi ditambah ari suatu simp kurangi kedal ang seimbang ctor bernilai kan mengalam Penyisipan Gam Jika P a anak kiri, kasus yang KASUS BALANC factor d dilakuka adalah + yakni pe dengan r KASUS BALANC balance f pada P dari L dilakuka dilanjutk Penghapusa Gambar 4.12. P Inorder A TREE[14] Pohon AA ad ack dimana ebagai anak k roses pemeliha (a CARIAN SEBAG memiliki stru hkan dengan b pul adalah ked laman dari up g adalah mer -1, 0, atau 1. mi rotasi. n (Basis 0) mbar 4.11. Pros adalah akar po dan R adalah g harus ditang KANAN-KANA CE FACTOR DA dari R adalah an, sementara +1, maka rota ertama rotasi k rotasi kiri pad

KIRI-KIRI AT

CE FACTOR factor dari L

dilakukan, se adalah -1, m an, yakni pert kan dengan ro an (Basis -1 a roses Penghap r Predecessor a dalah merupa simpul mera kanan dengan araan keseimb a) Kasus pada GAI STRUKTUR uktur yang m balance factor dalaman dari u papohon kiri reka yang m . Pohon yang ses Penyeimba ohon tak seim h anak kanan gani meliputi : AN ATAU KASU ARI P ADALAH -1, maka ro a jika balance

asi dua kali h kanan pada R a P. TAU KASUS KIR DARI P ADA adalah +1, m ementara jika maka rotasi tama rotasi k tasi kanan pad atau 1) pusan dengan P atau Inorder S akan variasi d ah hanya dap n demikian m bangannya. Pohon Red-bla R DATA YANG menyerupai B r. Balance fac upapohon kan sehingga poh memiliki balan tidak seimba angan mbang, L ada n, maka keem : US KANAN-KIR H -2; jika balan tasi kiri pada

e factor dari

harus dilakuk R lalu dilanjutk

RI-KANAN:

ALAH +2; j maka rotasi kan

a balance fac dua kali ha kiri pada L l da P. Penggantian ol Successor dari pohon Re pat ditambahk menyederhanak ack G BST ctor nan hon nce ang alah mpat RI : nce a P R kan, kan ika nan ctor arus alu leh ed-kan kan

(7)

DA LE K H ke ad pe lin pe ho po ASAR KERJA P EBIH MANGKU Karakteristik p 1. Leve 2. Leve ayahn 3. Leve atau 4. Leve kakek 5. Setia mem Hanya ada du eseimbangan dalah rotasi ka enghapusan m nk pada pohon engkondisian orizontal righ ohon Red-blac G Penyisipan Penyisip Jika terjad akan dilak horizontal bahkan m dari upapo Penghapusa Penghap dimana su cara meng anak kanan ditemukan semua an simpul den Sesudah dilakukan menurunk anaknya b atau sim Selanjutny skew dan s Men Mel Mel PENGAPLIKASI US DAN SANGK (b) Kasus pa Gamba pohon AA : el dari daun ad el dari anak k nya. el dari anak k sama dengan el dari cucu k knya. ap simpul den miliki dua anak

ua macam op pohon AA, y anan yang dila menghasilkan n Red-black) rotasi kiri ak ht links (two ck). Gambar 4.14. ( pan dilakukan di sebuah hori kukan; semen l right links, mungkin penin ohon ini. an pusan dilakuk uksesor (yang gambil lintasan n simpul) dan n dengan cara ak kanan da ngan level 1, s penghapusan untuk menj an level dari berada pada d mpul-simpul

ya, pada selu

split.

nurunkan leve lakukan opera lakukan opera

IAN SELF-BALA KIR ada Pohon AA ar 4.13. dalah satu. kiri pastilah kanan dapat ayahnya. kanan pastilah ngan level di k. perasi untuk m yakni skew d akukan ketika left horizonta sementara sp kibat terbentu consecutive a) Skew (b) Sp seperti terhad

izontal left lin

ntara jika te operasi split ngkatan level

kan sama sep pada BST dit n melalui sem n predesesor a mengambil ari anak kiri

sehingga mud n, langkah pert aga sifat po i semua sim dua tingkat di yang kehila uruh level dil el, jika diperlu asi skew pada l asi split pada le

ANCING BINAR lebih kecil d lebih kecil d lebih kecil d i atas satu pa mempertahank dan split. Sk a penyisipan a al link (left r plit adalah su uknya dua bu red links pa plit dap BST stand nk, operasi sk erjadi dua bu akan dilakuk dari akar ba perti pada BS temukan deng mua anak kiri d (yang pada B

lintasan mela simpul) ada dah dilakukan. tama yang har hon AA ada mpul yang ma bawah mere angan anakn lakukan oper ukan level evel Y SEARCH TRE dari dari dari asti kan kew tau red atu uah ada dar. kew uah kan aru ST, gan dari ST alui lah rus lah ana ka, nya. rasi SP P m ya SC TR T m se tra ter ba EE UNTUK PENC PLAY TREE[15] Pohon Splay a ana memilik ang baru diaks Splaying Ketika s untuk mem steps dipen X s simp P se atau kana Tipe-tipe Zig L deng Zig oper keda Zig-L dan kiri dilak dan rota adal Spla Zig-L dan anak dilak dan pada Penyisipan Pertama-tidak ditem Langkah se pada Y unt akar denga akan menja Penghapusa Lak Lak pert tidak Hap anak CAPEGOAT TRE REAP[17] Treap adalah erupakan poh ecara acak) di aversal dari rurut. Struktu ahwa pohon h CARIAN SEBAG adalah merupa i karakteristi ses dapat diak simpul X diak mindahkannya ngaruhi oleh ti sebagai anak pul P. ebagai akar, u jika bukan, an dari simpu e splay steps : Step : Langkah ini di gan cara rota

step dilakuk rasi splay k alaman yang g -zig Step : Langkah ini di baik X maup atau sama-sa kukan dengan G, lalu ke asi pada sisi a lah satu-satun ay dengan met -zag Step : Langkah ini di X adalah ana k kiri atau kukan dengan P, lalu kemud a sisi antara X n -tama, X dic mukan, maka a elanjutnya ada tuk lalu kemu an cara yang adi anak kiri a

an

kukan operasi s kukan operasi tama dari X

k memiliki an pus X dari poh

k kiri pertama EE[16] h gabungan hon Cartesian iberikan prior simpul sam ur pohon ini haruslah heap-GAI STRUKTUR akan self-bala ik tambahan kses ulang den

kses, operasi ke posisi aka iga buah fakto kiri atau an

P sebagai ana l G.

:

ilakukan ketik asi pada sisi a kan hanya p ketika X m ganjil pada sa ilakukan ketik pun P adalah ama anak kan n cara rotasi p emudian dila antara X dan nya perbedaa tode rotate to ilakukan ketik ak kanan sem sebaliknya. n cara rotasi pa dian dilanjutk X dan G.

cari pada poh akan dicari sim alah melakuk udian menyisi g tepat. Deng atau anak kana

splay pada sim tree rotation

sehingga an nak kanan.

hon dan gantik a dari X. antara tree n dimana set ritas numerik. ma dengan ur i ditentukan -ordered : yai R DATA YANG ancing BST ya berupa elem ngan cepat. splay dilakuk ar. Adapun sp or berikut ini : nak kanan d ak kiri atau an ka P adalah ak antara X dan pada akhir d memiliki ting at awal operas ka P bukan ak sama-sama an nan. Langkah ada sisi antara njutkan deng P. Zig-zig s an antara poh root. ka P bukan ak mentara P ada . Langkah ada sisi antara kan dengan rot

hon Splay; j mpul Y, ayah kan operasi sp ipkan X seba gan demikian an dari X. mpul X. n pada anak k ak kiri terseb kan akar deng

dan heap d tiap key (dipi Urutan inord rutan key ya oleh kebutuh itu nilai priori

7

G ang men kan lay dari nak kar P. dari kat si. kar nak ini a P gan tep hon kar alah ini a X tasi ika X. lay agai Y kiri but gan dan ilih der ang han itas

(8)

DA LE da de O U dib me se ASAR KERJA P EBIH MANGKU

ari semua simp engan nilai pri

Operasi pada Proses pe tidak mem Penyisipa dengan sembaran memiliki dilakukan keduanya Penghapu menghila menggant menukark X dalam kasus ya rotasi tam Membagi satu menj yang lain penyisipa akan men sebagai b kanan seb Menggab dengan m Treap ya pada Tr penyisipa Treap y minimum maksimum daun dan Untuk hasil y berikan kepad emberikan pr mula. PENGAPLIKASI US DAN SANGK

pul bukan aka ioritas dari aya

Gambar 4 Treap : encarian sam mperhatikan p an key baru membangkit ng pada X. prioritas leb n tree rotatio a. usan simpul angkannya tikannya deng kan posisinya urutan, jika X ang terakhir, mbahan untuk i Treap menja

jadi lebih kec n lebih besar an X dengan njadikan X s bagian yang bagai bagian y bungkan dua b mengasumsika ang satu lebih

reap lainnya

an X yang leb ang satu tet m Treap yang m. Setelah p mudah untuk yang lebih ba da simpul yan ioritas acak y

IAN SELF-BALA KIR ar harus lebih ahnya. 4.21. Treap ma seperti pad prioritas. X pada T tkan y, s Selama X b bih kecil da on untuk men X dilakuka jika ia gan Z, anak dengan Z, su X memiliki d mungkin dip menjaga sifat adi dua bagia cil dari suatu dapat dilakuk prioritas terk sebagai akar, lebih kecil, yang lebih bes

buah Treap, an bahwa nila h kecil daripa

a dan mela bih besar dari

tapi lebih k g lain dan me penyisipan, X k dihilangkan. aik, prioritas y ng sering diak yang lebih kec

ANCING BINAR besar atau sam

da BST deng Treap dilakuk suatu priori bukan akar d ari Z, ayahn nukarkan pos an dengan c adalah dau tunggal X; at uksesor langsu dua anak. Dal perlukan oper t heap-orderin an di mana ya nilai key X d kan dengan c kecil. Proses , upapohon k dan upapoh sar. dapat dilakuk ai terbesar pa ada nilai terke akukan oper nilai maksimu kecil dari ni emiliki priori X akan menj yang lebih ke kses dengan c

cil dari priori

Y SEARCH TRE ma gan kan itas dan nya, sisi ara un; tau ung am rasi ng. ang dan ara ini kiri hon kan ada ecil rasi um ilai itas adi ecil ara itas

V

tam pe str op se pe O( pe pa Se su ba

R

[1] [2] [3 [4] [5] [6] [7] [8] [9] [10 [1 [12 [13 [14 [15 [16 [17 EE UNTUK PENC

V. KESIMP

Self-balancin mbahan, yai enyisipan at rukturnya aga perasi ini tida ecara keselur emeliharaan, a (log n). Nam encarian–, me ada tingkat O ebagai acuan, Jadi, dapat di uatu proses pe alancing binar

REFERENS

] Liem, Inggr Teknik Inf Informatika, ] Munir, Rina Program Stu dan Informa 3] http://taghyr kapasitas-ha (Tanggal Ak ] http://en.wik (Tanggal Ak ] http://kuliah (Tanggal Ak ] http://en.wik (Tanggal Ak ] http://en.wik (Tanggal Ak ] http://www.i PohonBiner_ (Tanggal Ak ] http://en.wik (Tanggal Ak 0] http://wiki.a ta_structures (Tanggal Ak 11] http://en.wik balancing_b (Tanggal Ak 2] http://en.wik (Tanggal Ak 3] http://en.wik (Tanggal Ak 4] http://en.wik (Tanggal Ak 5] http://en.wik (Tanggal Ak 6] http://en.wik (Tanggal Ak 7] http://en.wik (Tanggal Ak CARIAN SEBAG

ULAN

ng binary se itu operasi taupun peng ar tetap teruru aklah mengub ruhan dari atau dengan ka mun demikia njadi lebih ce O(log n) saja, untuk n = 1.0 ikatakan struk encarian adala ry search tree

SI

riani, “Diktat formatika, Se , Institut Teknol aldi, “Diktat K udi Teknik Info atika, Institut Te r.wordpress.com arddisk-akan-tem kses : 17 Desem kipedia.org/wik kses : 17 Desem h.itb.ac.id/mod/r kses : 17 Desem kipedia.org/wik kses : 17 Desem kipedia.org/wik kses : 17 Desem informatika.org _bagian2.pdf kses : 17 Desem kipedia.org/wik kses : 18 Desem nswers.com/Q/ s kses : 18 Desem kipedia.org/wik inary_search_tr kses : 17 Desem kipedia.org/wik kses : 16 Desem kipedia.org/wik kses : 16 Desem kipedia.org/wik kses : 16 Desem kipedia.org/wik kses : 16 Desem kipedia.org/wik kses : 16 Desem kipedia.org/wik kses : 16 Desem GAI STRUKTUR earch tree m pemeliharaan ghapusan u ut dan seimba bah nilai kom

proses peny ata lain komp an, proses l epat dilaksana dimana semu 000.000, log n ktur data yang ah dengan me e. Struktur Data” ekolah Tekni logi Bandung, 2 Kuliah IF2091 ormatika, Sekol eknologi Bandu m/2009/08/15/ta mbus-3tb/ mber 2009; 17.0 ki/Tree_%28dat mber 2009; 18.2 resource/view.p mber 2009; 20:5 ki/Binary_tree mber 2009; 18.2 ki/Binary_search mber 2009; 20.4 g/~fazat/IF2030 mber 2009; 20:5 ki/B-tree mber 2009; 11.1 /What_is_a_bal mber 2009; 11.16 ki/Self-ree mber 2009; 20.4 ki/Red-black_tre mber 2009; 19.5 ki/AVL_tree mber 2009; 19.5 ki/AA_tree mber 2009; 19.5 ki/Splay_tree mber 2009; 19.5 ki/Scapegoat_tre mber 2009; 19.5 ki/Treap mber 2009; 19.5 R DATA YANG memiliki oper n, pada pro untuk menja ang. Akan teta mpleksitas wak

yisipan maup leksitasnya te lainnya –sepe akan yaitu han ula adalah O( = 19. g optimum unt enggunakan se ”, Program St k Elektro d 2008. Struktur Diskr lah Teknik Elek ung, 2008. ahun-2010-0) a_structure%29 4) php?id=5216 0) 6) h_tree 4) 0/IF2030-2) 5) lanced_tree_in_ 6) 6) ee 2) 2) 1) 1) ee 1) 2) G rasi ses aga api, ktu pun tap erti nya (n). tuk elf-tudi dan rit”, ktro 9 _da

(9)

Lampiran 1

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG LEBIH MANGKUS DAN SANGKIR

2. STRUKTUR DATA

2.1 G

RAF

Graf G didefinisikan sebagai pasangan himpunan (V, E), yang dalam hal ini :

V = himpunan tidak-kosong dari simpul-simpul (vertices atau node) = { , , … , }, dan E = himpunan sisi (edges atau arcs) yang

menghubungkan sepasang simpul = { , , … , }

atau dapat ditulis singkat notasi G = (V, E) [2].

Jenis-jenis Graf

[2]

Berdasarkan ada tidaknya gelang atau sisi ganda pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis :

Graf sederhana (simple graph)

Graf yang tidak mengandung gelang maupun sisi-ganda dinamakan graf sederhana.

Graf tak-sederhana (unsimple-graph)

Graf yang mengandung sisi ganda atau gelang dinamakan graf tak-sederhana. Ada dua macam graf tak-sederhana, yaitu graf ganda (multigraph) dan graf semu (pseudograph). Graf ganda adalah graf yang mengandung sisi ganda saja. Sisi ganda yang menghubungkan sepasang simpul bisa lebih dari dua buah. Graf semu adalah graf yang mengandung gelang (termasuk bila memiliki sisi ganda sekalipun). Sisi pada graf dapat menpunyai orientasi arah. Berdasarkan orientasi arah pada sisi, maka secara umum graf dibedakan atas dua jenis :

Graf tak-berarah (undirected graph)

Graf yang sisinya tidak mempunyai orientasi arah disebut graf berarah. Pada graf tak-berarah, urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan. Jadi, ( , ) = ( , ) adalah sisi yang sama. Graf berarah (directed graph atau digraph)

Graf yang setiap sisinya diberikan orientasi arah disebut sebagai graf berarah. Sisi berarah disebut busur (arc). Pada graf berarah, ( , ) dan ( , ) menyatakan dua buah busur yang berbeda, dengan kata lain ( , ) ≠ ( , ). Untuk busur ( , ), simpul dinamakan simpul asal (initial vertex) dan simpul dinamakan simpul terminal (terminal vertex).

Terminologi Dasar

[2]

Lintasan (Path)

Lintasan yang panjangnya n dari simpul awal ke simpul tujuan di dalam graf G ialah barisan berselang-seling simpul-simpul dan

sisi-sisi yang berbentuk , , , , , … , , , sedemikian sehingga = , , = , , … , =

, adalah sisi-sisi dari graf G. Terhubung (Connected)

Graf tak-berarah G disebut graf terhubung (connected graph) jika untuk setiap pasang simpul dan di dalam himpunan V terdapat lintasan dari ke (yang juga harus berarti ada lintasan dari ke ). Jika tidak, maka G disebut graf tak-terhubung (disconnected

graph).

Graf berarah G dikatakan terhubung jika graf tak-berarahnya terhubung (graf tak-berarah dari G diperoleh dengan menghilangkan arahnya).

2.2 POHON (T

ERMINOLOGI

)

Pohon bebas adalah graf tak-berarah terhubung yang tidak mengandung sirkuit, dengan sifat sebagai berikut :

Misalkan G = (V, E) adalah graf tak-berarah sederhana dan jumlah simpulnya n. Maka, jika G adalah pohon bebas berlaku :

Setiap pasang simpul di dalam G terhubung dengan lintasan tunggal,

G terhubung dan memiliki m = n – 1 buah jumlah sisi,

G tidak mengandung sirkuit,

Penambahan satu sisi pada graf akan membuat hanya satu sirkuit, dan

Semua sisi G adalah jembatan (jembatan adalah sisi yang bila dihapus menyebabkan graf terpecah menjadi dua komponen)[2].

Pohon berakar (yang selanjutnya disebut hanya pohon) adalah pohon bebas yang sebuah simpulnya diperlakukan sebagai akar dan sisi-sisinya diberi arah sehingga menjadi graf berarah [2].

Pohon sebagai suatu struktur data rekursif adalah himpunan terbatas, tidak kosong, dengan elemen dibedakan sebagai berikut :

Sebuah elemen yang dibedakan dari yang lain −> AKAR

Elemen yang lain (jika ada) dibagi-bagi menjadi beberapa sub-himpunan yang disjoin dan masing-masing sub-himpunan itu adalah pohon −> SUBPOHON[5]

(10)

DA LE ba

Po

n =

Po

po bin sif ASAR KERJA P EBIH MANGKU Pohon yang s anyak n buah a

ohon Biner

Pohon biner = 2 dan adalah mun terdi dan meru sub poho

ohon Biner

Pohon biner ohon biner ter

nary tree / bi fat : setia nilai subp BST jika PENGAPLIKASI US DAN SANGK Gambar 2 setiap simpul c anak disebut p

r

[5] merupakan ka h himpunan te ngkin kosong, iri atas sebua

dua buah him upakan pohon pohon kiri on biner terseb Gambar 2.2.

r Terurut

[8] yang urutan a rurut atau poh

inary search

ap simpul dal i

pohon kiri dan T

P adalah sebu semua si Akar(P)

IAN SELF-BALA KIR 2.1. Pohon cabangnya me pohon n-ary[2 asus khusus p erbatas yang : atau ah simpul yan mpunan lain ya n biner, yang dan sub poh but.

. Pohon Biner

]

anak-anaknya hon biner pen

tree –BST–), lam BST mem n subpohon ka uah BST : impul pada s ANCING BINAR empunyai pali 2]. pohon n-ary j ng disebut ak ang disjoint ya disebut seba hon kanan d penting diseb ncarian (order , dan memenu mpunyai sebu anan merupak subpohon kiri Y SEARCH TRE ing ika kar ang gai dari but red uhi uah kan i <

Po

ad kir 1– ot tin jum de up m EE UNTUK PENC Ga

ohon Biner

Pohon biner dalah pohon de perb subp perb dan Untuk meny ri dan tinggi –, tinggi po omatis, dibua nggi minimum mlah simpul engan cara me papohon kiri erupakan sisa Gam CARIAN SEBAG semua si Akar(P) ambar 2.3. Poh

r Seimbang

seimbang (ba engan : bedaan tinggi pohon kanan m bedaan banya subpohon kan eimbangkan upapohon kan ohon secara at seminimal m m, setiap ara sebanyak mu enyebarkan se dan setenga anya di upapoh mbar 2.4. Poho GAI STRUKTUR impul pada su

hon Biner Teru

g

[8] alanced binar antara subpo maksimum 1. aknya simpul nan maksimum tinggi upapo nan –yaitu be keseluruhan mungkin. Unt as (level) har ungkin. Hal i etengah dari ju ah dari jumla hon kanan[2]. on Biner Seimb R DATA YANG ubpohon kanan urut ry tree / B-tr

ohon kiri deng l subpohon k m 1. hon (subpoho erbeda maksim harus, sec tuk mempero rus mengandu

ini dapat dib umlah simpul ah simpul ya bang G n > ree) gan kiri on) mal ara leh ung uat l di ang

(11)

Lampiran 3

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG LEBIH MANGKUS DAN SANGKIR

RED-BLACK TREE / SYMMETRIC BINARY B-TREES[12] Penyisipan KASUS 1: void insert_case1(struct node *n) { if (n->parent == NULL) n->color = BLACK; else insert_case2(n); } KASUS 2: void insert_case2(struct node *n) { if (n->parent->color == BLACK) return; /* Tree is still valid */ else insert_case3(n); } KASUS 3: Gambar 4.2. Kasus 3 void insert_case3(struct node *n) {

struct node *u = uncle(n), *g;

if ((u != NULL) && (u->color == RED)) { n->parent->color = BLACK; u->color = BLACK; g = grandparent(n); g->color = RED; insert_case1(g); } else { insert_case4(n); } } KASUS 4: Gambar 4.3. Kasus 4 void insert_case4(struct node *n) {

struct node *g = grandparent(n);

if ((n == n->parent->right) && (n->parent == g->left)) {

rotate_left(n->parent); n = n->left;

} else if ((n == n->parent->left) && (n->parent == g->right)) { rotate_right(n->parent); n = n->right; } insert_case5(n); } KASUS 5: Gambar 4.4. Kasus 5 void insert_case5(struct node *n) {

struct node *g = grandparent(n);

n->parent->color = BLACK; g->color = RED;

if ((n == n->parent->left) && (n->parent == g->left)) {

rotate_right(g);

} else { /* (n == n->parent->right) and (n->parent == g->right) */

rotate_left(g); }

}

Penghapusan

(12)

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG LEBIH MANGKUS DAN SANGKIR

KASUS 1: void delete_case1(struct node *n) { if (n->parent != NULL) delete_case2(n); } KASUS 2: Gambar 4.6. Kasus 2 void delete_case2(struct node *n) {

struct node *s = sibling(n); if (s->color == RED) { n->parent->color = RED; s->color = BLACK; if (n == n->parent->left) rotate_left(n->parent); else rotate_right(n->parent); } delete_case3(n); } KASUS 3: Gambar 4.7. Kasus 3 void delete_case3(struct node *n) {

struct node *s = sibling(n);

if ((n->parent->color == BLACK) && (s->color == BLACK) &&

(s->left->color == BLACK) && (s->right->color == BLACK)) { s->color = RED; delete_case1(n->parent); } else delete_case4(n); } KASUS 4: Gambar 4.8. Kasus 4 void delete_case4(struct node *n) {

struct node *s = sibling(n);

if ((n->parent->color == RED) && (s->color == BLACK) && (s->left->color == BLACK) && (s->right->color == BLACK)) { s->color = RED; n->parent->color = BLACK; } else delete_case5(n); } KASUS 5: Gambar 4.9. Kasus 5 void delete_case5(struct node *n) {

struct node *s = sibling(n);

if (s->color == BLACK) { /* this if statement is trivial,

due to Case 2 (even though Case two changed the sibling to a sibling's child,

the sibling's child can't be red, since no red parent can have a red child). */

// the following statements just force the red to be on the left of the left of the parent,

// or right of the right, so case six will rotate correctly.

if ((n == n->parent->left) && (s->right->color == BLACK) && (s->left->color == RED)) { // this last test is trivial too due to cases 2-4.

s->color = RED;

s->left->color = BLACK; rotate_right(s);

} else if ((n == n->parent->right) && (s->left->color == BLACK) &&

(13)

Lampiran 5

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG LEBIH MANGKUS DAN SANGKIR

(s->right->color == RED)) {// this last test is trivial too due to cases 2-4. s->color = RED; s->right->color = BLACK; rotate_left(s); } } delete_case6(n); } KASUS 6: Gambar 4.10. Kasus 6 void delete_case6(struct node *n) {

struct node *s = sibling(n); s->color = n->parent->color; n->parent->color = BLACK; if (n == n->parent->left) { s->right->color = BLACK; rotate_left(n->parent); } else { s->left->color = BLACK; rotate_right(n->parent); } }

(14)

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG LEBIH MANGKUS DAN SANGKIR

AA TREE[14]

Penyisipan

(15)

Lampiran 7

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG LEBIH MANGKUS DAN SANGKIR

(16)

DASAR KERJA PENGAPLIKASIAN SELF-BALANCING BINARY SEARCH TREE UNTUK PENCARIAN SEBAGAI STRUKTUR DATA YANG LEBIH MANGKUS DAN SANGKIR

SPLAY TREE[15] Splaying

Tipe-tipe splay steps : Zig Step :

Gambar 4.15. Zig Step Zig-zig Step :

Gambar 4.16. Zig-zig Step Zig-zag Step :

Gambar 4.17. Zig-zag Step Penghapusan

Gambar 4.18. Penghapusan Langkah 1

Gambar 4.19. Penghapusan Langkah 2

Gambar

Gambar 4 Treap :  encarian sam mperhatikan p an  key  baru  membangkit ng pada X.  prioritas leb n  tree rotatio a
Gambar 4.5. Proses Penghapusan pada BST
Gambar 4.15. Zig Step  Zig-zig Step :

Referensi

Dokumen terkait

A1B0 Putih kekuningan Putih kekuningan Putih kekuningan A1B1 Putih kekuningan Putih kekuningan Putih kekuningan A1B2 Putih kekuningan Putih kekuningan Putih kekuningan A2B0

Pertanyaan utama yang ingin dijawab dalam penelitian ini adalah: Apakah melalui metode group investigation dapat meningkatkan hasil belajar mata pelajaran Pendidikan Agama

Hocamız Mehmed Efendi (ks) Hazretleri o kadar büyük bir tevazu sahibi ve kendisini gizlemekte o kadar mahir idi- ler ki; en iyi bildikleri bir mevzuyu dahi, muhatapları, Ho-

Bagi pelamar yang berusia Iebih dan 35 (tiga puluh lima) tahun dan setinggi-tingginya 40 (empat puluh) tahun pada tanggal 1 Januari 2010 tahun yang bekerja pada pelayanan

 Wacana lengkap, unsur bahasa bervariasi dan menggunakan ungkapan yang menarik  Idea relevan, huraian jelas dan matang.. Baik 20-25  Menepati tema

Baja amutit ukuran penampang 17 mm x 17 mm dengan panjang ± 120 mm dibentuk menggunakan mesin potong, mesin milling dan mesin surface grinding menjadi menjadi balok

This was a survey study that used the descriptive data, Customer Response Index (CRI) and independent samples t-test to test the difference in effectiveness between the

Malarapan antuk napi sane katlatarang ring ajeng, panilik meled nglaksanayang tetilikan sane mamurda “Seseleh Wangun (struktur) Intrinsik lan Kajatian Guna Sarat