Bab 4 Implementasi dan Pengujian Sistem
4.3. Pengujian Sistem
4.3.6. Pengujian Corpus
Pengujian sistem ini juga dilakukan terhadapa file Corpus. Dimana file Corpus yang digunakan ialah Artificial Corpus. Artificial Corpus berisi file yang dikembangkan khusus untuk pengujian kinerja algoritma kompresi berdasarkan kemampuannya untuk merepresentasikan hasil kinerja algoritma kompresi. Artificial Corpus terdiri dari empat file uji. Isi dari keempat file uji dipaparkan pada Tabel 4.10.
Tabel 4.10 File Uji Artificial Corpus
File Isi file Frek Karakter Keterangan
a.txt a 1 Huruf ‘a’
aaa.txt aaa… 100000 Huruf ‘a’ yang diulang
alphabet.txt alphabet 100000 Alphabet yang diulang random.txt Karater acak 100000 100000 karakter random
0
1 10 100 1000 10000
Waktu Dekompresi
Panjang String
Grafik Waktu Dekompresi terhadap String Heterogen
Boldi-Vigna ζ1 Code Even-Rodeh Code
Hasil pengujian Boldi-Vigna ζ1 Code dan Even-Rodeh Code terhadap Artificial Corpus dipaparkan pada Tabel 4.11 dan Tabel 4.12.
Tabel 4.11 Hasil Pengujian Boldi-Vigna ζ1 Code terhadap File Artificial Corpus
Artificial Corpus Boldi-Vigna ζ1 Code
Jumlah
Tabel 4.12 Hasil Pengujian Even-Rodeh Code terhadap File Artificial Corpus
Artificial Corpus Even-Rodeh Code
Jumlah
4.4. Kompleksitas Algoritma
Kompleksitas algoritma dari algoritma Boldi-Vigna ζ1 Code dan Even-Rodeh Code yang akan diuji dan dijelaskan pada Tabel 4.13 dan Tabel 4.14 berikut :
Tabel 4.13 Kompleksitas Algoritma Boldi-Vigna ζ1 Code
Pseudocode Algoritma C # C.#
Function BoldiVignaCodes(n)
k ← 1 C1 1 C1
h ← 0 C1 1 C1
hMax ← Math.Pow(2, (h + 1) * k) – 1 C1 1 C1
while (n > hMax) do C2 n C2n
h ← h + 1 C1 n C1n
hMax ← Math.Pow(2, (h + 1) * k) – 1 C1 n C1n
end while
unary ← "1".PadLeft(h + 1, '0') C1 1 C1
minBinCodeorX ← n - Math.Pow(2, h * k) C1 1 C1
z ← Math.Pow(2, (h + 1) * k) -Math.Pow(2,
h * k)
C1 1 C1
s ← Math.Ceiling(Math.Log(z,2) C1 1 C1
encodeValue ← minBinCodeorX C1 1 C1
encodeBin ← “” C1 1 C1
Berdasarkan data pada Tabel 4.13, nilai kompleksitas algoritma Boldi-Vigna ζ1 Code dapat dihitung sebagai berikut.
T(n) = ∑( Ci . #i )
= 12C1 + 2C1n+ C2n + C3 + C4
= 12C1 + (2C1 + C2)n + C3 + C4
= θ (n)
Pseudocode Algoritma C # C.#
if minBinCodeorX >= Math.Pow(2, s) – z C3 1 C3
encodeValue ←Math.Abs(Math.Abs
(minBinCodeorX - z) - Math.Pow(2, s))
C1 1 C1
encodeBin ← DecToBin(encodedValue).
PadLeft(s,'0').Substring(0,s)
C1 1 C1
Else C3 1 C3
encodeBin ← DecToBin(encodedValue)
.PadLeft(s – 1, '0').Substring(0, s-1)
C1 1 C1
return unary+""+encodeBin C4 1 C4
Tabel 4.14Kompleksitas Algoritma Even-Rodeh Code
Pseudocode Algoritma C # C.#
Function EvenRodehCodes(n)
if n < 4 C1 1 C1
c ← DecToBin(n) C2 1 C2
int lc ← c.Length C2 1 C2
for i ← 0 to 3 – lc do C3 n C3n
code.Append(“0”) C4 n C4n
end for
code.Append(“c”) C4 1 C4
else if (n >= 4 && n < 8) C1 1 C1
c ← DecToBin(n) C2 1 C2
code.Append(“c”) C4 1 C4
code.Append(“0”) C4 1 C4
else C1 1 C1
c ← DecToBin(n) C2 1 C1
code.Append(DecToBin(c.Length)) C4 1 C4
code.Append(“c”) C4 1 C4
code.Append(“0”) C4 1 C4
return code C5 1 C5
Berdasarkan data pada Tabel 4.14, nilai kompleksitas algoritma Even-Rodeh Code dapat dihitung sebagai berikut.
T(n) = ∑( Ci . #i )
= 3C1 + 4C2 + C3n + C4n + 6C4 + C5
= 3C1 + 4C2 + (C3 + C4)n + 6C4 + C5
= θ (n)
BAB 5
KESIMPULAN DAN SARAN 5.1. Kesimpulan
Berdasarkan hasil dari pengujian yang dilakukan pada penelitian ini, diperoleh beberapa kesimpulan yang berkaitan dengan perbandingan kinerja kompresi dari algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code. Di antaranya sebagai berikut:
1. Pada pengujian kompresi file teks yang berisi string homogen algoritma Boldi-Vigna ζ1 Code memilki kinerja yang lebih baik dibandingkan Even-Rodeh Code karena memilki nilai space savings yang lebih tinggi, bit rate yang lebih kecil serta waktu kompresi yang lebih cepat.
2. Dilihat dari nilai compression ratio yang diperoleh dari pengujian terhadap string homogen dan heterogen diketahui bahwa compression ratio algoritma Even-Rodeh Code lebih baik pada string homogen dan string heterogen.
3. Berdasarkan nilai space savings yang didapat dari uji coba sistem terhadap string homogen dan heterogen diketahui bahwa space savings algoritma Boldi-Vigna ζ1
Code lebih baik pada file string homogen dan file string heterogen
4. Dilihat dari bit rate yang didapat dari hasil pengujian terhadap file string homogen dan string heterogen menunjukkan bahwa bit rate Boldi-Vigna ζ1 Code lebih baik pada file berisi string homogen, sedangkan Even-Rodeh Code lebih baik pada file berisi string heterogen.
5. Dilihat dari hasil pengujian terhadap string homogen dan heterogen diketahui bahwa proses kompresi menggunakan Boldi-Vigna ζ1 Code lebih cepat pada string homogen dan string heterogen
6. Hasil pengujian terhadap file berisi string homogen menunjukkan bahwa waktu yang dibutuhkan untuk proses dekompresi algoritma Even-Rodeh Code lebih sedikit dibandingkan algoritma Boldi-Vigna ζ1 Code. Sementara hasil pengujian file string heterogen menunjukkan bahwa waktu yang dibutuhkan algoritma
Boldi-Vigna ζ1 Code Code lebih sedikit dibandingkan algoritma Even-Rodeh Code untuk proses dekompresi.
7. Berdasarkan perhitungan yang dilakukan nilai kompleksitas algoritma yang didapat dalam penelitian ini yaitu, nilai kompleksitas algoritma Boldi-Vigna ζ1 Code dan algoritma Even-Rodeh Code adalah sebesar 𝛳(𝑛).
5.2. Saran
Berdasarkan penelitian yang dilakukan, beberapa saran yang dapat dipertimbangkan untuk penelitian selanjutnya adalah adalah sebagai berikut:
1. Pada penelitian ini proses kompresi hanya dilakukan terhadap file teks yang berekstensi .txt, untuk itu diharapkan pada penelitian selanjutnya mampu mengkompresi file teks dengan ekstensi lainnya, seperti .docx dan lain-lain.
2. Pada penelitian ini kompresi hanya dilakukan pada file teks, setelahnya diharapkan dapat mengkompresi bentuk file lain seperti file audio, video, dan lain-lain.
3. Pada penelitian ini, sistem dibangun dengan menggunakan bahasa pemrograman C#, diharapkan setelahnya dapat menggunakan bahasa pemrograman yang lain seperti Java, Python dan lain-lain.
4. Pada penelitian ini, sistem yang dibangun hanya dapat barjalan pada platform desktop, untuk itu pada penelitian berikutnya sistem diharapkan dapat berjalan pada platform android.
DAFTAR PUSTAKA
Abdullah, A. R. (2016). Perbandingan Algoritma Even-Rodeh dan Algoritma Variable Length Binary Encoding (VLBE) pada kompresi file teks.
Skripsi. Universitas Sumatera Utara. Medan
Batubara, M. M. (2018). Implementasi Algoritma Vigenere Cipher dan Algoritma Even-Rodeh Code pada Pengamanan dan Kompresi File. Skripsi. Universitas Sumatera Utara. Medan
Budiman, M. A. & Dian Rachmawati. (2017). On Using Goldbach Go Codes and Even-Rodeh Codes for Text Compression. Jurnal . IOP Conf. Series: Materials Science and Engineering, No. 012062. DOI: 10.17605/OSF.IO/8HJVB.
Cormen, T.H., Leiserson, C.E., Rivest, R.L. & Stein, C. (2009). Introduction to Algorithms. Third Edition. The MIT Press: London.
Ida, M. P. (2006). Fundamental Data Compression. Elsevier Publishers: New York.
Retrieved April, 23, 2013.
Jamaluddin, J. (2018). Analisis Perbandingan Kompresi Data dengan Fixed-Length Code, Variable-Length Code dan Algoritma Huffman. Skripsi. Universitas Sumatera Utara. Medan
Kodituwakku, S. R., & Amarasinghe, U. S. (2010). Comparison of lossless data compression algorithms for text data. Indian journal of computer science and engineering, 1(4), 416-425.
Lestari, E. (2018). Implementasi Algoritma Knapsack dan Algoritma Boldi-Vigna (ζ4) pada Keamanan dan Kompresi File Teks. Skripsi. Universitas Sumatera Utara. Medan
Motta, G., Rizzo, F., & Storer, J. A. (Eds.). (2006). Hyperspectral Data Compression.
Springer Science & Business Media.
Pu, I. M. (2005). Fundamental Data Compression. Butterworth-Heinemann.
Rao, K. R., & Yip, P. C. (2000). The Transform and Data Compression Handbook.
CRC press.
Salomon, D . (2007).Variable-Length Codes For Data Compression.Springer Science
& Business Media.
Salomon, D., & Motta, G. (2010). Handbook of Data Compression. Springer Science
& Business Media.
LISTING PROGRAM
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form {
public MainForm() {
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void Label1Click(object sender, EventArgs e) {
}
void KompresiToolStripMenuItemClick(object sender, EventArgs e)
{
Kompresi k = new Kompresi();
k.Show();
this.Hide();
}
void MainFormLoad(object sender, EventArgs e) {
}
void DekompresiToolStripMenuItemClick(object sender, EventArgs e)
{
Dekompresi k = new Dekompresi();
k.Show();
Bantuan k = new Bantuan();
k.Show();
this.Hide();
EventArgs e) {
Tentang k = new Tentang();
k.Show();
/// Description of Kompresi.
/// </summary>
public partial class Kompresi : Form {
public static int[] fr;
public static String cs;
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void GroupBox1Enter(object sender, EventArgs e) {
}
void BerandaToolStripMenuItemClick(object sender, EventArgs e)
{
MainForm k = new MainForm();
k.Show();
Kompresi k = new Kompresi();
k.Show();
Dekompresi k = new Dekompresi();
k.Show();
Bantuan k = new Bantuan();
k.Show();
Tentang k = new Tentang();
k.Show();
this.Hide();
}
public static string StringToBinary(string data) {
public static String GetCharSet(String st) // fungsi untuk membuat tabel string
{
public static int CountChar(String s, char ch) // fungsi
public static void InsertionSort(int[] freq, String charset) //
fungsi untuk mengurutkan karakter dan frekuensi {
public static String Reverse(String sb) // fungsi untuk membalikkan array
public static String DecToBin(int dec) // fungsi untuk mengubah decimal ke biner
{
}
public static int BinToDec(String bin) // fungsi untuk mengubah biner ke decimal
{
StringBuilder sb = new StringBuilder(Reverse(bin));
int n = 1;
public static String StringToStb(String st, String c, String[] s)
public static String Encode(String stb) // fungsi mengubah string ke biner untuk proses kompresi
{
public static String Decode(String code) //fungsi untuk
{
public static String GetBoldiVigna(int n)
{
public static void BoldiVignaCodes(String st) //fungsi untuk memanggil kode boldi-vigna
{
int[] freq = CountFreq(st);
String charset = GetCharSet(st);
int t = charset.Length;
InsertionSort(freq, charset);
freq = fr;
public static String GetEvenRodeh(int n) //fungsi untuk membangkitkan kode even-rodeh
{
StringBuilder sb = new StringBuilder();
sb.Append(Convert.ToString(c.Length,2));
sb.Append(c);
public static void EvenRodehCodes(String st) //fungsi untuk memanggil kode even-rodeh
{
void Btn_bukaClick(object sender, EventArgs e) {
OpenFileDialog open = new OpenFileDialog();
open.Filter = "TXT files|*.txt";
if(open.ShowDialog() ==
System.Windows.Forms.DialogResult.OK)
richTextBox1.Text = "";
textBox1.Text = open.FileName;
if(Path.GetExtension(open.FileName) ==
".txt")
{
string strfilename = open.FileName;
string txt = File.ReadAllText(strfilename);
richTextBox1.Text = txt;
}
int ukuran = richTextBox1.Text.Length*8;
textBox_awal.Text = ukuran.ToString() +"
bits";
void Btn_simpanClick(object sender, EventArgs e) {
}
void Rbtn_ercCheckedChanged(object sender, EventArgs e) {
}
void RichTextBox1TextChanged(object sender, EventArgs e) {
} */
void Btn_aturulangClick(object sender, EventArgs e) {
void Btn_kompresiClick(object sender, EventArgs e) {
String kalimat = richTextBox1.Text;
if(rbtn_bv.Checked == true) {
Stopwatch watch = new Stopwatch();// running time
watch.Start();
BoldiVignaCodes(kalimat);
String stb = StringToStb(kalimat,cs,bv);
String code = Encode(stb);
String dc = Decode(code);
richTextBox_compbin.Text=stb;
textBox_akhir.Text=stb.Length.ToString()+"
bits";
double CR = (stb.Length/(kalimat.Length* 8 * 1.0))*100;
double BR = stb.Length/cs.Length;
textBox_bitrate.Text = BR.ToString()+"
bits/symbol";
textBox_akhir.Text = stb.Length.ToString()+"
bits";
watch.Stop();
SaveFileDialog simpan = new SaveFileDialog();
simpan.Filter = "Compressed Files(
*.bvc)|*.bvc";
simpan.FileName = "*.bvc";
if (simpan.ShowDialog() == DialogResult.OK) {
using(StreamWriter writer = new StreamWriter(simpan.FileName)) dikompresi dengan Boldi-Vigna Code");
} }
else if(rbtn_erc.Checked == true) {
Stopwatch watch = new Stopwatch();// running time
watch.Start();
EvenRodehCodes(kalimat);
String stb = StringToStb(kalimat,cs,erc);
String code = Encode(stb);
String dc = Decode(code);
richTextBox_compbin.Text=stb;
bits";
double CR = (stb.Length/(kalimat.Length* 8 * 1.0))*100;
double BR = stb.Length/cs.Length;
textBox_bitrate.Text = BR.ToString()+"
bits/symbol";
textBox_akhir.Text = stb.Length.ToString()+"
bits";
watch.Stop();
SaveFileDialog simpan = new SaveFileDialog();
simpan.Filter = "Compressed Files(
*.erc)|*.erc";
simpan.FileName = "*.erc";
if (simpan.ShowDialog() == DialogResult.OK) {
using(StreamWriter writer = new StreamWriter(simpan.FileName)) dikompresi dengan Boldi-Vigna Code");
}
using System.Windows.Forms;
void Btn_bukadekomClick(object sender, EventArgs e) {
}
void BantuanToolStripMenuItemClick(object sender, EventArgs e)
void TentangToolStripMenuItemClick(object sender, EventArgs e)
{
Tentang t = new Tentang();
t.Show();
}
void KompresiToolStripMenuItemClick(object sender, EventArgs e)
void BerandaToolStripMenuItemClick(object sender, EventArgs e) mengubah decimal ke biner
{
dec = dec + (int)(Char.GetNumericValue(sb[i])) * n; ke string untuk proses dekompres
{
richTextBox_compressed.Text="";
System.IO.StreamReader File = new System.IO.StreamReader(textBox1.Text);
void Btn_simpandekomClick(object sender, EventArgs e) {
CURRICULUM VITAE
Cemara IV, Batang Kuis, Deli Serdang, Sumatera Utara
Nomor
Telepon :
081290160669
E-mail : [email protected]
PENDIDIKAN Perguruan Tinggi
Universitas Sumatera Utara
Fakultas Ilmu Komputer dan Teknologi Informasi Program Studi S1 Ilmu Komputer
IPK 3.68
2015 - Sekarang Sekolah Menengah Atas SMAN 1 BATANG KUIS 2012-2015
Sekolah Menengah Pertama SMPN 1 LUBUK PAKAM 2009-2012
Sekolah Dasar
SD YAYASAN PERGURUAN NUSANTARA 2003-2009
Programming: C/C++, C#
IDE : CodeBlocks, Sharp Develop Database : MySQL
Software : Ms. Office, Adobe Photoshop, Adobe Premiere
PENGALAMAN KERJA
No Instansi/Lembaga Jabatan/Posisi Tahun
1. IKLC USU Asisten laboratorium 2017 - sekarang
No Organisasi Jabatan Tahun
1. UKMI Al-khuwarizmi Anggota bidang Akademi
Kompetensi 2017-2018
2. IKLC USU Anggota Divisi Administrasi 2017-2018 3. IKLC USU Koordinator Divisi Silabus dan
Modul 2018-sekarang
SEMINAR
No. Seminar Tahun
1. Seminar Technopreneurship 2015
2. Seminar What will you be 2015
3. Indonesia Next 2017 2017
4. Artechno 2017 2017
KEMAMPUAN KOMPUTER
PENGALAMAN ORGANISASI/KEPANITIAAN