• Tidak ada hasil yang ditemukan

Implementasi Multiple Key Index pada Map Berbasis Struktur Pohon Right - Threaded AVL Menggunakan Java.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Multiple Key Index pada Map Berbasis Struktur Pohon Right - Threaded AVL Menggunakan Java."

Copied!
24
0
0

Teks penuh

(1)

ABSTRAK

Map adalah struktur data umum dan bagian yang penting dari pemrograman komputer. Map memungkinkan kita untuk menyimpan data berupa pasangan kunci-nilai, sehingga pengguna dapat memasukkan data ke dalam map dengan menentukan pasangan kunci-nilai dan kemudian dapat mengambil nilai yang sesuai dengan kunci tertentu dari dalam map. Terdapat bahasa pemrograman yang berbeda mendukung map dalam berbagai cara, dalam hal ini bahasa pemrograman Java memiliki implementasi tersendiri dari map seperti TreeMap. TreeMap

menyimpan semua pasangan kunci-nilai ke dalam struktur data pohon yang disebut pohon red-black dan struktur tersebut diurutkan oleh kunci. TreeMap

menyimpan setiap pasangan kunci-nilai ke setiap node di pohon sehingga jumlah node dan pasangan kunci-nilai bernilai sama. Ada cara yang berbeda untuk menempatkan pasangan kunci-nilai dalam node yang setiap node di pohon menyimpan lebih dari satu pasangan kunci-nilai sehingga dapat mengurangi jumlah node dan dengan menggunakan struktur data pohon lain yang right-threaded AVL tree. Terakhir adalah memeriksa kinerja kecepatan eksekusi dan penggunaan memori menggunakan aplikasi sederhana.

(2)

ABSTRACT

Map is common data structures and important part of computer programming. A map allows us to store data as key-value pairs, so user can put data into the map by specifying a key-value pair and then can retrieve the value corresponding to a particular key from the map. There are different programming languages supported map in a different ways, in this case the Java Programming language had its own implementation of maps such as TreeMap. TreeMap stores all key-value pairs into a tree data structure called red-black tree and it is sorted by keys. TreeMap stores each key-value pairs into a single node in the tree thus the number of nodes and key-value pairs are equals. There are different way to put the key-value pairs in the nodes which is each node in the tree hold more than one key-value pairs so it can reduce the number of nodes and by using other tree data structures which is right-threaded AVL tree. Finally check the performance by the execution speed and memory usage by a simple application.

(3)

DAFTAR ISI

LEMBAR PENGESAHAN ... ii

PERNYATAAN ORISINALITAS LAPORAN PENELITIAN ... iii

PERNYATAAN PUBLIKASI LAPORAN PENELITIAN ... iv

PRAKATA ... v

ABSTRAK ... vii

ABSTRACT ... viii

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 2

1.3 Tujuan Penelitian ... 3

1.4 Batasan Masalah ... 3

1.5 Sistematika Pembahasan ... 4

BAB II LANDASAN TEORI ... 6

2.1 Struktur Data ... 6

2.2 Tipe Data Abstrak ... 6

2.3 Tipe Data Abstrak Map ... 7

2.4 Array ... 8

2.5 Tree ... 9

2.6 Binary Search Tree... 10

2.7 Struktur Pohon AVL ... 13

2.7.1 Deklarasi Node AVL Tree ... 15

2.7.2 Insert Node AVL Tree ... 15

2.7.3 Delete Node AVL Tree ... 20

(4)

2.7.5 Performansi AVL Tree ... 27

2.8 Struktur Pohon Right-Threaded Binary ... 28

2.8.1 Deklarasi Node RTBST ... 28

2.8.2 Penambahan Node RTBST ... 29

2.8.3 Penghapusan Node RTBST ... 30

2.8.4 Pencarian Node RTBST ... 33

2.8.5 Traversal RTBST ... 34

2.9 Right-Threaded AVL Tree ... 35

2.10 TreeMap ... 37

2.11 Bahasa Pemrograman Java... 38

2.11.1 Kelas dan Objek ... 38

2.11.2 Tipe data ... 39

2.11.3 Penggunaan Array pada Java ... 39

2.11.4 Bitwise Operator ... 40

2.11.5 Tipe Generic ... 43

2.11.6 Menghitung Waktu Proses pada Java ... 43

2.11.7 Menghitung Memori pada Java... 44

2.11.8 Javadoc ... 44

2.10.8 JUnit ... 45

BAB III ANALISIS DAN DESAIN... 46

3.1 Analisis ... 46

3.1.1 Analisis Interface Map ... 46

3.1.2 Analisis Interface Map.Entry ... 48

3.1.3 Analisis Interface SortedMap... 48

3.1.4 Analisis Interface NavigableMap... 49

(5)

3.2 Gambaran Keseluruhan ... 52

3.2.1 Persyaratan Antarmuka Eksternal ... 53

3.2.2 Antarmuka dengan Pengguna ... 53

3.2.3 Antarmuka Perangkat Keras ... 53

3.2.4 Antarmuka Perangkat Lunak ... 54

3.2.5 Fitur-fitur Perangkat Lunak ... 54

3.2 Desain Perangkat Lunak ... 60

3.2.5 Perancangan Tipe Data Abstrak Map ... 60

3.2.6 Pemodelan Perangkat Lunak ... 61

3.2.7 Desain Penyimpanan Data ... 79

3.2.8 Algoritma ... 84

4.2.7 Desain Antarmuka ... 106

BAB IV PENGEMBANGAN PERANGKAT LUNAK ... 109

4.1 Implementasi Package ... 109

4.2 Implementasi Class ... 109

4.3 Implementasi Method ... 110

4.3.1 Implementasi Method pada Kelas IntKeySmallMap ... 110

4.3.2 Implementasi Method pada Kelas IntKeyArrayMap ... 112

4.3.3 Implementasi Method pada Kelas RightThreadedAVL ... 116

4.3.4 Implementasi Method pada Kelas IntKeyTreeMap ... 123

4.4 Implementasi Antarmuka Program Simulasi ... 130

4.4.1 Form Kelola Right-Threaded AVL Tree ... 130

4.4.2 Form Kelola Data ADT Map ... 130

4.4.3 Form View ADT Map ... 131

4.5 Antarmuka Program Testing ... 132

(6)

BAB V TESTING DAN EVALUASI SISTEM ... 134

5.1 Rencana Pengujian ... 134

5.2 Pelaksanaan Pengujian ... 134

5.2.1 Unit Testing ... 135

5.2.2 Black Box ... 140

5.2.3 Uji Performansi Map ... 144

5.3 Analisis Hasil Uji Performansi Map ... 153

5.4 Perbandingan Struktur AVL Tree dan Red-Black Tree ... 155

BAB VI KESIMPULAN DAN SARAN ... 156

6.1 Kesimpulan ... 156

6.2 Saran ... 157

DAFTAR PUSTAKA ... 159

(7)

DAFTAR GAMBAR

Gambar 2.1 Ilustrasi dari sebuah map. Key (label) mempunyai sebuah value

(diskette) dan dibungkus ke dalam entry (labeled diskette) lalu disusun ... 7

Gambar 2.2 Ilustrasi sebuah array (Zakaria, 2006) ... 9

Gambar 2.3 Struktur data pohon (Lafore, 2003) ... 9

Gambar 2.4 Istilah-istilah pada struktur data pohon ... 10

Gambar 2.5 Contoh pohon biner (Rosa, 2010) ... 11

Gambar 2.6 Binary search tree menggunakan bilangan ... 12

Gambar 2.7 Representasi Elemen Pohon Biner ... 12

Gambar 2.8 Representasi pohon biner (Rosa, 2010) ... 13

Gambar 2.9 Deklarasi node pada binary search tree ... 13

Gambar 2.10 (a) AVL tree; (b) bukan AVL tree (simpul tidak seimbang ... 14

Gambar 2.11 AVL tree dengan simbol bantu (Sanjaya, 2005) ... 15

Gambar 2.12 Deklarasi node pada AVL tree link[0] merupakan anak kiri ... 15

Gambar 2.13 Penambahan node n pada anak kiri dari node p membuat balance factor node p dan parent dari node p ... 16

Gambar 2.14 Deklarasi pointer dan algoritma pencarian lokasi untuk ... 17

Gambar 2.15 Penempatan pointer tambahan t dan s pada ... 17

Gambar 2.16 Proses update balance factor dimulai dari s turun ... 18

Gambar 2.17 Algoritma insert pada AVL tree (Walker, 2008) ... 18

Gambar 2.18 Algoritma metode insert_balance (Walker, 2008) ... 19

Gambar 2.19 Ilustrasi insertion pada AVL tree (Walker, 2008) ... 20

Gambar 2.20 Deklarasi pointer dan algoritma pencarian lokasi node yang akan dihapus pada AVL tree (Walker, 2008) ... 21

Gambar 2.21 Algoritma delete pada AVL tree (Walker, 2008)... 22

Gambar 2.22 Algoritma penghapusan node pada AVL tree (Walker, 2008) ... 22

Gambar 2.23 Algoritma metode remove_balance (Walker, 2008) ... 23

Gambar 2.24 Ilustrasi deletion pada AVL tree (Walker, 2008) ... 24

Gambar 2.25 Single rotate arah kanan pada AVL tree ... 25

Gambar 2.26 Single rotate arah kiri pada AVL tree ... 25

(8)

Gambar 2.28 Double rotate arah kanan pada AVL tree ... 26

Gambar 2.29 Double rotate arah kiri pada AVL tree ... 26

Gambar 2.30 Algoritma double rotate pada AVL tree ... 26

Gambar 2.31 Algoritma metode adjust_balancee ... 27

Gambar 2.32 Right-threaded binary tree (Walker, 2008) ... 28

Gambar 2.33 Right-threaded binary tree (Walker, 2008) ... 28

Gambar 2.34 Proses insert pada right-threaded binary ... 29

Gambar 2.35 Proses remove situasi ke-1 pada right-threaded ... 30

Gambar 2.36 Proses remove situasi ke-2 pada right-threaded ... 31

Gambar 2.37 Proses remove situasi ke-3 pada right-threaded ... 32

Gambar 2.38 Proses remove situasi ke-4 pada right-threaded ... 33

Gambar 2.39 Algoritma pencarian pada right-threaded ... 34

Gambar 2.40 Algoritma traversal pada right-threaded ... 34

Gambar 2.41 Deklarasi node pada right-threaded AVL tree ... 35

Gambar 2.42 Single rotation ke arah kanan pada ... 35

Gambar 2.43 Single rotation ke arah kiri pada ... 36

Gambar 2.44 Double rotation ke arah kanan pada ... 36

Gambar 2.45 Double rotation ke arah kiri pada ... 36

Gambar 2.46 Metode untuk menghitung waktu dalam ... 43

Gambar 2.47 Algoritma untuk menghitung waktu dalam Java (Knudsen, 2005). 44 Gambar 2.48 Metode untuk menghitung memori ... 44

Gambar 2.49 Algoritma untuk menghitung memori ... 44

Gambar 3.50 Struktur Interface pada Java Collections Framework ... 46

Gambar 3.51 Kelas-kelas implementasi Map di dalam Java Collections Framework (Naftalin, 2007) ... 37

Gambar 3.52 Red-black tree dengan jumlah 14 elemen dan maksimum tinggi 5 (Collins, 2011) ... 51

Gambar 3.53 Use Case diagram program simulasi ... 62

Gambar 3.54 Aktivitas pengolahan data right-threaded AVL tree ... 63

Gambar 3.55 Aktivitas tambah data right-threaded AVL tree ... 64

Gambar 3.56 Aktivitas hapus data AVL tree ... 65

(9)

Gambar 3.58 Aktivitas hapus semua data right-threaded AVL tree ... 66

Gambar 3.59 Aktivitas melihat data right-threaded AVL tree ... 66

Gambar 3.60 Aktivitas pengolahan data ... 67

Gambar 3.61 Aktivitas tambah data ... 68

Gambar 3.62 Aktivitas hapus data ... 69

Gambar 3.63 Aktivitas cari data ... 70

Gambar 3.64 Aktivitas ubah data ... 71

Gambar 3.65 Aktivitas melihat struktur tree ADT map ... 72

Gambar 3.66 Aktivitas upload data file ... 73

Gambar 3.67 Class diagram IntKeySmallMap ... 74

Gambar 3.68 Class diagram IntKeyArrayMap ... 75

Gambar 3.69 Class diagram RightThreadedAVL ... 76

Gambar 3.70 Class diagram IntKeyAVLMap ... 77

Gambar 3.71 Class diagram MiniBench ... 78

Gambar 3.72 Class diagram data uji coba ... 79

Gambar 3.73 Representasi penyimpanan pada kelas ... 80

Gambar 3.74 Representasi penyimpanan pada kelas IntKeyArrayMap ... 81

Gambar 3.75 Penyimpanan pada kelas RightThreadedAVL ... 82

Gambar 3.76 Penyimpanan pada kelas IntKeyTreeMap ... 83

Gambar 3.77 Representasi proses masukkan key dan value dalam kelas IntKeySmallMap ... 84

Gambar 3.78 Proses input key dan value dalam kelas IntKeyArrayMap... 87

Gambar 3.79 Proses penyimpanan key pada kelas RightThreadedAVL ... 92

Gambar 3.80 Proses input key dan value dalam kelas IntKeyTreeMap... 100

Gambar 3.81 Menghitung key dalam suatu NodeEntry ... 106

Gambar 3.82 Form kelola right-threaded AVL tree ... 107

Gambar 3.83 Form kelola customer ... 107

Gambar 3.84 Form view ADT map ... 108

Gambar 4.85 Tampilan form kelola right-threaded AVL tree ... 130

Gambar 4.86 Tampilan form kelola data ADT map ... 131

Gambar 4.87 Tampilan form kelola ADT map ... 131

(10)
(11)

DAFTAR TABEL

Tabel 2.1 Contoh penggunaan dan hasil operasi pada map dengan key bertipe

integer dan value bertipe single character (Goodrich, 2010) ... 8

Tabel 2.2 Performansi kompleksitas kecepatan operasi pada AVL tree (Goodrich, 2010) ... 27

Tabel 2.3 Konstruktor di dalam kelas TreeMap (Schildt, 2007) ... 38

Tabel 2.4 Tipe data bilangan bulat pada Java (Schildt, 2007) ... 40

Tabel 2.5 Bitwise operator di java (Schildt, 2007) ... 40

Tabel 2.6 Tabel Logical Operator (Schildt, 2007) ... 41

Tabel 2.7 Metode Assertion pada JUnit (Minella, 2008) ... 45

Tabel 3.8 Metode-metode di dalam Interface Map (Schildt, 2007)... 47

Tabel 3.9 Metode-metode di dalam Interface Map.Entry (Schildt, 2007) ... 48

Tabel 3.10 Metode-metode di dalam Interface SortedMap (Schildt, 2007) ... 49

Tabel 3.11 Metode di dalam Interface NavigableMap (Schildt, 2007) ... 49

Tabel 3.12 Metode di dalam Interface NavigableMap (lanjutan) ... 50

Tabel 3.13 Performansi kompleksitas kecepatan operasi pada red-black tree (Goodrich, 2010) ... 51

Tabel 4.14 Implementasi package ... 109

Tabel 4.15 Implementasi class ... 109

Tabel 4.16 Fungsi-fungsi pendukung pada IntKetSmallMap ... 112

Tabel 4.17 Fungsi-fungsi pendukung pada IntKeyArrayMap ... 116

Tabel 4.18 Fungsi-fungsi pendukung pada RightThreadedAVL ... 123

Tabel 4.19 Fungsi-fungsi pendukung pada IntKeyTreeMap ... 128

Tabel 5.20 Pengujian halaman right-threaded AVL ... 141

Tabel 5.21 Pengujian halaman data ADT Map ... 142

Tabel 5.22 Pengujian halaman ADT Map Tree ... 143

Tabel 5.23 Pengujian program test performansi map ... 143

Tabel 5.24 Pengujian performansi penggunaan memori pada dua buah map .... 146

Tabel 5.25 Pengujian performansi penggunaan memori pada dua buah map .... 147

Tabel 5.26 Pengujian performansi penggunaan memori pada dua buah map .... 147

(12)

Tabel 5.28 Pengujian performansi kecepatan waktu pada dua buah map ... 149

Tabel 5.29 Pengujian performansi kecepatan waktu pada dua buah map ... 150

Tabel 5.30 Pengujian performansi kecepatan waktu pada dua buah map ... 151

Tabel 5.31 Pengujian performansi kecepatan waktu pada dua buah map ... 152

Tabel 5.32 Hasil rata-rata pengujian alokasi memori pada kelas TreeMap dan IntKeyTreeMap ... 153

Tabel 5.33 Hasil rata-rata pengujian kecepatan waktu pada kelas TreeMap dan IntKeyTreeMap ... 153

(13)

DAFTAR PROGRAM

Kode Program 3.1 Deklarasi kelas Entry di dalam TreeMap ... 52

Kode Program 3.2 Deklarasi kelas IntKeySmallMap ... 80

Kode Program 3.3 Deklarasi kelas IntKeyArrayMap ... 81

Kode Program 3.4 Deklarasi kelas RightThreadedAVLTree ... 82

Kode Program 3.5 Deklarasi kelas RightThreadedAVL ... 83

Kode Program 4.6 Implementasi metode put() pada IntKeySmallMap ... 111

Kode Program 4.7 Implementasi metode remove() pada IntKeySmallMap ... 111

Kode Program 4.8 Implementasi metode get() pada IntKeySmallMap ... 112

Kode Program 4.9 Implementasi metode put() pada IntKeyArrayMap ... 112

Kode Program 4.10 Implementasi metode remove() pada IntKeyArrayMap ... 113

Kode Program 4.11 Implementasi metode get() pada IntKeyArrayMap ... 114

Kode Program 4.12 Implementasi metode iterator() pada IntKeyArrayMap... 115

Kode Program 4.13 Implementasi metode get() pada ... 116

Kode Program 4.14 Implementasi metode get() pada ... 117

Kode Program 4.15 Implementasi metode insert() pada RightThreadedAVL ... 117

Kode Program 4.16 Implementasi metode insertbalanceFactor() pada RightThreadedAVL... 118

Kode Program 4.17 Implementasi metode remove() pada RightThreadedAVL . 119 Kode Program 4.18 Implementasi metode removeBalanceFactor() pada RightThreadedAVL... 120

Kode Program 4.19 Implementasi metode adjustBalanceFactor() pada RightThreadedAVL... 121

Kode Program 4.20 Implementasi metode singleRotate() pada RightThreadedAVL... 121

Kode Program 4.21 Implementasi metode doubleRotate() pada RightThreadedAVL... 121

Kode Program 4.22 Implementasi metode search() pada RightThreadedAVL .. 122

Kode Program 4.23 Implementasi metode get() pada NodeEntry ... 123

Kode Program 4.24 Implementasi metode get() pada NodeEntry ... 123

(14)

Kode Program 4.26 Implementasi metode remove() pada IntKeyTreeMap ... 125

Kode Program 4.27 Implementasi metode get() pada IntKeyTreeMap ... 127

Kode Program 4.28 Implementasi metode iterator() pada IntKeyTreeMap... 127

Kode Program 5.29 Deklarasi kelas untuk unit testing dengan JUnit... 135

Kode Program 5.30 Deklarasi fungsi tesMethodPut() ... 136

Kode Program 5.31 Deklarasi fungsi testReturnMethodPut() ... 136

Kode Program 5.32 Deklarasi fungsi testMethodRemove() ... 137

Kode Program 5.33 Deklarasi fungsi testReturnMethodRemove() ... 137

Kode Program 5.34 Deklarasi fungsi testMethodSize() ... 138

Kode Program 5.35 Deklarasi fungsi testKeySet() ... 138

Kode Program 5.36 Deklarasi fungsi testValues() ... 139

(15)

BAB I

PENDAHULUAN

1.1 Latar Belakang

Pada masa kini komputer mengalami perkembangan yang sangat cepat

untuk memberikan kemudahan dalam mengakses, menyimpan dan mendapatkan

berbagai informasi. Seiring meningkatnya kecanggihan teknologi komputer

tersebut, maka jumlah informasi yang perlu disimpan ke dalam sebuah komputer

semakin bertambah. Dengan bertambahnya jumlah informasi tersebut, maka

perangkat komputer pun harus memiliki daya tampung dan daya kelola data yang

lebih baik.

Di dalam sebuah komputer, terdapat salah satu media penyimpanan data

sementara yang dinamakan Random Access Memory (RAM). Proses penyimpanan

data di dalam memori tersebut menggunakan aturan yang disebut struktur data.

Memori komputer diakses langsung oleh Central Processing Unit (CPU) sehingga

dapat memproses data dengan sangat cepat, akan tetapi daya tampung di

dalamnya sangat terbatas. Maka dari itu, diperlukan konsep struktur data yang

tepat, agar data dapat disimpan dan diproses dengan baik oleh memori dan CPU di

dalam komputer. Stuktur data mempunyai peranan penting di dalam proses

pengembangan aplikasi komputer, terutama aplikasi yang berguna untuk

memproses data dalam jumlah yang banyak. Konsep struktur data banyak

diterapkan pada beberapa bahasa pemograman komputer, salah satunya adalah

Java.

Di dalam bahasa pemograman Java, struktur data diterapkan di dalam

Java Collections Framework. Di dalam framework tersebut terdapat sebuah

interface Map yang berguna untuk menyimpan data berupa pasangan key-value

atau disebut entry. Pasangan key-value sering digunakan di dalam berbagai

aplikasi, salah satu contohnya yaitu untuk mengelola data mahasiswa. Key

digunakan sebagai nomor induk mahasiswa dan value berupa data lengkap

(16)

2

diperlukan key sebagai acuan. Salah satu kelas yang mengimplementasi interface

Map di dalam Java adalah kelas TreeMap. Pada kelas TreeMap, masing-masing

entry atau pasangan key-value disimpan di dalam node pada yang disusun ke

dalam struktur data red-black tree yang berbasis binary search tree, sehingga

jumlah node sama dengan jumlah pasangan key-value. (Collins, 2011).

Hal ini mengakibatkan semakin banyak jumlah key-value yang disimpan,

maka semakin banyak jumlah node pada struktur pohon tersebut. Oleh karena itu

di dalam penelitian ini akan dibuat sebuah tipe data abstrak map yang mempunyai

cara kerja mirip dengan TreeMap. Perbedaan dari tipe data abstrak map yang

akan dibuat ini adalah node dapat menyimpan lebih dari satu pasang key-value.

Pasangan key-value di dalam node tersebut akan disimpan menggunakan struktur

array. Masing-masing node tersebut selanjutnya dibentuk ke dalam struktur data

right-threaded AVL tree yang merupakan gabungan dari struktur data AVL tree

dan right-threaded tree (Pfaff, 2007). AVL tree sendiri merupakan salah satu jenis

struktur pohon seimbang selain red-black tree (McAllister, 2010).

Tipe data abstrak map yang telah dibuat tersebut kemudian akan diuji coba

bersama dengan kelas TreeMap pada Java. Proses uji coba akan dilakukan dengan

mengukur kecepatan waktu dalam memproses penambahan, pencarian dan

penghapusan data. Selain itu juga dilakukan pengukuran penggunaan memori,

sehingga dapat dilakukan analisis untuk melalukan perbandingan dari kedua tipe

map tersebut dilihat dari waktu proses dan kebutuhan memori yang digunakan.

1.2 Rumusan Masalah

Melihat latar belakang yang telah diuraikan di atas, terdapat beberapa

permasalahan yang dihadapi, diantaranya:

1. Bagaimana pengembangan struktur data right-threaded AVL tree beserta

implementasi program simulasi dari struktur data tersebut.

2. Bagaimana pengembangan sebuah tipe data abstrak map berbasis

right-threaded AVL tree dengan konsep satu node di dalam struktur tree tersebut

(17)

3

3. Bagaimana implementasi perangkat lunak sederhana untuk mengukur

kecepatan waktu eksekusi dan penggunaan memori pada tipe data abstrak

map yang telah dikembangan dan juga pada kelas TreeMap di dalam Java

serta analisis perbandingan terhadap kedua tipe data map tersebut

berdasarkan hasil pengukuran yang telah dilakukan.

1.3 Tujuan Penelitian

Berikut ini merupakan tujuan dari penelitian yang akan dicapai di dalam

tugas akhir ini untuk menjawab rumusan masalah yang ada, diantaranya:

1. Mendesain dan mengimplementasikan struktur data right-threaded AVL

tree beserta program simulasinya.

2. Mendesain dan mengembangkan sebuah tipe data abstrak map yang dapat

menyimpan dan memproses data berupa key-value berbasis struktur data

right-threaded AVL tree beserta dengan program simulasinya.

3. Mengukur pengunaan waktu dan memori antara kelas TreeMap di dalam

Java dan tipe data abstrak map yang telah dibuat di dalam tugas akhir ini.

4. Menganalisis hasil pengukuran waktu dan memori untuk memperoleh

perbandingan dari tipe data abstrak map yang telah dibuat dengan kelas

TreeMap pada Java.

1.4 Batasan Masalah

Terdapat beberapa batasan masalah yang akan diterapkan di dalam

penelitian ini, diantaranya:

1. Key yang digunakan pada program simulasi struktur data right-threaded

AVL tree bertipe integer.

2. Key yang digunakan pada tipe data abstrak map bertipe integer.

3. Value yang digunakan pada tipe data abstrak map bertipe generic.

4. Aplikasi simulasi untuk menguji coba struktur right-threaded AVL tree

(18)

4

5. Aplikasi untuk menghitung waktu eksekusi dan memori pada komputer

berbasis console.

6. Pengukuran waktu eksekusi dilakukan pada fungsi penyimpanan,

penghapusan dan pengambilan key-value.

7. Pengukuran kebutuhan memori pada komputer dilakukan pada fungsi

penyimpanan key-value.

8. Sample data yang digunakan oleh program simulasi pada tipe data abstrak

map berupa data customer dengan volume maksimal 10000 data.

9. Sample data yang digunakan pada aplikasi pengukuran waktu dan memori

terdiri dari 3 jenis data yang dibedakan berdasarkan tipe value, yaitu:

Customer, String dan Double, sedangkan key dari masing-masing value seluruhnya bertipe integer.

10.Semua sample data dibuat ke dalam beberapa file yang berekstensi .csv.

11.Batasan perangkat keras yang digunakan untuk mengukur kecepatan

waktu eksekusi dan penggunaan memori yaitu:  Processor Intel Core i5 M 520 2.40 GHz  Memory (RAM) 4.00 Gb

1.5 Sistematika Pembahasan

Sistematika penyajian dalam laporan tugas akhir ini adalah sebagai

berikut:

 BAB I PENDAHULUAN

Bab 1 terdiri atas Latar Belakang, Rumusan Masalah, Tujuan, Batasan

Masalah dan Sistematika Pembahasan.  BAB II LANDASAN TEORI

Bab 2 membahas teori-teori yang mendasari dan mendukung di dalam

pembuatan tugas akhir ini. Teori-teori ini diambil dari pustaka yang

(19)

5

 BAB III ANALISIS DAN DESAIN

Bab 3 berisi analisis perangkat lunak yang sudah ada dan desain

perancangan tipe data abstrak.

 BAB IV PENGEMBANGAN PERANGKAT LUNAK

Bab 4 berisi implementasi class/modul yang telah diidentifikasi dari hasil

analisis dan desain.

 BAB V TESTING DAN EVALUASI SISTEM

Bab 5 berisi rencana dan pelaksanaan pengujian program yang berupa unit

testing dan black box.

 BAB VI KESIMPULAN DAN SARAN

Bab 6 mencakup kesimpulan dan saran yang dirumuskan dari hasil

(20)

BAB VI

KESIMPULAN DAN SARAN

6.1 Kesimpulan

Berdasarkan hasil analisis dan pengembangan tipe data abstrak map dan

program simulasi yang telah selesai dilakukan, maka dapat diambil beberapa

kesimpulan.

1. Struktur data right-threaded AVL tree telah berhasil dikembangkan beserta

dengan program simulasi yang berbasis GUI. Dengan berhasilnya

pengembangan struktur right-threaded AVL tree ini maka dapat

memudahkan dalam proses pembuatan tipe data abstrak map selanjutnya.

2. Tipe data abstrak map berhasil dikembangkan beserta program simulasi

yang berbasis GUI.

3. Penggunaan right-thread pada struktur AVL tree bisa memudahkan

implementasi fungsi iterator() pada kelas IntKeyTreeMap

4. Program pengetesan kebutuhan memori dan kecepatan waktu untuk

mengukur performansi dari tipe data abstrak map berhasil dikembangkan.

Dengan adanya program tersebut dapat memudahkan dalam menganalisis

performansi tipe data abstrak tersebut berdasarkan hasil yang didapat.

5. Dari hasil pengujian sebanyak 10000 data, IntKeyTreeMapmemerlukan

hanya 13% memori dari jumlah memori pada kelas TreeMap atau memori

yang dibutuhkan oleh IntKeyTreeMap 87% lebih hemat dibandingkan

dengan kelas TreeMap pada Java.

6. Kecepatan waktu eksekusi yang diuji coba menggunakan 10000 data pada

fungsi insert(), menunjukkan bahwa IntKeyTreeMap membutuhkan

kecepatan waktu eksekusi rata-rata 3% lebih cepat dari kelas TreeMap

pada Java.

7. Kecepatan waktu eksekusi yang diuji coba menggunakan 10000 data pada

(21)

158

membutuhkan kecepatan waktu eksekusi rata-rata 33% lebih cepat dari

kelas IntKeyTreeMap.

8. Kecepatan waktu eksekusi yang diuji coba menggunakan 10000 data pada

fungsi get(),menunjukkan bahwa kelas IntKeyTreeMap membutuhkan

kecepatan waktu eksekusi rata-rata 75% lebih cepat dari kelas TreeMap

pada Java.

9. Jika terdapat aplikasi yang dibangun dengan bahasa pemograman Java

memerlukan sebuah tipe map yang menghasilkan key secara terurut dan

mengutamakan kecepatan dalam proses insertion dan deletion, maka

TreeMap merupakan pilihan yang tepat.

10. Jika terdapat aplikasi yang dibangun dengan bahasa pemograman Java

memerlukan sebuah tipe map yang menghasilkan key secara terurut dan

mengutamakan kecepatan dalam proses retrieving dan penggunaan

memori yang lebih sedikit, maka IntKeyTreeMap merupakan pilihan

yang tepat.

11.Kekurangan dari kelas IntKeyTreeMap adalah keterbatasan key yang

hanya bisa digunakan dengan tipe integer dan kelas tersebut akan

menunjukkan hasil yang maksimal apabila key disusun secara sequence

atau reverse.

6.2 Saran

Saran yang diberikan untuk pengembangan lebih lanjut dari tipe data

abstrak ini antara lain.

1. Mengganti tipe data yang menjadi prefix pada NodeEntry di dalam kelas

IntKeyTreeMap menjadi tipe long, sehingga jumlah maksimal

penyimpanan key-value dalam satu node menjadi 64 pasang.

2. Membandingkan performansi seluruh fungsi-fungsi selain put(), get() dan

remove(), serta mengoptimalkan kecepatan waktu proses pada

fungsi-fungsi lainnya selain tiga fungsi-fungsi yang disebutkan tadi.

(22)

159

4. Membuat sebuah konsep map dapat menyimpan satu atau lebih key yang

bernilai sama, sehingga jika terdapat key yang sama, maka value dari key

(23)

DAFTAR PUSTAKA

Almedia, Marco., Reis, Rogerio (2006). Efficient Representation of Integer Sets.

Porto: Universidade do Porto.

Collins, J., William (2011). Data Structures and the Java Collections Framework

3rd edition. California: John Wiley & Sons, Inc.

Dwi, Prasetyo, Didik (2007). 150 Rahasia Pemograman Java. Jakarta: Elex

Media Komputindo

Goodrich, T., Michael, Tamassia, Roberto (2010). Data Structures & Algorithms

in Java 4th edition. California: John Wiley & Sons, Inc.

Haahr, Mads (2010). Random Number. http://www.random.org/ (diakses tanggal

12 Juli 2013)

Jenkins, S., Michael (1998). Abstract Data Types in Java. New York:

McGraw-Hill.

Li, Sing, Knudsen, Jonathan (2005). Beginning J2ME: From Novice to

Professional 3rd edition. New York: Appress.

Lafore, Robert (2002). Data Structures & Algorithms in Java 2nd edition.

Indianapolis: Sams.

Minella, Michael (2008). JUnit and EasyMock. New York: Dzone, Inc.

(24)

161

Oracle (2013). Java Platform SE 7 Documentation.

http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html (diakses tanggal

1 Mei 2013)

Oracle (2013). The Java Tutorials. http://docs.oracle.com/javase/tutorial/ (diakses

tanggal 1 Januari 2013)

Pfaff, Ben (2007). An Introduction to Binary Search Trees and Balanced Trees.

Michigan: GNU Free Documentation License.

Pinho, Vasco. Generate Test Data for Your Database.

http://www.databasetestdata.com/ (diakses tanggal 5 Juli 2013)

Schildt, Herbert (2007). The Complete Reference Java 7th edition. New York:

McGraw-Hill.

Shalahudin, M., S., A., Rosa (2010). Modul Pembelajaran Struktur Data.

Bandung: Modula.

Supardi, Yuniar (2007). Pemograman Database dengan Java dan MySQL.

Jakarta: Elex Media Komputindo.

Walker, Julienne (2008). AVL trees.

http://eternallyconfuzzled.com/tuts/datastructures/jsw_tut_avl.aspx (diakses

tanggal 28 Mei 2013)

Referensi

Dokumen terkait

Etika moral berkenaan dengan kebiasaan berperilaku yang baik dan benar berdasarkan kodrat manusia. Apabila etika ini dilanggar timbullah kejahatan, yaitu perbuatan yang tidak baik

Atas dasar fenomena yang terjadi dan terdapatnya hasil yang terkontradiksi dari kedua penelitian yang telah dicantumkan diatas, maka peneliti mengambil judul “Pengaruh Work Life

Jika yang disediakan oleh perpustakaan adalah katalog komputer yang telah terintegrasi dengan layanan sirkulasi, pengguna malah akan mengetahui status buku yang dicarinya, seperti

Menurut Hurlock, Hardy & Heyes (dalam Wibowo, 2012:116) ada tiga jenis pola asuh yang dilakukan orang tua terhadap anak – anaknya, yaitu : 1) Pola Asuh Otoriter

Bahwa atas surat tersebut, Teradu kemudian melakukan konsultasi dan kordinasi dengan Bawaslu Deli Serdang pada tanggal 31 Desember 2018, dan pada saat konsultasi dan

Mind Mapping. Guru membagi siswa dalam beberapa kelompok, setiap kelompok terdiri dari 3 sampai 4 siswa. Guru menjelaskan mengenai materi yang disampaikan dengan menggunakan metode

• Pertumbuhan (q-to-q) produksi Industri Manufaktur Besar dan Sedang Triwulan I tahun 2014 Provinsi Jawa Tengah turun sebesar (8,93) persen dari produksi industri Triwulan IV

Selanjutnya, berdasarkan apa yang telah diuraikan maka saran dalam penelitian ini adalah pertama, jika kesetaraan gender menjadi salah satu solusi dalam peningkatan