Publication Repository scientia trie

PENCARIAN KITAB BESERTA PASAL PADA ALKITAB
BERDASARKAN KATA DENGAN MENGGUNAKAN
STRUKTUR DATA TRIE
Ir. Suhatati Tjandra

sedang diketik. Selain itu trie sering
diaplikasikan untuk menyimpan kata-kata
yang terdiri dari simbol-simbol yang berarti
pada sebuah aplikasi atau terdiri dari hurufhuruf yang membentuk suatu kata tertentu
seperti yang terdapat dalam sebuah kamus.
Pada makalah ini akan dibahas tentang
bagaimana membentuk suatu trie dimana
sebuah tree yang khusus digunakan untuk
menyimpan kumpulan kata-kata yang
terdapat pada Alkitab dan melakukan
pencarian serta pengambilan pasal-pasal di
Alkitab yang memuat kata-kata kunci
tertentu.

Abstrak – Proses pengambilan
informasi (information retrieval) merupakan

hal yang sangat penting, sehingga diperlukan
suatu algoritma pengambilan informasi yang
benar-benar efisien. Struktur data trie yang
berasal dari kata “retrieval” merupakan
pengembangan dari struktur data tree yang
banyak digunakan untuk penyimpanan dan
pencarian data. Struktur data trie yang
dibentuk adalah Binary Search Tree Trie,
yaitu struktur data trie yang menggunakan
konsep binary search tree. Diharapkan
struktur data BST Trie ini dapat
meningkatkan performansi dari array trie
maupun list trie yang lebih umum dipakai
saat ini.

II. Tujuan

Kata kunci – Tree, Trie, Binary Search
Tree, Insert, Searching, Kitab


Melalui penelitian dan penyusunan
buku tesis ini diharapkan:
 Menganalisa
dan
mendesain
bagaimana pembentukan struktur
data trie agar dapat digunakan
untuk pencarian pasal-pasal pada
Alkitab dengan menggunakan satu
atau lebih kata kunci.
 Desain metode/algoritma pencarian
informasi pada Alkitab berdasarkan
satu atau lebih kata kunci pada
struktur data trie.
 Pembahasan konsep struktur data
trie beserta operasi-operasi utama
pada struktur data trie.
 Pembahasan konsep pembentukan
trie dan pencarian dengan tabel
untuk

pengambilan
informasi
(information
retrieval)
pada
struktur data berbasis tree.
 Pembuatan
program
untuk
mengimplementasikan struktur data
trie pada pencarian kitab beserta

I. Latar Belakang
Struktur data trie yang berasal dari kata
“retrieval” merupakan pengembangan dari
struktur data tree yang banyak digunakan
untuk penyimpanan dan pencarian data.
Karena merupakan pengembangan dari
struktur data tree, maka trie juga memiliki
node dan penghubung seperti pada tree.

Setiap penghubung menjadi penentu arah
dari informasi yang disimpan dalam trie
tersebut. Trie menyimpan informasiinformasi dalam bentuk blok informasi.
Dan blok informasi itu sendiri berbentuk
node.
Struktur data trie merupakan salah satu
struktur data yang banyak digunakan untuk
fasilitas pengolah kata elektronis yaitu
fasilitas yang memungkinkan pengguna
aplikasi pengolah kata untuk dapat
memeriksa ejaan dari dokumen yang

1

pasal pada Alkitab berdasarkan satu
atau lebih kata kunci.

III.

Salah satu istilah yang sangat erat

hubungannya dengan trie adalah M-AryTree. M-Ary-Tree merupakan tree yang
outdegree setiap node di dalamnya ≤m atau
dengan kata lain semua nodenya
mempunyai child maksimal m node. Jika
m=2, maka disebut binary tree sedangkan
untuk m=3 disebut 3-ary tree. Apabila
sebuah M-Ary tree outdegree setiap node
didalamnya sama dengan m atau tidak ada
sama sekali (leaf) disebut Full M-Ary Tree
atau Complete M-Ary tree.
Binary tree adalah himpunan dengan
jumlah terbatas yaitu m buah node (m ≥ 0)
yang selain kosong (m = 0) hanya dapat
berisi sebuah node root yang memiliki dua
buah subtree yang masing-masing disebut
Sub Binary Tree Kiri dan Sub Binary Tree
Kanan. Jika m = 0 disebut Empty Binary
Tree.

Konsep Dasar Trie


Sebelum melangkah lebih jauh untuk
mengenal struktur data trie, diperlukan
pembahasan struktur data tree, dimana
struktur data tree merupakan struktur data
dasar pembentuk struktur data trie.
Tree merupakan struktur data non
linear yang didefinisikan sebagai kumpulan
elemen dimana satu elemen disebut root
dan elemen yang lain disebut node. Node
dari sebuah tree terpecah menjadi sejumlah
himpunan yang tidak saling berhubungan
satu dengan yang lain, yang disebut subtree.
Node yang tidak mempunyai cabang
disebut leaf. Setiap subtree mempunyai root
dan subtree-subtree (dengan kata lain
sebuah subtree juga bisa merupakan sebuah
tree).
Dengan pengertian tersebut, maka tree
dapat didefinisikan secara rekursif sebagai

berikut:
 Sebuah node tunggal dapat merupakan
sebuah tree
 Jika terdapat sebuah node N dan
beberapa subtree T1, T2, T3, … Tk
yang tidak saling berhubungan, dan
berakar pada node-node N1, N2, N3, …
Nk, maka dari node N dan subtreesubtree ini dapat dibentuk sebuah tree
yang berakar pada node N.
Contoh: Tree yang terdiri dari 12 node
dengan root N0
T1 = { N1, N2, N3, N4, N5, N6 }
T2 = { N7 }
T3 = { N8, N9, N10, N11 }
T1 adalah tree dengan root N1
T11 = { N2 }
T12 = { N3 }
T13 = { N4, N5, N6 }
T2 adalah tree dengan root N7
T3 adalah tree dengan root N8

T31 = { N9 }
T32 = { N10, N11}
T13 adalah tree dengan root N4
T131 = { N5 }
T132 = { N6 }
T32 adalah tree dengan root N10
T321 = { N11 }

Gambar 1. Binary Tree
Node pada binary tree secara umum
selalu terdiri dari dua buah pointer untuk
menunjukkan subtree kiri dan subtree
kanan, serta informasi yang akan disimpan
pada node tersebut.

LPTR

INFO

RPTR


Gambar 2. Stuktur Node Pada
Penyimpanan Secara Linked
Binary tree seringkali diterapkan dalam
proses pencarian (searching), sehingga
binary tree juga dikenal sebagai binary
search tree. Binary Search Tree (BST)
didefinisikan sebagai suatu binary tree yang
setiap subtreenya mempunyai karakteristik
atau syarat bahwa key pada node-node

2

pencarian diteruskan atau diulang
dalam subtree kanan.
Penyisipan (insert) suatu key baru
dilakukan dengan membentuk node untuk
key tersebut dan disisipkan sebagai leaf
baru pada posisi yang sesuai dengan posisi
yang didapat setelah proses pencarian.

Maksudnya apabila key yang akan
disisipkan lebih kecil dari pada node root,
maka key tersebut harus disisipkan pada
subtree kiri, dan apabila key yang akan
disisipkan lebih besar dari pada node root,
maka key tersebut harus disisipkan pada
subtree kanan. Hal ini juga berlaku untuk
setiap subtree.
Setelah memahami binary tree,
selanjutnya akan dibahas mengenai struktur
tree lain, yang bukan merupakan binary
tree, melainkan pengembangan dari suatu
general tree, yang dikenal dengan nama
Trie. Trie merupakan salah satu struktur
data yang banyak dipakai dalam computer
science, sehingga dapat meningkatkan
performansi dari aplikasi-aplikasinya.
Banyak permasalahan yang terjadi
berkaitan
dengan

proses
pencarian
(searching) dalam suatu tabel berdasarkan
suatu key tertentu. Misalnya sebuah tabel
terdiri dari field-field NRP, NAMA dan
NILAI mahasiswa suatu matakuliah.

subtree kiri lebih kecil dari pada key node
root dan key node-node subtree kanan lebih
besar dari pada key node root.

Gambar 3. Binary Search Tree
Deklarasi struktur data (pembentukan
node) untuk binary search tree tidak
berbeda dengan binary tree secara umum.
Hanya ada aturan-aturan yang ditetapkan,
dimana
aturan-aturan
inilah
yang
membedakan antara binary tree dan binary
search tree (sesuai yang telah disebutkan
pada definisinya).
Sebelum menyisipkan (insert) sebuah
node, node yang akan disisipkan perlu
dibuat terlebih dahulu. Proses pembuatan
sebuah node baru adalah sebagai berikut:
pertama dialokasikan memori untuk node
yang akan dibuat dengan fungsi New, dan
selanjutnya menginisialisasi node tersebut
dengan memasukkan data atau info pada
NewNode^.Info dan nilai nil pada
NewNode^.LPtr serta NewNode^.RPtr.
Berikut ini adalah sebuah function
Create_Node yang berfungsi membuat node
baru sesuai dengan langkah-langkah yang
telah diberikan.
Berdasarkan
definisinya,
maka
pencarian key tertentu pada suatu binary
search tree dapat dilakukan dengan
melakukan pemeriksaan harga key yang
dicari terhadap harga key dari root suatu
subtree:
 jika harga key sama, maka key
merupakan key yang dicari, berarti
ketemu dan proses pencarian selesai.
 jika harga key lebih kecil, maka key
berada di subtree kiri dan pencarian
diteruskan atau diulang dalam subtree
kiri.
 sebaliknya, jika harga key lebih besar,
maka key berada di subtree kanan dan

Tabel 1
Tabel Nilai

NRP

NAMA

NILAI

231

Ardi

86

232

Nani

75

233

Sani

90

Jika ingin mengetahui nilai dari Nani,
maka perlu memasukkan NRP yaitu 232.
Dalam hal ini NRP merupakan kunci (key)
yang terdiri dari tiga digit yang masingmasing mempunyai kemungkinan antara 0
sampai 9.
Implementasi permasalahan seperti
diatas dapat dilakukan dengan sebuah tree
yang disebut dengan Trie. Konsep struktur
data trie merupakan ide atau pemikiran dari
seorang yang bernama Bandais dan

3

kemudian diberi nama TRIE oleh Fredkin.
Dimana nama trie yang biasanya dilafalkan
sama dengan “try” berasal dari kata
“retrieval”,
maksudnya
pengambilan
informasi (information retrieval systems).
Trie terbagi menjadi dua bagian yaitu
bagian cabang (branch) yang merupakan
semua kemungkinan dari tiap karakter key
(misal untuk angka kemungkinannya 0..9,
huruf kecil kemungkinannya a..z, huruf
besar
kemungkinannya
A..Z,
dan
seterusnya) dan bagian info yang berisi
informasi yang akan diberikan jika key
tersebut diakses.
Root trie akan membentuk subtriesubtrie lagi dibawahnya yang merupakan
wakil dari tiap-tiap karakter yang telah
ditentukan pada bagian branch. Nilai nil
diberikan jika tidak terdapat key seperti
pada subtrie tersebut. Selanjutnya tiap-tiap
subtrie tadi juga membentuk subtrie-subtrie
lagi,
demikian
seterusnya
hingga
membentuk sebuah trie.
Dari contoh permasalahan diatas, dapat
digambarkan trie seperti gambar berikut ini:

branch dengan nilai 0..9 dan info nil. Tiaptiap
kemungkinan
dalam
branch
membentuk subtrie-subtrie lagi dengan
ketentuan jika bukan merupakan key maka
akan diberikan nilai nil. Subtrie (level 2)
dari root untuk kemungkinan nilai 0, 1, 3, 4,
5, 6, 7, 8, 9 adalah nil karena tidak ada key
dengan nilai atau diawali dengan nilai 0, 1,
3, 4, 5, 6, 7, 8, 9. Subtrie (level 2) dari root
untuk kemungkinan nilai 2 akan
mempunyai info untuk key 2. Tetapi karena
tidak ada key dengan nilai 2 maka info
bernilai nil.
Subtrie level 2 mempunyai subtrie lagi
(level 3) hanya untuk kemungkinan hilai
key 23, karena tidak ada key dengan nilai
atau diawali dengan nilai 20, 21, 22, 24,
25, 26, 27, 28, 29. Karena nilai untuk 23
sendiri tidak ada, maka info berisi nil.
Demikian seterusnya. Subtrie level 4 adalah
subtrie yang mewakili tiga karakter key.
Tabel sebelumnya hanya menentukan tiga
key yaitu 231, 232, 233, sehingga hanya
ada tiga node atau subtrie level 4 dimana
bagian infonya berisi data-data (Ardi, 86),
(Nani,75), dan (Sani,90).
Jadi untuk key yang terdiri dari tiga
karakter memerlukan trie dengan empat
level,
dimana
masing-masing level
mengarah pada pembentukan dari key
tersebut. Misalnya untuk key 233 dibentuk
dari subtrie dengan nilai 2 (level 2), 23
(level 3) dam 233 (level 4).
Penerapan diatas hanyalah merupakan
salah satu contoh saja. Contoh lain dari
penggunaan trie adalah pencarian arti kata
dalam sebuah kamus. Key yang digunakan
untuk pencarian adalah kata itu sendiri,
sedang info yang dicari adalah arti dari kata
tersebut. Contoh, akan dicari arti kata
“pool”. Dengan asumsi bahwa seluruh
karakter yang dipakai adalah huruf kecil,
maka root dari trie akan mempunyai branch
dengan nilai kemungkinan a sampai dengan
z, demikian juga untuk huruf-huruf
selanjutnya. Dan pencarian dilakukan
berdasarkan
masing-masing
huruf
pembentuk kata tersebut.
Proses pencarian (searching) suatu key
dalam sebuah trie dilakukan dengan
menelusuri trie berdasarkan huruf demi
huruf dari key yang akan dicari. Jika pada
saat penelusuran, ternyata branch untuk

Gambar 4. Trie Tabel Nilai
Node root (level 1) merupakan node
initialisasi (node awal) yang terdiri dari

4

umum, angka dan tanda baca juga tidak
dipakai sebagai kata kunci.
Yang dimaksud dengan kata-kata
umum disini adalah kata sambung, kata
depan, serta kata-kata lain yang sering
muncul atau dipakai dalam percakapan
sehari-hari. Kata-kata tersebut antara lain:
ini, itu, di, dari, sini, situ dan masih banyak
lagi yang lainnya. Tanda baca tentunya
sudah dapat dipastikan tidak akan dipakai
sebagai kata kunci. Demikian juga dengan
angka, karena pada naskah Alkitab, angka
hanya menunjukkan pasal dan ayat naskah
firman. Sedangkan pencarian yang akan
dilakukan berdasarkan kata-kata kunci
bukan berdasarkan nomor pasal dan nomor
ayat.

huruf key dari salah satu subtrie berisi nil,
maka
pencarian
berhenti
dengan
mengeluarkan pesan bahwa key tidak
ditemukan. Tetap apabila sampai semua
huruf key tersebut, trie berhasil ditelusuri,
maka dilihat bagian info pada subtrie
terakhir, jika berisi nil berarti tidak ketemu,
dan jika tidak berisi nil maka ditunjuk oleh
bagian info merupakan informasi dari key
tersebut dan menandakan key ditemukan.
Proses penyisipan (insert) key pada
sebuah trie dilakukan dengan cara yang
hampir sama dengan proses search node.
Mula-mula dilakukan penelusuran ke
bawah dalam trie sesuai dengan key yang
diinputkan,
selanjutnya
mengarahkan
pointer info ke informasi dari key tersebut.
Jika dalam proses penelusuran, dijumpai
subtrie yang nil, maka dilakukan
pembuatan node baru dan bukan keluar dari
subrutin seperti yang dilakukan pada proses
searching node.
Proses penghapusan (delete) key pada
trie dapat dilakukan dengan cara
penelusuran ke bawah sesuai dengan key
yang ingin dihapus, dan jika ditemukan key
yang dimaksud maka info diisi atau
dijadikan nil, sedangkan seandainya node
tersebut berisi branch dan info yang nil,
maka node tersebut harus dihapus.

Gambar 5. Kutipan Satu Ayat
Alkitab Beserta Istilah Masing-masing
Bagian
Trie yang dibentuk untuk pencarian
kata ini adalah Binary Search Tree Trie
(BST Trie), yaitu trie yang memakai konsep
binary search tree. Keunggulan BST trie
dibanding array trie adalah BST trie bisa
meniadakan tempat-tempat (space) kosong
sehingga lebih hemat media. Sedangkan
dibanding list trie, BST trie lebih unggul
dalam proses pencarian atau searchingnya.
Hal ini disebabkan karena pada list trie
pencarian dilakukan berurutan sesuai
dengan penunjuknya (left pointer dan right
pointer) sedangkan dengan BST trie
pencarian langsung diarahkan. Yaitu bila
huruf yang dicari lebih kecil, pasti huruf itu
berada pada subtree kiri dan bila huruf yang
dicari lebih besar, pasti huruf tersebut
berada pada subtree kanan, sehingga tidak
perlu penelusuran yang terlalu panjang.
Dengan kata lain, pencarian hanya
dilakukan pada subtree tertentu (tidak
semuanya).

IV. Pembentukan Trie
Alkitab Perjanjian Baru terdiri dari dua
puluh tujuh kitab (Kitab Matius sampai
dengan Kitab Wahyu), dimana tiap-tiap
kitab memiliki jumlah pasal yang berbedabeda, dan tiap pasalnya memiliki jumlah
ayat yang berbeda-beda. Sedangkan
masing-masing ayat terdapat kalimat
(tentunya lebih dari satu kata) yang
mempunyai panjang yang berbeda-beda.
Dalam dua puluh tujuh kitab ini terdapat
dua ratus enam puluh pasal. Dengan
demikian dapat disimpulkan bahwa Alkitab
Perjanjian Baru terdiri dari ribuan kata-kata
yang berbeda.
Untuk itu dilakukan pemilihan katakata umum yang tidak dipakai sebagai key.
Karena pembentukan struktur data trie
dilakukan berdasarkan kata-kata yang
dipakai sebagai kata kunci. Selain kata-kata

5

Untuk proses pembentukan trie ini,
langkah pertama yang dilakukan adalah
membentuk array untuk menampung katakata kunci yang akan dibentuk trienya, dan
array tersebut diurutkan berdasarkan hurufhuruf pada kata kunci. Hal ini dilakukan
untuk mempermudah pendeteksian adanya
kata-kata yang sama pada suatu pasal.
Karena masing-masing elemen array berisi
satu kata, maka harus dilakukan pemisahan
kata atau pengambilan satu kata demi satu
kata. Dimana setiap kata dalam text
dipisahkan oleh spasi.
Tahap selanjutnya adalah membentuk
trie dengan referensi kata-kata yang ada
pada array tersebut. Dalam pembentukan
trie, array dibaca perelemen array dan
disisipkan pada struktur data trie yang
dibentuk, apabila didapati atau ditemukan
elemen array yang berisi kata yang sama
atau kembar dengan elemen sebelumnya,
maka elemen tersebut diabaikan karena kata
ini sudah terbentuk trienya sehingga tidak
perlu membentuk trie lagi untuk kata ini
maupun melakukan pencatatan dari bab
yang mana kata ini dibaca karena sudah
pasti kata ini berasal dari bab yang sama
dengan kata yang sebelumnya. Karena
array dibentuk dari kata-kata yang terdapat
pada setiap babnya, sehingga proses ini
diulang mulai dari bab yang pertama
sampai bab yang terakhir dari naskah
Alkitab Perjanjian Baru.
Sebagai contoh, kata-kata yang ada
pada array adalah kata-kata agung, abba,
abram, ajaib, ajaran, darah, dahsyat.
Sehingga BST trie yang dibentuk dapat
direpresentasikan seperti tampak pada
gambar 6.
Pada gambar tersebut, lingkaran
menggambarkan suatu node dan garis
menunjukkan path. Dimana path inilah
yang menampung huruf-huruf yang
menyusun kata-kata kunci. Pertama
disisipkan kata ‘agung’, path pertama
memuat huruf ‘a’, path kedua memuat
huruf ‘g’, path yang ketiga memuat huruf
‘u’, path keempat memuat huruf ‘n’ dan
path kelima memuat huruf ‘g’. Karena
huruf ‘g’ merupakan huruf terakhir dari
kata yang disisipkan, maka node yang
ditunjuk oleh path terakhir diisi info dari
kata ‘agung’. Info yang dimaksud adalah

informasi alamat record pada list yang
menunjukkan pasal-pasal mana yang
memuat kata kunci tersebut.
Untuk kata kedua, kata ‘abba’. Saat
kata ‘abba’ akan disisipkan pada trie, harus
dilakukan penelusuran terhadap path-path
yang sudah ada sesuai dengan jalur atau
huruf pembentuk kata kunci. Hal ini
disebabkan karena trie sudah pernah
terbentuk jadi penelusuran dilakukan mulai
dari node root. Path pertama adalah huruf
‘a’, ternyata path yang memuat huruf ‘a’
sudah ada, maka dilakukan penelusuran
path berikutnya.
Path yang kedua adalah huruf ‘b’,
sedangkan path yang sudah terbentuk
adalah path huruf ‘g’. Karena huruf ‘b’
lebih kecil dari huruf ‘g’ maka path huruf
‘b’ berada di sisi kiri path huruf ‘g’.
Saat dilakukan penelusuran ternyata
penunjuk ke sisi kiri dari path ‘g’ belum
ada atau kosong, maka dibentuk lagi path
‘b’ dan penunjuk sisi kiri dari path ‘g’ diisi
alamat yang menunjukkan alamat path ‘b’.
Kemudian penyisipan dilanjutkan untuk
path ‘b’ (yang kedua) dan path ‘a’.
Kata kunci yang ketiga adalah ‘abram’.
Penelusuran yang dilakukan sama dengan
pada saat penyisipan kata ‘abba’. Path ‘a’
diketemukan, path ‘b’ diketemukan, path
yang ketiga adalah ‘r’, padahal yang
diketemukan adalah path ‘b’. Karena ‘r’
lebih besar dari ‘b’ maka penunjuk sisi
kanan dari path ‘b’ diisi alamat yang
menunjukkan alamat path ‘r’ dan kemudian
dilanjutkan untuk path ‘a’ dan ‘m’.
Demikian proses ini dilanjutkan hingga
semua kata kunci berhasil disisipkan ke
dalam trie.
Jika
diperhatikan
lebih
lanjut,
kelihatannya gambar 6 tidak menggambarkan suatu binary tree. Hal ini disebabkan
karena pada gambar tersebut tampak ada
path yang mempunyai tiga cabang. Path
yang dimaksud adalah path ‘g’. Sepintas
memang terlihat berbeda dengan definisi
binary tree, karena binary tree pasti
mempunyai dua cabang yaitu cabang kiri
dan cabang kanan.
Disini perlu ditegaskan kembali bahwa
gambar 6 merupakan suatu contoh
representasi BST Trie, dimana yang
digambarkan adalah struktur data trienya

6

dan seperti telah disebutkan pada bab
sebelumnya bahwa pada dasarnya sebuah
trie adalah suatu m-ary tree. Maksudnya trie
adalah tree yang outdegree setiap node di
dalamnya ≤m atau dengan kata lain semua
nodenya mempunyai child maksimal m
node.

tergantung panjang huruf pembentuk kata
yang dicari.
Apabila huruf yang diperiksa tidak
sama, maka ada dua kemungkinan yang
bisa terjadi, yaitu:
 huruf itu ditemukan (pada level yang
bersangkutan) atau huruf tersebut
terletak pada subtree dari pada struktur
data trie yang telah terbentuk .
 huruf tersebut tidak ditemukan (pada
level yang bersangkutan).
Kemungkinan pertama, huruf berada
pada subtree. Apabila huruf yang dicari
lebih kecil daripada alphabet yang sedang
diperiksa, berarti huruf tersebut berada pada
subtree kiri. Dan kebalikannya, apabila
huruf yang dicari lebih besar daripada
alphabet yang sedang diperiksa, berarti
huruf tersebut berada pada subtree kanan.
Kemungkinan yang kedua, adalah huruf
yang ditelusuri tidak ditemukan pada level
yang bersangkutan. Dengan demikian
berarti kata tersebut tidak terdapat pada trie
atau kata tersebut bukan merupakan kata
kunci untuk pencarian kata. Kata tersebut
bisa saja tidak terdapat dalam Alkitab
Perjanjian Baru atau kata tersebut termasuk
kelompok kata yang tidak dipakai sebagai
kata kunci. Pernyataan bahwa huruf
tersebut tidak diketemukan (pada level
bersangkutan) tentunya didahului pencarian
pada root maupun pada kedua subtree.
Pencarian pada subtree akan dihentikan
apabila left atau right yang harus ditelusuri
ternyata
berisi
suatu
nilai
yang
menunjukkan bahwa pencarian berakhir
(misalnya diberi nilai –1).
Left dan right merupakan penunjuk
subtree kiri atau subtree kanan pada trie.
Disinilah letak pemakaian konsep Binary
Search Tree (BST).
Proses pencarian ini dilakukan terus
hingga semua huruf pembentuk kata sudah
ditelusuri semuanya pada trie. Apabila kata
yang dicari terdapat pada trie, maka info
yang ada pada node terakhir penelusuran
diambil, karena info inilah yang merupakan
awal dari posisi kata tersebut berada pada
naskah Alkitab Perjanjian Baru.
Pencarian dilanjutkan karena mungkin
saja kata tersebut terletak pada lebih dari
satu pasal di Alkitab Perjanjian Baru.

Gambar 6. Representasi BST Trie

V. Pencarian Pada Trie
Proses pencarian kata pada trie diawali
dengan menelusuri node dan pathnya.
Langkah pertama pasti memeriksa node
root, kemudian path yang terhubung pada
node tersebut. Apabila huruf yang dicari
belum ditemukan, maka harus ditelusuri
atau diperiksa node selanjutnya.
Apabila huruf tersebut ditemukan,
maka
langkah
selanjutnya
adalah
mengambil node selanjutnya yang harus
ditelusuri. Dengan demikian berarti huruf
pertama sudah ditemukan dan pencarian
dilanjutkan dengan huruf berikutnya atau
dengan kata lain dilanjutkan ke level tree
berikutnya. Banyaknya level pencarian

7

7, Wahyu 14, Wahyu 16, Wahyu 17 dan
Wahyu 18. Apabila pencarian kedua kata
ini digabung menjadi pencarian ‘yosua
babel’ maka hasil yang ditampilkan adalah
Kisah Para Rasul 7. Hal ini disebabkan
karena pada naskah Alkitab Perjanjian
Baru, pasal yang memuat atau mengandung
kata ‘yosua’ dan kata’babel’ adalah Kisah
Para Rasul 7.

Kegagalan dalam pencarian yang
disebabkan karena kata yang dicari tidak
terdapat dalam trie atau kata yang dicari
bukan merupakan kata kunci, dapat juga
terdeteksi lebih awal. Yaitu saat sebelum
dilakukan penelusuran sampai dengan huruf
terakhir. Misalnya kata yang dicari terdiri
dari 5 huruf, dan kegagalan terdeteksi pada
huruf ketiga karena huruf ketiga tidak
ditemukan pada trie pada saat penelusuran
tree level ketiga. Misalnya pencarian kata
‘absah’, huruf pertama dan kedua
ditemukan, saat penelusuran kata ketiga,
adalah ‘i’ padahal yang dicari adalah huruf
‘s’ berarti penelusuran selanjutnya harus
pada subtree. Dan yang ditemukan adalah
‘r’ berarti huruf ketiga masih belum
ditemukan penelusuran dilanjutkan dan
ditemukan ‘y’, selanjutnya dilakukan
penelusuran subtree kiri karena ‘s’ lebih
kecil dari ‘y’, dilakukan penelusuran
selanjutnya ‘u’, dan ‘s’ lebih kecil dari ‘u’
maka penelusuran selanjutnya adalah
subtree kiri. Dan ternyata left bernilai -1.
Ini berarti tidak ada lagi path yang lain.
Sehingga dapat dipastikan bahwa kata
‘absah’ tidak terdapat pada trie.
Pada penelitian yang dilakukan juga
dicoba untuk pencarian ganda, yaitu
pencarian nama kitab dan pasal Alkitab
Perjanjian Baru berdasarkan beberapa kata
kunci. Jumlah atau banyaknya kata kunci
yang dipakai tidaklah dibatasi. Intinya,
apabila diinputkan beberapa kata kunci,
maka hasil pencariannya adalah informasi
nama kitab dan pasal yang memuat atau
mengandung semua kata kunci yang
diinputkan.Baik
kata-kata
tersebut
merupakan satu kalimat maupun kata yang
berdiri sendiri.
Pada dasarnya proses yang dilakukan
pada pencarian ganda adalah proses
pencarian kata yang dilakukan berulang kali
untuk setiap kata kunci. Kemudian
dilakukan pemilihan nama kitab dan pasal
yang sama. Dengan demikian berarti pada
kitab dan pasal yang terpilih itulah terdapat
kata-kata kunci yang dicari.
Sebagai contoh, dilakukan pencarian
kata ‘yosua’ maka akan tampil hasil
pencariannya adalah Kisah Para Rasul 7
dan Ibrani 4. Dan pencarian kata ‘babel’
hasilnya adalah Matius 1, Kisah Para Rasul

VI.Kesimpulan dan Saran
Kesimpulan yang diambil adalah
sebagai berikut:
1. Struktur data retrieval atau yang
lebih dikenal dengan sebutan trie, tidak
hanya dapat diterapkan untuk pencarian
kata pada kamus ataupun hanya difungsikan
untuk fasilitas spelling cheker, tetapi
struktur data trie juga dapat digunakan
untuk pencarian pasal-pasal dalam Alkitab
yang mengandung kata-kata kunci tertentu.
2. BST trie dapat meningkatkan
performansi array trie maupun list trie. Pada
array trie adalah BST trie bisa meniadakan
tempat-tempat (space) kosong sehingga
lebih hemat media. Sedangkan pada list
trie, BST trie dapat mempercepat waktu
untuk proses pencarian atau searchingnya.
3. BST
trie
juga
mempunyai
kelemahan, yaitu pemakaian pointer yang
banyak dan dapat menimbulkan keruwetan.
Sehingga dibutuhkan ketelitian yang lebih
tinggi dan kemungkinan besar terjadi
pemborosan memori pada penyimpanan
pointernya.
4. Lama pencarian pada struktur data
BST trie tergantung dari panjang atau
banyaknya huruf pembentuk kata kunci.
Waktu pencarian tercepat (best case) terjadi
apabila kata kunci yang dicari tepat pada
setiap root dari subtree sehingga tidak perlu
melakukan pemeriksaan terhadap left atau
right pointer. Pemeriksaan cukup dilakukan
n kali, dimana n adalah jumlah huruf
pembentuk kata kunci. Sedangkan waktu
pencarian terlama (worst case) terjadi bila
jumlah node pada tiap level dalam tree
sebanyak huruf yang ada (26 huruf).
Sehingga pemeriksaan maksimal dilakukan
sebanyak 26 x n pemeriksaan.
5. Pemilihan huruf untuk root setiap
subtree pada BST trie mempengaruhi

8

keseimbangan daripada trie yang terbentuk.
Dimana keseimbangan trie ini juga
mempengaruhi waktu pencarian. Misal
node root dimulai dari huruf ‘a’ maka dapat
dipastikan bahwa BST trie yang terbentuk
menjadi berat sebelah (tidak seimbang)
karena tidak punya subtree kiri.
Adapun saran-saran yang dapat
diberikan penulis berkaitan dengan topik
penelitian dalam makalah ini adalah sebagai
berikut:
1. Karena kelemahan struktur data trie
ini terletak pada borosnya space, maka
perlu dikembangkan lagi dengan desain
struktur data yang lebih efisien lagi, tetapi
tidak mengurangi sisi positif dari struktur
data trie tersebut. Misalnya dengan
mendesain suatu compact trie yaitu trie
yang dapat dimampatkan..
2. BST trie yang dibentuk pada
penelitian ini, node rootnya adalah huruf
‘a’. Seperti telah dikemukakan pada
kesimpulan point ke lima, bahwa trie ini
tidaklah seimbang. Jadi untuk mempercepat
proses pencarian, harus dilakukan analisa
terhadap kata-kata kunci sehingga pada trie
yang terbentuk root untuk setiap subtreenya
adalah huruf yang tepat ada di tengahtengah. Dengan demikian BST trie yang
terbentuk akan seimbang.
3. Dari struktur data didesain dan
dibentuk pada penelitian ini belum dapat
mencantumkan perikop dari ayat Alkitab.
Sebaiknya desain ini dikembangkan lagi
yaitu melakukan pencarian kelompok ayatayat Alkitab berdasarkan perikop.
4. Program dapat dikembangkan lagi
bukan hanya untuk Perjanjian Baru saja,
tetapi untuk seluruh bagian Alkitab
(Perjanjian Lama dan Perjanjian Baru).
Sehingga dapat lebih bermanfaat bagi
orang-orang yang membutuhkan informasi
tentang kitab dan pasal dalam Alkitab yang
memuat topik tertentu.
5. Penambahan fasilitas pada program
yaitu dengan pembatasan pencarian,
misalnya hanya pada kitab yang aktif saja,
Perjanjian yang aktif saja, dan sebagainya.

[2] Drozdek, Adam. 1996. Data Structures And
Algorithms In C++. PWS Publishing
Company..
[3] Knuth, Donald E. 1973. The Art of
Computer Programming, vol 3, Sorting &
Searching. Second Edition. Addison
Wesley Publishing Company.
[4] Standish, Thomas A. 1994. Data Structures,
Algorithms, and Software Principles.
Addison Wesley Publishing Company.
[5] Treambly, Jean-Paul. Bunt, Rechard B.
1985. An Introduction to Computer Science
An Algorithmic Approach. Mc. GrawHill
Inc.
[6] http://www.cs.ui.ac.id/kuliah/IKI40921/
[7] http://www.info.unicaen.fr/~clement/SOD
A/node1.html
[8] http://www.inf.ed.ac.uk/teaching/classes/cs
1/03-04/Ah/Notes/trees.pdf
[9] http://www.eecs.harvard.edu/~ellard/Q97/HTML/root/node22.html

Referensi
[1] Cantu, Marco. 2001. Mastering Delphi 6.
Sybex Inc.

9