LISTING PROGRAM
void AboutToolStripMenuItemClick(object sender, EventArgs e) {
void EliasGammaCodeToolStripMenuItemClick(object sender, Even tArgs e)
void ShannonFanoToolStripMenuItemClick(object sender, EventAr gs e)
{
Shannon frmcld = new Shannon(); frmcld.MdiParent=this;
}
void HelpToolStripMenuItemClick(object sender, EventArgs e) {
void ExitToolStripMenuItemClick(object sender, EventArgs e) {
this.Close(); }
void HomeToolStripMenuItemClick(object sender, EventArgs e) {
void ButtonBrowseClick(object sender, EventArgs e) {
OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Document (MsWord)|*.doc"; dialog.Title = "Open file doc : ";
if(dialog.ShowDialog() == DialogResult.OK){
dirName + "\\" + dialog.SafeFileName.ToString(); } Microsoft.Office.Interop.Word.ApplicationClass();
object filenameO = textBoxLoadFilePath.Text.ToString();
= wordApp.Documents.Open(ref filenameO, ref objFalse, ref objTrue, r ef missing, ref missing, ref missing, ref missing, ref missing, ref m issing, ref missing, ref objTrue, ref missing, ref missing, ref missi ng, ref missing);
ipy.UseFile ("eliasgamma.py");
void BtnDecompressEGClick(object sender, EventArgs e) {
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "Word 1997-2003|*.doc|Word 2007-2013|*.docx|Rich Text File|*.rtf|All Files (*.*)|*.*";
conds.ToString ("00") + "." +
void TxtDecompressEliasTextChanged(object sender, EventArgs e) {
}
3. Shannon-Fano.cs
void ButtonBrowseClick(object sender, EventArgs e) {
dirName + "\\" + dialog.SafeFileName.ToString(); } Microsoft.Office.Interop.Word.ApplicationClass();
object filenameO = textBoxLoadFilePath.Text.ToString(); object objFalse = false;
object objTrue = true;
try{
Microsoft.Office.Interop.Word.Document aDoc
= wordApp.Documents.Open(ref filenameO, ref objFalse, ref objTrue, r ef missing, ref missing, ref missing, ref missing, ref missing, ref m issing, ref missing, ref objTrue, ref missing, ref missing, ref missi ng, ref missing);
var size= fileinfo.Length;
void BtnDecompressSFClick(object sender, EventArgs e) {
SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "Word 1997-2003|*.doc|Word 2007-2013|*.docx|Rich Text File|*.rtf|All Files (*.*)|*.*";
MessageBox.Show(ex.ToString());
#title: Elias' Gamma and Shannon-Fano's Algorithm #purpose: Data Compression
#fungsi berikut ini mengembalikan 2 nilai, yaitu:
#(1) list char = karakter apa saja yang ada pada string st #(2) list freq = berapa frequency masing-masing karakter def count_freq(st):
#fungsi berikut ini mengembalikan 2 nilai yaitu: #(1) list freq yang sudah tersortir descending order
#(2) list char yang sudah tersortir mengikuti urutan freq-nya def InsertionSort(f, c):
for i in range(1, n):
#fungsi berikut ini menjumlahkan semua angka yang ada pada list f def sum(f):
s = 0
for i in f: s = s + i return s
#fungsi berikut ini mengembalikan 2 nilai, yaitu:
#(1) difference = beda antara jumlah freq table atas dgn jumlah freq table bawah
#(2) row = baris tempat pemotongan tabel, dihitung dari bawah def findrow(f):
x = abs(sum(upper) - sum(lower)) if x < difference:
difference = x # difference = beda antara jumlah freq table atas dgn jumlah freq table bawah
row = i # row = baris tempat pemotongan table return difference, row
def EliasGamma(st): if len(st) <= 1:
raise Exception('|String| harus > 1') char, freq = count_freq(st)
t = len(char) if t == 1:
return char[0], '1' char, freq = count_freq(st)
def countZero(n):
#fungsi berikut mengubah string-bits menjadi kode ASCII def encode(sb):
#fungsi berikut mengubah kode ASCII kembali menjadi string-bits def decode(code):
sb = sb + '0' * y + d return sb
#fungsi berikut mengubah string-bits kembali menjadi string def decompress(sb, c, s):
freq, char = InsertionSort(freq, char) c, s = EliasGamma(st)
for i in range(len(c)):
sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb)
CR = (uncompressed_bits * 1.0) / compressed_bits return CR
def processEG1(st):
char, freq = count_freq(st)
freq, char = InsertionSort(freq, char) c, s = EliasGamma(st)
for i in range(len(c)):
sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb)
CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100
return SS def processEG2(st):
char, freq = count_freq(st)
freq, char = InsertionSort(freq, char) c, s = EliasGamma(st)
for i in range(len(c)):
sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb)
CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100
for i in range(len(c)):
sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb)
CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100
#title: Elias' Gamma and Shannon-Fano's Algorithm #purpose: Data Compression
#fungsi berikut ini mengembalikan 2 nilai, yaitu:
#(1) list char = karakter apa saja yang ada pada string st #(2) list freq = berapa frequency masing-masing karakter def count_freq(st):
#fungsi berikut ini mengembalikan 2 nilai yaitu: #(1) list freq yang sudah tersortir descending order
#(2) list char yang sudah tersortir mengikuti urutan freq-nya def InsertionSort(f, c):
#fungsi berikut ini menjumlahkan semua angka yang ada pada list f def sum(f):
s = 0
for i in f: s = s + i return s
#fungsi berikut ini mengembalikan 2 nilai, yaitu:
#(1) difference = beda antara jumlah freq table atas dgn jumlah freq table bawah
#(2) row = baris tempat pemotongan tabel, dihitung dari bawah def findrow(f):
row = 1 t = len(f)
for i in range(1, t): upper = f[0:(t-i)] lower = f[t - i:]
x = abs(sum(upper) - sum(lower)) if x < difference:
difference = x # difference = beda antara jumlah freq table atas dgn jumlah freq table bawah
row = i # row = baris tempat pemotongan table return difference, row
#fungsi berikut ini berfungsi melakukan table splitting secara rekursif, sekaligus meng-update kode Shannon-Fano
def split(S, F, C, charset, sf):
split(S1, F1, C1, charset, sf) split(S2, F2, C2, charset, sf)
#fungsi berikut ini mengembalikan 2 nilai, yaitu: #(1) charset = character set
#(2) sf = kode Shannon-Fano yang bersesuaian def ShannonFano(st):
if len(st) <= 1:
raise Exception('|String| harus > 1') char, freq = count_freq(st)
t = len(char) if t == 1:
return char[0], '1' char, freq = count_freq(st)
freq, char = InsertionSort(freq, char) global charset, sf
for i in range(t): code.append('')
split(char, freq, code, charset, sf) return charset, sf
#fungsi berikut mengubah string-bits menjadi kode ASCII def encode(sb):
#fungsi berikut mengubah kode ASCII kembali menjadi string-bits def decode(code):
dl = len(d) y = 8 - dl
sb = sb + '0' * y + d return sb
#fungsi berikut mengubah string-bits kembali menjadi string def decompress(sb, c, s):
freq, char = InsertionSort(freq, char) c, s = ShannonFano(st)
for i in range(len(c)):
sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb)
CR = (uncompressed_bits * 1.0) / compressed_bits return CR
def processSF1(st):
char, freq = count_freq(st)
freq, char = InsertionSort(freq, char) c, s = ShannonFano(st)
for i in range(len(c)):
sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb)
CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100
return SS def processSF2(st):
char, freq = count_freq(st)
freq, char = InsertionSort(freq, char) c, s = ShannonFano(st)
for i in range(len(c)):
sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb)
char, freq = count_freq(st)
freq, char = InsertionSort(freq, char) c, s = ShannonFano(st)
for i in range(len(c)):
sb = string2sb(st, c, s) uncompressed_bits = len(st) * 8 compressed_bits = len(sb)
CR = (uncompressed_bits * 1.0) / compressed_bits SS = (1.0 - 1.0/CR) * 100
code = encode(sb) dc = decode(code)
CURRICULUM VITAE
Nama Lengkap : Nur hennida Br Sitepu Nama Panggilan : Nur
Tempat/ Tgl. Lahir : Ber astagi, 1 Mar et 1992 Jenis Kelamin : Per empuan
Agama : Islam
War ga Negar a : Indonesia
Alamat : Jl. Pasar VII No.12 Padang Bulan Medan
No. HP : 087884858092 / 085658052929
Em ail : nur hestp@gm ail.com
Status : Belum Menikah
Latar Belakang Pendidikan
1. SD
SD Neg 040458 Ber astagi 2. SMP
SMP N.1 Ber astagi 3. SMA
SMA N.1 Ber astagi 4. Univer sitas
Univer sitas Sumater a Utar a
Pengalaman Kerja
No Instansi/ Lembaga Jabatan/ Posisi Tahun
1 LCC Pengajar 2010 – 2011
2 IKLC Kepala Divisi Kar ya / Pengajar 2013 – 2014
Softwar e Aplikasi : Micr osoft Office, Photoshop , Dr eamw eaver Bahasa Pemr ogr aman : C+ + , C#
Sim ulator : Matlab
D ata Pribadi
Pengalaman Organisasi
No Nama Or ganisasi Jabatan Tahun Menjabat
1 OSIS SMA N.1 Ber astagi Sekr etar is Umum 2008 – 2009
2 BKM SMA N.1 Ber astagi Angggota Hum as 2009 – 2010
3 BKM Al-KHUWARIZMI Anggota Kewir ausahaan 2010 – 2011
4 IMILKOM Anggota Kemahasiswaan 2011 – 2012
5 GAMADIKSI Anggota Divisi pendidikan 2011 – 2012
6 UKMI Al-KHUWARIZMI Bendahar a Umum 2011 – 2012
7 IMILKOM Kepala Bir o Kesekr etar iatan 2012 – 2013
8 UKM ROBOTIK SIKONEK Sekr etar is Umum 2013 – 2014
9 IMILKOM Kepala Bir o Kesekr etar iatan 2013 – 2014
10 Relawan TIK Sumater a Utar a Anggota 2013 – Sekar ang
DAFTAR PUSTAKA
Jogiyanto.2005.Analisis dan Desain Sistem Informasi : pendekatan terstruktur teori dan praktik aplikasi bisnis. Yogyakarta : Penerbit ANDI.
Luca, W.D. 2014. Implementasi Metode Kuantisasi Pada Kompresi dan Dekompresi Citra Bitmap dan JPEG. Skripsi. Universitas Sumatera Utara.
Pu, I.M. 2006. Fundamental Data Compression. Amsterdam : Elsevier. Putra, D. 2009. Pengolahan Citra Digital. Yogyakarta: Penerbit ANDI. Salomon, D. 2007. Variable-length Codes for Data Compression. London:
Springer.
Sayood, K. 2006. Introduction To Data Compression 3rd Ed. San Fransisco : Morgan Kaufmann.
Solihin, M. 2013. Perancangan Sistem Pengamanan dan Kompresi Data Teks dengan Fibonacci Encoding dan Algoritma Shannon-Fano serta Algoritma Deflate.
Skripsi.Universitas Sumatera Utara.
Utami, N. L. 2013. Analisis Kombinasi Algoritma KNAPSACK dan RLE pada File Teks. Skripsi. Universitas Sumatera Utara.
Widhiartha, Putu. 2003-2008. Pengantar Kompresi Data. IlmuKomputer.com. Halaman 2.
Widodo,P.P & Herlawati. 2011. Menggunakan UML. Penerbit INFORMATIKA. Bandung.
Zarlis, M. & Handrizal.2008. Algoritma & Pemrograman : Teori dan Praktik dalam Pascal. USU Press. Medan.
Bagherzandi, A. & Oktay, K.Y. Enhancing Wikipedia Search Performance Using
Elias Gamma Code. (Online)
http://www.ics.uci.edu/~djp3/classes/2010_01_CS221/FinalProjects/gamma.p
df (20 Januari 2014).
Firdaus, M. & Buliali, J. L. 2010. Penentuan Kombinasi Teknik Kompresi untuk Mendukung Penyimpanan Data Akademik pada Smartcard. (Online) http://digilib.its.ac.id/public/ITS-Undergraduate-9829-Paper.pdf (20 Januari
Sukiman & Chandra, Tintin. 2013. Aplikasi Kompresi File dengan Algoritma Elias Gamma. dosen.publikasistmikibbi.lppm.org/permalink/000093.pdf. (Online). (11 Maret 2014).
Wiryadinata, R. 2007. Data Compression Coding Using Static and Dinamic
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Menurut Jogiyanto (2005) “analisa sistem dapat didefenisiskan sebagai penguraian dari suatu sistem informasi yang utuh ke dalam bagian-bagian komponennya dengan maksud untuk mengidentifikasi dan mengevaluasi permasalahan-permasalahan, kesempatan-kesempatan, hambatan-hambatan yang terjadi dan kebutuhan-kebutuhan yang diharapkan sehingga dapat diusulkan perbaikan-perbaikannya.”
3.1.1. Analisis Masalah
Algoritma kompresi file yang telah berkembang sekarang sangat membantu pengguna data dalam memaksimalkan penggunaan kapasitas penyimpanan. Selain itu juga dapat mempercepat dalam pengiriman data sehingga komunikasi berjalan dengan lancar. Tetapi tidak semua algoritma kompresi yang digunakan dapat memampatkan data dengan maksimal. Hal ini disebabkan karena kompresi memiliki parameter yang harus dipenuhi.
Perbandingan algoritma ini bertujuan untuk mendapatkan algoritma kompresi yang lebih baik diantara algoritma Elias Gamma Code dan Shannon-Fano yang akan digunakan untuk memampatkan ukuran file. Kompresi data menggunakan algoritma Elias Gamma Code dengan Shannon-Fano dipengaruhi oleh jumlah karakter yang ada dalam file yang akan dimampatkan.
Diagram Ishikawa adalah diagram yang menunjukkan penyebab-penyebab
mencegah efek serta mengembangkan kualitas produk. Analisa masalah lebih jelas melalui diagram Ishikawa (fishbone diagram) yang dapat dilihat pada Gambar 3.1.
Gambar 3.1 Diagram Ishikawa Analisis Masalah 3.1.2. Analisis Persyaratan
Analisis persyaratan adalah proses analisis hal-hal yang harus dipenuhi dalam suatu sistem sesuai dengan kebutuhan pengguna. Dalam hal ini analisis persyaratan terbagi atas dua, yaitu analisis fungsional dan analisis nonfungsional.
3.1.2.1. Analisis Fungsional
Analisis fungsional membahas mengenai aktifitas dan layanan apa saja yang dapat dilakukan oleh sistem. Berikut adalah aktifitas yang dapat dilakukan oleh sistem : 1. File yang dikompresi adalah file teks yang berformat .txt.
2. Algoritma kompresi yang digunakan adalah algoritma Elias Gamma Code dengan Shannon-Fano.
3. Metode yang digunakan untuk algoritma Shannon-Fano adalah belah tabel. 4. Karakter yang digunakan berdasarkan tabel ASCII 256.
3.1.2.2. Analisis Nonfungsional
Analisis nonfungsional dilakukan untuk dapat mendeskripsikan fitur, karakteristik dan batasan lainnya yang menentukan kepuasan pengguna terhadap sistem.
1. Performa
Sistem yang dibangun harus dapat membaca file .txt dan dapat melakukan proses kompresi dan dekompresi. Proses ini didukung dengan menggunakan dua algoritma kompresi, yaitu algoritma Elias Gamma Code dan Shannon-Fano. 2. Mudah dipelajari dan digunakan
Sistem yang akan dibangun harus memiliki tampilan yang user friendly dan juga memiliki respon yang baik dalam proses penggunaannya.
3. Hemat biaya
Sistem yang dibangun hanya menggunakan software yang terinstall didalam komputer masing-masing pengguna, tanpa ada perangkat tambahan.
4. Dokumentasi
Sistem yang dibangun dapat menyimpan hasil kompresi yang berekstensi file .txt dan hasil dekompresi yang berekstensi file .doc.
5. Manajemen kualitas
Sistem yang dibangun akan memiliki kualitas yang baik. 6. Kontrol
Sistem yang akan dibangun akan menampilkan pemberitahuan jika proses dalam sistem telah selesai dilakukan. Tidak semua tombol diaktifkan sehingga error tidak akan terjadi.
3.1.3. Analisis Proses
Tujuan dari tahap analisis proses adalah mengetahui tahapan dan cara kerja dari sistem yang digunakan secara spesifik. Analisis proses dilakukan pada tahapan pemodelan sistem. Hal ini dilakukan guna mengetahui apa saja yang harus dilakukan oleh sistem sehingga dengan mudah melakukan pemrograman pada sistem yang akan dibangun.
berikut nama file, ukuran file, ukuran file kompresi, rasio kompresi, waktu kompresi, redundancy data, dan waktu dekompresi. Dari hasil berikut akan diambil empat nilai
dari masing-masing algoritma yang digunakan berdasarkan parameter yang telah ditentukan yaitu rasio kompresi, waktu kompresi, redundancy data dan waktu dekompresi. Hasilnya akan dibandingkan secara manual dan dibuat dalam grafik.
Dalam penelitian ini analisis prosesnya menggunakan teknik pemodelan UML (Unified Modeling Language) yang berarti bahasa pemodelan standard. Dalam
penggunaan UML ada aturan-aturan yang harus dipenuhi. UML bukan hanya sekedar diagram tetapi juga menceritakan konteksnya. UML dapat digunakan dalam merancang perangkat lunak, sarana komunikasi antara perangkat lunak dengan proses bisnis, menjabarkan sistem secara rinci untuk analisa apa yang diperlukan sistem, dan mendokumentasikan sistem yang ada, proses-proses serta organisasinya. Model UML yang digunakan antara lain use case diagram, activity diagram, dan sequence diagram.
3.1.3.1 Use Case Diagram
Use case dapat diartikan sebagai urutan langkah-langkah yang secara tindakan saling
terkait (skenario), baik terotomisasi maupun secara manual, untuk tujuan melengkapi satu tugas bisnis tunggal. Use case sangat menentukan karakteristik sistem yang dibuat.
Gambar 3.2 Use Case Diagram
3.1.3.2 Activity Diagram
Activity Diagram lebih memfokuskan diri pada eksekusi dan alur sistem dari pada
Gambar 3.2 Activity Diagram Sistem
3.1.3.3 Sequence Diagram
Sequence diagram memiliki tiga komponen yang harus dipenuhi untuk memodelkan
Tetapi dalam hal ini yang paling banyak digunakan adalah diagram waktunya. Untuk sequence diagram agar lebih jelas dapat dilihat pada Gambar 3.3.
Gambar 3.3 Sequence Diagram Sistem
3.1.4. Pseudocode
Pseudocode merupakan kode yang mirip dengan instruksi kode program yang sebenarnya. Pseudocode digunakan untuk menggambarkan algoritma yang akan dikomunikasikan kepada programmer. Hal ini bertujuan untuk mempermudah programmer dalam menyelesaikan program yang dibuat.
3.1.4.1 Pseudocode pembacaan karakter dan frekuensi
Pada algoritma Elias Gamma Code dan Shannon-Fano tahap pertama yang harus dilakukan adalah membaca karakter dan menjadikannya sebagai string. Kemudian dikelompokkan berdasarkan kerakternya. Berikut adalah pseudocodenya :
char ← list(set(st)) freq ← [] for i in char:
return char, freq
3.1.4.2 Pseudocode mengurutkan karakter berdasarkan frekuensi (descending)
Setelah dikelompokkan masing-masing karakter diurutkan berdasarkan frekuensi kemunculannya. Berikut pseudocodenya :
Untuk pemberian kode kompresi shannon-fano digunakan konsep belah table dimana pembelahan tabel dilakukan dengan membandingkan jumlah frekuensi yang terdekat. Jika karakter berada diatas garis pembagian maka akan mendapatkan simbol 0 dan jika berada dibawah garis maka akan mendapatkan simbol 1. Proses ini dilakukan secara rekursif hingga karakter mendapatkan simbol yang berbeda.
C[i] ← str(C[i]) + '0'
split(S1, F1, C1, charset, sf) split(S2, F2, C2, charset, sf)
3.1.4.4 Pseudocode kompresi Elias Gamma Code
Kode elias gamma didapatkan dari jumlah angka 0 yang diletakkan didepan yang didapat dari nilai tertinggi m dari 2m. Kemudian diikuti dengan angka biner dari nilai n. Berikut pseudocodenya:
3.1.4.6 Pseudocode Perhitungan nilai parameter
char, freq ← count_freq(st)
for i in range(len(c)): sb ← string2sb(st, c, s)
uncompressed_bits ← len(st) * 8 compressed_bits ← len(sb)
CR ← (uncompressed_bits * 1.0) / compressed_bits SS ← (1.0 - 1.0/CR) * 100
3.1.5. Flowchart Sistem
Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan menggambarkan flowchart akan memudahkan kita untuk melakukan pengecekan bagian-bagian yang terlupakan dalam analisis masalah. Disamping itu kegunaannya sebagai fasilitas komunikasi antara pemrogram yang bekerja dalam tim suatu proyek (Zarlis & Handrizal, 2008).
3.2 Perancangan Sistem
Sistem ini dibangun menggunakan bahasa pemrograman C# dan Python. Pembuatan rancangan sistemnya disesuaikan dengan kebutuhan yang mendukung tahapan kompresi dan dekompresi data, dimana algoritma yang digunakan adalah Elias Gamma Code dan Shannon-Fano. Sistem yang telah dirancang terdiri dari 6 form yaitu form Kompresi-Home, form Kompresi-Elias , form Kompresi-Shannon, form Kompresi-Help, form Kompresi-About dan form exit.
3.2.1. Kompresi-Home
Pada form Kompresi-Home dirancang menjadi form utama dalam bentuk Multiple Document Interface (MDI) sehingga semua form yang dibuka berada didalam form
ini. Dalam form ini berisi mengenai keterangan judul, nama pembuat sistem dan jurusan.
Tampilan form Kompresi-Home ditunjukkan pada Gambar 3.5
Gambar 3.5 Perancangan Form Kompr esi-Home
Algoritma Kompresi – [Home]
Beranda Algoritma Bantuan Tentang Keluar
X
PERBANDINGAN ALGORITMA ELIAS GAMMA CODE DENGAN SHANNON-FANO PADA KOMPRESI FILE TEKS
NURHENNIDA BR SITEPU 101401097
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
3.2.2. Kompresi-Elias
Form ini akan ditampilkan setelah user memilih menu Algoritma terlebih dahulu
kemudian memilih sub menu Elias Gamma Code. Pada form ini user dapat memulai mengkompresi dan mendekompresi file.
Tampilan form Kompresi-Elias ditunjukkan pada Gambar 3.6.
Gambar 3.6 Perancangan Form Kompr esi – Elias
Adapun komponen yang ada didalam form ini berdasarkan Gambar 3.6 adalah sebagai berikut :
1. Button (Cari file) digunakan untuk mengambil data .txt . 2. TextBox digunakan untuk menampilkan nama file. 3. TextBox digunakan untuk menampilkan ukuran file. 4. Button (Baca File) digunakan untuk membaca isi file .txt. 5. TextBox digunakan untuk menampilkan isi file .txt.
6. Button (Kompresi) digunakan untuk menampilkan kode kompresi, ukuran file kompresi, Rasio kompresi, waktu kompresi dan Redudancy data
10.TextBox digunakan untuk menampilkan waktu kompresi. 11.TextBox digunakan untuk menampilkan Redudancy data.
12.Button (Dekompresi) digunakan untuk menampilkan hasil dekompresi dan waktu dekompresi.
13.TextBox digunakan untuk menampilkan hasil dekompresi. 14.TextBox digunakan untuk menampilkan waktu dekompresi.
15.Button (Kosongkan) digunakan untuk mengosongkan seluruh textbox dan menjadikan tampilan seperti form semula.
3.2.3. Kompresi-Shannon
Form ini akan ditampilkan setelah user memilih menu Algoritma terlebih dahulu
kemudian memilih sub menu Shannon Fano. Pada form ini user dapat memulai mengkompresi dan mendekompresi file.
Tampilan form Kompresi-Shannon ditunjukkan pada Gambar 3.7
Gambar 3.7 Perancangan Form Kompr esi – Shannon
Adapun komponen yang ada didalam form ini berdasarkan Gambar 3.7 adalah sebagai berikut :
2. TextBox digunakan untuk menampilkan nama file. 3. TextBox digunakan untuk menampilkan ukuran file. 4. Button (Baca File) digunakan untuk membaca isi file .txt. 5. TextBox digunakan untuk menampilkan isi file .txt.
6. Button (Kompresi) digunakan untuk menampilkan kode kompresi, ukuran file kompresi, Rasio kompresi, waktu kompresi dan Redudancy data
7. TextBox digunakan untuk menampilkan kode hasil kompresi. 8. TextBox digunakan untuk menampilkan ukuran file kompresi. 9. TextBox digunakan untuk menampilkan Rasio kompresi. 10.TextBox digunakan untuk menampilkan waktu kompresi. 11.TextBox digunakan untuk menampilkan Redudancy data.
12.Button (Dekompresi) digunakan untuk menampilkan hasil dekompresi dan waktu dekompresi.
13.TextBox digunakan untuk menampilkan hasil dekompresi. 14.TextBox digunakan untuk menampilkan waktu dekompresi.
15.Button (Kosongkan) digunakan untuk mengosongkan seluruh textbox dan menjadikan tampilan seperti form semula.
3.2.4. Kompresi-Help
Form ini berisi tentang bantuan sistem yang jika user kebingungan menggunakan sistem, dapat membaca bantuan sehingga dengan mudah dapat memahami penggunaan sistem ini.
Gambar 3.8 Perancangan Form Kompr esi – Shannon
3.2.5. Kompresi-About
Form ini berisi tentang informasi sistem dan data pembuat sistem. Dapat dilihat pada
tampilan form pada Gambar 3.9.
3.2.6. Kompresi-Exit
Form Exit tidak ada yang ditampilkan karena berfungsi untuk menutup semua form
BAB 4
IMPLEMENTASI DAN PENGUJ IAN SISTEM
4.1 Implementasi Sistem
Implementasi sistem adalah tahap lanjutan dari tahap perancangan. Sistem yang dibangun menggunakan bahasa C# dan Python. Terdiri dari 6 form yaitu form Kompresi-Home, form Kompresi-Elias , form Kompresi-Shannon, form Kompresi-Help, form Kompresi-About dan form exit.
4.1.1. Form kompresi-home
Pada saat sistem dijalankan maka akan tampil form kompresi-Home yang menampilkan keterangan judul sistem yang dibuat. Sistem ini menggunakan menustrip dimana setiap form akan memiliki tampilan atas yang sama dan akan saling
Gambar 4.1. Tampilan Form Kompr esi-Home (Beranda)
4.1.2. Form kompresi-elias
Form Kompresi-Elias akan muncul jika pengguna memilih menu algoritma kemudian
memilih submenu Elias Gamma Code. Form ini berguna untuk mengaplikasikan algoritma Elias Gamma Code. Pada form ini terdapat beberapa tombol antara lain adalah cari file, baca file, kompresi, dekompresi dan kosongkan.
Gambar 4.2. Tampilan Form Kompr esi-Elias (submenu Elias Gamma Code)
4.1.3. Form kompresi-shannon
Form kompresi-shannon isinya sama persis dengan form kompresi-Elias, hanya saja
Gambar 4.3. Tampilan Form Kompr esi-Shannon (submenu Shannon-Fano)
4.1.4. Form kompresi-help
Form Kompresi-Help akan tampil jika pengguna memilih menu bantuan, isi dari form
ini sendiri adalah mengenai cara kerja sistem. Jika pengguna kebingungan menggunakan aplikasi ini, cukup hanya membaca petunjuk yang ada di form ini.
Gambar 4.4. Tampilan Form Kompr esi-Help (Bantuan)
4.1.5. Form kompresi-about
Form Kompresi-About akan muncul jika pengguna memilih menu tentang, hal yang
ditampilkan pada form ini adalah mengenai judul sistem dan dinformasi tentang programmer.
Gambar 4.5. Tampilan Form Kompr esi-About (Tentang) 4.1.6. Form exit
Form ini tidak ditampilkan karena berfungsi untuk menutup seluruh aplikasi yang
telah dibuka sebelumnya. Form ini akan bekerja jika memilih menu keluar.
4.2 Pengujian Sistem
Pengujian sistem perbandingan algoritma elias gamma code dengan shannon-fano untuk kompresi file teks dilakukan untuk mengetahui algoritma mana yang lebih baik digunakan untuk mengurangi ukuran file teks berekstensi .txt. Pengujian akan membahas ukuran file, waktu kompresi, rasio kompresi, redudancy data dan waktu dekompresi untuk masing-masing algoritma yaitu Elias Gamma Code dan algoritma Shannon-Fano pada form yang berbeda.
4.2.1. Pengujian algoritma elias gamma code
jika ditekan tombol baca file, maka isi file .txt akan ditampilkan ke lembar kerja sistem untuk diolah. Kemudian pada form ini jika file berhasil dibaca maka akan ditampilkan messagebox yang berisi pernyataan file berhasil dibaca.
Agar lebih jelas dapat dilihat pada Gambar 4.6.
Gambar 4.6. Tampilan Isi File .txt Berhasil dibaca
Sistem ini telah diatur untuk penggunaan tombolnya jika suatu tombol belum menyelesaikan tugasnya maka tombol yang lain tidak diaktifkan. Setelah file .txt berhasil dibaca dan ditampilkan maka hal yang akan dilakukan adalah melakukan kompresi menggunakan algoritma Elias Gamma Code.
Hasil kompresi akan ditampilkan pada textbox yang ada dibawah tombol kompresi yang berupa kode biner. Sistem telah menyimpan kode hasil kompresi dalam bentuk file berekstensi .txt tetapi tidak menampilkan dan tidak membuat pemberitahuan dalam bentuk messagebox.
Gambar 4.7. Tampilan Setelah Memilih Tombol Kompr esi
Pada sistem ini, selain kompresi juga membahas mengenai dekompresi sehingga kode yang telah dibentuk dapat dikembalikan ke bentuk semula sehingga pengguna masih bisa membaca file yang telah dikompresi.
Gambar 4.8. Tampilan Setelah Memilih Tombol Dekompresi
Setelah memasukkan nama file yang diinginkan dan menekan tombol save maka akan muncul messagebox yang menyatakan penyimpanan berhasil dapat dilihat pada Gambar 4.9.
Setelah ditekan tombol OK maka akan mengaktifkan tombol kosongkan yang berfungsi untuk mengosongkan semua textbox yang telah terisi data file yang telah diolah. Seperti pada gambar 4.10. dimana tombol kosongkan diaktifkan dan pada Gambar 4.11 saat tombol kosongkan ditekan.
Gambar 4.10. Tampilan Tombol Kosongkan Aktif
4.2.2. Pengujian algoritma shannon-fano
Tampilan untuk algoritma Shannon-Fano dan Elias Gamma Code sama persis tetapi berada di form yang berbeda. Hal yang membedakan adalah kode yang dihasilkan karena algoritma yang digunakan juga berbeda.
4.2.3. Isi file pengujian
Isi file pengujian disajikan agar lebih memudahkan dalam menganalisis data, berikut ini pada Tabel 4.1 adalah isi file yang akan diuji untuk 100 karakter yang dimulai dari variasi 1 karakter hingga variasi 26 karakter. Pada Tabel 4.2 isi file pengujian yang dibuat adalah perulangan karakter dimana jumlah ada 36 karakter dan diulang hingga lima kali perulangan dengan variasi 36 karakter.
Tabel 4.1. Isi File .txt 100 Karakter dengan Penambahan 1 Variasi Karakter ddddddddddddddddddeeeeeeeeeeeeeeeeeef ff f ff f f ff 6
7.t xt 100 aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccddddd dddddddddddeeeeeeeeeeeeeeeeff f ff f ff gggggggggggg 7
8.t xt 100 aaaaaaaaaaaaaabbbbbbbbbbbbbbbccccccccccccccddddddddd ddddddeeeeeeeeeeeeeef ff f f ff ggggggggggghhhhhhhhhh 8
9.t xt 100 aaaaaaaaaaaabbbbbbbbbbbbbccccccccccccdddddddddddddde eeeeeeeeeeeef ff f f ff gggggggggghhhhhhhhhiiiiiiiiii 9
10.t xt 100 aaaaaaaaaabbbbbbbbbbbbccccccccccdddddddddddddeeeeee eeeeeff f ff f gggggggggghhhhhhhiiiiiiiiiijjjjj jjjj jj 10
11.t xt 100 aaaaaaaaabbbbbbbbbbbcccccccccddddddddddddeeeeeeeeee f ff f f ggggggggghhhhhhiiiiiiiiijjjjj jjjj jkkkkkkkkkk 11
12.t xt 100 aaaaaaaabbbbbbbbbbccccccccdddddddddddeeeeeeeeeff f fgg ggggggghhhhhhiiiiiiiijjjj jjjj jkkkkkkkkkkllllllll 12
13.t xt 100 aaaaaaaabbbbbbbbbbccccccdddddddddddeeeeeeeeef f ff gggg ggghhhhhhiiiiiiiijjj jjjj jjkkkkkkkklllllllmm mmmm m 13
14.t xt 100 aaaaaaaabbbbbbbbccccccdddddddddeeeeeeeeef f ff gggggggh hhhhhiiiiiiiijj jjjj jjkkkkkkkkllllllmmmm mmmnnnnnn 14
15.t xt 100 aaaaaaaabbbbbbbbccccccdddddddddeeeeeeeeef f ff gggggggh hhhhhiiiiiiiijj jjjj jjkkkkkkkllllllmm mmmmnnnnnooo 15
16.t xt 100 aaaabbbbbbbcccccddddddddeeeeeeeef ff ggggggghhhhhiiiiiiij jjjj jjjkkkkkkkllllllmmmmmmnnnnnoooooppppppppp 16
17.t xt 100 aaaabbbbbbbccccddddddddeeeeeeeef f fggggggghhhhhiiiiiiijjj jjjj jkkkkkkkllllllm mmmnnnnnooooppppppppqqqqq 17
18.t xt 100 aaaabbbbbbbccccddddddddeeeeeef f fggggghhhhhiiiiijjjjj jjjkk
kkkkkllllllm mmmnnnnnooooppppppppqqqqqrrrrrr 18
19.t xt 100 aaaabbbbbbccccddddddeeeeeef ff ggggghhhhhiiiiijjj jjjj jkkkkkk kllllllmm mnnnnnooooppppppqqqqqrrrrrrssssss 19
20.t xt 100 aaaabbbbbbccccddddeeeeeef ff ggggghhhhhiiiiijjj jjjj jkkkkkkkll llllmm mnnnnnooooppppppqqqrrrrrrsssssstt t t 20
21.t xt 100 aaaabbbbbbccccddddeeeeeef ff gghhhhhiiiiijjjj jjjj kkkkkkkllllll
mm mnnnooooppppppqqqrrrrrrsssssstt t t t uuuu 21
22.t xt 100 aaaabbbbbbbccccddddeeeeeef f fgghhhiiiiijj jjjj jkkkkkllllllm m
mnnnooooppppppqqqrrrrrssssst t t t t uuuuvvvvvv 22
23.t xt 100 aaabbbbbbcccddddeeeeff f gghhhiiiiijjjj jjjkkkkkllllllmmmnnno oooppppppqqqrrrrrssssstt t t uuuuvvvvvvw w w w w w 23
24.t xt 100 aaabbbbbbcccddddeeeeff f gghhhiiiiijjjj jkkkkllllllmmmnnnooo oppppppqqqrrrrrssssstt t t uuuuvvvvvvw w w w w w xxx 24
25.t xt 100 aaabbbbcccddddeeeeff f gghhiiiiijj jjjkkkklllllm mmnnnoooopp
ppqqqrrrrrssssst t t t uuuuvvvvvvw w w w w w xxxyyyyyy 25
26.t xt 100 aaabbbbcccddddeeeeff f gghhiiiiijj jjjkkkklllllm mmnnnoooopp
ppqqqrrrrrssssst t t t uuuuvvvvvvw w w w xxxyyyyzzzz 26
Tabel 4.2. Isi File .txt 36 Variasi Karakter Kelipatan 36 Karakter
4.2.4. Hasil pengujian elias gamma code
Setelah aplikasi selesai, pada tabel 4.1 dapat dilihat isi file yang akan diuji untuk masing-masing algoritma Elias Gamma Code dan Shannon-Fano. Hasil pengujian dapat dilihat pada Tabel 4.3. Untuk hasil pengujian tabel 4.2 dapat dilihat pada Tabel 4.4.
36.txt 36 sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR 36
36_2.txt 72 sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR
36
36_3.txt 108 sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR
sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR
36
36_4.txt 144
sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR
36
36_5.txt 180
sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR sAaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR
36
Tabel 4.3. Hasil Pengujian Penambahan Var iasi Karakter
Tabel 4.4. Hasil Pengujian Perulangan Karakter
NF UA
NF UA (Bytes) UK (Bytes) R WK(detik) RD (%) WD (detik)
1.txt 100 14 7.14 0.010 86 0.010
2.txt 100 26 3.85 0.010 74 0.020
3.txt 100 30 3.33 0.018 70 0.020
4.txt 100 36 2.78 0.019 64 0.020
5.txt 100 44 2.27 0.030 56 0.031
6.txt 100 46 2.17 0.030 54 0.031
7.txt 100 48 2.08 0.030 52 0.030
8.txt 100 51 1.96 0.030 49 0.030
9.txt 100 54 1.85 0.041 46 0.030
10.txt 100 57 1.75 0.040 43 0.030
11.txt 100 60 1.67 0.038 40 0.031
12.txt 100 62 1.61 0.040 38 0.031
13.txt 100 63 1.59 0.040 37 0.033
14.txt 100 66 1.51 0.041 34 0.033
15.txt 100 66 1.51 0.041 34 0.035
16.txt 100 68 1.47 0.046 32 0.036
17.txt 100 69 1.45 0.046 31 0.037
18.txt 100 71 1.41 0.046 29 0.037
19.txt 100 74 1.35 0.062 26 0.040
20.txt 100 75 1.33 0.078 25 0.046
21.txt 100 75 1.33 0.078 25 0.047
22.txt 100 77 1.29 0.079 23 0.050
23.txt 100 78 1.28 0.080 22 0.052
24.txt 100 79 1.26 0.081 21 0.052
25.txt 100 81 1.23 0.080 19 0.052
Dengan menggunakan file yang sama yang dapat dilihat pada tabel 4.1 adalah hasil pengujian sistem menggunakan algoritma Shannon-Fano yang disajikan pada Tabel 4.5 dan pada untuk file uji Tabel 4.2 disajikan pada Tabel 4.6
Tabel 4.5. Hasil Pengujian Penambahan Var iasi Karakter
Tabel 4.6. Hasil Pengujian Perulangan Karakter
NF UA (Bytes) UK (Bytes) R WK(detik) RD (%) WD (detik)
1.txt 100 14 7.14 0.019 86 0.011
2.txt 100 14 7.14 0.019 86 0.015
3.txt 100 22 4.54 0.020 78 0.017
4.txt 100 26 3.85 0.025 74 0.018
5.txt 100 31 3.22 0.026 69 0.019
6.txt 100 34 2.94 0.027 66 0.021
7.txt 100 37 2.70 0.034 63 0.024
8.txt 100 39 2.55 0.036 61 0.025
9.txt 100 41 2.44 0.037 59 0.026
10.txt 100 43 2.32 0.038 57 0.028
11.txt 100 45 2.22 0.042 55 0.030
12.txt 100 46 2.17 0.046 54 0.031
13.txt 100 48 2.08 0.046 52 0.031
14.txt 100 49 2.04 0.054 51 0.033
15.txt 100 50 2 0.054 50 0.033
16.txt 100 51 1.96 0.057 49 0.033
17.txt 100 52 1.92 0.056 48 0.033
18.txt 100 54 1.85 0.056 46 0.034
19.txt 100 54 1.85 0.057 46 0.034
20.txt 100 55 1.81 0.061 45 0.035
21.txt 100 56 1.78 0.064 44 0.039
22.txt 100 57 1.75 0.066 43 0.040
23.txt 100 58 1.72 0.067 42 0.041
24.txt 100 59 1.69 0.066 41 0.041
25.txt 100 59 1.69 0.066 41 0.043
Keterangan Gambar :
NF : Nama File
UA : Ukuran Asli
UK : Ukuran Kompresi
R : Rasio
WK : Waktu Kompresi
RD : Redundancy Data
WD : Waktu Dekompresi
4.2.6. Grafik pengujian elias gamma code
Setelah melakukan pengujian agar lebih memudahkan untuk melihat hasilnya maka penulis membuat dalam bentuk grafik. Berikut pada Gambar 4.12 hingga Gambar 4.15 adalah gambar grafik yang dihasilkan dari data hasil pengujian Tabel 4.2. Grafik ini secara berurut adalah grafik berdasarkan empat parameter yaitu Rasio, waktu kompresi, redundancy data dan waktu dekompresi terhadap jumlah variasi karakter yang digunakan.
Gambar 4.12. Grafik Variasi Karakter dengan Rasio
NF UA (Bytes) UK (Bytes) R WK(detik) RD (%) WD (detik)
36.txt 36 25 1.44 0.025 1.44 0.018
36_2.txt 72 48 1,5 0.051 33.33 0.034
36_3.txt 108 72 1.5 0.058 33.33 0.038
36_4.txt 144 95 1.52 0.076 34.03 0.051
Dari Gambar 4.12 terlihat grafik mengalamai penurunan, dimana file yang memiliki jumlah variasi yang semakin banyak memiliki nilai rasio yang semakin kecil.
Gambar 4.13. Grafik Variasi Karakter dengan Waktu Kompr esi
Gambar 4.14. Grafik Variasi Karakter dengan Redundancy Data
Redundancy data hasil grafiknya pada Gambar 4.14 adalah semakin banyak
jumlah karakter yang digunakan dalam satu file maka semakin rendahlah nilai redundancy yang dimiliki file tersebut.
Grafik yang dihasilkan dari Gambar 4.15 menunjukkan kenaikan waktu yang dibutuhkan untuk dekompresi file sebanding dengan jumlah variasi karakter yang dikompresi.
4.2.7. Grafik pengujian shannon-fano
Setelah melakukan pengujian agar lebih memudahkan untuk melihat hasilnya maka penulis membuat dalam bentuk grafik. Berikut pada Gambar 4.16 hingga Gambar 4.19 adalah gambar grafik pengujian algoritma Shannon-Fano berdasarkan data uji pada Tabel 4.3. Grafik ini secara berurut adalah grafik berdasarkan empat parameter yaitu Rasio, waktu kompresi, redundancy data dan waktu dekompresi terhadap jumlah variasi karakter yang digunakan.
Gambar 4.16. Grafik Variasi Karakter dengan Rasio
Gambar 4.17. Grafik Variasi Karakter dengan Waktu Kompr esi
Waktu yang dibutuhkan untuk menkompresi file semakin tinggi untuk karakter yang semakin bervariasi. Hasil analisa ini dapat dilihat pada Gambar 4.17.
Gambar 4.18. Grafik Variasi Karakter dengan Redundancy Data
Gambar 4.19. Grafik Variasi Karakter dengan Waktu Dekompr esi
Dari grafik pada Gambar 4.19 waktu dekompresi mengalami penambahan waktu untuk jumlah variasi karakter yang bertambah.
4.2.8. Grafik gabungan pengujian elias gamma code dan shannon-fano
Gambar 4.20. Grafik J umlah Karakter dengan Rasio
Gambar 4.21. Grafik J umlah Karakter dengan Redundancy Data
Dari grafik pada gambar 4.21, nilai redundancy Elias Gamma Code lebih rendah dibandingkan dengan nilai redundancy algoritma Shannon-Fano meskipun berawal dari titik yang sama. Variasi karakter sangat mempengaruhi nilai redundancy untuk masing-masing algoritma.
Grafik pada Gambar 4.22 tidak dapat disimpulkan algoritma mana yang lebih baik karena perpotongannya yang masih berantakan. Oleh karena itu penulis mengambil nilai rata-rata waktu kompresi berdasarkan Tabel 4.2 untuk waktu kompresi Elias Gamma Code dan Tabel 4.3 untuk waktu kompresi Shannon-Fano. Nilai rata-rata Elias Gamma Code adalah 0,046731 detik dan Shannon-Fano adalah 0,04665 detik. Dari nilai rata-rata waktu kompresi yang dibutuhkan algoritma Elias Gamma Code lebih membutuhkan waktu yang banyak dibandingkan algoritma Shannon-Fano.
Gambar 4.23. Grafik J umlah Karakter dengan Waktu Dekompr esi
4.2.9. Grafik gabungan pengujian karakter yang berulang elias gamma code dan
shannon-fano
Berdasarkan data pengujian pada Tabel 4.4 untuk algoritma Elias Gamma Code dan pada Tabel 4.6 untuk algoritma Shannon-Fano, berikut adalah grafik perbandingan yang dibuat berdasarkan kelipatan kemunculan karakter dengan variasi 36 karakter dengan masing-masing parameter yang digunakan yaitu secara berurutan yaitu rasio, waktu kompresi, redundancy data dan waktu dekompresi.
Hasil dari grafik pada Gambar 4.24 menunjukkan bahwa nilai rasio Elias Gamma Code lebih rendah dibandingkan dengan nilai rasio Shannon-Fano. Terlihat pada grafik nilai rasio untuk jumlah karakter 108, 144 dan 180 sama. Kemunculan karakter yang berulang mempengaruhi nilai rasio untuk masing-masing algoritma.
Hasil dari grafik pada Gambar 4.25 menunjukkan waktu kompresi algoritma Elias Gamma Code lebih tinggi dibandingkan dengan waktu kompresi Shannon-Fano.
Hasil dari grafik pada Gambar 4.26 menunjukkan hasil redudancy data pada algoritma elias gamma code hasil kompresi dengan 36 karakter yang berbeda hasilnya negatif. Kemudian mengalami penambahan nilai pada perulangan karakter yang kedua dan seterusnya sehingga hasilnya menjadi positif. Perulangan data mempengaruhi nilai redundancy sehingga nilainya menjadi lebih baik.
Gambar 4.24. Grafik J umlah Karakter dengan Rasio
Gambar 4.26. Grafik J umlah Karakter dengan Redundancy Data
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Setelah melakukan studi literatur, analisis, perancangan implementasi dan pengujian sistem untuk membandingkan algoritma kompresi Elias Gamma Code dan Shannon-Fano pada file teks .txt maka diperoleh kesimpulan sebagai berikut:
1. Algoritma kompresi dipengaruhi oleh jumlah kemunculan karakter dan variasi karakter.
2. Berdasarkan hasil pengujian menggunakan parameter rasio kompresi maka algoritma Shannon-Fano lebih baik daripada algoritma Elias Gamma Code. 3. Berdasarkan hasil pengujian menggunakan parameter redundancy data untuk
jumlah variasi karakter dan kemunculan karakter maka algoritma yang lebih baik adalah Elias Gamma Code.
4. Berdasarkan hasil pengujian menggunakan parameter waktu kompresi dan dekompresi waktu yang dibutuhkan algoritma Elias Gamma Code lebih tinggi dibandingkan algoritma Elias Gamma Code.
5.2 Sar an
Adapun saran untuk pengembangan dan perbaikan dari sistem ini adalah sebagai berikut :
1. Sistem ini dapat dikembangkan dengan menambahkan pilihan format file pada saat file ingin dikompresi bukan hanya file berformat .txt saja.
2. Sistem ini dapat dikembangkan dengan menambah ekstensi file untuk menyimpan file hasil kompresi.
BAB 2
LANDASAN TEORI
2.1 Kompr esi
2.1.1 Sejarah kompresi
Kompresi data merupakan cabang ilmu komputer yang bersumber dari Teori Informasi. Teori Informasi sendiri adalah salah satu cabang Matematika yang berkembang sekitar akhir dekade 1940-an. Tokoh utama dari teori informasi adalah Claude Shannon dari Bell Laboratory. Teori Informasi memfokuskan pada berbagai metode tentang informasi termasuk penyimpanan dan pemrosesan pesan. Teori informasi mempelajari pula tentang redundancy (informasi tak berguna) pada pesan. Semakin banyak redundancy semakin besar pula ukuran pesan, upaya mengurangi redundancy inilah yang akhirnya melahirkan subyek ilmu tentang kompresi data.
Teori Informasi menggunakan terminologi entropi sebagai pengukur berapa banyak informasi yang dapat diambil dari sebuah pesan. Kata “entropi” berasal dari ilmu termodinamika. Semakin tinggi entropi dari sebuah pesan semakin banyak informasi yang terdapat di dalamnya (Widhiartha, 2008).
2.1.2 Definisi kompresi
beberapa literatur, istilah kompresi sering disebut juga source coding, data compression, bandwidth compression, dan signal compression” (Putra, 2009).
Beberapa defenisi kompresi yaitu, kompresi adalah proses pengolahan sekumpulan data menjadi suatu bentuk untuk menghemat kebutuhan tempat penyimpanan data waktu untuk transmisi data (Utami, 2013). Sedangkan menurut Sukiman dan Chandra (2013) kompresi data atau juga dikenal sebagai pemadatan data adalah teknik yang dipakai untuk mengurangi data atau memperkecil data menjadi bentuk data lain dimana data tersebut diubah menjadi simbol yang lebih sederhana. Kompresi data dilakukan untuk mereduksi ukuran data atau file.
Dari beberapa defenisi diatas dapat disimpulkan bahwa kompresi dapat digunakan untuk meminimalisasi ukuran dari data yang akan disimpan sehingga menghemat ukuran penyimpanan. Data yang telah dikompresi akan mengalami penyusutan ukuran tanpa mempengaruhi informasi yang ada didalamnya.
Data dan informasi adalah dua hal yang berbeda. Pada data terkandung suatu informasi. Namun tidak semua bagian data terkait dengan informasi tersebut atau pada suatu data terdapat bagian-bagian data yang berulang untuk mewakili informasi yang sama. Bagian data yang tidak terkait atau bagian data yangg berulang tersebut disebut dengan data yang berlebihan (redundancy data) (Putra, 2009).
2.1.3 Tujuan kompresi
2.1.4 Metode Kompresi
Berdasarkan teknik pengkodean / pengubahan simbol yang digunakan, metode kompresi dapat dibagi kedalam tiga kategori, yaitu:
1. Metode Symbolwise : menghitung peluang kemunculan dari tiap simbol dalam file input, lalu mengkodekan satu simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang lebih jarang muncul. Contoh algoritma Huffman.
2. Metode Dictionary : Menggantikan karakter/fragmen dalam file input dengan indeks lokasi dari karakter/fragmen tersebut dalam sebuah kamus (dictionary), contoh algoritma LZW.
3. Metode Predictive : Menggunakan model finite-context atau finite state untuk memprediksi distribusi probabilitas dari simbol-simbol selanjutnya, contoh : algoritma DMC (Utami, 2013).
2.2 Dekompresi
2.2.1. Pengertian dekompresi
Menurut Sukiman dan Chandra (2013), Proses dekompresi secara harfiah merupakan proses yang dilakukan bila data hasil kompresi ingin dikembalikan ke ukuran dan bentuknya semula.
2.2.2. Tujuan dekompresi
Tujuan dari dekompresi data yaitu mengembalikan data yang telah dikompresi ke bentuk semula, karena data yang telah dikompresi tidak dapat dibaca begitu saja tanpa dikembalikan kebentuk semula.
2.3 Rasio Kompr esi
2.3.1. Pengertian rasio kompresi
Menurut Sayood (2006), rasio kompresi adalah perbandingan antara jumlah bit yang diperlukan untuk merepresentasikan data sebelum dikompresi dengan jumlah bit yang diperlukan untuk merepresentasikan data setelah dikompresi.
“Compression rate atau laju kompresi adalah laju dari data yang dikompresi.
Secara tipikal, satuannya adalah bits/sample, bits/character, bits/pixel, atau bits/ second” (Sukiman & Chandra, 2013).
2.3.2. Rumus rasio kompresi
Rasio kompresi secara matematis dapat ditulis sebagai berikut :
Rasio Kompresi =
2.4 Data Berlebihan (Data Redundancy)
Menurut Kadir (2008), istilah duplikasi data seringkali juga disebut redudansi data. Duplikasi data yang berlebihan memberikan konsekuensi yang tidak bagus. Sedangkan menurut Putra (2009) data berlebihan adalah data yang tidak terkait ataupun data yang berulang.
Uncompress bit
Data berlebihan adalah suatu faktor penting yang harus diperhatikan dalam kompresi data. Karena semakin banyak data berlebihan yang terdapat pada data yang dikompresi maka semakin lambat proses kompresi yang terjadi.
Data berlebihan dapat dinyatakan secara matematis. Jika n1 adalah jumlah bit sebelum dikompresi dan n2 menyatakan jumlah bit setelah dikompresi, maka data berlebihan relatif (relative data redundancy) RD dapat dinyatakan sebagai berikut.
= 1 - x 100% ... (1) Dimana CR merupakan rasio kompresi (compression ratio) yang dinyatakan sebagai
berikut :
CR = ... (2)
Dari persamaan diatas dapat diambil beberapa kesimpulan sebagai berikut :
1. Bila n1 = n2 maka CR = 1 dan RD = 0, berarti bahwa data n1 tidak
mengandung data berlebihan.
2. Bila n2 << n1 maka CR mendekati tidak berhingga, sehingga RD mendekati 1,
berarti terjadi kandungan data berlebihan yang sangat tinggi.
3. Bila n2 >> n1 maka CR mendekati nol, sehingga RD mendekati minus tak
berhingga, berarti n2 mengandung informasi jauh lebih banyak dibandingkan n1 (Putra, 2009).
2.5 Teknik Kompr esi
2.5.1. Kompresi lossy (lossy compression)
Kompresi data yang bersifat lossy mengijinkan terjadinya kehilangan sebagian data tertentu dari pesan tersebut, sehingga dapat menghasilkan rasio kompresi yang tinggi (Putra, 2009). Sedangkan menurut Wiryadinata (2007) Lossy compression memiliki perubahan antara stream data masukan dan stream data keluaran, pada proses secara lossy ini banyak digunakan pada kompresi jenis citra dan audio.
Alasan mengapa kompresi lossy banyak digunakan pada kompresi jenis citra dan audio, karena hasil kompresi dengan data aslinya terlihat hampir sama meskipun dengan menggunakan kompresi lossy ada data yang hilang dari file aslinya. Ilustrasi kompresi lossy ditunjukkan pada gambar 2.1.
Gambar 2.1. Ilustrasi Kompr esi Lossy
2.5.2. Kompresi lossless (lossless compression)
Lossless compression tidak terjadi perubahan antara stream data masukan dan stream data keluaran, proses kompresi secara lossless ini merupakan salah satu klasifikasi yang sering ditemukan pada kompresi jenis text, executable file, dan beberapa data citra (.gif, .png, .bmp, .pcx dan lain-lain) (Wiryadinata, 2007).
Ada banyak algoritma yang digunakan pada kompresi lossless ini beberapa diantaranya adalah algoritma Huffman, Shannon-Fano, RLE, LZ77, LZW, LZSS, Elias Gamma Code dan lain sebagainya. Ilustrasi kompresi lossless dapat dilihat pada gambar 2.2.
Algoritma Kompresi
2.24 001010010001110
Algoritma Dekompresi
Algoritma Kompresi
ABBAAB 000110001101010
Algoritma Dekompresi
ABBAAB 000110001101010
Gambar 2.2 Ilustrasi Kompr esi Lossless
2.6 Algoritma Elias Gamma Code
Algoritma Elias Gamma Code adalah sistem pemampatan yang dikembangkan oleh Peter Elias yang digunakan untuk membuat kode dalam bentuk bilangan bulat positif (Bagherzandi & Oktay, 2014). Contoh bilangan bulat yang dimaksud adalah 2M ≤ n < 2 M+1. Algoritma kompresi ini telah lama ditemukan, cara kerja kompresi data yang digunakan dalam kompresi ini dibuat berdasarkan urutan dari posisi karakter yang akan dikompresi.
Pada kode Elias Gamma, suatu integer positif x direpresentasikan oleh 1 + dalam bentuk unary (sehingga 0 bit diikuti oleh 1-bit), diikuti oleh representasi bit dari x tanpa mengandung most significant bit. Sehingga 9 direpresentasikan sebagai 0001001, karena 1 + = 4, atau 0001 dalam unary, dan 9 adalah 001 dalam bentuk biner dengan most significant bit yang dihilangkan. Dengan cara ini, 1 direpresentasikan oleh 1, yang mewakili 1 bit.
Proses kompresi sendiri didasarkan pada bahwa isi file akan dibaca secara per byte (8 bit) sehingga menghasilkan nilai pembacaan antara 0 hingga 255. Dimana jika pembacaan mendapatkan nilai antara 1 – 7 maka akan diproses dengan menggunakan Elias Gamma dan bila tidak akan dipertahankan dalam dalam bentuk 8 bit. Pengkodean atas nilai antara 1–7 inilah yang menghasilkan efisiensi artinya
Jika kode dari sebuah karakter bernilai n maka diandaikan n = 2M + L, dimana
M adalah pangkat tertinggi yang menghasilkan angka terdekat dengan nilai n yang
dicari disimbolkan dengan β(n) dan L adalah sisa dari (n - 2M) disimbolkan dengan
α(n). Algoritma Elias Gamma Code dapat digunakan untuk pemampatan (kompresi)
juga dapat digunakan untuk penirmampatan (dekompresi).
2.6.1. Langkah-langkah kompresi algoritma elias gamma code
1. Tentukan nilai M untuk pangkat yang paling mendekati nilai n yang dituliskan
sebagai β(n). Nilai ini disebut sebagai unary code, dimana jumlah nilai M ditulis
menjadi angka 0 dan diakhiri dengan angka 1.
2. Dapatkan nilai L dengan mengurangi nilai n dengan nilai 2M, nilai yang didapat
diubah menjadi bilangan biner.
Contoh : n = 13
Nilai M yang tertinggi yang mendekati 13 adalah 3 karena 2M = 23 = 8, ubah menjadi
bilangan unary menjadi 0001.
Sehingga dihasilkan L = 13 – 8 = 5, ubah nilai L menjadi nilai biner menjadi 101.
Sehingga kode elias gamma dari 13 adalah 0001101. Agar lebih jelas berikut hasil
pengkodean elias gamma code dapat dilihat pada gambar 2.3.
Gambar 2.3. Daftar Elias Gamma Code (Salomon, 2007)
2.6.2. Langkah-langkah dekompresi algoritma elias gamma code
1. Baca angka 0 dalam daftar kode yang ada hingga ditemukan angka 1. Jadikan
2. Selanjutnya baca nilai setelah N dan jadikan sebagai bilangan bulat L. Hitung n =
2N + L.
Contoh : 0001101
Jumlah angka 0 didepan sebelum angka 1 adalah 3, sehingga N = 3. Angka 101 adalah
L dan diubah menjadi bilangan biner L = 5 Sehingga Nilai n = 23 + 5 = 13.
2.7 Algoritma Shannon-Fano
Algoritma Shannon-Fano coding ditemukan oleh Claude Shannon (bapak teori
informasi) dan Robert Fano pada tahun 1949. Pada saat itu metode ini merupakan
metode yang paling baik tetapi hampir tidak pernah digunakan dan dikembangkan lagi
setelah kemunculan algoritma Huffman. Pada dasarnya metode ini menggantikan
setiap simbol dengan sebuah alternatif kode biner yang panjangnya ditentukan
berdasarkan probabilitas dari simbol tersebut (Wiryadinata,2007).
Menurut Putra (2009) berdasarkan probabilitas tersebut kemudian dibentuk
daftar kode untuk setiap simbol dengan ketentuan sebagai berikut:
1. Setiap simbol berbeda memiliki kode berbeda.
2. Simbol dengan probabilitas kehadiran yang lebih rendah memiliki kode jumlah
bit yang lebih panjang dan simbol dengan probabilitas yang lebih tinggi memiliki
jumlah bit yang lebih pendek.
3. Meskipun memiliki panjang kode yang berbeda, simbol tetap dikodekan secara
unik.
2.7.1 Langkah-langkah kompresi algoritma shannon-fano
1. Buatlah daftar peluang atau frekuensi kehadiran setiap simbol dari data (pesan)
yang akan dikodekan.
2. Urutkanlah daftar tersebut menurut frekuensi kehadiran simbol secara menurun
(dari simbol frekuensi kemunculannya paling banyak sampai simbol dengan
3. Bagilah daftar tersebut menjadi dua bagian dengan pembagian didasari pada
jumlah total frekuensi suatu bagian (disebuat bagian atas) sedekat mungkin
dengan jumlah total frekuensi dengan bagian yang lain (disebut bagian bawah).
4. Daftar bagian atas dinyatakan dengan digit 0 dan bagian bawah dinyatakan
dengan digit 1. Hal tersebut berarti kode untuk simbol-simbol pada bagian atas
akan dimulai dengan 0 dan kode untuk simbol-simbol pada bagian bawah akan
dimulai dengan 1.
5. Lakukanlah proses secara rekursif langkah 3 dan 4 pada bagian atas dan bawah.
Bagilah menjadi kelompok-kelompok dan tambahkan bit-bit pada kode sampai
setiap simbol mempunyai kode yang bersesuaian pada pohon tersebut (Putra,
2009).
Berikut disajikan suatu contoh pengkodean Shannon-Fano. Pesan yang akan
dikodekan adalah :
KUKU KAKI KAKEK KAKU
Berikut adalah daftar frekuensi kemunculan simbol pada pesan, karena kemunculan
pesan telah terurut secara menurun maka tidak perlu diurutkan lagi.
Tabel 2.1 Fr ekuensi kemunculan simbol
Sim bol Fr ekuensi
K 9
U 3
Spasi 3
A 3
I 1
E 1
Tabel 2.1 dibagi menjadi dua bagian didasari pada total frekuensi terdekat yaitu 9
untuk frekuensi bagian atas dan 11 untuk frekuensi bagian bawah. Pembagian tabel
menghasilkan simbol K dibagian atas sehingga diberikan digit 0 dan simbol U, Spasi,
Tabel 2.2 Pembagian Pertama
Proses diatas dilakukan secara rekursif terhadap bagian bawah saja karena bagian atas
tidak dapat dibagi lagi. Sehingga pembagiannya dapat dilihat pada tabel 2.3.
Tabel 2.3 Pembagian rekur sif
Kar akter Fr ekuensi Digit
K 9 0
U 3 1 0 0
Spasi 3 1 0 1
A 3 1 1 0
I 1 1 1 1 0
E 1 1 1 1 1
Setelah langkah-langkah diatas dilakukan maka didapatkan kode dan panjang
Shannon-Fano seperti pada tabel 2.4.
Kar akter Fr ekuensi Digit
K 9 0
U 3 1
Spasi 3 1
A 3 1
I 1 1
E 1 1
Pembagian pertama
Pembagian pertama
Pembagian kedua Pembagian ketiga
Pembagian keempat
Tabel 2.4 Kode dan Panjang Kode Shannon-Fano
Kar akter Fr ekuensi Kode
Panjang Kode
Total bit
K 9 0 1 9
U 3 100 3 9
Spasi 3 101 3 9
A 3 110 3 9
I 1 1110 4 4
E 1 1111 4 4
2.7.2 Langkah-langkah dekompresi algoritma shannon-fano
1. Baca bit pertama dari kode Shannon-Fano yang telah dihasilkan.
2. Jika bit terdapat pada tabel, maka bit diterjemahkan menjadi karakter sesuai
dengan bit yang ada pada kode.
3. Jika bit yang dicari tidak ditemukan pada tabel kode, gabungkan bit tersebut
dengan bit selanjutnya dalam rangkaian kode, cocokkan dengan tabel hasil
pengkodean.
4. Ulangi langkah 3 hingga ada rangkaian bit yang sesuai dengan kode yang ada
ditabel sehingga dapat diterjemahkan menjadi karakter yang ada.
5. Baca bit selanjutnya dan ulangi langkah 2, 3, dan 4 hingga rangkaian kode habis
diterjemahkan.
2.8 Penelitian yang Relevan
Berikut ini beberapa penelitian yang terkait dengan algoritma Elias Gamma Code dan
Shannon-Fano :
1. Firdaus & Bulali (2010) dalam jurnal yang berjudul Penentuan Kombinasi Teknik
Kompresi untuk Mendukung Penyimpanan Data Akademik pada Smartcard.
Menyatakan bahwa Elias gamma merupakan salah satu metode kompresi
Suatu nilai yang menggunakan n bit diusahakan dua kali kemungkinan
kemunculannya, dibandingkan nilai lain yang menggunakan n + 1 bit.
2. Luca (2014) dalam skripsi yang berjudul Implementasi Metode Kuantisati Pada
Kompresi dan Dekompresi Citra Bitmap dan JPEG. Menyatakan kompresi citra
merupakan suatu proses pengolahan citra yang bisa mengurangi ukuran dari sebuah
citra agar lebih mempermudah dalam proses penyimpanan dan pengiriman. Metode
yang digunakan adalah metode kuantisasi untuk melakukan kompresi citra. Metode
kuantisasi adalah jenis lossycompression, karena pada proses kompresi ada bagian
citra yang hilang. Pada pengujian format .jpeg menghasilkan rasio kompresi citra
rata-rata 58.9% dan rata-rata rasio dekompresi citra adalah 39.4%.
3. Solihin (2013) dalam skripsi yang berjudul Perancangan Sistem Pengamanan dan
Kompresi Data Teks dengan Fibonacci Encoding dan Algoritma Shannon-Fano
serta Algoritma Deflate. Penelitian yang dibuat bertujuan untuk merancang sebuah
aplikasi komputer yang dapat mengamankan sekaligus mengkompresi ukuran teks.
Pengamanan teks dilakukan dengan menggunakan Fibonacci Encoding, kemudian
hasil pengkodean dikompresi menggunakan algoritma Shannon-Fano, setelah itu
dikompresikan lagi dengan algoritma Deflate. Hasil kompresi algoritma deflate
adalah hasil akhir proses pengkodean dan kompresi data.
4. Sukiman dan Chandra (2013) Jumlah data yang disimpan pada file berbanding
lurus dengan ukuran file itu sendiri. Ukuran file yang terlalu besar akan menjadi
masalah bila file tersebut akan ditransfer atau dipertukarkan. Cara lain adalah file
tersebut dimampatkan sehingga ukurannya menjadi lebih kecil dari ukuran semula
sehingga mempersingkat waktu ketika ditransmisi. Metode yang dipakai untuk
memperkecil ukuran file adalah dengan algoritma Elias Gamma yang bekerja
berdasarkan teknik pengkodean bilangan bulat menjadi bentuk biner yang lebih
sederhana. Hasil adalah suatu perangkat lunak yang dapat melakukan kompresi dan
dekompresi balik berdasarkan pada algoritma Elias Gamma pada semua jenis
file yang belum dikompresi. Program juga dapat menampilkan besarnya rasio
BAB 1
PENDAHULUAN
1.1. Latar belakang
Perpindahan data sangat mudah dilakukan pada saat ini, tetapi tempat
penyimpanannya yang menjadi kendala sangat mendasar. Hal ini disebabkan oleh
ukuran data yang ingin dipindahkan tidak sesuai dengan media penyimpanan yang
tersedia. Ukuran file yang semakin besar menuntut para pemakai komputer untuk
melakukan berbagai macam cara agar dapat menyimpan sejumlah file yang berukuran
besar dalam media penyimpanan yang terbatas. Hal inilah yang menyebabkan file
harus dimampatkan agar ukurannya menjadi lebih kecil. Teknik pemampatan data ini
disebut dengan teknik kompresi data. Adapun tujuan dari kompresi data adalah untuk
mengurangi ukuran file sebelum menyimpan atau memindahkan data ke dalam media
penyimpanan.
Teknik pemampatan terbagi atas dua bagian yaitu lossy dan lossless.
Pemampatan lossy adalah pemampatan data yang akan mengalami perubahan data
setelah selesai dimampatkan. Jika file yang sama dikembalikan ke data semula atau
disebut dengan penirmampatan (dekompresi) maka hasilnya akan berbeda dengan data
aslinya. Sementara lossless adalah pemampatan data dimana hasil kompresi dan
dekompresinya sama tetapi dengan ukuran yang berbeda.
Berdasarkan latar belakang yang telah diuraikan, maka penulis melakukan
penelitian dengan judul “Perbandingan Algoritma Elias Gamma Code dengan
1.2 Rumusan Masalah
Berdasarkan uraian dari latar belakang diatas, rumusan masalah yang akan dibahas
adalah membandingkan Algoritma Elias Gamma Code dengan Shannon-Fano untuk
melakukan kompresi file teks dengan parameter rasio, waktu kompresi, waktu
dekompresi, dan redundancy data.
1.3 Batasan Masalah
Adapun batasan masalah dalam tugas akhir ini adalah sebagai berikut:
1. Jenis file yang dikompresi adalah file teks yang berekstensi .txt.
2. Kode teks yang digunakan dalam penelitian ini adalah kode ASCII (American
Standard Code for Information Interchange).
3. Parameter pembanding yang digunakan antara lain adalah rasio, waktu kompresi,
waktu dekompresi dan redundancy data.
4. Komponen lain seperti tabel atau gambar yang terdapat didalam file teks yang
digunakan akan diabaikan.
5. Program dibuat dengan bahasa pemrograman C# dan Python.
1.4 Tujuan Penelitian
Tujuan penelitian dalam tugas akhir ini adalah menunjukkan hasil perbandingan
algoritma Elias Gamma Code dengan menggunakan parameter rasio, waktu kompresi,
waktu dekompresi, dan redundancy data.
1.5 Manfaat penelitian
Manfaat dari penelitian ini adalah
1. Untuk mengetahui algoritma kompresi yang lebih baik diantara algoritma Elias
Gamma Code dengan Shannon-Fano pada kompresi lossless.
2. Mengurangi kapasitas penyimpanan data dengan mengurangi ukuran data yang