PENCARIAN BARANG DALAM BASIS DATA ONLINE SHOP MENGGUNAKAN ALGORITMA BFS, DFS, DAN KMP

dokumen-dokumen yang mirip
Penerapan Algoritma Transversal pada Graf dan Algoritma Pencocokan String dalam Sistem Jual-Beli Tiket Bioskop

Aplikasi Algoritma BFS dan String Matching pada Tag Suggestions di Facebook

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Kombinasi Algoritma Pattern Matching dan BFS-DFS pada aplikasi Music Discovery

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

Penerapan Algoritma Knuth Morris Pratt dalam Aplikasi Penerjemah Teks

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Aplikasi Algoritma String Matching dan Regex untuk Validasi Formulir

Aplikasi Algoritma Pencocokan String dan Algoritma Runut Balik dalam Konversi Romaji ke Hangul

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

Mencari Pola dalam Gambar dengan Algoritma Pattern Matching

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

Penerapan Algoritma Greedy dan Breadth First Search pada Permainan Kartu Sevens

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Aplikasi String Matching Pada Fitur Auto-Correct dan Word-Suggestion

Penerapan BFS dan DFS dalam Garbage Collection

Aplikasi Algoritma Pencarian String Dalam Sistem Pembayaran Parkir

Algoritma String Matching pada Mesin Pencarian

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

PERBANDINGAN ALGORITMA BFS DAN DFS DALAM PEMBUATAN RUTE PERJALANAN OBJEK PERMAINAN 2 DIMENSI

Aplikasi String Matching pada Plugin SMS Blocker untuk Validasi Pesan

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

Penerapan Algoritma Pencocokan String Boyer-Moore untuk Keamanan Komputer

Pemanfaatan Directed Acyclic Graph untuk Merepresentasikan Hubungan Antar Data dalam Basis Data

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Implementasi Algoritma Backtracking untuk Memecahkan Puzzle The Tile Trial pada Permainan Final Fantasy XIII-2

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

Penerapan Algoritma Branch and Bound untuk Optimasi Rute Penempelan Poster di Papan Mading ITB

Implementasi Algoritma DFS pada permainan Monument Valley

Algoritma Branch & Bound untuk Optimasi Pengiriman Surat antar Himpunan di ITB

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Aplikasi Algoritma Branch and Bound dalam Pencarian Solusi Optimum Job Assignment Problem

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

II. DASAR TEORI I. PENDAHULUAN

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Implementasi Algoritma Knuth Morris Pratt pada Alat Penerjemah Suara

Branch and Bound untuk Rute Terpendek Tur Pengenalan Labtek V Gedung Benny Subianto Chita Najmi Nabila /

String Matching Dalam Permainan The Hunt for Gollum

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penerapan Algoritma Brute Force pada permainan Countdown Number

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

dengan Algoritma Branch and Bound

Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

Implementasi DFS dan BFS Dalam Recognizer Pushdown Automata

Algoritma Backtracking Pada Logic Game : Family Crisis (Game Penyebrangan)

Penerapan Algoritma Backtracking dalam Permainan Futoshiki Puzzle

Aplikasi dan Analisis Algoritma BFS dan DFS dalam Menemukan Solusi pada Kasus Water Jug

Aplikasi String Matching dalam Analisis Cap Bibir

Penerapan Algoritma String Matching dalam Intelligent Personal Assistant Siri

Pattern Matching dalam Aplikasi SimSimi

Penggunaan Algoritma Pencocokkan Pola pada Sistem Barcode

Penggunaan Algoritma Pathfinding pada Game

Penggunaan String Matching Dalam Mencari Kata Dalam Permainan Mencari Kata Dari Sebuah Matriks Huruf

Perbandingan BFS dan DFS pada Pembuatan Solusi Penyelesaian Permainan Logika

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

PENYELESAIAN TEKA-TEKI PENYUSUNAN ANGKA MENGGUNAKAN ALGORITMA RUNUT BALIK

Penilaian Ujian Tertulis Menggunakan Algoritma Pattern Matching IF3051 Strategi Algoritma

APLIKASI ALGORITMA PENCOCOKAN STRING KNUTH-MORRIS-PRATT (KPM) DALAM PENGENALAN SIDIK JARI

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

PENERAPAN ALGORITMA BRANCH AND BOUND DALAM MENENTUKAN RUTE TERPENDEK UNTUK PERJALANAN ANTARKOTA DI JAWA BARAT

Penerapan Algoritma Brute Force di Permainan Nonogram

PENERAPAN ALGORITMA BFS DFS DAN KNUTH-MORRIS-PRATT PADA PENCARIAN BERKAS DALAM KOMPUTER

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

IMPLEMENTASI ALGORITMA BREADTH FIRST SEARCH DAN STRING MATCHING PADA SISTEM PAKAR

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

Implementasi Pohon Keputusan untuk Membangun Jalan Cerita pada Game Engine Unity

A. Pencocokan String Pencocokan string adalah cara untuk mencari sebuah teks

Algoritma Pencarian String Knuth-Morris-Pratt Dalam Pengenalan Tulisan Tangan

PENGGUNAAN ALGORITMA APOSTOLICO-CROCHEMORE PADA PROSES PENCARIAN STRING DI DALAM TEKS

ANALISIS STRING MATCHING PADA JUDUL SKRIPSI DENGAN ALGORITMA KNUTH-MORRIS PRATT (KMP)

Penerapan Pencocokan String pada Aplikasi Kamusku Indonesia

Penerapan Algoritma Knuth-Morris-Pratt dalam Music Identification (Musipedia)

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Pengaplikasian Algoritma Knuth-Morris-Pratt dalam Teknik Kompresi Data

Mendeteksi Blob dengan Menggunakan Algoritma BFS

Penggunaan BFS dan DFS untuk Pixel Traversing

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Penggunaan Algoritma Pencocokkan Pola pada Aplikasi How-Old.net

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Deteksi Plagiarisme Gambar menggunakan Algoritma Pencocokan Pola Rabin-Karp

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Implementasi Pencocokan String Tidak Eksak dengan Algoritma Program Dinamis

Penerapan Algoritma BFS & DFS untuk Routing PCB

Aplikasi Algoritma Greedy, BFS dan DFS pada Penyelesaian Permainan Mahjong Solitaire

Penerapan Algoritma Pencocokan String Boyer-Moore dan Knuth-Morris-Pratt (KMP) dalam Pencocokkan DNA

Penerapan Algoritma Pattern Matching untuk Mengidentifikasi Musik Monophonic

Transkripsi:

PENCARIAN BARANG DALAM BASIS DATA ONLINE SHOP MENGGUNAKAN ALGORITMA BFS, DFS, DAN KMP Zulva Fachrina - 13513010 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia zulva.fachrina@students.itb.ac.id Abstrak Online Shop merupakan salah satu bisnis yang cukup berkembang pesat akhir-akhir ini. Semakin besar suatu Online Shop, maka semakin besar data yang harus disimpan sehingga harus dibangun sistem basis data yang besar untuk menangani seluruh data tersebut. Salah satu cara untuk mendapatkan informasi mengenai barang tertentu pada basis data Online Shop adalah dengan memanfaatkan algoritma pencarian Breadth First Search atau Depth First Search yang dikombinasikan dengan algoritma String Matching Knutt-Morris Pratt. Fitur pencarian ini sering digunakan pemilik Online Shop untuk menarik minat pelanggan. Kata Kunci BFS, Basis data, DFS, KMP, Online Shop I. PENDAHULUAN Perkembangan teknologi dan internet yang semakin pesat mambuat segala kegiatan dapat dilakukan dengan lebih mudah dan praktis, tanpa memakan cukup banyak waktu dan biaya. Salah satu dampak dapat dilihat dari pertumbuhan pesat pasar e-commerse. Kemudahan berbelanja dengan hanya menggunakan internet dan kartu kredit/debit tanpa harus pergi ke toko yang bersangkutan membuat online shopping cukup banyak digemari. Di Indonesia sendiri, berdasarkan data dari Menkominfo, tercatat bahwa pada tahun 2013 nilai transaksi e-commerse mencapai angka 300 triliun, atau dengan kata lain 8% dari 30% pengguna internet di Indonesia pernah berbelanja secara online. Angka ini terus bertambah dengan semakin berkembangnya smartphone. Perkembangan ini sejalan dengan perkembangan perusahaan-perusahaan e-commerse di Indonesia. Sebut saja beberapa perusahan besar yang sudah tidak asing lagi, seperti Olx.com, Lazada, Zalora, Tokopedia, dan BukaLapak. Tidak salah banyak individu maupun kelompok yang mulai tertarik untuk berkecimpung dalam bisnis jenis ini. Salah satu fasilitas yang disediakan oleh berbagai online shop seperti yang disebutkan di atas adalah kemudahan dalam mencari barang yang diinginkan. Pelanggan cukup memasukkan query pencarian barang yang ingin dicari pada kolom yang telah disediakan, kemudian akan ditampilkan berbagai hasil pencarian. Dalam melakukan pencarian, pelanggan bisa memilih kategori apa yang ingin dicari untuk membatasi pencarian, atau jika tidak program akan mencari barang tersebut dari berbagai kategori. Setiap barang pasti masuk dalam salah satu dari banyak kategori dan dalam setiap pencarian program akan menulusuri kategori-kategori tersebut. Pencarian yang paling umum dilakukan untuk kasus tersebut adalah pencarian menggunakan query yang memanfaatkan operator relasional yang disediakan database. Namun dalam makalah ini, dijabarkan alternatif lain berupa Algoritma Pencarian BFS dan DFS, serta algoritma String Matching KMP yang dapat diterapkan pada pencarian barang-barang pada online shop. Setiap kategori dan sub kategori dapat diperlakukan sebagai simpul, dimana setiap simpul pasti akan berujung pada sebuah daun yang mewakilkan barang-barang yang tersedia. Pencarian dapat dilakukan dengan menerapkan algoritma BFS dan DFS dalam menelusuri setiap simpul sambil melakukan string matching untuk mendapatkan hasil yang sesuai II. TEORI DASAR A. Breadth First Search (BFS) Breadth-first search (BFS) adalah algoritma pencarian/penelusuran traversal melebar pada sebuah graf atau pohon ruang status. BFS mengawali penelusuran dengan cara mengunjungi suatu simpul pada graf (atau pohon) status. Kemudian, BFS mengunjungi semua

simpul yang bertetangga dengan simpul tersebut secara preorder. Selanjutnya, simpul yang belum dikunjungi dan bertetangga dengan simpul-simpul yang tadi dikunjungi, demikian seterusnya. Jika graf berbentuk pohon berakar, maka semua simpul pada aras d dikunjungi lebih dulu dari simpul-simpul pada aras d+1. Atau dalam kata lain, BFS akan melakukan pencarian secara melebar terlebih dahulu (breadth-first). Dalam penggunaannya, algoritma ini memerlukan sebuah antrian q untuk menyimpan simpul-simpul yang telah dikunjungi. Antrian ini diperlukan sebagai acuan dalam memilih simpul-simpul yang akan dikunjungi berikutnya, yaitu simpul-simpul yang bertetanggaan dengan simpul yang sudah ada di antrian. Tiap simpul yang telah dikunjungi masuk ke dalam antrian hanya satu kali. Algoritma ini juga membutuhkan tabel boolean untuk menyimpan simpul yang telah dikunjungi sehingga tidak ada simpul yang dikunjungi lebih dari satu kali. Urutan algoritma dari Breadth Search Firsh adalah sebagai berikut: Masukkan simpul root ke dalam antrian Periksa antrian terdepan apakah memiliki anak simpul Jika ya, masukan semua anak simpul ke dalam antrian Hapus antrian terdepan Jika antrian kosong berhenti, tapi jika tidak kembali ke langkah dua B. Depth Search First (DFS) simpul sebelumnya lagi secara terus menerus dan rekursif sampai ditemukan sebuah simpul yang masih memiliki tetangga, dan kemudian melakukan pencarian rekursif pada simpul tetangga tersebut. Jika graf berbentuk pohon berakar, maka semua simpul pada aras d dikunjungi lebih dulu dari simpul-simpul pada aras d+1. Atau dalam kata lain, DFS akan melakukan pencarian secara mendalam terlebih dahulu (depth-first). Algoritma ini dapat diimplementasikan menggunakan stack atau secara rekursif. Urutan Algoritm DFS dengan menggunakan stack: Masukkan simpul root ke dalam tumpukan dengan push Ambil dan simpan isi elemen (berupa simpul pohon) dari tumpukan teratas Hapus isi stack teratas dengan prosedur pop Periksa apakah simpul pohon yang disimpan tadi memiliki anak simpul Jika ya, push semua anak simpul yang dibangkitkan ke dalam stack Jika tumpukan kosong berhenti, tapi jika tidak kembali ke langkah dua C. Knuth-Morris-Pratt Algoritma Knuth-Morris-Pratt adalah salah satu algoritma pencarian string, dikembangkan secara terpisah oleh Donald E. Knuth pada tahun 1967 dan James H. Morris bersama Vaughan R. Pratt pada tahun 1966, namun keduanya mempublikasikannya secara bersamaan pada tahun 1977. Algoritma KMP melakukan proses awal terhadap pattern dengan menghitung fungsi pinggiran Dengan adanya fungsi pinggiran ini, maka dapat dicegah pergeseran yang tidak berguna, seperti yang terjadi pada algoritma brute force. Fungsi pinggiran hanya bergantung pada karakter yang ada di dalam pattern, tidak bergantung kepada karakter di dalam teks. I N F O I N Depth-first search (DFS) adalah algoritma pencarian/penelusuran traversal mendalam pada sebuah graf atau pohon ruang status. DFS mengawali penelusuran dengan cara mengunjungi suatu simpul pada graf (atau pohon) status. Kemudian, DFS mengunjungi simpul tetangga dari simpul tersebut yang dipilih secara preorder, terus menerus ke simpul tetangga dari simpul tetangga tadi secara rekursif sampai dengan simpul tetangga yang dikunjungi tidak memiliki tetangga lagi. Kemudian, DFS akan melakukan backtrack-ing ke simpul sebelumnya. Jika simpul ini masih memiliki tetangga yang belum dikunjungi, DFS akan kembali melakukan pencarian rekursif pada tetangga tersebut sampai menemukan simpul yang tidak memiliki tetangga lagi. Jika simpul ini tidak memiliki anak yang belum dikunjungi, DFS akan melanjutkan backtrack-nya ke Penjelasannya adalah sebagai berikut, mula-mula pattern dan teks sejajar pada posisi paling kiri, dan dibandingkan karakter pertamanya. Langkah 1 dan 2 sama dengan algoritma brute force, tetapi perhatikan pada langkah 3, ketidakcocokan terjadi saat membandingkan karakter ke-3 dari pattern R dan karakter ke-5 dari teks (spasi). Metode KMP akan memeriksa apakah pada teks

yang dilewati pada langkah ini (F-O-spasi) terdapat karakter awal pattern F, dan ternyata hanya cocok di karakter pertama yang sudah dibandingkan pada langkah ini. Karena itu, tidak perlu menggeser pattern satu per satu, pattern dapat langsung digeser sejauh 3 karakter pada langkah selanjutnya. Demikian seterusnya hingga semuanya cocok. Kompleksitas algoritma KMP meliputi kompleksitas perhitungan fungsi pinggiran yaitu: O(m) dan kompleksitas pencarian string yaitu O(n). Sehingga keseluruhan kompleksitas waktu algoritma KMP adalah O(m+n). III. STRUKTUR PENYIMPANAN DAFTAR BARANG ONLINE SHOP Pada setiap online shop pastilah terdapat daftar barang yang akan diperjual-belikan. Daftar barang-barang tersebut disimpan dalam sebuah relasi yang terhubung dengan relasi-relasi lainnya dalam sebuah basis data yang mengatur sistem secara keseluruhan. Misalkan relasi yang menyimpan daftar seluruh barang disebut sebagai relasi Barang. Relasi Barang akan memiliki beberapa atribut seperti kode barang, merek barang, jenis barang, dan harga. Untuk setiap jenis barang terdapat atribut tambahan yang berbeda-beda, misalkan barang dengan jenis pakaian memiliki ukuran, barang dengan jenis kendaraan memiliki atribut tahun pembuatan, barang dengan jenis Handphone memiliki atribut seri. Jika seluruh barang dari setiap jenis disimpan dalam satu relasi Barang, maka isi dari relasi akan tidak terhingga banyaknya dan akan banyak terjadi redudansi pada atribut jenis. Selain itu, seluruh atribut tambahan seperti ukuran, tahun pembuatan, dan seri akan dimasukkan dalam relasi Barang dan akan mengakibatkan banyak tuple yang diset dengan Null pada bagian di mana barang tersebut tidak memiliki atribut yang dimasudkan. Untuk mengakali hal tersebut, maka pada basisdata, atribut jenis dipecah lagi menjadi relasi-relasi baru. Hal ini mengakibatkan akan terbentuk banyak relasi seperti Fashion, Elektronik, Komputer, dan Handphone. Masing-masing relasi akan memiliki atribut kode barang yang me-reference kode barang pada relasi Barang. Jika pada relasi Fashion kembali terdapat kategori seperti pakaian, tas, sepatu, maka setiap kategori tersebut akan kembali dipecah menjadi relasi baru, dan begitu seterusnya. Masing-masing relasi akan memiliki key yang me-reference primary key pada relasi yang lebih besar. Dengan cara tersebut kita telah memiliki banyak relasi yang mewakilkan setiap kategori atau jenis dari barang. Setiap relasi terhubung satu sama lain melalui atribut kode_barang dan dapat digambarkan seperti gambar di bawah ini Diagram 1 Relasi tersebut dapat pula digambarkan dengan graph pohon. Jika untuk setiap jenis barang dibuat simpulnya masing-masing, kemudian setiap kategori memiliki beberapa kategori lain yang dilambangkan dengan subsimpul, hingga pada akhirnya berujung pada daun yang merupakan daftar barang yang diperjual-belikan. Diagram 2 Penggambaran struktur barang dan kategorinya menggunakan graph pohon seperti di atas lebih gampang untuk dimengerti karena hampir mirip dengan skema yang digunakan dalam website-website online shop. Dalam hampir setiap website online shop, ditampilkan sejumlah kategori barang yang diperjual-belikan, kemudian user dapat memilih kategori atau jenis barang apa yang ingin dicari. Kategori-kategori tersebut merupakan bagian dari kategori yang lebih besar, sehingga jatuhnya seperti penyimpanan file pada direktori folder, dengan nama barang sebagai file di dalam folder. Gambar 1: Tampilan Halaman Depan Website Online Shop Sumber: www.lazada.co.id

IV. PENCARIAN BARANG DENGAN MENGGUNAKAN ALGORITMA BFS, DFS, DAN KMP Sebelum berbelanja, tentunya kita harus tahu terlebih dahulu benda apa yang ingin kita beli. Begitupula saat berbelanja melalui online shop. Jika kita sudah tahu barang spesifik yang ingin kita cari dan jenisnya, kita bisa langsung memasukkan query dalam kolom pencarian. Sedangkan jika kita ingin melihat terlebih dahulu berbagai macam barang yang disediakan sebelum membeli, kita bisa memilih salah satu kategori yang disediakan, yang kemudian akan menampilkan seluruh daftar barang yang berada dalam kategori tersebut. Pencarian barang baik dengan memasukkan query ataupun dengan memilih kategori dapat menggunakan query pada SQL. Pencarian dengan menggunakan query pada database menggunakan prinsip select, join, dan berbagai operator relasional yang memanfaatkan keterhubungan antar relasi. Dalam mencari barang yang diinginkan, perlu ditentukan query yang pas sehingga pencarian dapat ditemukan. Query bisanya menggunakan berbagai operator yang disediakan, dan berkaitan dengan menghubungkan satu relasi dengan relasi lain untuk mendapatkan informasi yang diinginkan. Misalkan seorang pelanggan memasukkan query Nike dalam kolom pencarian, maka berdasarkan Diagram 1, query yang dimasukkan adalah mencari semua barang dalam relasi barang dimana Merek = Nike. Dalam SQL, query dapat ditulis: SELECT * FROM Barang WHERE Merek = Nike Query tersebut akan menampilkan hasil seluruh barang yang memiliki merek Nike. Namun, informasi yang didapatkan hanya informasi yang terkandung dalam relasi barang, yaitu kode_barang, merek, dan harga. Padahal, kita memerlukan seluruh informasi yang terkait dengan sepatu dengan Merek Nike, misalnya ukuran dari sepatu tersebut. Agar kita bisa mendapatkan seluruh informasi tersebut, kita harus mengganti query menjadi: SELECT * FROM Barang NATURAL JOIN Sepatu WHERE Merek = Nike Query ini kemudian menjadi masalah ketika Merek Nike tidak hanya merupakan merek dari sepatu, namun juga dapat merupakan merek dari baju ataupun tas, dan kita tidak tahu jenis barang apa yang diinginkan oleh pelanggan. Karena itu akan terdapat banyak relasi yang terlibat dalam query pencarian SELECT * FROM Barang NATURAL JOIN Sepatu NATURAL JOIN Tas NATURAL JOIN Baju NATURAL JOIN WHERE Merek = Nike Salah satu alternatif pencarian query yang dapat digunakan dalam mencari barang tertentu pada database Online Shop selain menggunakan SQL adalah dengan mengkombinasikan algoritma BFS atau DFS dengan String Matching. Cara ini terbilang lebih memakan waktu dan kompleks, namun lebih mudah untuk dipahami dan diimplementasikan. Pencarian dengan algoritma BFS dan DFS memanfaatkan struktur penyimpanan yang seperti pohon untuk menelusuri seluruh simpul sampai menemukan hasil yang diinginkan. Pada makalah ini hanya akan dibahas pencarian dimana pelanggan memasukkan query di dalam kolom pencarian, yaitu pelanggan sudah tahu barang yang ingin dibeli. Pencarian juga akan dilakukan dengan asumsi setiap barang pasti berada dalam satu kategori dan tidak ada barang yang berada pada dua kategori yang berlainan. A. Pencarian Menggunakan BFS Penulusaran simpul-simpul kategori dimulai dari simpul paling atas atau akar. Sebelumnya terlebih dahulu dibuat sebuah queue kosong yang akan menampung setiap simpul yang dikunjungi. Karena diasumsikan setiap barang tidak mungkin masuk dalam dua kategori berbeda, makan tidak diperlukan penandaan apakan suatu simpul sudah dikunjungi atau belum. Pertama-tama, program akan menelusuri semua kategori yang terdapat pada akar. Setiap kategori akan dimasukkan ke dalam Queue. Program kemudian akan mengambil simpul pertama yang berada di dalam Queue sesuai dengan prinsip Queue yaitu First In First Out (FIFO). Simpul yang diambil tersebut akan kembali ditelusuri setiap simpul-simpul anaknya. Setiap simpul anak yang didapat dari simpul tersebut kembali dimasukkan ke dalam Queue. Begitu seterusnya sampai didapat simpul daun yang di dalamnya mengandung query yang ingin dicari. Pencocokan query dapat dilakukan dengan menggunakan string matching. Ketika sejumlah simpul cocok, maka program akan menampikan seluruh kemungkinan tersebut. Pencarian tersebut dapat digambarkan sebagai berikut. Jika seorang pelanggan memasukkan query pencarian Jansport, maka berdasarkan Diagram 2, yang dilakukan program adalah sebagai berikut: Seluaruh simpul anak Barang, yaitu Fashion, Otomotif, dan Elektronik ke dalam Queue. Isi Queue: Fashion, Otomotif, Elektronik. Fashion dikeluarkan dari Queue, kemudian seluruh anak simpul dari Fashion dimasukkan ke dalam Queue, Isi Queue: Otomotif, Elektronik, Tas, Kacamata, dan Pakaian. Otomotif dikeluarkan dari Queue, kemudian seluruh anak simpul dari otomotif dimasukkan ke dalam Queue. Isi Queue: Elektronik, Tas, Kacamata, Pakaian, Motor, Mobil.

Elektronik dikeluarkan dari Queue, kemudian seluruh anak simpul dari elektronik dimasukkan ke dalam Queue. Isi Queue: Tas, Kacamata, Pakaian, Motor, Mobil, Laptop, Handphone Tas dikeluarkan dari Queue. Di dalam simpul Tas terdapat banyak simpul daun, dan beberapa di antaranya merupakan simpul yang mengandung Jansport seperti pada diagram. Sambil menelusuri setiap simpul dan mencocokkan string, program juga menuliskan hasil pencarian ke layar. Dengan begitu, semua barang yang memenuhi query pencarian sudah ditemukan memiliki anak lagi karena merupakan simpul daun. Untuk setiap simpul daun akan dilakukan pencocokan string apakah sesuai dengan query yang diminta. Jika sesuai, maka hasil akan ditampilkan di layar. Proseuder ini terus dilakukan untuk setiap simpul daun yang berada dalam stack hingga seluruh simpul habis. C. String Matching Menggunakan Algoritma KMP B. Pencarian Menggunakan DFS Pencarian menggunakan DFS dapat menggunakan stack ataupun secara rekursif. Pada makalah ini akan dijabarkan pemanfaatan pencarian menggunakan algoritma DFS. Pertama-tama dibuat sebuah stack dan dimasukkan kosong dan masukkan akar ke dalam stack. Ambil simpul kategori yang berada pada posisi paling atas dan bangkitkan semua simpul anaknya. Simpul anak tersebut kemudian kembali dimasukkan ke dalam stack. Ambil lagi simpul teratas pada stack dan ulangi langkah sebelumnya sampai seluruh stack kosong atau pencarian sudah ditemukan. Pencarian tersebut untuk lebih mudahnya digambarkan sebagai berikut. Jika seorang pelanggan memasukkan query Jansport pada pencarian, maka berdasarkan diagram 2, yang dilakukan proram adalah sebagai berikut: Seluruh simpul anak akar yaitu Elektronik, Otomotif, dan Fashion dimasukkan ke dalam stack. Isi stack: Elektronik, Otomotif, Fashion. Fashion yang berada pada tumpukan teratas stack di-pop, kemudian semua anak simpul Fashion dibangkitkan dan dimasukkan ke dalam stack. Isi stack: Elektronik, Otomotif, Pakaian, Kacamata, Tas. Tas yang berada pada tumpukan teratas stack dipop, kemudian dibangkitkan seluruh simpul anaknya. Simpul-simpul anak tersebut kembali dimasukkan ke dalam stack. Ketika simpul anak teratas di-pop dari stack, simpul tersebut tidak Pada setiap simpul yang dikunjungi, algoritma string matching diterapkan untuk mencari simpul yang memiliki kecocokan dengan qury yang diberikan. Algoritma string matching yang dipilih untuk digunakan pada makalah ini adalah algoritma Knutt-Morris Pratt karena algoritma ini memiliki kompleksitas yang cukup optimal, terutama jika dibandingkan dengan algoritma Brute Force. Langkah pertama yang harus dilakukan adalah membentuk fungsi pinggiran dari query yang didpakatkan. Tabel Fungsi Pinggiran KMP berukuran 1 x m dengan m merupakan panjang query dan masingmasing kolom m mewaili satu karakter pada pattern. Masing-masing kolom k diisi dengan ukuran paling besar prefix dari pattern[1..k] yang juga merupakan suffix dari pattern[1..k] Setelah fungsi pinggiran terbentuk, maka pencocokan string yang terdapat pada simpul dengan string pada query dapat dilakukan. Pencocokan string dimulai dari paling kiri, kemudian satu per satu dilakukan pengecekan apakah karakter pada text simpul sama dengan pada query. Pada kasus ini terdapat 3 kemungkinan: Jika karakter sama, maka teruskan pengecekan tanpa menggeser query Jika karakter tidak sama dan karakter tersebut merupakan karakter pertama pada query, maka geser query saru karakter ke kanan Jika karakter tidak sama dan karakter tersebut bukan merupakan karakter pertama pada query, maka geser query sejauh indeks karakter sebelum terjadi kesalahan dikurangi isi tabel fungsi pinggiran pada indeks tersebut

Langkah tersebut diulangi sampai string ditemukan atau query tidak lagi dapat digeser atau dengan kata lain string tidak ditemukan. Mari kembali ambil contoh ketika seorang pelanggan mencari query Jansport dan salah satu simpul daun memiliki merek Jas Jansport. Pencarian menggunakan KMP dapat diilustrasikan sebagai berikut: Fungsi pinggiran JANSPORT 1 2 3 4 5 6 7 8 0 0 0 0 0 0 0 0 J A S Pada baris ketiga dapat dilihat bahwa query tidak hanya digeser sejauh satu karakter, melainkan 2 karakter sekaligus. Pergeseran ini didapat melalui fungsi pinggiran. Indeks karakter terakhir sebelum terjadi ketidakcocokan adalah 2, da nisi dari table dengan indeks 2 adalah 0, maka query akan digeser sejauh 2-0 = 2 karakter. maupun tidak telah membantu dalam merampungkan makalah ini. REFERENCES [1] Munir, Rinaldi. 2008. Diktat Kuliah IF2091 Matematika Diskrit. Bandung: Penerbit Informatika. [2] Data Statistik Mengenai Pertumbuhan Pangsa E-Commerse di Indonesia Saat Ini http://startupbisnis.com/data-statistikmengenai-pertumbuhan-pangsa-pasar-e-commerce-di-indonesiasaat-ini/ (Diakses Tanggal 3 Mei 2015 pukul 20.00) [3] www.lazada.co.id (Diakses Tanggal 4 Mei 2015 pukul 15.00) PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 4 Mei 2015 Zulva Fachrina/13513010 V. KESIMPULAN Dalam pencarian query pada suau basis data, selain menggunakan operator relasional yang disediakan SQL, dapat juga menggunakan perpaduan antara algoritma Pencarian Breadth First Search atau Depth First Search dengan algoritma String Matching Knutt-Morris Pratt. Salah satu contohnya adalah pencarian query yang dimasukkan pelanggan dalam sebuah website Online Shop. Struktur penyimpanan dapat dibuat menyerupai struktur pohon pada graph, sehingga setiap kategori memiliki sub kategori yang diwakilkan dengan simpul. Algoritma BFS atau DFS digunakan untuk menulusuri setiap simpul yang mewakili sebuah kategori, sedangkan algoritma string matching KMP akan digunakan untuk mencocokkan data yang tersimpan pada simpul daun dengan query pencarian pelanggan. VI. UCAPAN TERIMA KASIH Penulis ingin mengucapkan terima kasih kepada Allah SWT, karena atas rahmat dan karunia-nya lah makalah ini dapat selesai pada waktunya. Penulis juga ingin mengucapkan terima kasih kepada kedua orang tua yang tidak pernah letih mendukung dan mendoakan anaknya, serta Bapak Dr. Ir. Rinaldi Munir dan Ibu Dr. Nur Ulfa Maulidevi, S.T., M.Sc selaku dosen mata kuliah Strategi Algoritma. Tidak lupa penulis juga ingin mengucapkan terima kasih kepada pihak-pihak yang secara langsung