2.4 Run Length Encoding
Algoritma Run Length Encoding mengurangi ukuran karakter string yang berulang. Algoritma ini memanfaatkan karakter yang berulang secara berurutan pada sebuah
data dengan mengkodekannya dengan sebuah string yang terdiri dari jumlah karakter yang berulang dan diikuti dengan karakter itu sendiri. Sehingga banyak tidaknya
karakter yang berulang pada sebuah data menjadi penentu keberhasilan kompresi algoritma RLE.
Setiap kode perlu ditambahkan sebuah penanda marker byte yang berfungsi untuk menghindari keambiguan pada saat decoding. Jadi, secara umum format kode
yang dihasilkan oleh algoritma RLE dapat dilihat pada Tabel 2.7.
Tabel 2.7. Format kode karakter berulang
m n
s
Keterangan : m : Sebuah penanda marker byte.
n : Jumlah deret karakter yang berulang. s : Karakter yang berulang tersebut.
Contoh : String
: “AAABBBBBCCDDDCCCCC” Kompresi RLE
: “3A4B2C3D5C” Sebaiknya yang dipilih sebagai penanda m, adalah karakter yang jarang
digunakan pada data seperti tanda , , |, atau ~. Namun, apabila penanda m terdapat pada data, cukup dengan mengkodekannya sebanyak dua kali, sehingga apabila
penanda tersebut muncul dua kali secara berturut-turut saat decoding, maka penanda tersebut dianggap sebagai karakter asli.
2.5 Kompleksitas Algoritma
Secara informal algoritma adalah suatu prosedur komputasi yang terdefenisi dengan baik yang mengambil beberapa nilai atau sekumpulan nilai sebagai input dan
menghasilkan beberapa nilai atau sekumpulan nilai sebagai output. Dengan demikian algoritma adalah suatu urutan langkah-langkah komputasi yang mentransformasikan
input menjadi output Cormen Thomas H, 2001. Secara singkat, algoritma merupakan langkah-langkah logis untuk pemecahan suatu masalah. Untuk
Universitas Sumatera Utara
menerangkan model abstrak pengukuran waktu dan ruang maka digunakan suatu fungsi yang menjelaskan bagaimana ukuran masukan data n mempengaruhi
perfomansi algoritma yang disebut sebagai kompleksitas algoritma. Pada saat penentuan kompleksitas algoritma, ada beberapa istilah yang sering
digunakan untuk menunjukkan kinerja suatu algoritma untuk ukuran input n, yaitu best-case, average-case, dan worst-case yang masing-masing menyatakan
kompleksitas keadaan terbaik, keadaan rata-rata, dan keadaan terburuk dari suatu algoritma. Namun, pada prakteknya penentuan nilai pasti untuk setiap case tersebut
sulit dilakukan. Jadi, yang dilakukan hanyalah analisis asimtotik dari suatu algoritma, yaitu bagaimana pertumbuhan fungsi growth of function suatu algoritma dipengaruhi
oleh input n yang semakin membesar menuju ke tak terhingga infinity. Dalam analisis asimtotik, ada beberapa notasi yang sering digunakan untuk
menunjukkan batas-batas fungsi asimtot, yaitu notasi Big-O, Big-Omega, dan Big- Theta yang masing-masing menunjukkan batas atas upper bound, batas bawah
lower bound, dan batas atas dan batas bawah tight bound dari fungsi asimtot.
2.5.1 Big – O
Notasi Big-O adalah notasi matematika yang digunakan untuk menggambarkan suatu fungsi asimtotik. Notasi Big-O sering juga digunakan untuk menjelaskan
seberapa besar ukuran dari suatu data mempengaruhi penggunaan sebuah algoritma dari sumber komputasi. Notasi ini pertama kali diperkenalkan pada tahun 1894 oleh
Paul Bachman, yaitu pada volume kedua dari bukunya Analytische Zahlentheorie analisis teori bilangan sehingga notasi Big-O biasa juga disebut sebagai notasi
Landau Landau notation, Bachman-Landau notation, atau notasi asimtotik asymptotic notation.
Notasi big O adalah fungsi yang berkaitan dengan kelajuan proses dari pada kelajuan pertambahan data. Notasi big O merupakan sesuatu nilai dari penyeleasian
masalah dengan merujuk proses kerja dari penyelesaian masalah tersebut. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Keefesien algoritma diukur
dari beberapa jumlah waktu dan ruang space memory yang dibutuhkan untuk menjalankannya. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran
masukan n, yang menyatakan jumlah data yang diproses. Dengan menggunakan besaran kompleksitas waktu dan ruang algoritma, dapat menentukan laju peningkatan
Universitas Sumatera Utara
waktu dan ruang yang diperlukan algoritma dengan meningkatkan ukuran masukan n. Untuk menjelaskan konsep Big-O, diasumsikan terdapat dua fungsi f dan g,
dengan kecepatan tingkat pertumbungan yang berbeda. Misalnya, fn = 100n
2
, dan gn = n
4
. Perbandingan pertumbuhan fungsi f dan g dapat dilihat pada Table 2.8, grafik fungsi f dan g dapat dilihat pada Gambar 2.4.
Tabel 2.8 Perbandingan
Pertumbuhan fungsi f dan g
Gambar 2.4 Grafik fungsi f dan g
Dari tabel 2.8 terlihat bahwa fungsi gn memiliki tingkat pertumbuhan yang lebih cepat dari pada fn saat n 10, dan dapat dikatakan bahwa fn adalah Big-O
dari gn. Defenisi Big-O: Misalkan fn dan gn adalah dua fungsi asimtot nonnegatif. Dapat dikatakan bahwa fn = Ogn, jika dan hanya jika terdapat dua
konstanta positif C dan n0 sehingga demikian fn
≤ Cgn saat n ≥ n0. Makna notasi Big-O adalah jika sebuah algoritma mempunyai waktu asimptotik
Ofn, maka jika n dibuat semakin besar, waktu yang dibutuhkannya tidak akan pernah melebihi suatu konstanta C dikali dengan fn. Jadi, fn adalah batas lebih atas
upper bound dari Tn untuk n yang besar. Kita katakana Tn berorde paling besar fn Munir, 2006.
n fn
gn 10
10.000 10.000
50 250.000
6.250.000 100
1.000.000 100.000.000
150 2.250.000
506.250.000 1
10 g
f
Universitas Sumatera Utara
2.6 Penelitian yang Relevan