Makalah Pratikum Struktur Data

32
MAKALAH PRATIKUM STRUKTUR DATA Disusun Oleh : Tetra Octaria Saputri Kelas : 3c FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

Transcript of Makalah Pratikum Struktur Data

Page 1: Makalah Pratikum Struktur Data

MAKALAH PRATIKUMSTRUKTUR DATA

Disusun Oleh : Tetra Octaria Saputri

Kelas : 3c

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS PAKUANBOGOR

Page 2: Makalah Pratikum Struktur Data

KATA PENGANTAR

Syukur Alhamdullilah penulis panjatkan kehadirat Allah SWT. Atas rahmat dan

hidayahnya sehingga makalah ini dapaat diselesaikan dengan baik. Padaa kesempataan

ini tidak lupa, penulis mengucapakan terima kasih kepaadaa semua pihak yang telah

membantu penyelesaian makalah ini diantaranya :

1. Istakhori selaku Asisten dosen struktur data.

2. Orang tua yang memberikan dorongan dan dukungan baik dorongan moril

maupun materil kepada penulis.

3. Teman-teman yang telah memberikan dorongan dan kerjasamanya secara

langsung maupun tidak langsung.

Penulis sangat menyadari bahwa sesungguhnya dalam makalah ini masih banyak

sekali kekurangan baik dari segi bahasa maupun dalam system pembuatan makalah. Oleh

karena itu penulis sangat mengharapkan kritik dan saran dari pembaca guna

menyempurnakan makalah-makalah dimasa akan datang.

Demikian penyusunan makalah Ini, penulis sangat berharap semoga makalah ini dapat

bermanfaat bagi penulis maupun bagi para pembaca.

Page 3: Makalah Pratikum Struktur Data

BAB I

B-TREE

Pendahuluan

Struktur pohon menunjang berbagai operasi dinamik dasar termasuk search,

predecessor, successor, minimum, maximum, insert, dan delete dalam proporsional waktu

terhadap ketinggian pohon. Idealnya, sebuah pohon seimbang dan ketinggiannya adalah

log n di mana adalah jumlah simpul pohon. Untuk memastikan ketinggian pohon sekecil

mungkin dan menghasilkan waktu yang terbaik, maka struktur pohon seimbang seperti B-

tree sebaiknya digunakan.

1. Pengertian

B-tree adalah struktur data pohon yang paling umum digunakan dalam basis data

dan file system. B-tree menjaga data tetap terurut dan seimbang. Ide di balik B-tree ini

yaitu simpul internal dapat memiliki sejumlah simpul anak dalam cakupan (range) yang

telah terdefinisi. Ketika data disisipkan atau dipidah dari struktur data, sejumlah simpul

anak dapat bertukar sepanjang simpul. Untuk tetap mempertahankan cakupan yang telah

didefinisikan, simpul internal digabungkan atau dipisahkan. Karena adanya cakupan

(range) pada simpul anak, maka B-tree tidak perlu diseimbangkan secara berkala seperti

struktur data pohon seimbang yang lain, misalnya self-balancing binary search trees.

Akan tetapi, B-tree dapat menghabiskan tempat karena simpul tidak selalu penuh. Batas

atas dan batas bawah jumlah simpul anak biasanya tetap untuk implementasi tertentu.

Sebagai contoh, dalam 2-3 B-tree (disebut juga 2-3 tree), setiap simpul internal hanya

dapat memiliki 2 atau 3 simpul anak.

Sebuah B-tree dijaga keseimbangannya dengan membuat semua simpul daun

berada pada ketinggian yang sama. Ketinggian ini akan meningkat perlahan saat elemen-

elemen ditambahkan pada pohon, tetapi peningkatan ketinggian secara keseluruhan

jarang terjadi. Hal disebabkan karena sebuah B-tree didesain dapat memiliki cabang

dalam jumlah besar dan mengandung sejumlah kunci pada tiap simpulnya sehingga

ketinggian pohon relatif kecil. Hal ini berarti hanya sedikit simpul yang harus dibaca dari

Page 4: Makalah Pratikum Struktur Data

disk untuk mengambil data.Tujuannya yaitu untuk mendapatkan akses pada data yang

cepat.

1.1 Sejarah B-Tree

B-Tree memiliki kelebihan dibanding implementasi alternatif yang lain karena

waktu akses dalam simpulnya jauh di atas waktu akses antarsimpul. Hal ini biasanya

muncul ketika kebanyakan simpul berada di penyimpanan sekunder seperti hard drives.

Dengan memaksimalkan jumlah simpul anak pada setiap simpul internal, ketinggian

pohonN berkurang, penyeimbangan muncul tidak terlalu sering, dan efisiensi meningkat.

Biasanya nilai ini diset agar setiap simpul mengisi sebuah blok penuh atau pada ukuran

yang analog di tempat penyimpanan sekunder.

1.1 Sejarah B-Tree

B-tree memiliki sejarah yang pendek tetapi penting. Pada akhir tahun 1960-an

perusahaan komputer dan grup penelti independen bersaing mengembangkan tujuan

umum file systems dan disebut dengan “metode akses” untuk mesinmesin mereka. Di

Sperry Univac Corporation (bekerja sama dengan Universitas Case Western Reserve), H.

Chiat, M. Schwartz, dan yang lainnya mengembangkan dan mengimplementasi sebuah

sistem yang menghasilkan operasi insert dan find dalam tata cara yang menyerupai

metode B-tree yang akandi jelaskan nanti. Secara terpisah, B. Cole, S. Radcliffe, M.

Kaufman, dan yang lainnya mengembangkan sistem yang mirip di Control Data

Corporation (bekerja sama dengan Unversitas Stanford). Kemudian pada tahun 1972,

R.Bayer dan E. McCreight di Boeing Scientific Research Labs mengajukan sebuah

mekanisme indeks eksternal dengan waktu proses yang relatif rendah untuk kebanyakan

operasi-operasi yang telah disebutkan sebelumnya. Mereka

menamakan metode tersebut dengan Btree.

Para pencipta B-Tree, Rudolf Bayer dan Ed McCreight, tidak menjelaskan arti

dari huruf B pada B-Tree tersebut. Yang paling diyakini adalah B merupakan singkatan

dari balanced yang artinya seimbang, karena semua simpul daun pada pohon berada pada

tingkat (level) yang sama. B juga dapat berarti Bayer, nama penciptanya, atau Boeing

karena mereka bekerja di Boeing Scientific Research Labs pada waktu itu.

Page 5: Makalah Pratikum Struktur Data

1.2 Definisi B-Tree

B-Tree adalah sebuah m-ary balancedvsearch tree khusus yang digunakan dalam

basis data karena strukturnya memungkinkan data yang disimpan untuk disisipi, dihapus,

dan diambil dengan jaminan proses dengan waktu terburuk, di mana setiap simpulnya

terdiri dari (m/2) sampai m buah simpul anak, di mana m > 1 merupakan bilangan bulat.

m adalah orde. Akar pohon B-tree paling sedikit memiliki 2 simpul anak. Ini adalah

struktur yang baik jika pohon digunakan pada memori yang lambat, karena ketinggian

dan jumlah akses dapat diperkecil dengan mengambil bilangan m yang besar. Balanced

tree atau pohon seimbang adalah pohon dimana tidak ada simpul daun yang lebih panjang

terhadap daun yang lain. Search tree adalah pohon

dimana setiap subpohon dari sebuah simpul mempunyai kunci lebih kecil dari subpohon

kanan simpul tersebut. Kunci dalam sebuah simpul secara konsep berada di antara

subpohon-subpohon dan lebih besar dari kunci di subpohon kiri simpul dan lebih kecil

dari kunci di subpohon kanan simpul.

Sebuah B-Tree didesain untuk digunakan padadisk. Disk hanya dapat membaca dan

menulis blok data ukuran. tetap (berukuran bsar) sekaligus. Sebuah B-tree

menyimpan banyak kunci di setap simpulnya sehingga1) sebuah disk dapat mengakses

anyak kunci, dan (2) faktor cabang pohon sangat tinggi (dalam

prakteknya lebih besar dari 1000) sehingga pohon dengan ketinggian kecil dapat

menyimpan kunci dalam jumlah yang sangat besar, yang dapat diakses hanya dengan

beberapa operasi.

2 Struktur dari B-Tree

2.1 Struktur Simpul B-Tree

Tidak seperti pohon biner, setiap simpul pada B-tree dapat memiliki sejumlah

variabel kunci dan anak. Setiap elemen simpul internal adalah nilai-nilai yang berbeda

yang membagi subpohonnya. Kunci disimpan dalam urutan membesar. Setiap kunci

memiliki anak yang berhubungan dengan kunci tersebut, yaitu akar dari subpohon yang

mengandung semua simpul dengan kunci-kunci lebih kecil atau sama dengan kunci

simpul akar tetapi lebih besar dari kunci sebelumnya. Sebuah simpul juga mempunyai

Page 6: Makalah Pratikum Struktur Data

anak tambahan paling kanan yaitu akar dari subpohon yang mengandung semua kunci

lebih besar dari semua kunci pada simpul.

Sebagai contoh, jika sebuah simpul internal memiliki tiga simpul anak (atau

subpohon) maka simpul tersebut pasti meiliki dua nilai berbeda atau elemen a1 dan a2.

Semua nilai di paling kiri subpohon lebih kecil dari a1, semua nilai di subpohon tengah

akan berada di antara a1 dan a2 , dan semua nilai di paling kanan subpohon akan lebih

besar dari a2. Sebuah B-tree memiliki jumlah minimum anak yang mungkin untuk setiap

simpul disebut sebagai minimization factor atau faktor minimalisasi. Jika t adalah faktor

minimalisasi, setiap simpul harus memiliki paling sedikit t-1 kunci. Dalam keadaan

tertentu, simpul akar diperbolehkan melanggar ketentuan tersebut dengan memiliki lebih

kecil dari t-1 kunci. Setiap simpul dapat memiliki paling banyak 2t-1 kunci atau setara

dengan 2t anak.

Simpul internal di B-tree – simpulsimpul yang bukan merupakan simpul daun –

biasanya digambarkan sebagai susunan elemen dan pointer anak yang teratur. Setiap

simpul internal terdiri dari maksimum U anak dan – selain akar – minimum L anak.

Untuk semua simpul internal selain akar, jumlah elemennya lebih kecil satu dari jumlah

pointer anak, jumlah elemennya antara L-1 dan U-1. Nilai U harus 2L ataupun 2L-1, jadi

setiap simpul internal harus paling sedikit setengah penuh. Hubungan antara U dan L ini

mengakibatka bahwa dua simpul setengah penuh dapat digabung menjadi simpul yang

legal, dan satu simpul penuh dapat dipisah menjadi dua simpul yang legal (jika ada

ruangan untuk menggeser satu elemen ke simpul orang tuanya). Hal ini memungkinkan

untuk menghapus dan memasukkan nilai baru ke dalam B-tree dan mengatur pohon

sesuai dengan ketentuannya. Simpul daun memiliki larangan yang sama pada jumlah

elemen, tetapi tidak memiliki simpul anak dan tidak ada pointer anak.

Simpul daun masih memiliki batas atas pada jumlah anak, tetapi tidak memiliki

batas bawah. Sebagai contoh, ketika ada lebih sedikit dari L-1 elemen pada keseluruhan

pohon. akar akan menjadi satu-satunya simpul pada pohon, dan akar tidak memiliki anak

sama sekali.Beberapa pohon seimbang menyimpan nilai hanya pada simpul daun, jadi

memiliki simpul-simpul yang berbeda pada simpul daun dan simpul internal. Btree tetap

menjaga nilai-nilai di setiap simpul pada pohon, dan dapat menggunakan struktur yang

Page 7: Makalah Pratikum Struktur Data

sama pada setiap simpul. Bagaimanapun, sejak simpul daun tidak memiliki anak, struktur

khusus untuk simpul daun pada B-tree akan meningkatakan performa.

2.2 Ketinggian pada B-Tree

Untuk n lebih besar atau sama dengan satu, ketinggian dari n-kunci B-

tree ,dengan tinggi h dan derajat minimum t lebih besar atau sama dengan 2,

h£ logt n+1

2

Bukti : h

n³ 1+(t-1) ∑ 2t k-1

k=1

= 1+2 (t-1) t h -1

t-1

= 2 th-1

jadi = n+1 ³ th

2

Lalu kedua sisi di-logaritma.

Tinggi dari kasus terburuk adalah O(logn). Karena percabangan dari B-tree bisa

lebih besar dibandingkan struktur pohon seimbang yang lain, basis dari logaritma

cenderung lebih besar. Sehingga jumlah simpul yang dikunjungi selama pencarian

cenderung lebih kecil dari yang dibutuhkan oleh struktur pohon yang lain.Walaupun hal

ini tidak mempengaruhi tinggi asimtotik kasus terburuk, B-tree cenderung memiliki

tinggi yang lebih kecil dari pohon lain yang memiliki tinggi asimtotik yang sama.

2.3 Waktu Proses pada B-Tree

Sebuah B-tree dengan ketinggian n+1 dapat menghabiskan U waktu sebanyak

jumlah nilai pada B-tree dengan ketinggian n, tetapi waktu yang dibutuhkan untuk

melakukan operasi search, insert, dan delete bertambah sesuai ketinggian pohon.

Dibandingkan dengan pohon seimbang lain, pertambahan pada B-tree leih lambat

dibandingakan jumlah elemen.

Page 8: Makalah Pratikum Struktur Data

Karena setiap simpul cenderung memiliki faktor percabangan yang besar

(jumlah anak yang besar), maka perlu untuk menelusuri beberapa simpul sebelum

menempatkan kunci yang diinginkan. Jika akses ke setiap simpul memerlukan disk

access, maka sebuah B-tree akan meminimumkan jumlah akses disk yang dibutuhkan.

Faktor minimalisasi biasanya dipilih agar ukuran total setiap simpul berkorespondensi

pada sebuah ukuran blok yang banyak pada sebuah alat penyimpanan. Pilihan ini

memudahkan dan mengoptimumkan akses disk. Oleh karena itu, sebuah B-tree adalah

struktur data yang ideal untuk situasi di mana data tidak dapat disimpan pada tempat

penyimpanan primer dan akses pada tempat penyimpanan sekunder membutuhkan

banyak waktu. Waktu pencarian kasus terburuk pada derajat n-kunci B-tree adalah

O(log(n)). Sebuah simpul pada pohon B-tree memiliki t-1 <= K <= 2t-1 kunci yang

terurut. Kasus terburuk :

- K = t-1 untuk semua simpul

- X tidak ada pada pohon

Diberikan sebuah simpul W dala pohon T. Berapa lama waktu yang dibutuhkan untuk

mencari subpohon dari W yang mengandung X ? Dengan mengguanakan binary search

dibutuhkan.

3 Algoritma B-Tree

Algoritma untuk operasi search, create, dan insert ditunjukkan di bawah. Perlu

diperhatikan bahwa algoritma-algoritma ini hanya sekali pass. Dengan kata lain,

algoritma tersebut tidak menelusuri pohon kembali. Karena B-tree berusaha melakukan

akses disk seminimum mungkin dan simpul-simpul biasanya disimpan pada disk, pass

sekali ini akan mengurangi jumlah kunjungan pada simpul dan jumlah akses disk. Dua

kali pass yang lebih sederhana pada pohon untuk mempesbaiki pelanggaran mungkin

terjadi. Karena semua simpul diasumsikan disimpan pada tempat penyimpanan sekunder

(disk) daripada tempat peyimpanan primer (memori), semua referensi pada simpul yang

diberikan sebelumnya dengan melakukan operasi read dilambangkan dengan Disk-Read.

Sama halnya, apabila sebuah simpul dimodifikasi dan tidak lagi diperlukan, simpul harus

eitulis pada tempat penyimpanan sekunder dengan operasi write dilambangkan dengan

Disk-Write. Algoritma-algoritma di bawah diasumsikan bahwa semua simpul yang

Page 9: Makalah Pratikum Struktur Data

memiliki parameter telah memiliki operasi Disk-Read yang sesuai. Simpul baru\ dibuat

dan di-assign dengan fungsi Allocate-Node. Implementasi secara detail dari Disk-Read,

Disk-Write, dan AllocateNode tergantung pada sistem operasi (operating system).

3.1 Search

Operasi search pada B-tree mirip dengan search pada binary tree. Dimulai dari

akar, pohon ditelusuri dari atas sampai kebawah, memilih pointer anak yang nilainya

berada pada sisi nilai yang dicari. Binary search umum digunakan (tidak selalu) di antara

simpul untuk menemukan nilai yang berbeda dan anak pohon yang dicari. Akan tetapi,

daripada memilih diantara anak kiri dan anak kanan pada Btree, sebuah search pada B-

tree harus membuat pilihan sebanyak n cara. Anak yang sesuai dipilih dengan melakukan

pencarian linier pada nilai-nilai dalam simpul. Setelah menemukan nilai lebih besar atau

sama dengan nilai yang diinginkan, pencarian pointer anak di sebelah kiri segera

dilakukan. Jika semua nilai yang dicari lebih kecil dari nilai yang diinginkan, pencarian

dilakukan pada pointer anak paling kanan. Tetntu saja pencarian dapat terhenti apabila

simpul yang diinginkan telah ditemukan. Karena waktu yang dibutuhkan untuk

melakukan search tergantung pada tinggi pohon, maka proses search pada B-Tree adalah

O(log n). Berikut ini adalah pseudocodes proses search pada B-tree.

B-Tree-Search (x,k)

i <- 1

while (i<=n[x] and k>keyi[x])

do

i <- i + 1

if (i<=n[x] and k=keyi[x]) then

return (x, i)

if (leaf[x]) then

return NIL

else

Disk-Read(ci[x])

return B-Tree-Search(ci[x], k)

Page 10: Makalah Pratikum Struktur Data

Contoh search pada B-tree Sebagai contoh, di bawah adalah B-tree dengan orde 2 (simpul

paling sedikit memiliki 2 kunci dan 3 pointer anak). Simpul dibatasi dengan kurung siku.

Kunci adalah nama kota dan terurut pada setiap simpul. Pada sisi lain dari setiap kunci

adalah pointer anak yang menghubungkan kunci pada simpul berikutnya.

Untuk menemukan kunci “Dallas”, kita mulai pencarian dari akar simpul paling

atas. “Dallas” tidak berada simpul , tetapi terurut di antara “Chicago” dan “Hoboken” jadi

kita menelusuri pointer anak yang di tengah. Sekali lagi “Dallas: tidak ada dalm simpul

tetapi terurut sebelum “Denver”, jadi kita menelusuri pointer anak yang pertama menuju

ke simpul berikutnya yang ditandai dengan “X”. Pada akhirnya kita akan menemukan

kunci yang dicari ataupun menemukan simpul daun pada tingkat bawah dari Btree tanpa

pointer anak menuju simpul bawah lain dan tanpa kunci yang kita inginkan, menandakan

bahwa kunci yang dicari tidak ada dalam B-tree.

3.2 Insertion

Untuk melakukan insertion pada sebuah B-tree, simpul yang tepat untuk kunci

harus dicari menggunakan algoritma yang sama seperti search pada B-tree. Berikutnya,

kunci disisipkan pada simpul.

Semua proses insertion terjadi pada simpul daun.

- Dengan melakukan pencarian pada pohon, temukan simpul daun di mana elemen

baru seharusnya berada. Jika simpul daun mengandung lebih sedikit dari nilai

maksimum jumlah elemen legal, maka ada tempat kosong. Sisipkan elemen baru

pada simpul, tetap jaga keterurutan elemen simpul.

- Selainnya apabila simpul penuh, simpul daun harus dipisah menjadi dua simpul.

Karena pemisahan simpul menghasilkan pemindahan sebuah kunci ke simpul

orang tuanya, simpul tersebut tidak boleh penuh atau operasi pemisahan

dilakukan kembali. Proses ini dapat berulang sepanjangperjalanan menuju akar

dan memungkinkan pemisahan simpul akar. Hal ini memerlukan dua kali pass.

Pas pertama mencari simpul di mana kunci harus diletakkan, yang kedua

melakukan pemisahan yang diperlukan pada simpul-simpul

sebelumnya.Pemisahan simpul akar ditangani sebagai kasus khusus karena simpul

baru harus dibuat untuk menampung kunci tengah dari simpul lama.

Page 11: Makalah Pratikum Struktur Data

Pemisahan dilakukan sebagai berikut :

median dipilih di antara elemen daun dan elemen baru. Nilai yang lebih kecil dari median

diletakkan di simpul kiri yang baru dan nilai yang lebih besar dari median diletakkan di

simpul kanan yang baru, dengan median sebagai nilai pemisah. Nilai pemisah tersebut

ditambahkan pada simpul orang tuanya, yang dapat mnyebabkan adanya pemisahan lagi,

dst. Maksimum jmlah elemen setiap simpul adalah U-1. Ketika sebuah simpul dipisah,

satu elemen pindah ke simpul orangtuanya, tetapi

elemen lain ditambahkan. Jadi mungkin untuk membagi jmlah maksimum U-1 elemen

menjadi dua simpul legal. Jika jumlahnya ganjil maka U = 2L dan setiap simpul baru

mengandung (U-2)/2 = L-1 elemen dan kemudian menjadi simpul legal. Jika jumlahnya

genap maka U = 2L- 1, sehingga ada 2L-2 elemen pada simpul. Setengah dari jumlah

tersebut adalah L-1, merupakan jumlah elemen minimum pada

setiap simpul. Karena setiap akses pada simpul berhubungan dengan akses disk,

diusahakan menghindari pass kedua dengan memastikan bahwa simpul orang tuanya

tidak pernah penuh. Untuk memenuhi hal tersebut, algoritma yang telah dijelaskan

memisahkan setiap simpul penuh yang ditemukan ketika menelusuri pohon. Walaupan

hal ini mengakibatkan operasi pemisahan yang teidak diperlukan, hal ini menjamin setiap

simpul orang tua tidak pernah perlu dipisahkan dan menghapus kebutuhan pass kedua

pada pohon. Proses pemisahan berjalan dalam waktu yang linear sehingga mempengaruhi

pada O(t logt n) pada waktu pelaksanaan insert pada Btree. Berikut ini adalah

pseudocodes proses insert dan split pada B-tree.

B-Tree-Insert(T,k)

r <- root[T]

if (n[r] = 2t–1)then

s <- Allocate-Node()

root[T] <- s

leaf[s] <- FALSE

n[s] <- 0

c1 <- r

B-Tree-SplitChild(s,1,r)

B-Tree-InsertNonfull(s,k)

Page 12: Makalah Pratikum Struktur Data

else

B-Tree-InsertNonfull(r,k)

B-Tree-Insert-Nonfull(T,k)

i <- n[x]

if (leaf[x])then

while (i>=1 and k<keyi[x])do

keyi+1[x] <- keyi[x]

i <- i - 1

keyi+1[x] <- k

n[x] <- n[x] + 1

Disk-Write(x)

else

while (i>=1 and k<keyi[x])do

i <- i - 1

i <- i + 1

Disk-Read(ci[x])

if (n[ci[x]] = 2t-1)then

B-Tree-SplitChild(x,i,ci[x])

if (k>keyi[x])then

i <- i + 1

B-Tree-InsertNonfull(ci[x],k)

B-Tree-Split-Child(x,i,y)

z <- Allocate-Node()

leaf[z] <- leaf[y]

n[z] <- t-1

for j<-1 to t-1 do

keyj[z] <- keyj+t[y]

if not leaf[y]then

for j<-1 to t do

cj[z] <- cj+t[y]

n[y] <- t-1

Page 13: Makalah Pratikum Struktur Data

for j<-n[x]+1 downto i+1 do

cj+1[x] <- cj[x]

ci+1 <- z

for j <- n[x] downto i do

keyj+1[x] <- keyj[x]

keyi[x] <- keyt[y]

n[x] <- n[x] + 1

Disk-Write(y)

Disk-Write(z)

Disk-Write(x)

4 Contoh Aplikasi B-Tree

Salah satu penerapan struktur data B-tree adalah database atau basis data. Basis

data ada koleksi data diatur dalam suatu cara yang memfasilitasi proses updating,

pengambilan, dan pengelolaan data. Data dapat terdiri atas apa saja, termasuk nama,

alamat, gambar, dan angka. Basis data sudah umum dan digunakan setiap hari.

Contohnya, sistem pemesanan pesawat mungkin mengatur basis data penerbangan yang

tersedia, para pelanggan, dan tiket. Seorang guru mungkin mengatur basis data nama dan

nilai murid. Karena komputer berkembangcepat, dengan tepat memanipulasi,

menyimpan, dan mengmabil data, basis data sering diatur secara eltronik dengan

menggunakan database management system. Sistem pengelolaan basis data adalah

komponen penting dalam operasi bisnis sehari-hari. Produk basis data contohnya

Microsoft SQL Server, Sybase Adaptive Server, IBMDB2,dan Oracle melayani dasar

dari sistem akuntnsi, sistem penyimpanan, sistem pencatatan medis, sistem pemesanan

tiket pesawat, dan aspek-aspek penting bisnis modern lain yang tidak terhitung

banyaknya. Basis data terdiri dari jutaan data dalam ukuran gigabyte. Sebagai contoh,

TELSTRA, sebuah perusahaan telekomunikasi Australia, mengurus basis data tagihan

pelanggan dengan 51milyar baris dan data sebanyak 4,2 terabyte. Supaya basis data

berguna dan dapat digunakan, maka harus mendukung operasi seperti pengambilan dan

penyimpanan secara cepat. Karena basis data tidak dapat diatur seluruhnya di memori, B-

tree sering digunakan mengurutkan data dan akses yang cepat. Contohnya, mencari basis

Page 14: Makalah Pratikum Struktur Data

data yang tidak terurut terdiri dari n nilai kunci memiliki alternatif yang lain karena

waktu akses dalam simpulnya cepat.

Sebuah B-Tree didesain untukdigunakan pada disk. Sebuah Btree menyimpan

banyak kunci di setap simpulnya sehingga dapat mengakses banyak kunci, dan faktor

cabang pohon sangat tinggi sehingga pohon dengan ketinggian kecil dapat menyimpan

kunci dalam jumlah yang sangat besar, yang dapat diakses hanya dengan beberapa

operasi. Salah satu penerapan struktur data B-tree adalah database atau basis data.

Page 15: Makalah Pratikum Struktur Data

BAB II

SEARCHING

5. Pengertian Searching

Searching adalah pencarian data dengan menelusuri tempat pencarian data tersebut.

Tempat pencarian data tersebut dapat berupa array dalam memori, bias juga pada

file pada external storage. Pada suatu data seringkali dibutuhkan pembacaan

kembali informasi (retrieval information) dengan cara searching.

5.1 Teknik-teknik Searching

o Sequential Search adalah suatu teknik pencarian data dalam array (1 dimensi)

yang akan menelusuri semua elemen-elemen array dari awal sampai akhir,

dimana data-data tidak perlu diurutkan terlebih dahulu. Kemungkinan terbaik

(best case) adalah jika data yang dicari terletak di indeks array terdepan

(elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data

sangat sebentar (minimal).

Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di

indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan

untuk pencarian data sangat lama (maksimal).

Misalnya terdapat array satu dimensi sebagai berikut:

Page 16: Makalah Pratikum Struktur Data

Kemudian program akan meminta data yang akan dicari, misalnya 6. Jika ada

maka akan ditampilkan tulisan “ADA”, sedangkan jika tidak ada

maka akan ditampilkan tulisan “TIDAK ADA”.

#include <stdio.h>

#include <conio.h>

void main(){

clrscr();

int data[8] = {8,10,6,-2,11,7,1,100};

int cari;

int flag=0;

printf("masukkan data yang ingin dicari = ");scanf("%d",&cari);

for(int i=0;i<8;i++){

if(data[i] == cari) flag=1;

}

if(flag==1) printf("Data ada!\n");

else printf("Data tidak ada!\n");

- Dari program diatas, terlihat bahwa dilakukan perulangan untuk mengakses

semua elemen array data satu persatu berdasarkan indeksnya.

Page 17: Makalah Pratikum Struktur Data

- Program menggunakan sebuah variabel flag berguna untuk menandai ada atau

tidaknya data yang dicari dalam array data. Hanya bernilai 0 atau 1.

- Flag pertama kali diinisialiasasi dengan nilai 0.

- Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan

tetap bernilai 0.

- Semua elemen array data akan dibandingkan satu persatu dengan data yang

dicari dan diinputkan oleh user.

o Binary Search adalah teknik pencarian data dalam dengan cara membagi data

menjadi dua bagian setiap kali terjadi proses pengurutan. Data yang ada harus

diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang dijadikan

kunci pencarian.

Prinsip pencarian biner adalah:

- Data diambil dari posisi 1 sampai posisi akhir N

- Kemudian cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2

- Kemudian data yang dicari dibandingkan dengan data yang ditengah, apakah

sama atau lebih kecil, atau lebih besar?

- Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi

tengah + 1

- Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi

tengah – 1

- Jika data sama, berarti ketemu.

o Interpolation Search, teknik ini dilakukan pada data yang sudah terurut

berdasarkan kunci tertentu. Teknik searching ini dilakukan dengan perkiraan

letak data.

Contoh ilustrasi: jika kita hendak mencari suatu nama di dalam buku telepon,

misal yang berawalan dengan huruf T, maka kita tidak akan mencarinya dari

awal buku, tapi kita langsung membukanya pada 2/3 atau ¾ dari tebal buku.

Jadi kita mencari data secara relatif terhadap jumlah data.

Page 18: Makalah Pratikum Struktur Data

Rumus posisi relatif kunci pencarian dihitung dengan rumus:

Contoh program :

Page 19: Makalah Pratikum Struktur Data

BAB III

SORTING

6. Sorting

Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah

disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan

tertentu.Pengurutan data dalam struktur data sangat penting untuk data yang bertipe data

numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending dan descending.

METODE PENGURUTAN DATA:

• Pengurutan berdasarkan perbandingan (comparison-based sorting)

• Bubble sort, exchange sort

• Pengurutan berdasarkan prioritas (priority queue sorting method)

• Selection sort, heap sort

• Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted

method)

• Insertion sort, tree sort

• Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method)

• Quick sort, merge sort

• Pengurutan berkurang menurun (diminishing increment sort method)

• Shell sort

6.1. Bubble Sort

Buble Sort merupakan metode sorting termudah. Diberi nama “Bubble” karena

proses pengurutan secara berangsur-angsur bergerak / berpindah ke posisinya yang tepat,

seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data

dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Algoritma ini

Page 20: Makalah Pratikum Struktur Data

seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan,

tergantung jenis pengurutannya.

Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses,

demikian seterusnya. Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada

pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.

Contoh prosedur:

Versi 1

void bubble_sort(){

for(int i=1;i<n;i++){

for(int j=n-1;j>=i;j--){

if(data[j]<data[j-1])

tukar(&data[j],&data[j-1]); //ascending

}

}

}

Versi 2

void bubblesort2(){

for(i=1;i<6;i++){

for(int j=0;j<6-i;j++){

if(data[j]>data[j+1])

tukar(&data[j],&data[j+1]); //descending

}

}

}

“The bubble sort is an easy algorithm to program, but it is slower than many other

sorts”

Page 21: Makalah Pratikum Struktur Data

6.2. Selection Sort

Merupakan kombinasi antara sorting dan searching. Untuk setiap proses, akan

dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar

akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama,

akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil

(data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di

indeks kedua (data[1]).

Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks

pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.

Contoh prosedur:

void selection_sort(){

for(int i=0;i<n-1;i++){

pos = i;

for(int j=i+1;j<n;j++){

if(data[j] < data[pos]) pos = j; //ascending

}

if(pos != i) tukar(pos,i);

}

}

6.3. Insertion Sort

Mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil

dan disisipkan (insert) ke tempat yang seharusnya. Pengurutan dimulai dari data ke-2

sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan

Page 22: Makalah Pratikum Struktur Data

ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan elemen, maka elemen-

elemen lain akan bergeser ke belakang.

Contoh prosedur:

void insertion_sort(){

int temp;

for(int i=1;i<n;i++){

temp = data[i];

j = i -1;

while(data[j]>temp && j>=0){

data[j+1] = data[j];

j--;

}

data[j+1] = temp;

}

}

6.4. Tabel Perbandingan Kecepatan Metode Pengurutan Data

Untuk data sejumlah 10.000 data pada komputer Pentium II 450 MHz

Metode Waktu (detik)

Data Acak Data Ascending Data Descending

Bubble Sort 11,2 1,32 19,77

Insertion Sort 11,09 0,00 2,25

Selection Sort 1,32 1,32 19,77

Page 23: Makalah Pratikum Struktur Data

DAFTAR PUSTAKA

[1] Carlson, David. (2006).http://cis.stvincent.edu/html/tutorials/swd/btree/btree.html.

Tanggal akses :2 Januari 2007 pukul 10:30 WIB

[2] Liem, Inggriani. (2001). Diktat Struktur Data IF222 Kurikulum 1998.Jurusan Teknik

Informatika, InstitutTeknologi Bandung.

[3] Munir, Rinaldi. (2004). Diktat Kuliah IF2151 Matematika Diskrit.Departemen Teknik

Informatika,Institut Teknologi Bandung