Anda di halaman 1dari 5

Seminar Nasional Inovasi dan Teknologi (SNIT) 2012

TEKNIK KOMPRESI DATA MENGGUNAKAN ALGORITMA


SHANNON FANO

Santoso Setiawan
AMIK Bina Sarana Informatika, Jl. Kramat Raya 18, Jakarta Pusat 10450, Indonesia
E-mail : santoso.setiawan@gmail.com

Abstrak - Encoding (encoding) is an important process in the world of informatics. At present the ability to send
and receive information quickly is critical. The larger pieces of data, the longer time spent in the delivery and
the greater the chance of data lost in transit. Therefore needed a way (process) to compress the data into a form
that is more optimal code without destroying the information contained by the data.
Key words: Encoding, Data Compression, Information

1. PENDAHULUAN hanya digunakan agar penyimpanan kalimat tersebut


dalam memory komputer tidak memakan tempat yang
Dalam dunia modern sekarang ini kebanyakan banyak.
aktivitas manusia selalu berhubungan dengan
dokumentasi atau data. Data-data yang ada harus 2. PEMBAHASAN
tersimpan dengan rapi dan dapat digunakan setiap saat
apabila dibutuhkan. Biasanya data-data tersebut tidak Kompresi Data
hanya digunakan sendiri, tetapi juga dibutuhkan pihak Kompresi data berasal dari bahasa Inggris yaitu
lain, untuk itu perlu adanya suatu sistem penyimpanan “Compression”. Kompresi data (pemampatan data)
data dan pertukaran data atau komunikasi data yang merupakan suatu teknik untuk memperkecil jumlah
baik agar dapat menunjang aktivatas manusia. Media ukuran data (hasil kompresi) dari data aslinya. Hal itu
komunikasi data dan penyimpanan data yang saat ini juga berarti menyimpan data lebih banyak daripada
sedang berkembang adalah media komunikasi data cara konvensional (tanpa dikompresi) pada ukuran
dan media penyimpanan data elektronik. Kapasitas tempat penyimpanan yang sama besarnya. Secara
media komunikasi data dan penyimpanan data umum kompresi data terdiri dari pengambilan simbol-
elektronik yang digunakan saat ini bukanlah tak simbol atau karakter-karakter sebagai masukan dan
terbatas, dan membutuhkan biaya yang cukup mahal. mengubahnya menjadi kode-kode. Jika kompresi
Salah satu upaya yang dapat dilakukan adalah dengan tersebut efektif maka kode-kode yang dihasilkan akan
melakukan kompresi terhadap data yang akan berukuran lebih kecil daripada karakter-karakter
disimpan atau sebelum dikirim, dengan demikian asalnya. Keputusan untuk mengubah karakter atau
dapat menghemat penggunaan media penyimpanan kumpulan karakter menjadi kode tertentu diambil
data serta media komunikasi data elektronik. berdasarkan sebuah model. Karena itu elemen-elemen
Kompresi merupakan pengurangan ukuran suatu dasar dari kompresi data ialah permodelan dan
berkas menjadi ukuran yang lebih kecil dari aslinya. pengkodean.
Pengompresian berkas ini sangat menguntungkan Keuntungan data yang terkompresi menghemat
manakala terdapat suatu berkas yang berukuran besar tempat penyimpanan serta dapat mempercepat proses
dan data di dalamnya mengandung banyak pengiriman data, mempersulit pembacaan data oleh
pengulangan karakter. Adapun teknik dari kompresi pihak yang tidak berkepentingan, dan memudahkan
ini adalah dengan mengganti karakter yang berulang- distribusi data dengan media removable seperti flash
ulang tersebut dengan suatu pola tertentu sehingga disk, CD, DVD, dan lain-lain
berkas tersebut dapat meminimalisasi ukurannya. Kompresi data untuk mengurangi kuantitas data
Misalnya terdapat kata ”Pagi ini cuaca sangat sambil tetap mempertahankan kualitas hasilnya.
cerah. Besok pagi belum tentu cuaca secerah pagi Proses mengurangi kuantitas data tersebut adalah
ini”. Jika ditelaah lagi, kalimat tersebut memiliki dengan membuang informasi-informasi yang tidak
pengulangan karakter seperti ’pagi’, ’ini’, ’cuaca’, dan berguna (redundan) sehingga yang dikirimkan atau
’cerah’. Dalam teknik sederhana kompresi pada disimpan merupakan informasi yang penting.
perangkat lunak, kalimat di atas dapat diubah menjadi Informasi yang redundan ini adalah informasi yang
pola sebagai berikut tidak bisa diekstrak oleh sistem aural atau visual
^ | ( sangat *. Besok ^ belum tentu ( se* ^ |. manusia karena keterbatasan persepsi sistem audio
Dalam kalimat diatas, karakter ’pagi’ diubah visual manusia.
menjadi karakter ^, ’ini’ menjadi |, ’cuaca’ menjadi (, Ada beberapa ciri-ciri yang digunakan untuk
’cerah’ menjadi *, . Saat berkas ini akan dibaca menilai keandalan suatu kompresi. Diantara masing -
kembali, maka perangkat lunak akan mengembalikan masing ciri tersebut terdapat hubungan yang erat dan
karakter tersebut menjadi karakter awal dalam saling mempengaruhi.
kalimat. Pengubangan karakter menjadi lebih singkat 1. Faktor kompresi

Proceedings SNIT 2012: Hal. A-66


Seminar Nasional Inovasi dan Teknologi (SNIT) 2012

Faktor kompresi adalah perbandingan jumlah Kompleksitas dari suatu teknik kompresi
data yang belum dikompresi terhadap jumlah data menentukan sulit atau tidaknya implementasi
hasil kompresi. Semakin bagus suatu kompresi teknik kompresi tersebut.
maka faktor kompresinya semakin tinggi. Akan 4. Interactivity
tetapi faktor kompresi yang tinggi akan Pengguna dapat bebas untuk berinteraksi dengan
mengakibatkan kualitas yang menurun. informasi multimedia untuk mengubah, mencari
2. Kualitas informasi yang diinginkan atau membuang
Suatu teknik kompresi dikatakan baik apabila informasi yang tidak diinginkan.
kualitas data hasil decoding sangatlah mirip bila
Teknik Kompresi Data
dibandingkan dengan aslinya. Faktor kualitas ini
Pembagian teknik-teknik kompresi dan
sangat erat dengan faktor kompresi.
dekompresi data adalah sebagai berikut:
3. Kompleksitas

Gambar 1 Pembagian Teknik Kompresi Data

Teknik kompresi data dapat digolongkan menjadi dua berkas yang telah dikompresi. Algoritma ini
kelompok utama yaitu : Lossy dan Lossless.. biasanya diimplementasikan pada kompresi
a. Lossy Compression berkas teks, seperti program komputer (berkas
Keuntungan dari algoritma ini adalah bahwa rasio zip, rar, gzip, dan lain-lain).
kompresi (perbandingan antara ukuran berkas
yang telah dikompresi dengan berkas sebelum
Algoritma Shannon-Fano
dikompresi) cukup tinggi. Namun algoritma ini
Biasanya sebuah karakter dikodekan dalam kode
dapat menyebabkan data pada suatu berkas yang
ASCII (8 bit) yang telah memiliki panjang tetap (fixed
dikompresi hilang ketika didekompresi. Hal ini
- length). Berbeda dengan cara pengkodean ASCII,
dikarenakan cara kerja algoritma lossy adalah
pengkodean dengan algoritma Shannon-Fano
dengan mengeliminasikan beberapa data dari
menggunakan panjang bit yang bervariasi dalam
suatu berkas. Namun data yang dieliminasikan
mengkodekan sebuah karakter. Karakter yang
biasanya adalah data yang kurang diperhatikan
memiliki frekuensi kemunculan lebih besar memiliki
atau diluar jangkauan manusia, sehingga
panjang bit yang lebih pendek, sebaliknya karakter
pengeliminasian data tersebut kemungkinan besar
yang memiliki frekuensi kemunculan yang lebih kecil
tidak akan mempengaruhi manusia yang
memilki panjang bit yang lebih panjang. Hal ini
berinteraksi dengan berkas tersebut. Contohnya
menyebabkan kode untuk sebuah karakter dengan
pada pengkompresian berkas audio, kompresi
menggunakan cara pengkodean Shannon-Fano tidak
lossy akan mengeleminasi data dari berkas audio
tetap seperti dalam ASCII code.
yang memiliki frekuensi sangat tinggi/rendah
Algoritma Shannon-Fano dikembangkan oleh
yang berada diluar jangkauan manusia. Beberapa
Claude Shannon dari Bell Labs dan RM Fano dari
jenis data yang biasanya masih dapat
MIT. Algoritma Shannon-Fano merupakan algoritma
mentoleransi algoritma lossy adalah gambar,
pertama yang diperkenalkan untuk kompresi sinyal
audio, dan video.
digital pada papernya yang berjudul “A Mathematical
b. Lossless Compression
Theory of Communication” pada tahun 1948.
Pada algoritma lossless compression tidak
Shannon dan Fano terus menerus mengembangkan
terdapat perubahan data ketika mendekompresi

Proceedings SNIT 2012: Hal. A-67


Seminar Nasional Inovasi dan Teknologi (SNIT) 2012

algoritma ini yang menghasilkan kode biner (binary kemunculan karakter yang sama atau hampir
codeword) untuk setiap karakter yang terdapat pada sama. Beri label pada setiap sisi pohon biner, sisi
data dengan redudansi minimum. kiri dilabeli dengan 0 dan sisi kanan dilabeli
Algoritma Shannon-Fano didasarkan pada dengan 1.
variable-length code yang berarti beberapa karakter
pada data yang akan dikodekan direpresentasikan
dengan kode (codeword) yang lebih pendek dari
karakter yang ada pada data. Jika frekuensi
kemunculan karakter semakin tinggi, maka kode
semakin pendek, dengan demikian kode yang
dihasilkan tidak sama panjang, sehingga kode tersebut
bersifat unik.
Algoritma Shannon-Fano merupakan salah satu
algoritma kompresi yang sangat baik dalam
pengkompresian teks. Pada prinsipnya algoritma ini
menggunakan pendekatan top down dalam
penyusunan binary tree. Metode ini sangat efisien
untuk mengkompresi file text yang berukuran besar.

3. HASIL PENELITIAN
Kompresi Data dengan Algoritma Shannon-Fano
Berikut ini adalah sebuah contoh cara pengkodean
sebuah string. Misalnya ada sebuah string
“SHANNON FANO”. Perincian karakter dalam
bentuk ASCII adalah sebagai berikut:
Tabel 1 Perincian karakter ASCII
Gambar 1 Pohon biner Shannon-Fano
Karakter ASCII Ukuran Setelah melihat hasil dari pohon biner, dibuatlah
S 01010011 8 bit sebuah tabel yang berisi identitas dari tiap-tiap
H 01001000 8 bit karakter berdasarkan biner. Proses ini
A 01000001 8 bit dinamakan encoding atau pengkodean. Dalam
N 01001110 8 bit encoding ini, prosesnya adalah membaca urutan
O 01001111 8 bit biner tiap karakter hingga sampai edge dari
F 01000110 8 bit pohon yang berisi karakter yang dicari. Misal,
Spasi 00100000 8 bit akan mencari huruf H, maka baca urutan
karakter dari akar hingga huruf H yaitu 110.
Dalam ASCII string “SHANNON FANO” akan
Proses yang sama akan berlaku untuk karakter-
dikodekan sebagai
karakter berikutnya.
010100110100100001000001010011100100111001001
Dari proses encoding tersebut, diperoleh kode
111010011100010000001000110010000010100111001
Shannon-Fano sebagai berikut:
001111. Pengkodean string ini ke dalam ASCII akan
membutuhkan memori sebesar 12 x 8 bit = 96 bit (12
byte). Kapasitas sebesar 96 bit (12 byte) dapat
dikurangi dengan algoritma Shannon-Fano.
Penggunaan algoritma Shannon Fano dapat dijelaskan
dengan cara sebagai berikut :
1. Buatlah daftar peluang atau frekuensi
kemunculan setiap karakter dari string yang akan
dikodekan, lalu urutkanlah daftar tersebut
menurut frekuensi kehadiran karakter secara
menurun (descending). Deretan karakter ”N A O
S H F (spasi)” direpresentasikan menjadi sebuah
node/simpul. Tabel 3 Kode Shannon-Fano

Tabel 2 Frekuensi kemunculan string

Karakter N A O S H F Spasi
Frekuensi 3 2 2 1 1 1 1
2. Buatlah pohon biner dengan cara membagi node
tersebut menjadi dua dengan jumlah frekuensi

Proceedings SNIT 2012: Hal. A-68


Seminar Nasional Inovasi dan Teknologi (SNIT) 2012

Karakter Kode Shannon-Fano Ukuran biner tersebut adalah 1, ditemukan bahwa anak
N 00 2 bit kanannya bukanlah sebuah daun. Oleh karena itu
A 01 2 bit harus diambil bit berikutnya yaitu bit kedua (angka 0).
O 100 3 bit Karena bit kedua adalah 0 maka harus diambil anak
S 101 3 bit kiri, dan ternyata anak kiri inipun bukan daun, maka
H 110 3 bit itu harus diambil bit berikutnya yaitu bit ketiga (angka
F 1110 4 bit 1). Bit ketiga yang berisi angka 1 ini berada pada anak
Spasi 1111 4 bit
kanan, dan pada anak kanan inilah ditemukan sebuah
daun yang menyimpan karakter S.
3. Dari tabel 3 dapat dilihat bahwa simbol yang Dengan melakukan hal ini secara berulang hingga
sering muncul dikodekan dengan kode yang lebih bit terakhir, maka akan ditemukan bahwa string biner
pendek, demikian juga sebaliknya. Setelah itu 10111001000010000111111100100100 adalah hasil
dilakukan substitusi dari string “SHANNON enkripsi dari string “SHANNON FANO”.
FANO”dengan kode Shannon-Fano yang terdapat Untuk memperjelas contoh ini, disertakan dalam
pada tabel 3, sehingga diperoleh data biner gambar 2 cara menentukan sebuah string biner 110
sebagai berikut: sebagai simbol H berdasarkan kode Shannon Fano
10111001000010000111111100100100. pada tabel 3.
Data biner hasil substitusi kode Shannon-Fano
memiliki ukuran 32 bit setara dengan 2,667 byte,
sedangkan tanpa kompresi dibutuhkan 96 bit
setara dengan 12 bytes, sehingga Algoritma
Shannon-Fano dapat mereduksi penggunaan
memori sebanyak 9,333 byte.
Penguraian Kode Shannon Fano (Decoding)
Penguraian kode atau decoding adalah sebuah
proses untuk menyusun kembali data yang telah
dikompesi sebelumnya sehingga informasi yang
diterima dapat dibaca dan diolah kembali. Decoding
ini adalah lawan dari encoding. Ada 2 cara penguraian
kode Shannon Fano. Cara yang pertama adalah
menggunakan pohon Shannon Fano sedangkan cara
yang kedua adalah menggunakan tabel kode Shannon
Fano.
Berikut adalah penjelasan untuk cara pertama,
yaitu menggunakan pohon Shannon Fano. Langkah –
langkah yang dilakukan dalam decoding
menggunakan pohon Shannon Fano adalah sebagai
berikut :
1. Baca bit pertama dari string biner masukan
2. Lakukan traversal pada pohon Shannon Fano
mulai dari akar sesuai dengan bit yang dibaca.
Jika bit yang dibaca adalah 0 maka baca anak
kiri, tetapi jika bit yang dibaca adalah 1 maka
baca anak kanan. Gambar 2 Contoh penentuan string biner 110 sebagai
3. Jika anak dari pohon bukan daun (simpul tanpa karakter H berdasarkan kode Shannon Fano tabel 3
anak) maka baca bit berikutnya dari string biner
masukan. Cara kedua untuk menguraikan kode Shannon
4. Hal ini diulang (traversal) hingga ditemukan Fano adalah dengan menggunakan tabel kode
daun. Shannon Fano.Oleh karena kode Shannon Fano
5. Pada daun tersebut karakter ditemukan dan disusun menggunakan kode awalan (prefix code)
proses penguraian kode selesai. maka dapat dipastikan bahwa sebuah kode untuk
6. Proses penguraian kode ini dilakukan hingga sebuah karakter yang satu tidak boleh menjadi awalan
keseluruhan string biner masukan diproses. dari kode yang lain. Oleh karena itu pastilah string
Dengan menggunakan kode hasil enkripsi yang biner yang berisi hasil enkripsi dapat dipisahkan
telah ditunjukkan dalam proses encoding sebelumnya, dengan mudah berdasarkan setiap rangkaian bitnya
akan ditunjukkan cara decoding menggunakan pohon untuk diuraikan menjadi informasi semula. Yang
Shannon Fano. perlu dilakukan hanyalah melihat setiap rangkaian bit
Hasil pengkodean string “SHANNON FANO” ke yang ditemukan dalam string biner hasil enkripsi di
dalam string biner adalah 101 110 01 00 00 100 dalam tabel kode Shannon Fano.
00 1111 1110 01 00 100. Bit pertama dari string

Proceedings SNIT 2012: Hal. A-69


Seminar Nasional Inovasi dan Teknologi (SNIT) 2012

Berikut ini akan diberikan contoh cara penguraian Bandung, 2010


kode dengan menggunakan tabel kode Shannon Fano. http://informatika.stei.itb.ac.id/~rinaldi.munir/M
Misalkan akan dilakukan decoding berdasarkan atdis/2009-
string biner yang dihasilkan dari proses encoding 2010/Makalah0910/MakalahStrukdis0910-
sebelumnya. String biner yang dihasilkan sebelumnya 006.pdf
adalah 10111001000010000111111100100100 [2] Christyono. Yuli, Kompresi Data Berdasarkan
dengan tabel kode Shannon Fano yang ditunjukkan Perhitungan Distribusi Probabilitas Kemunculan
pada tabel 3. String biner tersebut dapat dipisahkan Karakter Orde Dua Dalam Teks Bahasa
menjadi rangkaian bit : 101 110 01 00 00 100 00 Indonesia. Semarang. Transmisi, Jurnal Teknik
1111 1110 01 00 100. Hal ini dapat dilakukan Elektro, Jilid 10, Nomor 1, Maret 34 2008, 2008,
dengan mudah karena penyusunan rangkaian bit p.33-37.
tersebut menggunakan kode awalan (prefix code). [3] Fauzi. Rahmad, Analisis Beberapa Teknik
Setelah string biner tersebut dipisah menjadi Coding. Medan, 2003
rangkaian bitnya, hanya perlu dilihat rangkaian bit
yang bersesuaian dengan tabel kode Shannon Fano http://repository.usu.ac.id/handle/123456789
yang ditunjukkan pada tabel 3. Maka akan dihasilkan /1415
string hasil dekripsi, yaitu “ SHANNON FANO”. [4] Kandaga, Tjatur. 2006. Analisis Penerapan
Kompresi dan Dekompresi Data dengan
4. KESIMPULAN Menggunakan Metode Statistik dan Kamus.
Bandung. Jurnal Informatika, Vol. 2, No.2,
1. Algoritma Shannon Fano merupakan salah satu Desember 2006:81 – 91.
algoritma yang baik yang dapat digunakan untuk [5] Kurniawan, Irwan. 2008. Penyandian (Encoding)
mengkomprsi data. dan Penguraian Sandi (Decoding) Menggunakan
2. Pengaplikasiannya yang cukup mudah dengan Huffman Coding. Bandung.
memberikan hasil yang efektif. http://informatika.stei.itb.ac.id/~rinaldi.munir/M
3. Dalam encoding menggunakan Algoritma atdis/2007-2008/Makalah/MakalahIF2153-0708-
Shannon Fano dibutuhkan langkah – langkah : 074.pdf
- Pembentukan pohon biner Shannon Fano [6] Salomon, David. 2004. Data Compression: The
- Pengkodean data berdasarkan pohon Complete Reference, Springer.
Shannon Fano [7] Soendoro, David. 2009. Algoritma Huffman dan
4. Dalam penguraian kode (decoding) sebuah pesan Kompresi Data. Bandung.
yang dikodekan (enkripsi) menggunakan http://informatika.stei.itb.ac.id/~rinaldi.munir/M
Shannon Fano, dibutuhkan langkah – langkah : atdis/2008-2009/Makalah2008/Makalah0809-
- Baca hasil enkripsi 094.pdf
- Pendekripsian disesuaikan dengan pohon [8] Wiryadinata, Romi. 2007. Data Compression
Shannon Fano Coding Using Static And Dynamic Method Of
Shannon-Fano Algorithm. Yogyakarta. Media
DAFTAR PUSTAKA Informatika, Vol. 5, No. 2, Desember 2007, 129-
139 ISSN: 0854-4743
[1] Adhitama, Gagarin, Perbandingan Algoritma
Huffman Dengan Algoritma Shannon-Fano.

Proceedings SNIT 2012: Hal. A-70

Anda mungkin juga menyukai