BAB 2 LANDASAN TEORI

dokumen-dokumen yang mirip
BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI


BAB 2 TINJAUAN PUSTAKA

Penggunaan Pohon Huffman Sebagai Sarana Kompresi Lossless Data

KOMPRESI FILE MENGGUNAKAN ALGORITMA HUFFMAN KANONIK

BAB 2 LANDASAN TEORI

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA SHANNON- FANO UNTUK KOMPRESI FILE TEXT

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

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

Kode Huffman dan Penggunaannya dalam Kompresi SMS

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

KOMPRESI TEKS dengan MENGGUNAKAN ALGORITMA HUFFMAN

BAB 2 TINJAUAN PUSTAKA

BAB III METODE KOMPRESI HUFFMAN DAN DYNAMIC MARKOV COMPRESSION. Kompresi ialah proses pengubahan sekumpulan data menjadi suatu bentuk kode

BAB 2 TINJAUAN PUSTAKA

PENERAPAN METODE HUFFMAN DALAM PEMAMPATAN CITRA DIGITAL

Penerapan Pengkodean Huffman dalam Pemampatan Data

Kompleksitas Algoritma dari Algoritma Pembentukan pohon Huffman Code Sederhana

Teknik Pembangkitan Kode Huffman

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

PERBANDINGAN ALGORITMA HUFFMAN DENGAN ALGORITMA SHANNON-FANO

[TTG4J3] KODING DAN KOMPRESI. Oleh : Ledya Novamizanti Astri Novianty. Prodi S1 Teknik Telekomunikasi Fakultas Teknik Elektro Universitas Telkom

BAB 2 TINJAUAN PUSTAKA

Pemampatan Citra Pemampatan Citra versus Pengkodean Citra

Aplikasi Penggambar Pohon Biner Huffman Untuk Data Teks

Entropy Naskah Bahasa Sunda Dan Bahasa Jawa Untuk Kompresi Teks Menggunakan Algoritma Binary Huffman Code

PEMAMPATAN TATA TEKS BERBAHASA INDONESIA DENGAN METODE HUFFMAN MENGGUNAKAN PANJANG SIMBOL BERVARIASI

Kode Huffman. Arya Tri Prabawa Program Studi Teknik Informatika ITB, Bandung 40116,

BAB 2 LANDASAN TEORI

Penerapan Pohon Biner Huffman Pada Kompresi Citra

ANALISA KODE HUFFMAN UNTUK KOMPRESI DATA TEKS ABSTRAK

Kompresi Data dengan Algoritma Huffman dan Perbandingannya dengan Algoritma LZW dan DMC

Perbandingan Algoritma Kompresi Terhadap Objek Citra Menggunakan JAVA

APLIKASI GREEDY PADA ALGORITMA HUFFMAN UNTUK KOMPRESI TEKS

BAB 1 PENDAHULUAN 1.1 LATAR BELAKANG

BAB 2 TINJAUAN PUSTAKA

PEMAMPATAN CITRA (IMA

Algoritma Huffman dan Kompresi Data

SATUAN ACARA PERKULIAHAN ( SAP )

METODE POHON BINER HUFFMAN UNTUK KOMPRESI DATA STRING KARAKTER

BAB 2 TINJAUAN PUSTAKA

Pemampatan Citra. Esther Wibowo Erick Kurniawan

PERBANDINGAN ALGORITMA HUFFMAN DAN ALGORITMA SHANNON-FANO PADA PROSES KOMPRESI BERBAGAI TIPE FILE. Irwan Munandar

JURNAL IT STMIK HANDAYANI

Konstruksi Kode dengan Redundansi Minimum Menggunakan Huffman Coding dan Range Coding

PEMAMPATAN DATA DENGAN KODE HUFFMAN (APLIKASI POHON BINER)

Analisa Perbandingan Rasio Kecepatan Kompresi Algoritma Dynamic Markov Compression Dan Huffman

Kompresi Data dengan Kode Huffman dan Variasinya

STMIK GI MDP. Program Studi Teknik Informatika Skripsi Sarjana Komputer Semester Ganjil Tahun 2010/2011

Teknik Kompresi Citra Menggunakan Metode Huffman

BAB 2 TINJAUAN PUSTAKA

Pemampatan Data dengan Kode Huffman pada Perangkat Lunak WinZip

KOMPRESI CITRA. Pertemuan 12 Mata Pengolahan Citra

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARIHTMETIC CODING DAN SHANNON-FANO PADA KOMPRESI CITRA BMP

PENINGKATAN EFISIENSI KODE HUFFMAN (HUFFMAN CODE) DENGAN MENGGUNAKAN KODE HUFFMAN KANONIK (CANONICAL HUFFMAN CODE)

TEKNIK KOMPRESI LOSSLESS TEXT

BAB 1 PENDAHULUAN Latar Belakang

BAB II TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

BAB I PENDAHULUAN. Saat ini perkembangan teknologi berkembang sangat cepat. Penyimpanan

KODE HUFFMAN UNTUK KOMPRESI PESAN

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

BAB 2 LANDASAN TEORI. 2.1 Kompresi Data

Penggunaan Kode Huffman dan Kode Aritmatik pada Entropy Coding

Analisis Algoritma Huffman Statis Dalam Kompresi Teks Pada Short Message Service (SMS)

BAB IV HASIL DAN UJI COBA

BAB 3 METODOLOGI PENELITIAN. kepustakaan dan studi laboratorium, di mana penulis mempelajari teori-teori teknik

BAB 2 TINJAUAN PUSTAKA

TUGAS MAKALAH INDIVIDUAL. Mata Kuliah : Matematika Diskrit / IF2153 Nama : Dwitiyo Abhirama NIM :

Optimasi Enkripsi Teks Menggunakan AES dengan Algoritma Kompresi Huffman

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

APLIKASI KOMPRESI TEKS SMS PADA MOBILE DEVICE BERBASIS ANDROID DENGAN MENGGUNAKAN ALGORITMA HUFFMAN KANONIK

Kata kunci: pohon biner, metode Huffman, metode Kanonik Huffman, encoding, decoding.

SISTEM ANALISA PERBANDINGAN UKURAN HASIL KOMPRESI WINZIP DENGAN 7-ZIP MENGGUNAKAN METODE TEMPLATE MATCHING

Kompresi. Definisi Kompresi

Pemampatan Data Sebagai Bagian Dari Kriptografi

PENERAPAN ALGORITMA HUFFMAN DALAM DUNIA KRIPTOGRAFI

Pemampatan dengan Menggunakan Algoritma Huffman Dinamik : Algoritma FGK dan Algoritma Vitter

Contoh kebutuhan data selama 1 detik pada layar resolusi 640 x 480 : 640 x 480 = 4800 karakter 8 x 8

PEMAMPATAN DATA DIGITAL MENGGUNAKAN METODA RUN-LENGTH

MULTIMEDIA system. Roni Andarsyah, ST., M.Kom Lecture Series

Perbandingan Kompresi Data Menggunakan Algoritma Huffman dan Algoritma DMC

Implementasi Algoritma Kompresi Shannon Fano pada Citra Digital

KOMPRESI STRING MENGGUNAKAN ALGORITMA LZW DAN HUFFMAN

DATA COMPRESSION CODING USING STATIC AND DYNAMIC METHOD OF SHANNON-FANO ALGORITHM

Pohon. Bahan Kuliah IF2120 Matematika Diskrit. Program Studi Teknik Informatika ITB. Rinaldi M/IF2120 Matdis 1

Perbandingan Kompresi Data Dengan Algoritma Huffman Statik dan Adaptif

BAB III METODOLOGI PENELITIAN. Penelitian ini dilakukan di Jurusan Ilmu Komputer Fakultas Matematika dan

Definisi. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon

BAB II TINJAUAN PUSTAKA. Terdapat beberapa literatur yang mengulas kembali algoritma JBE (Sadiq, et

[TTG4J3] KODING DAN KOMPRESI. Oleh : Ledya Novamizanti Astri Novianty. Prodi S1 Teknik Telekomunikasi Fakultas Teknik Elektro Universitas Telkom

Team project 2017 Dony Pratidana S. Hum Bima Agus Setyawan S. IIP

BAB I PENDAHULUAN 1.1 Latar Belakang

TUGAS AKHIR IMPLEMENTASI ALGORITMA METODE HUFFMAN PADA KOMPRESI CITRA

BAB II DASAR TEORI. 7. Menuliskan kode karakter dimulai dari level paling atas sampai level paling bawah.

Teknik Kompresi Citra Digital untuk Penyimpanan File menggunakan Format Data XML

Transkripsi:

BAB LANDASAN TEORI. Pengertian File Teks File teks merupakan file yang berisi informasi-informasi dalam bentuk teks. Data yang berasal dari dokumen pengolah kata, angka yang digunakan dalam perhitungan, nama dan alamat dalam basis data merupakan contoh masukan data teks yang terdiri dari karakter, angka dan tanda baca. Masukan dan keluaran data teks direpresentasikan sebagai set karakter atau sistem kode yang dikenal oleh sistem komputer. Ada tiga macam set karakter yang umum digunakan untuk masukan dan keluaran pada komputer, yaitu ASCII, EBCDIC, dan Unicode. ASCII (American Code for Information Interchange) merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal. ASCII digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan teks. Kode ASCII memiliki komposisi bilangan biner sebanyak 8 bit, dimulai dari hingga. Total kombinasi yang dihasilkan sebanyak 56, dimulai dari kode hingga 55 dalam sistem bilangan desimal. EBCDIC (Extended Binary Codec Decimal Interchange Code) merupakan set karakter yang diciptakan oleh komputer merk IBM. EBCDIC terdiri dari 56 karakter yang masing-masing berukuran 8 bit. Adanya keterbatasan pada kode ASCII dan EBCDIC, dibuat standar kode internasional baru yang merupakan kode 6 bit yang disebut Unicode. Unicode adalah suatu standar industri yang dirancang untuk

mengizinkan teks dan simbol dari semua sistem tulisan di dunia untuk ditampilkan dan dimanipulasi secara konsisten oleh komputer (Sudewa, Ida Bagus Adi, 3). Gambar. Karakter ASCII.. Format Teks Secara umum, format data teks dibagi menjadi dua bagian, yaitu (Purnomo, Herry et al, 5, hal: ):. Teks sederhana (plain text) Format data teks (*.txt) merupakan contoh format teks jenis ini yang paling populer.. Teks terformat (formatted text) Merupakan teks yang terformat dan mengandung styles. Format data dokumen Microsoft Word (*.doc) merupakan contoh format teks jenis ini yang paling populer.

Contoh format data teks di atas beserta perangkat lunak yang biasa digunakan di antaranya adalah (Purnomo, Herry et al, 5, hal: ):. Format data teks (*.txt) Format data teks merupakan format teks yang digunakan untuk menyimpan huruf, angka, karakter kontrol (tabulasi, pindah baris, dan sebagainya) atau simbol-simbol lain yang biasa digunakan dalam tulisan seperti titik, koma, tanda petik, dan sebagainya. Satu huruf, angka, karakter kontrol atau simbol pada arsip teks memakan tempat satu byte. Berbeda dengan jenis teks terformat yang satu huruf saja dapat memakan tempat beberapa byte untuk menyimpan format dari huruf tersebut seperti font, ukuran, tebal atau tidak dan sebagainya. Kelebihan dari format data teks ini adalah ukuran datanya yang kecil karena tiadanya fitur untuk memformat tampilan teks. Saat ini perangkat lunak yang paling banyak digunakan untuk memanipulasi format data ini adalah Notepad.. Format data dokumen (*.doc) Doc merupakan ekstensi arsip dokumen perangkat lunak Microsoft Word yang paling banyak digunakan dalam menulis laporan, makalah dan sebagainya. Doc merupakan jenis teks terformat yang tidak hanya dapat mengatur tampilan teks seperti styles (font, ukuran huruf, dan sebagainya), namun juga dapat menyisipkan gambar. Kekurangan format teks dokumen ini terletak pada ukuran datanya yang besar. 3. Hyper Text Markup Language (*.htm atau *.html) Merupakan format teks standard untuk tampilan dokumen web.

. Rich Text Format (*.rtf) Format teks ini dikembangkan oleh Microsoft yang dapat dibaca oleh berbagai macam platform, seperti Windows, Linux, Mac OS dan sebagainya... Tipe Teks Tipe teks merupakan tipe dasar yang sudah sangat dikenal dalam kehidupan seharihari. Tipe teks terdiri dari tipe karakter (char) dan tipe string. Tipe karakter (char) terdiri atas satu huruf, angka, tanda baca, atau karakter khusus seperti a,, * dan sebagainya. Tipe string terdiri atas nol atau lebih karakter seperti algoritma, teks dan sebagainya (Purnomo, Herry et al, 5, hal: 99).. Pohon (Tree) Pohon (tree) membentuk salah satu subklas dari graf yang paling banyak digunakan. Dalam ilmu komputer, pohon berguna dalam mengatur dan mengaitkan data dalam suatu basis data. Definisi. Sebuah pohon T (tree T) adalah sebuah graf sederhana yang memenuhi: jika v dan w adalah verteks atau node di T, maka terdapat sebuah lintasan sederhana tunggal dari v ke w (Johnsonbaugh, Richard, 998, hal: 75). Definisi. Sebuah pohon berakar adalah pohon di mana sebuah node tertentu dirancang seperti akar (Johnsonbaugh, Richard, 998, hal: 75).

v v v 3 v v 5 v 6 v 7 Gambar. Pohon Berakar dengan v Sebagai Akar. Pohon secara luas digunakan dalam struktur data ilmu komputer seperti pohon pencarian biner, pohon perentang, tumpukan dan lain lain..3 Pohon Biner (Binary Tree) Definisi.3 Pohon biner (binary tree) adalah pohon berakar yang setiap nodenya mempunyai paling banyak dua anak dan masing-masing anak dari sebuah node disebut sebagai anak kiri (left child) dan anak kanan (right child) (Jong, Jek Siang,, hal: 83 ). Definisi. Pohon biner penuh (full binary tree) adalah pohon biner yang setiap nodenya (kecuali daun) mempunyai tepat dua anak (Jong, Jek Siang,, hal: 83 ). Pohon biner dapat digunakan untuk menyatakan ekspresi aljabar maupun pencarian dan pengurutan data.

Definisi.5 Misalkan T adalah pohon biner dan v V(T) adalah suatu titik cabang dalam T. Subpohon kiri (left subtree) v adalah pohon biner yang:. Titik-titiknya adalah anak kiri v dan semua turunannya.. Garis-garisnya adalah garis-garis dalam E(T) yang menghubungkan titik-titik subpohon kiri v. 3. Anaknya adalah anak kiri v. (Jong, Jek Siang,, hal: 8). w v x Gambar.3. Pohon Biner Gambar di atas merupakan pohon biner dengan dua subpohon, yaitu subpohon kiri v dengan w sebagai akar dan subpohon kanan v dengan x sebagai akar.. Pemampatan Data Salah satu ide yang populer dalam pemampatan data adalah apabila frekuensi kemunculan karakter atau simbol pada suatu pesan diketahui, maka terdapat cara untuk mengkodekan karakter, sehingga membutuhkan ruang yang lebih kecil. Ide ini tidaklah baru, suatu contoh awal pemampatan data adalah kode Morse yang dikembangkan oleh Samuel Morse pada pertengahan abad ke 9. Huruf-huruf yang

dikirim oleh telegraf disandikan dengan titik dan garis. Morse mencatat bahwa huruf tertentu terjadi lebih sering dibanding yang lain. Untuk mengurangi rata-rata waktu yang diperlukan dalam mengirimkan pesan, Morse membuat urutan yang lebih pendek untuk huruf-huruf yang terjadi lebih sering seperti e (.), a (.-) dan urutan yang lebih panjang untuk huruf-huruf yang terjadi agak jarang seperti q (--.-) dan j(.---). Ide penggunaan kode yang lebih pendek untuk karakter yang lebih sering terjadi dan kode yang lebih panjang untuk karakter yang jarang terjadi diambil ke dalam bidang komputasi oleh Claude Elwood Shannon dan Robert M. Fano tahun 95an, ketika ke duanya mengembangkan algoritma pemampatan Shannon-Fano. Beberapa tahun kemudian, David A. Huffman menerbitkan suatu paper tahun 95 yang meningkatkan kinerja algoritma dengan menamainya Huffman coding. Saat ini terdapat berbagai tipe algoritma pemampatan antara lain Huffman, LIFO, LZ77, Dynamic Markov Compression, Block Sorting Lossless, Run Length, Shannon-Fano, Arithmetic dan lain-lain... Pengertian Pemampatan Data Pemampatan data adalah proses pengubahan sekumpulan data menjadi suatu bentuk kode untuk menghemat kebutuhan ruang penyimpanan dan waktu untuk transmisi data (Linawati et al,, hal:7). Pemampatan merupakan salah satu teori informasi yang diperkenalkan oleh Shannon yang bertujuan untuk menghilangkan redundasi dari sumber. Pemampatan bermanfaat dalam membantu mengurangi konsumsi sumber daya yang mahal, seperti ruang hard disk atau perpindahan data melalui internet.

Pemampatan data memiliki beberapa aplikasi, diantaranya (Munir, Rinaldi,, hal: 66):. Pengiriman data (data transmission) pada saluran komunikasi data Data yang telah dimampatkan membutuhkan waktu yang lebih singkat dibandingkan dengan data yang tidak dimampatkan.. Penyimpanan data (data storing) di dalam media sekunder (storage) Data yang telah dimampatkan membutuhkan ruang pada media penyimpanan yang lebih sedikit dibandingkan dengan data yang tidak dimampatkan... Metode Pemampatan Metode pemampatan diklasifikasikan ke dalam dua metode, yaitu (Munir, Rinaldi,, hal: 69):. Metode Lossless Merupakan teknik pemampatan yang menghasilkan hasil penirmampatan tepat sama seperti data semula. Tidak ada informasi yang hilang akibat pemampatan. Tetapi rasio pemampatannya sangat rendah. Misalnya pada data teks, gambar seperti GIF dan PNG. Contoh metode ini adalah Shannon-Fano coding, Huffman coding, Arithmetic coding dan lain sebagainya.. Metode Lossy Merupakan teknik pemampatan yang menghasilkan hasil penirmampatan hampir sama dengan data semula. Ada informasi yang hilang akibat pemampatan, tetapi dapat ditolerir oleh persepsi mata. Misalnya pada gambar

dan MP3. Kelebihan teknik ini adalah rasio pemampatan yang tinggi dibanding metode lossless. Efek pemampatan pada metode pemampatan lossless dapat diukur melalui sejumlah penyusutan suatu file asal dalam membandingkan ukuran dari jenis-jenis pemampatan, yaitu:. Rasio pemampatan, merupakan perbandingan ukuran file setelah pemampatan dengan file semula yang ditunjukkan dalam persentase (ditulis dalam %): ukuran file hasil pemampa tan Rasio Pemampatan = *% ukuran file semula (.). Kecepatan proses pemampatan (ditulis dalam satuan KByte/s): ukuran file semula Kecepatan Proses Pemampatan = (.) waktu komputasi yang dibutuhkan Ada beberapa kriteria yang sering menjadi pertimbangan dalam memilih suatu metode pemampatan yang tepat diantaranya kecepatan pemampatan, sumber daya yang dibutuhkan, kualitas, ukuran file, kompleksitas algoritma dan lain-lain (Munir, Rinaldi,, hal: 66). Kualitas pemampatan dengan kebutuhan memori biasanya berbanding terbalik. Kualitas pemampatan yang bagus umumnya dicapai pada proses pemampatan yang menghasilkan pengurangan memori yang tidak begitu besar dan begitu juga sebaliknya.

.5 Algoritma Huffman Algoritma Huffman diperkenalkan oleh David A. Huffman seorang mahasiswa MIT dalam papernya yang berjudul "A Method for the Construction of Minimum- Redundancy Codes" dan diterbitkan pada tahun 95. Prinsip kode Huffman adalah karakter yang paling sering muncul di dalam data dikodekan dengan kode yang jumlah bitnya lebih sedikit, sedangkan karakter yang jarang muncul dikodekan dengan kode yang jumlah bitnya lebih panjang. Algoritma Huffman menggunakan tabel frekuensi kemunculan karakter untuk menggambarkan setiap karakter menjadi kode atau string biner. Kode atau string biner yang digunakan untuk mengkodekan setiap karakter dinamakan kode Huffman. Algoritma Huffman yang akan dibahas dalam tulisan ini adalah algoritma Huffman yang menggunakan metode statik, yaitu metode yang menggunakan peta kode yang sama, metode ini membutuhkan dua fase, yaitu fase pertama untuk menghitung frekuensi kemunculan tiap karakter dan menentukan peta kodenya dan fase ke dua untuk mengubah pesan atau data menjadi kumpulan kode yang akan ditransmisikan. Kode optimal untuk sebuah file digambarkan dengan pohon biner penuh, di mana setiap node bukan daun mempunyai dua anak. Pada awalnya Huffman hanya mengkodekan karakter menggunakan pohon biner biasa, namun setelah itu Huffman menemukan bahwa penggunaan algoritma Greedy dapat membentuk kode prefiks yang optimal. Penggunaan algoritma Greedy pada algoritma Huffman adalah pada saat pemilihan dua pohon dengan frekuensi terkecil dalam membuat pohon Huffman. Algoritma Greedy digunakan pada pembentukan pohon Huffman agar meminimumkan total cost yang dibutuhkan. Cost yang digunakan untuk

menggabungkan dua buah pohon pada akar setara dengan jumlah frekuensi dua buah pohon yang digabungkan. Oleh karena itu, total cost pembentukan pohon Huffman adalah jumlah seluruh penggabungan daun-daun. Algoritma Huffman menggunakan struktur data string sebagai masukan, struktur data binary tree pada pembentukan pohon biner dan array untuk mendeklarasikan kumpulan variabel yang bertipe sama..5. Kode Prefix (Prefix Code) Kode prefix (prefix code) membentuk kode Huffman yang optimal, maksudnya adalah tidak ada kode suatu karakter yang merupakan awalan bagi kode karakter yang lain karena semua karakter berada di daun pohon. Dengan begitu tidak ada ambiguitas pada proses penirmampatan data. Kode prefix direpresentasikan sebagai pohon biner berlabel yang dalam hal ini setiap sisi pada pohon biner diberi label untuk subpohon kiri dan diberi label untuk subpohon kanan..5. Algoritma Huffman Huffman memberikan sebuah algoritma untuk membangun sebuah kode Huffman dengan masukan string teks S={s,s,,s n } dan frekuensi kemunculan karakter F={f, f,, f n }, dihasilkan keluaran berupa kode string biner C={c,c,,c n } atau disebut kode Huffman. Algoritma Pemampatan Huffman:

Masukan: daftar karakter-karakter yang telah diurutkan {s,s,,s n } dan frekuensinya {f, f,, f n } Keluaran: kode Huffman dengan n kode. Urutkan karakter berdasarkan frekuensi kemunculan karakter.. Setiap karakter dinyatakan sebagai daun atau pohon bersimpul tunggal. 3. Gabungkan dua daun pohon yang mempunyai frekuensi kemunculan karakter paling kecil pada sebuah akar.. Ulangi langkah tiga hingga tersisa satu buah pohon biner 5. Beri label pada setiap sisi pohon biner. Sisi kiri dilabeli dengan dan sisi kanan dilabeli dengan. 6. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Huffman untuk karakter yang bersesuaian Tabel karakter-karakter yang diurutkan berdasarkan frekuensi kemunculan karakter tersebut berhubungan dengan distribusi probabilitas atau distribusi peluang. Distribusi probabilitas ini berhubungan pada kemungkinan penempatan akar atau subpohon baru yang telah terbentuk. Probabilitas untuk masing-masing karakter adalah frekuensi karakter tersebut dibagi jumlah frekuensi keseluruhan. Untuk proses penirmampatan (decompression) atau menyusun kembali data dari kode biner menjadi sebuah string asli dapat digunakan tabel kode Huffman yang telah terbentuk. Selain menggunakan tabel, cara lainnya adalah menggunakan algoritma penirmampatan.

Algoritma Penirmampatan:. Baca sebuah bit dari rangkaian kode biner.. Mulai dari akar pohon biner. 3. Untuk setiap bit pada langkah, lakukan traversal pada cabang yang bersesuaian.. Ulangi langkah, dan 3 sampai bertemu daun. Kodekan rangkaian bit yang telah dibaca dengan karakter di daun. 5. Ulangi dari langkah hingga tidak ada lagi bit dalam rangkaian kode biner. Contoh. Diberikan string fungsi rekursif sebagai masukan pada pemampatan file teks. Masukan ini terdiri dari karakter-karakter abjad S={f,u,n,g,s,i,r,e,k,spasi} dengan frekuensi kemunculan karakter F={,,,,,,,,,}. Apabila string tersebut menggunakan kode ASCII untuk mengkodekan setiap karakter, maka representasi 5 karakter membutuhkan 5 8 = bit atau 5 bytes. Untuk meminimumkan jumlah bit yang dibutuhkan, panjang kode untuk setiap karakter sedapat mungkin diperpendek, terutama untuk setiap karakter yang frekuensi kemunculannya besar. Jadi, bagaimana memperoleh jumlah minimum bit apabila digunakan algoritma Huffman untuk menghasilkan kode yang merepresentasikan setiap karakter. Dengan menggunakan algoritma Huffman untuk mengkodekan setiap karakter dapat diperoleh kode Huffman sebagai berikut: Masukan: 5 karakter yang telah diurutkan dan tabel frekuensi Keluaran: Kode Huffman

. Pengurutan karakter berdasarkan frekuensi kemunculannya. Karakter pada data diurutkan di dalam tabel secara menaik (asscending order). Tabel. Frekuensi Kemunculan Karakter yang telah Diurutkan Karakter Frekuensi spasi e g k n f i r s u Jumlah 5. Pembentukan pohon Huffman Setiap karakter digambarkan sebagai daun. Gabungkan dua daun yang mempunyai frekuensi kemunculan karakter paling kecil untuk membentuk sebuah akar kemudian akar diurutkan kembali. Akar merupakan jumlah frekuensi dua daun atau subpohon penyusunnya. Iterasi ini dilakukan hingga terbentuk satu buah pohon biner. Beri label dan pada setiap sisi pohon biner. Sisi kiri dilabeli dengan dan sisi kanan dilabeli dengan. Pengurutan kembali akar yang baru terbentuk berhubungan dengan distribusi probabilitas. Pada contoh ini, ada lebih dari satu kemungkinan tempat yang tersedia pada penggabungan karakter spasi dan e dengan frekuensi. Untuk mencegah penggabungan akar baru terlalu cepat maka akar ditempatkan pada posisi terendah. Jadi, akar baru spasi dan e ditempatkan sesudah karakter u. Pembentukan pohon biner dari string fungsi rekursif adalah:

. g: k: n: f: i: r: s: u: spasi: e:. n: f: i: r: s: u: g: k: spasi: e: 3. i: r: s: u: 3 g: k: spasi: e: n: f:. s: u: 3 g: k: spasi: e: n: f: i: r: 5. 3 g: k: spasi: e: n: f: s: u: i: r: 6. 3 n: f: s: u: i: r: g: k: spasi: e: 7. 7 i: r: 3 g: k: spasi: e: n: f: s: u: 8. 7 8 3 n: f: s: u: i: r: g: k: spasi: e:

9. 5 7 8 3 n: f: s: u: i: r: g: k: spasi: e: 5 7 8 3 n: f: s: u: i: r: g: k: spasi: e: Gambar. Pembentukan Pohon Huffman Keterangan gambar: : akar yang dibentuk dari dua daun atau subpohon penyusunnya : daun yang terdiri dari karakter dan frekuensinya 3. Kode Huffman yang diperoleh dari pohon Huffman yang telah terbentuk adalah: Tabel. Tabel Kode Huffman untuk Masing-masing Karakter Karakter Frekuensi (f) Kode Huffman Panjang kode (s hf ) Total panjang (fxs hf ) Spasi E G K n 3 3 f 3 6 i 3 6 r 3 6 s 3 6 u 3 6

Total 5 3 9 Dengan demikian, jumlah bilangan bit yang dibutuhkan oleh algoritma Huffman untuk merepresentasikan string fungsi rekursif adalah 9 bit. String tersebut dimampatkan dengan rasio sebesar: ukuran filehasil pemampa tan Rasio Pemampatan n a = *% ukuran filesem ula 9 m= n p a * % =,8% Dengan demikian string fungsi rekursif dimampatkan menjadi rangkaian bit: Untuk proses penirmampatan (decompression) atau menyusun kembali data dari kode biner menjadi sebuah string asli dapat digunakan tabel kode Huffman yang telah terbentuk atau menggunakan algoritma penirmampatan. Pada proses penirmampatan, rangkaian bit biner dimulai dengan membaca bit pertama yaitu, tidak terdapat bit pada tabel kode Huffman. Lalu baca bit berikutnya, sehingga menjadi, tidak terdapat juga bit, kemudian baca lagi bit berikutnya, sehingga menjadi. Rangkaian bit ini ditemukan pada tabel kode Huffman yaitu bit yang merepresentasikan karakater f. Proses ini terus dilakukan hingga tidak terdapat lagi bit biner..6 Algoritma Shannon-Fano

Shannon-Fano coding merupakan algoritma pertama yang diperkenalkan untuk pemampatan sinyal digital pada papernya yang berjudul A Mathematical Theory of Communication pada tahun 98. Shannon dan Fano terus menerus mengembangkan algoritma ini yang menghasilkan kode biner (binary codeword) untuk setiap karakter yang terdapat pada data dengan redundansi minimum. Algoritma Shannon-Fano didasarkan pada 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 menggunakan struktur data yang sama dengan algoritma Huffman, yaitu struktur data string sebagai data masukan, struktur data binary tree sebagai pembentukan pohon biner dan array sebagai pendeklarasian variabel yang sama..6. Algoritma Shannon-Fano Untuk memperoleh kode Shannon-Fano dengan masukan string teks S={s,s,,s n } dan frekuensi kemunculan karakter F={f, f,, f n }, dihasilkan keluaran berupa string biner C={c,c,,c n } atau kode Shannon-Fano. Algoritma pemampatan Shannon-Fano: Masukan: daftar karakter-karakter yang telah diurutkan {s,s,,s n } dan frekuensinya {f, f,, f n }

Keluaran: kode Shannon-Fano dengan n kode. Urutkan karakter berdasarkan frekuensi dengan kemunculan karakter secara menurun (descending order).. Bagi urutan karakter di dalam tabel frekuensi ke dalam dua subbagian dengan jumlah frekuensi keduanya mendekati atau hampir sama. 3. Berikan label pada subpohon kiri dan label pada subpohon kanan.. Ulangi pembagian pada langkah tiga dan empat pada ke dua bagian secara rekursif hingga masing-masing karakter menjadi daun kode yang bersesuaian. Rekursif dan iterasi merupakan prosedur perulangan dalam menyelesaikan permasalahan pemrograman. Prosedur rekursif merupakan suatu proses yang berulang yang dilaksanakan dengan cara memanggil prosedur atau fungsi yang sama yaitu dirinya sendiri. Sedangkan iterasi merupakan suatu proses perulangan yang dilaksanakan oleh suatu prosedur atau fungsi atau sub program dengan cara memasukkan secara langsung nilai-nilai argumennya. Dalam proses iterasi, proses perulangan dikendalikan oleh suatu pencacah (counter) yang akan selalu berubah setiap kali dilakukan proses perulangan (Purnomo, Herry et al, 5, hal: 99). Contoh. Untuk membandingkan hasil yang diperoleh dengan algoritma Huffman, digunakan string masukan yang sama untuk memperoleh jumlah minimum bit apabila digunakan algoritma Shannon-Fano untuk menghasilkan kode yang merepresentasikan setiap karakter.. Pengurutan karakter berdasarkan frekuensi kemunculannya secara menurun (descending order).

Tabel.3 Frekuensi Kemunculan Karakter yang telah Diurutkan Karakter Frekuensi f i r s u spasi e g k n Jumlah 5. Pembentukan pohon Shannon-Fano Pohon biner dibentuk dengan pembagian tabel karakter yang telah diurutkan ke dalam dua bagian dengan jumlah frekuensi masing-masing subbagian mendekati atau sama. Berikan label pada subpohon kiri dan label pada subpohon kanan. Ulangi pembagian ini secara rekursif hingga masing-masing karakter menjadi daun kode yang bersesuaian. Pembentukan pohon biner dari string fungsi rekursif adalah:. 5 8 7. 5 8 7 3

3. 5 8 7 3 f: i: r: s: u: spasi:. 5 8 7 3 f: i: r: s: u: spasi: e: g: k: n: Gambar.5 Pembentukan Pohon Shannon-Fano 3. Kode Shannon-Fano yang diperoleh dari pohon biner yang telah terbentuk adalah: Tabel. Tabel Kode Shannon-Fano untuk Masing-masing Karakter Karakter Frekuensi (f) Kode Shannon- Fano Panjang kode (s sf ) Total panjang (fxs sf ) f 3 6 i 3 6 r 3 6 s 3 6 u 3 6 spasi 3 3 e g k n Jumlah 5 3 9

Dengan demikian, jumlah bilangan bit yang dibutuhkan oleh algoritma Shannon-Fano untuk merepresentasikan string fungsi rekursif adalah 9 bit. String tersebut dimampatkan dengan rasio sebesar: ukuran filehasil pemampa tan Rasio Pemampatan n a = *% ukuran filesem ula 9 m= n p a * % =,8% Dengan demikian string fungsi rekursif dimampatkan menjadi rangkaian bit: Untuk proses penirmampatan (decompression) atau menyusun kembali data dari kode biner menjadi sebuah string asli dapat digunakan tabel kode Shannon-Fano yang telah terbentuk atau menggunakan algoritma penirmampatan. Pada proses penirmampatan, rangkaian bit biner dimulai dengan membaca bit pertama yaitu, tidak terdapat bit pada tabel kode Shannon-Fano. Lalu baca bit berikutnya, sehingga menjadi, tidak terdapat juga bit pada kode Shannon-Fano, lalu baca lagi bit berikutnya, sehingga menjadi. Rangkaian bit ini ditemukan pada tabel kode Shannon-Fano yaitu bit yang merepresentasikan karakater f. Proses ini terus dilakukan hingga tidak terdapat lagi bit biner. Berdasarkan hasil pemampatan string fungsi rekursif menggunakan algoritma Huffman pada Contoh., diperoleh string hasil pemampatan yang berukuran 9 bit, sedangkan pemampatan dengan algoritma Shannon-Fano pada Contoh. juga diperoleh string hasil pemampatan yang berukuran sama yaitu 9 bit.

Dengan demikian, ke dua algoritma dapat menghemat pemakaian ruang media penyimpanan dari pada menyimpan file dengan kode ASCII yang berukuran bit.