Anda di halaman 1dari 18

MAKALAH

ARITHMETIC CODING

DISUSUN OLEH :

CHAERUNISAI BAHAR D411 10 266

MUTHIA DWI WULANDARI D411 10 275

JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS HASANUDDIN

2013

BAB I ENDAHULUAN

A!

L"#"$ B%&"'"() Dalam komunikasi data, pesan atau message yang dikirim sering kali

ukurannya sangat besar sehingga waktu penerimaannya lama. Begitu juga dengan penyimpanan data, arsip atau file yang berukuran besar memakan ruang penyimpanan yang besar. Kedua masalah ini dapat diatasi dengan mengkodekan pesan atau isi arsip sesingkat mungkin, sehingga waktu pengiriman pesan relatif cepat, dan ruang penyimpanan yang dibutuhkan juga sedikit. Cara pengkodean seperti ini disebut pemampatan atau kompresi data. Kompresi data dilakukan dengan mengkodekan setiap karakter di dalam pesan atau arsip dengan kode yang lebih pendek. Secara umum ada dua metode kompresi data yaitu lossless compression dan lossy compression. Lossless compression merupakan metode kompresi yang mempertahankan keutuhan informasi yang dikandung oleh data, sehingga proses rekonstruksi yang eksak dapat dilakukan sehingga diperoleh data yang sama persis dengan data aslinya. Sedangkan pada lossy compression, ada informasi yang hilang pada proses kompresi data sehingga rekonstruksi eksak tidak dapat dilakukan. Kompresi lossles ini sangat cocok digunakan untuk mengkompresi data teks, sedangkan kompresi lossless cocok untuk mengkompresi gambar karena pada file gambar tidak mengutamakan ketelitian akan tetapi visualisasi objek yang dilihat oleh mata manusia.

Arithmetic coding adalah salah satu metode kompresi lossless yang memakai teknik statistical modeling yang mengkodekan suatu barisan karakter pesan dengan floating point. Berdasarkan pemodelannya arithmetic coding dibagi menjadi !, yaitu model statis dan dinamis.

B! I*%(#+,+'"-+ M"-"&". "ermasalahan yang dibahas adalah metode arithmetic coding

BAB II EMBAHASAN

Sistem komunikasi dirancang untuk mentransmisikan informasi yang dibangkitkan oleh sumber ke beberapa tujuan. Sumber #nformasi mempunyai beberapa bentuk yang berbeda. Sebagai contoh, dalam radio broadcasting, sumber biasanya sebuah sumber audio $suara atau musik%. Dalam &' broadcasting, sumber informasi biasanya sebuah sumber video yang keluarannya berupa image bergerak. (utput dari sumber)sumber ini adalah sinyal analog dan sumbernya disebut sumber analog. Kontras dengan Komputer dan tempat penyimpanan data $storage%, seperti disk magnetic atau optical, menghasilkan output berupa sinyal diskrit $biasanya karakter binary atau *SC##% dan tentu sanya sumbernya disebut sumber diskrit. Baik sumber analog maupun diskrit, sebuah komunikasi digital dirancang untuk mentransmisikan informasi dalam bentuk digital. Sehingga konsekuensinya keluaran dari sumber harus diubah dahulu menjadi bentuk keluaran sumber digital yang biasanya dilakukan pada source encoder, yang keluarannya dapat diasumsikan sebuah digit biner sekuensial. "ada akhir +,)an dimana dimulainya tahun &eori #nformasi, ide pengembangan metode coding yang efisien baru dimulai dan dikembangkan. Dimulainya penjelajahan #de dari entropy, information content dan redundansi. Salah satu ide yang popular adalah apabila probabilitas dari simbol dalam suatu

pesan diketahui, maka terdapat cara untuk mengkodekan simbol, sehingga pesan memakan tempat yang lebih kecil. -odel pertama yang muncul untuk kompresi sinyal digital adalah Shannon).ano Coding. Shannon dan .ano $/0+1% terus)menerus

,mengembangkan algoritma ini yang menghasilkan codeword biner untuk setiap simbol $unik% yang terdapat pada data file. Huffman coding 2/03!4 memakai hampir semua karakteristik dari Shannon).ano coding. 5uffman coding dapat menghasilkan kompresi data yang efektif dengan mengurangkan jumlah redundansi dalam mengkoding simbol. &elah dapat dibuktikan, bahwa 5uffman Coding merukan metode fi6ed)length yang paling efisien. "ada limabelas tahun terakhir, 5uffman Coding telah digantikan oleh arithmetic coding. Arithmetic coding melewatkan ide untuk menggantikan sebuah simbol masukan dengan kode yang spesifik. *lgoritma ini menggantikan sebuah aliran simbol masukan dengan sebuah angka keluaran single floating)point. 7ebih banyak bit dibutuhkan dalam angka keluaran, maka semakin rumit pesan yang diterima. Algoritma Dictionary-based compression menggunakan metode yang sangat berbeda dalam mengkompres data. *lgoritma ini menggantikan string variable)length dari simbol menjadi sebuah token. &oken merupakan sebuah indek dalam susunan kata di kamus. *pabila token lebih kecil dari susunan kata, maka token akan menggantikan prase tersebut dan kompresi terjadi.

Kompresi data $pemampatan data% merupakan suatu teknik untuk memperkecil jumlah ukuran data $hasil kompresi% dari data aslinya. "emampatan data umumnya diterapkan pada mesin komputer, hal ini dilakukan karena setiap simbol yang dimunculkan pada komputer memiliki nilai bit)bit yang berbeda. -isal pada *SC## setiap simbol yang dimunculkan memiliki panjang 1 bit, misal kode * pada *SC## mempunyai nilai desimal 8 93, jika dirubah dalam bilangan biner menjadi ,/,,,,,,/. "emampatan data digunakan untuk mengurangkan jumlah bit)bit yang dihasilkan dari setiap simbol yang muncul. Dengan pemampatan ini diharapkan dapat mengurangi $memperkecil ukuran data% dalam ruang penyimpanan. Saat ini terdapat berbagai tipe algoritma kompresi, antara lain : Huffman, Arithmetic Coding, LI !, L"H# , L"$$ dan %ariannya &L"$', L"(, )"I*+, Dynamic Marko% Compression &DMC+, ,lock--orting Lossless, .un-Length, -hannon- ano, **M &*rediction by *artial Matching+, ,urro/s(heeler ,lock -orting dan Half ,yte0
-etode kompresi data bisa dibagi menjadi dua kelompok besar: dictionary based dan tatistical based. Dictionary based bekerja dengan mengganti kelompok simbol

dalam data menjadi kode)kode dengan panjang tertentu. Dengan asumsi kode)kode tersebut secara umum lebih pendek dari kelompok simbol yang digantikan. -tatistical based melakukan kompresi dengan pendekatan yang berbeda. Simbol)simbol yang ada di)encode satu per satu. "anjang dari kode output akan bervariasi tergantung dari probabilitas frekuensi pemunculan simbol. Simbol dengan probabilitas rendah akan diencode dengan jumlah bit yang banyak. Sedang simbol dengan probabilitas tinggi akan diencode dengan jumlah bit yang

sedikit. Contoh dari dictionary based di antaranya adalah 7empel ;iv <elch. Sedangkan contoh dari statistical based adalah 5uffman Coding dan *rithmetic Coding. Dalam hal ini algoritma yang paling baru adalah *rithmetic Coding. Dengan latar belakang ini, terlihat masih diperlukannya perbandingan)perbandingan untuk menentukan algoritma mana yang sebaiknya dipakai dalam melakukan kompresi data. &ujuan utama penulisan makalah ini adalah untuk menunjukkan kelebihan *rithmetic Coding dibandingkan dengan algoritma 5uffman Coding yang sudah terkenal dan banyak dipakai. &ujuan berikutnya adalah memberikan alternative implementasi algoritma *rithmetic Coding untuk mengatasi masalah presisi bit. "ada makalah ini terutama akan dibahas tentang *rithmetic Coding. "embahasan akan dilakukan mulai dengan penjelasan algoritma dasar *rithmetic Coding. Berikutnya akan dilakukan perbandingan dengan algoritma 5uffman Coding. Kemudian dilanjutkan dengan alternatif implementasi algoritma *rithmetic Coding. Di bagian terakhir akan diambil kesimpulan tentang implementasi bagaimana yang sebaiknya dipakai untuk *rithmetic Coding.

"ada dasarnya algoritma kompresi data melakukan penggantian satu atau lebih simbol input dengan kode tertentu. Berbeda dengan cara tersebut, Arithmetic coding mengantikan satu deretan simbol input dengan sebuah bilangan loating *oint0 Semakin panjang dan kompleks pesan yang dikodekan, semakin banyak bit yang diperlukan untuk keperluan tersebut. (utput dari arithmetic Coding ini adalah satu angka yang lebih kecil dari / dan lebih besar atau sama dengan ,. *ngka ini secara unik dapat di) decode sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka tersebut.

=ntuk menghasilkan angka output tersebut, tiap simbol yang akan di) encode diberi satu set nilai probalitas. Contoh, andaikan kata TELEMATIKA akan di)encode. *kan didapatkan tabel !./ dibawah. T"/%& 2!1 Contoh tabel probalitas untuk kata >&?7?-*&#K*@ K"$"'#%$ * ? # K 7 & $0/"&+#"! /, ! /, / /, / /, / /, / /, ! /,

Setelah probalitas tiap karakter diketahui, tiap simbol karakter akan diberikan range tertentu yang nilainya berkisar di antara , dan /, sesuai dengan probalitas yang ada. Dalam hal ini tidak ada ketentuan urut)urutan penetuan segmen, asalkan antara encoder dan decoder melakukan hal yang sama. Dari tabel !./ diatas dibentuk tabel !.! berikut.

T"/%& 2!2 Aange simbol untuk kata >&?7?-*&#K*@ K"$"'#%$ * ? # K 7 & $0/"&+#"! /, ! /, / /, / /, / /, / /, ! /, R"()% ,.,, B ,.!, ,.!, B ,.+, ,.+, B ,.3, ,.3, B ,.9, ,.9, B ,.C, ,.C, B ,.1, ,.1, B /.,,

Dari tabel ini, satu hal yang perlu dicatat adalah tiap karakter melingkupi range yang disebitkan kecuali bilangan yang tinggi. Dadi huruf simbol E&F sesungguhnya mempunyai range mulai dari ,.1, sampai dengan ,.0000G selanjutnya untuk melakukan proses encoding dipakai algoritma berikut. ) ) ) ) ) ) Set low 8 ,., Set high 8 /., <hile $simbol input masih ada% do *mbil simbol input CA 8 high B low 5igh 8 low H CA I highJrange $simbol%

) ) )

7ow 8 high H CA I lowJrange $simbol% ?nd <hile Cetak 7ow Di sini E7owF adalah output dari proses Arithmetic coding0 =ntuk kata E&?7?-*&#K*F di atas, pertama kita ambil karakter E&F.

Kilai CA adalah / B , 8 /. 5ighJrange $&% 8 /.,,, 7owJrange $&% 8 ,.1,, Kemudian didapatkan nilai high 8 ,.,, H CAI/.,, 8 /.,,, Sedangkan nilai low 8 ,.,, H CAI,.1, 8 ,.1,. Kemudian diambil karakter E?F. Kilai CA adalah /., B ,.1 8 ,.!. 5ighJrange $?% 8 ,.+,, 7owJrange $?% 8 ,.!,. Kemudian didapatkan nilai high 8 ,.1, H CAI,.+ 8 ,.11. Sedangkan nilai low 8 ,.1, H CAI,.! 8 ,.1+. Dan seterusnya yang diringkas dalam tabel !.L berikut: T"/%& 2!3 "roses encoding untuk kata >&?7?-*&#K*@ S L01 ,., & ? 7 ? * & # K ,.1 ,.1+ ,.19+ ,.19+1 ,.193L9 ,.193L9 ,.193LC!1 ,.193LC+,1 ,.193LC+!+ H+). /., /., ,.11 ,.191 ,.1939 ,.193++ ,.193++ ,.193LC9 ,.193LC++ ,.193LC+!C! CR /., ,.! ,.,+ ,.,,+ ,.,,,1 1?),3 /.9?),3 L.!?),9 L.!?),C L.!?),1

,.193LC+!+

,.193LC+!+9

9.+?),0

Dari proses ini didapatkan nilai 7ow 8 ,.193LC+!+. Kilai inilah yang ditransmisikan untuk membawa pesan >&?7?-*&#K*@ Sedangkan untuk melakukan proses decoding, maka dipakai algoritma sebagai berikut : ) ) *mbil 1ncoded-symbol &1-+ Do ) ) ) ) ) ) Cari range dari simbol yang melingkupi 1Cetak simbol CA 8 5ighJAange B 7owJAange ?S 8 ?S B 7owJAange ?S 8 ?S CA

=ntil simbol habis

Dalam hal ini simbol habis bisa ditandai dengan simbol khusus $?nd of -essage% misalnya, atau dengan menyertakan panjang pesan waktu dilakukan transmisi. =ntuk pesan yang tadi di encode $?S 8 ,.193LC+!+% dilakukan proses decoding sebagai berikut. Didapatkan range simbol yang melingkupi ?S adalah simbol atau karakter E&F, range simbol dilihat dari tabel !.+. T"/%& 2!4 &abel "robabilitas Karakter K"$"'#%$ * $0/"&+#"! /, R"()% ,.,, B ,.!,

? # K 7 &

! /, / /, / /, / /, / /, ! /,

,.!, B ,.+, ,.+, B ,.3, ,.3, B ,.9, ,.9, B ,.C, ,.C, B ,.1, ,.1, B /.,,

-aka penghitungan proses pengkodean baliknya sebagai berikut : 7owJAange 8 ,.1 5ighJAange 8 /., CA 8 /., B ,.! 8 ,.! ?S 8 ,.193LC+!+ B 7owJAange 8 ,.,93LC+!+ ?S 8 ,.,93LC+!+ CA ?S 8 ,.L!91C/!

=ntuk lebih ringkasnya proses decoding bias dilihat dalam tabel !.3 dibawah ini :

T"/%& 2!5 "roses Decoding untuk kata >&?7?-*&#K*@ ES ,.193LC+!+ ,.L!91C/! ,.9L+L39 K"$"'#%$ & ? 7 L01 ,.1 ,.! ,.9 H+). /., ,.+ ,.C CR ,.! ,.! ,./

,.L+L39 ,.C/C1 ,./C1 ,.10 ,.+3 ,.3 ,

? * & # K *

,.! ,.C ,., ,.1 ,.+ ,.3 ,.,

,.+ ,.1 ,.! /., ,.3 ,.9 ,.!

,.! ,./ ,.! ,.! ,./ ,.! ,.!

K%2(#2()"( A$+#.3%#+4 C0*+() *+/"(*+()'"( *%()"( H2,,3"( C0*+()


"ada bagian ini akan dicoba untuk membandingkan antara Huffman Coding dan Arithmetic Coding. Huffman Coding akan menghasilkan / kode output untuk tiap

simbol yang di)encode. "anjang paling pendek adalah / bit. Dumlah bit paling optimal yang dipakai untuk melakukan encoding adalah log / p. Di mana p adalah probabilitas dari simbol yang diberikan. Contohnya jika probabilitas sebuah simbol / 9+, maka jumlah bit yang dipakai sebagai kode adalah log! 9+ 8 9 bit. Mang menjadi masalah di sini adalah jumlah bit harus merupakan bilangan bulat. Dadi jika probabilitasnya / L. Seharusnya jumlah bit optimal adalah /.9. &api harus dibulatkan menjadi !, sehingga mengakibatkan kompresi yang kurang
optimal.

-asalah ini akan terlihat jika ada salah satu simbol yang mempunyai probabilitas tinggi.

Contoh, simbol N mempuyai probabilitas 0,O, sedang ?(- $end of message% probabilitasnya /,O. *kan ditransmisikan pesan NNNNNNNN. "ada Huffman Coding2 N butuh ,./3 bit / bit ?(- butuh L.L bit ! bit &otal untuk pesan tersebut butuh /, bit =ntuk arithmetic coding, proses encoding bias dilihat pada tabel 9 berikut.

Sebagai output, bisa digunakan angka antara low dan high. Semisal ,.+/. =ntuk itu Cuma dibutuhkan C bit. Sedangkan dengan Huffman Coding dibutuhkan /, bit. *ndaikata ada /,, simbol, 00 di antaranya adalah N dan / simbol ?(-. Huffman Coding akan memerlukan jauh lebih banyak bit dibandingkan dengan arithmetic coding0 "erbandingan kedua adalah dari segi implementasi. =ntuk Huffman Coding dibutuhkan binarytree0 Seperti sudah diketahui, binary-tree ini adalah proses yang

mahal, apalagi jika diterapkan dengan kondisi statistik yang berubah)ubah $ adapti%e coding%. Sedangkan arithmetic coding hanya memerlukan operasi aritmetik biasa.

I35&%3%(#"-+ A$+#.3%#+4 C0*+()


#mplementasi *rithmetic Coding harus memperhatikan kemampuan encorder dan decoder, yang pada umumnya mempunyai keterbatasan jumlah mantissa $angka dibelakang koma%. 5al ini dapat menyebabkan > error@ kesalahan apabila suatu arithmetic coding mempunyai kode dengan floating point yang sangat panjang. -asalah ini bisa diatasi dengan mengimplementasikan menggunakan bilangan integer $/9 atau L! bit integer%. 5al ini juga amat mempercepat proses, karena perhitungan integer jauh lebih cepat dari perhitungan floating point. =ntuk implementasi tersebut, langkahnya adalah sebagai berikut: ) "ertama ditetapkan nilai 5igh dan 7ow, sesuai dengan panjang register. =ntuk /9 bit 5igh 8 P....Q 7ow8P,,,,. ) &etapkan nilai CA CA 8 5igh B 7ow H/ ) <hile $simbol input masih ada% do ) *mbil simbol input ) 5igh 8 low H CAIhighJrange $simbol% B / ) 7ow 8 low H CAIlowJrange $simbol% ) CA 8 5igh B 7ow H / ) #. digit pertama sama maka S5#.& (=& digit pertama ) ?nd <hile ) S5#.& (=& digit pertama jika masih dibutuhkan ) Cetak 7ow Sebagai ilustrasi digunakan contoh pada bagian terdahulu. Dalam hal ini digunakan nilai desimal. 5#R5 8 000000 arithmetic coding

7(< 8 ,,,,,, =ntuk jelasnya proses tersebut bisa dilihat pada tabel C.=ntuk proses decoding prosesnya sama dengan proses sebelumnya. Dalam proses ini ada L variabel yang penting 5igh, low, dan output. Kilai high dan low mempunyai korespondensi dengan nilai high dan low yang ada pada proses encoding. Dengan membandingkan digit pertama dari high dan low juga menentukan kapan dilakukan shift in dari kode simbol yang ada.

&abel C. Contoh ?ncoding dengan Bilangan #nteger untuk Kata E&?7?-*&#K*F

BAB III ENUTU A! K%-+352&"(


Dari pembahasan di atas dapat ditarik Ekesimpulan sebagai berikut : /. *lgoritma Arithmetic Coding ini cukup baik dipakai untuk kompresi data !. *lgoritma ini akan lebih optimal dari Huffman Coding jika ada data simbol yang mempunyai probailitas besar $sebagai konsekuensi, jumlah banyak%. L. =ntuk implementasi Arithmetic Coding sebaiknya dilakukan dengan perhitungan bilangan #nteger.

Anda mungkin juga menyukai