Run Length Encoding Kompleksitas Algoritma

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