Implementasi Struktur Data Rope menggunakan Binary Tree dan Aplikasinya dalam Pengolahan Teks Sangat Panjang

dokumen-dokumen yang mirip
Penerapan Teknik Binary Search Tree Sebagai Alternatif Penyimpanan Data

Penggunaan Pohon Huffman Sebagai Sarana Kompresi Lossless Data

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

POHON CARI BINER (Binary Search Tree)

Pengenalan Trie dan Aplikasinya

Perbandingan Kompresi Data Dengan Algoritma Huffman Statik dan Adaptif

Aplikasi Pohon Pencarian Biner Seimbang sebagai Memo Table Dynamic Programming

Aplikasi Pohon dalam Pencarian dan Penempatan Buku di Perpustakaan

Pemanfaatan Pohon Biner dalam Pencarian Nama Pengguna pada Situs Jejaring Sosial

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Variasi Pohon Pencarian Biner Seimbang

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Penerapan Algoritma LZW (Lempel-Ziv-Welch) pada Program Pemampat File

Pengaplikasian Pohon dalam Sistem Repository Ubuntu Linux

Penyandian (Encoding) dan Penguraian Sandi (Decoding) Menggunakan Huffman Coding

Pencarian Potongan Gambar Menggunakan Algoritma Boyer Moore

Penggunaan Pohon Biner Sebagai Struktur Data untuk Pencarian

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

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

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

BAB 2 LANDASAN TEORI

Perbandingan Algoritma Pencarian Kunci di dalam Himpunan Terurut Melalui Linear Search dan Binary Search

B-Tree dan Penerapan di Basis Data

Penerapan Pengkodean Huffman dalam Pemampatan Data

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Penyelesaian Five Coins Puzzle dan Penghitungan Worst-case Time dengan Pembuatan Pohon Keputusan

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Penerapan Algoritma Prim dan Kruskal Acak dalam Pembuatan Labirin

Algoritma Huffman dan Kompresi Data

METODE POHON BINER HUFFMAN UNTUK KOMPRESI DATA STRING KARAKTER

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

Kode Huffman dan Penggunaannya dalam Kompresi SMS

Penerapan Kombinatorial dan Peluang Diskrit serta Pohon pada Analisis Genetik

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

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

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

Cara Kerja B-tree dan Aplikasinya

Pohon Indeks Biner atau Pohon Fenwick untuk menyelesaikan persoalan penjumlahan interval

Mencari Solusi Persamaan Rekursif Bilangan Catalan dengan Prinsip-prinsip Kombinatorial

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Aplikasi Pohon Prefix pada Pencarian Kontak di

Pembuatan Peta Permainan dengan BSP

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Aplikasi Pohon pada Pohon Binatang (Animal Tree)

Optimasi Konversi String Biner Hasil Least Significant Bit Steganography

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

Kompleksitas Algoritma dari Algoritma Pembentukan pohon Huffman Code Sederhana

Tanda Tangan Digital Untuk Gambar Menggunakan Kriptografi Visual dan Steganografi

Optimasi Enkripsi Teks Menggunakan AES dengan Algoritma Kompresi Huffman

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

I. PENDAHULUAN. 1.1 Permainan Rush Hour

Aplikasi Pewarnaan Graf untuk Sistem Penjadwalan On-Air Stasiun Radio

Pengaplikasian Algoritma Knuth-Morris-Pratt dalam Teknik Kompresi Data

Penerapan Algoritma Pencocokan String Boyer-Moore untuk Keamanan Komputer

Implementasi Pohon Keputusan untuk Membangun Jalan Cerita pada Game Engine Unity

Penggunaan Pohon Biner dalam Binary Space Partition untuk Membuat Dungeon Game Roguelike RPG

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Penerapan BFS dan DFS dalam Garbage Collection

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

Pohon Quad untuk Merepresentasikan Gambar

I. PENDAHULUAN II. DASAR TEORI. Contoh lainnya: Solusi: 0= V,1= I,2= O,3= R, 4= N,5= L,7= A,8= F,9= E.

Penggunaan Struktur Data Pohon Berakar dalam XML

Implementasi Algoritma Boyer-Moore untuk Memanipulasi Foto dengan Magic Color

Graf untuk soal nomor 7

Analisis Penggunaan Algoritma RSA untuk Enkripsi Gambar dalam Aplikasi Social Messaging

Pendekatan Algoritma Divide and Conquer pada Hierarchical Clustering

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Pemodelan Pembagian Kelompok Tugas Besar Strategi Algoritma dengan Masalah Sum of Subset

Menyelesaikan Topological Sort Menggunakan Directed Acyclic Graph

Aplikasi Algoritma BFS dan String Matching pada Tag Suggestions di Facebook

Penggunaan Bilangan Kompleks dalam Pemrosesan Signal

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

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

Aplikasi String Matching dalam Analisis Cap Bibir

Penerapan Pewarnaan Graf dalam Alat Pemberi Isyarat Lalu Lintas

Penerapan Operasi Matriks dalam Kriptografi

Algoritma Puzzle Pencarian Kata

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

Menghitung Ketinggian Rata-Rata Pohon Terurut

Algoritma Backtracking Pada Permainan Peg Solitaire

KOMPRESI TEKS MENGGUNAKAN ALGORITMA DAN POHON HUFFMAN. Nama : Irfan Hanif NIM :

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

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

Aplikasi Pohon dan Graf dalam Kaderisasi


Pemanfaatan Second Least Significant Bit dan Kunci Dua Kata Untuk Mencegah Serangan Enhanced LSB Pada Citra Digital

I. PENDAHULUAN. Gambar 1. Contoh-contoh graf

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

PERBANDINGAN ALGORITMA HUFFMAN DENGAN ALGORITMA SHANNON-FANO

Pemodelan CNF Parser dengan Memanfaatkan Pohon Biner

Penggunaan Transformasi Matriks dalam Enkripsi dan Dekripsi

Penerapan Pohon Biner dalam Proses Pengamanan Peer to Peer

Penerapan Pohon Keputusan dalam Pengambilan Keputusan Terbaik dibidang Pemasaran Produk

Penggunaan Algoritma Knuth-Morris-Pratt untuk Pengecekan Ejaan

Penerapan Travelling Salesman Problem dalam Penentuan Rute Pesawat

Pencarian Lintasan Terpendek Pada Aplikasi Navigasi Menggunakan Algoritma A*

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Penerapan Algoritma Pattern Matching untuk Mengidentifikasi Musik Monophonic

Transkripsi:

Implementasi Struktur Data Rope menggunakan Binary Tree dan Aplikasinya dalam Pengolahan Teks Sangat Panjang Edwin Rachman (NIM 0) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 0 Bandung 0, Indonesia 0@std.stei.itb.ac.id Abstrak Pengolahan data teks yang sangat panjang yang disimpan sebagai string biasa kemungkinan besar akan memakan waktu yang sangat lama. Salah satu alternatif dari string adalah struktur data rope yang menggunakan sebuah binary tree sebagai basisnya. Rope memiliki beberapa operasi dasar seperti index, concatenate, split, insert, delete, dan report yang semuanya memiliki kompleksitas waktu logaritmik yang lebih cepat dibandingkan kompleksitas waktu liniernya string. Rope dapat diaplikasikan dalam sebuah text editor dimana operasi-operasi insert, delete, dan concatenate sering sekali digunakan. Kata Kunci Balanced Binary Tree, Pengolahan Teks, Rope, Struktur Data I. PENDAHULUAN Data teks di bidang komputer dan informatika lazimnya direpresentasikan dalam bentuk sebuah struktur data yang disebut string, yang sebetulnya hanya sebuah array karakter biasa. Untuk string-string berukuran pendek representasi array ini dapat dikatakan cukup baik meskipun operasi string menyisipkan, menghapus, ataupun menyambung membutuhkan kompleksitas waktu linier. Akan tetapi ketika string yang diolah berukuran sangat panjang, misalnya sebesar 0 MB ataupun GB, operasioperasi tersebut menjadi sangat lambat. Terdapat beberapa alternatif struktur data string untuk menyimpan data teks secara digital, salah satunya adalah struktur data rope. Struktur data rope berbeda dengan string dimana rope tidak menggunakan sebuah array, tetapi menggunakan sebuah binary tree sebagai basisnya. Di daun-daun binary tree tersebut terdapat string-string yang kecil sehingga jika binary tree tersebut di-traverse secara in-order maka akan didapatkan string besar yang utuh. Karena rope menggunakan binary tree, maka beberapa operasi-operasi yang dapat digunakan seperti menyisipkan, menghapus, ataupun menyambung membutuhkan kompleksitas waktu logaritmik yang lebih cepat disbandingkan kompleksitas waktu liniernya array. Akan tetapi, jumlah memori yang dibutuhkan oleh rope lebih besar dibandingkan array dan juga ada beberapa operasi dimana rope lebih lambat dibandingkan array.. String II. TEORI DASAR String adalah sebuah struktur data yang digunakan untuk merepresentasikan data teks sebagai sebuah deretan simbol karakter. String lazimnya diimplementasikan sebagai sebuah array statik tipe data char (berukuran byte) jika menggunakan encoding ANSI, atau tipe data yang lebih besar jika menggunakan encoding teks yang membutuhkan ukuran per karakter lebih dari byte. Ukuran dari sebuah string dapat disimpan secara eksplisit di byte pertama string tersebut (jika menggunakan gaya string Pascal), atau secara implisit dengan cara menambahkan sebuah karakter NUL ( \0 ) setelah karakter terakhir sebagai menanda akhir dari string tersebut (jika menggunakan gaya string C). Keuntungan dari menggunakan struktur data string sebagai representasi data teks adalah kesederhanaannya dan kemudahan implementasinya. Selain itu, karena diimplementasikan sebuah array yang kontigu maka memori yang digunakan hanya sebesar jumlah karakternya dan operasi indexing atau random access dapat dilakukan dengan kompleksitas waktu konstan. Kelemahannya adalah beberapa operasi-operasi pengolahan teks dasar seperi insert, delete, concatentate, dan split, memerlukan kompleksitas waktu linear. Hal ini membuat struktur data string tidak cocok untuk digunakan dalam mengoperasikan data teks yang sangat panjang (misalnya teks 0 MB atau lebih) dan sering menggunakan operasi-operasi tersebut. Jenis Operasi Index Insert Delete Concatenate Split Report Kompleksitas Waktu O() Makalah IF0 Matematika Diskrit Sem. I Tahun 0/0

Gambar. Sebuah binary tree (Sumber:http://cslibrary.stanford.edu/0/BinaryTrees. html) Gambar. NUL-terminated string gaya C (Sumber: https://www.tutorialspoint.com/cprogramming/c_strings.h tm). Binary Tree Struktur data tree merupakan struktur data tak linear yang menggambarkan hubungan hirakis antara sebuah node dan anak-anaknya yang juga berupa sebuah tree. Tree biasanya digunakan untuk melambangkan hubunganhubungan hirakis antar satu data dengan data yang lain. Node tertinggi sebuah tree disebut sebagai akar dari tree tersebut. Node tanpa anak kiri ataupun anak kanan disebut sebagai daun-daun tree tersebut. Ketinggian sebuah tree adalah beberapa tingkat antar akar dan daun tree tersebut. Contoh penggunaannya adalah sebagai diagram organigram anggota-anggota organisasi, pohon keluarga, dll. Struktur data binary tree merupakan variasi dari struktur data tree dimana anak-anak setiap node-nya hanya terdapat dua, yaitu anak kiri dan anak kanan. Binary tree terdapat banyak aplikasi terutama di dunia computer dan informatika dimana binary tree dapat digunakan sebagai penampung data yang memudahkan proses pencarian dengan menggunakan algoritma binary searching dimana dengan algoritma ini sebuah bilangan dalam sebuah deret bilangan terurut dapat dicari hanya dengan kompleksitas waktu logaritmik. Struktur data balanced binary tree merupakan variasi dari struktur data tree dimana perbedaan tinggi tree anak kiri dan tree kanan tidak lebih dari satu. Hal ini diperlukan karena beberapa algoritma yang dioperasikan pada tree memerlukan kondisi ini untuk alasan efisiensi, dll. Contohnya adalah binary search tree.. Rope Rope adalah struktur data yang juga digunakan untuk merepresentasikan data teks seperi halnya dengan string. Akan tetapi, berbeda dengan string yang diimplementasikan sebagai sebuah array yang kontigu, rope diimplementasikan sebagai sebuah binary tree dimana daun-daunnya mengandung string-string kecil sehingga keseluruhan dari binary tree tersebut membentuk string yang besar. Binary tree digunakan untuk struktur data rope supaya kompleksitas waktu logaritmik dari algoritma binary searching dapat dipergunakan bukan untuk deretan angka terurut, tetapi untuk deretan karakter. Selain itu, dengan partisi string yang besar menjadi string-string yang kecil di setiap daunnya maka operasi split, concatenate, dan delete juga lebih cepat dan menggunakan kompleksitas waktu logaritmik. Kelemahan dari rope adalah kerumitan dari implementasinya sehingga lebih sulit untuk diimplementasikan dan rawan error. Juga terdapat beberapa operasi string yang lebih cepat dibandingkan rope seperti index. Selain itu, kebutuhan memori untuk rope juga lebih besar dibandingkan string. Jenis Operasi Kompleksitas Waktu Index O(log n) Insert O(log n) Delete O(log n) Concatenate O(log n) Split O(log n) Report O(log n) Makalah IF0 Matematika Diskrit Sem. I Tahun 0/0

III. OPERASI-OPERASI DASAR. Index Index adalah operasi mendapatkan karakter ke-i sebuah string. Operasi index untuk struktur data rope dapat dilakukan dengan melakukan traversal seperti binary search tree. [] 0. Split Split adalah operasi memisahkan sebuah string menjadi dua buah string setelah karakter i tertentu. Operasi split untuk struktur data rope menggunakan index untuk mencari titik pemisahannya kemudian memisahkan string di node tersebut menjadi dua. Kemudian semua node-node di kanan node tersebut juga dipisahkan dari rope utamanya. Setelah itu, semua node yang terpisah dari digabung dengan concat menjadi rope yang baru. [] ka 0 Gambar.: Proses traversal pencarian karakter ke-0. Concatenate Concatenate adalah operasi menyambungkan dua buah string menjadi satu dimana awal dari string kedua tepat setelah akhir string pertama. Operasi concatenate untuk struktur data rope dapat dilakukan hanya dengan membuat sebuah node baru dimana anak kirinya merupakan node rope pertama dan anak kanannya merupakan node rope kedua. [] Gambar.a: Mencari titik potong rope. ka 0 = ka 0 ka 0 Gambar.b: Pemisahan rope Gambar.a: Dua rope yang akan di-concatenate + = ka 0 ka 0 Gambar.c: Penyederhanaan rope lama dan penggabungan rope baru. Gambar.a: Rope hasil operasi concatenate Makalah IF0 Matematika Diskrit Sem. I Tahun 0/0

. Insert Insert adalah operasi menyisipkan sebuah string ke antara posisi tertentu string lain. Operasi ini dilakukan dengan melakukan split di posisi i, kemudian concat rope pertama dan rope yang disisipkan, kemudian concat rope yang baru terbentuk dengan rope kedua. [] ka 0 0 Gambar.a: Rope utama dan rope yang ingin disisipkan 0 Gambar.b: Rope setelah di-split kemudian rope pertama di-concat dengan yang disisipkan. 0 0 Gambar.c: Rope hasil concat kedua. ka 0. Report Delete adalah operasi menghapuskan karakter sebuah string dari posisi i hingga posisi j.. Delete Delete adalah operasi menghapuskan karakter sebuah string dari posisi i hingga posisi j. [] IV. APLIKASI ka 0 Makalah IF0 Matematika Diskrit Sem. I Tahun 0/0

IV. APLIKASI Struktur data rope memiliki banyak aplikasi di dunia komputer dan informatika. Aplikasi utamanya adalah dalam pengolahan teks yang sangat panjang dan juga untuk software teks editor. Akan tetapi, lazimnya teks editor tidak menggunakan rope melainkan menggunakan variasi dari array yang disebut gap buffer. Ini dikarenakan keuntungan dari struktur data rope tidak terlalu terlihat jika data teks yang diolah tidak besar sekali. V. KESIMPULAN Pengolahan data teks yang sangat panjang yang disimpan sebagai string biasa kemungkinan besar akan memakan waktu yang sangat lama. Salah satu alternatif dari string adalah struktur data rope yang menggunakan sebuah binary tree sebagai basisnya. Rope memiliki beberapa operasi dasar seperti index, concatenate, split, insert, delete, dan report yang semuanya memiliki kompleksitas waktu logaritmik yang lebih cepat dibandingkan kompleksitas waktu liniernya string. Rope dapat diaplikasikan dalam sebuah text editor dimana operasi-operasi insert, delete, dan concatenate sering sekali digunakan. VI. UCAPAN TERIMA KASIH Saya mengucapkan terima kasih kepada Pak Rinaldi Munir sebagai dosen Matematika Diskrit saya selama semester ini, dan juga teman-teman dan kelurga saya yang membantu saya selama semester ini. REFERENCES [] Boehm, Hans-J; Atkinson, Russ; Plass, Michael (December ). "Ropes: an Alternative to Strings" (diakses //0 dalam bentuk PDF) 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, Desember 0 Edwin Rachman (NIM 0) Makalah IF0 Matematika Diskrit Sem. I Tahun 0/0