Perbandingan Algoritma Fibonacci Code dan Algoritma Inverted Elias Gamma Code Dalam Kompresi File Teks
A
A-1
LISTING PROGRAM
1.
Fibonacci Code
//membuat fungsi Fibonacci Code
public static String GetFibonacciCode(int n) {
StringBuilder fib = new StringBuilder("1");
int a, b, c;
List fibs = new List();
if (n >= 1) {
a = 1;
b = 1;
c = a + b;
fibs.Add(b);
while (n >= c) {
fibs.Add(c);
a = b;
b = c;
c = a + b;
}
fibs.Reverse();
for (int i = 0; i < fibs.Count; i++) {
if (n >= fibs[i]) {
n = n - fibs[i];
fib.Insert(0, "1");
}
else
fib.Insert(0, "0");
}
}
return fib.ToString();
}
//memanggil fungsi Fibonacci Code
void Button1Click(object sender, EventArgs e)
{
String kalimat = richTextBox1.Text;
Stopwatch watch = new Stopwatch(); // running time
watch.Start();
ClassFibonacci.Fibonacci(kalimat);
String stb =
ClassFibonacci.StringToStb(kalimat,ClassFibonacci.cs,ClassFibon
acci.fc);
String code = ClassFibonacci.Encode(stb);
watch.Stop();
Universitas Sumatera Utara
B
A-2
SaveFileDialog simpan = new SaveFileDialog();
simpan.Filter = "Compressed Files( *.fib)|*.fib";
simpan.FileName = "*.fib";
if (simpan.ShowDialog() == DialogResult.OK)
{
FileStream
fstream=new FileStream(simpan.FileName,FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fstream);
SeekOrigin seekorigin = new SeekOrigin();
sw.BaseStream.Seek(0, seekorigin);
sw.Write(code);
sw.Flush();
sw.Close();
string filenamee=simpan.FileName.Substring(0,si
mpan.FileName.Length- 4) + "f.dat";
FileStream
fstreamm=new FileStream(filenamee,FileMode.OpenOrCreate);
StreamWriter sww = new StreamWriter(fstreamm);
SeekOrigin seekoriginn = new SeekOrigin();
sww.BaseStream.Seek(0, seekoriginn);
sww.Write(ClassFibonacci.cs+"~");
for (int n
= 0; n < ClassFibonacci.cs.Length; n++)
sww.Write(ClassFibonacci.fc[n]+"~");
sww.Flush();
sww.Close();
MessageBox.Show("file berhasil dikompresi");
}
double RC = (kalimat.Length* 8 * 1.0) / stb.Length;
textBox5.Text = Math.Round(RC,2).ToString();
double CR
= (stb.Length/(kalimat.Length* 8 * 1.0))*100;
textBox4.Text =Math.Round(CR,2).ToString()+"
%";
double redu = 100-CR;
textBox8.Text = Math.Round(redu,2).ToString()+" %";
textBox6.Text =
Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4)
.ToString()+" ms";
}
Universitas Sumatera Utara
CA-3
2.
Elias Gamma Code
//membuat fungsi Elias Gamma Code
public static void InvertedEliasGammaCodes(String st) {
int[] freq = CountFreq(st);
String charset = GetCharSet(st);
int t = charset.Length;
InsertionSort(freq, charset);
freq = fr;
charset = cs;
egc = new String[t];
iegc = new String[t];
int c = 0;
int ic = 0;
for (int n = 1; n < t + 1; n++) {
String b = DecToBin(n);
int M = b.Length;
StringBuilder u = new StringBuilder();
for (int k = 0; k < M - 1; k++)
u.Append("0");
u.Append("1");
StringBuilder s1 = new StringBuilder();
for (int j = 0; j < M; j++) {
s1.Append(b[j]);
s1.Append(u[j]);
}
String s2 = s1.ToString();
String s = s2.Substring(1, s2.Length - 1);
egc[c++] = s;
StringBuilder s3 = new StringBuilder();
for (int j = 0; j < s.Length; j++) {
if (s[j] == '0')
s3.Append("1");
else
s3.Append("0");
}
iegc[ic++] = s3.ToString();
}
}
}
//memanggil fungsi Elias Gamma Code
void Btn_dekomClick(object sender, EventArgs e)
{
Stopwatch watch = new Stopwatch();
watch.Start();
String dc = ClassEliasGamma.Decode(code);
String ds =
ClassEliasGamma.Decompress(dc, cs, iegc);
richTextBox1.Text = ds;
Universitas Sumatera Utara
DA-4
watch.Stop();
textBox6.Text =
Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4)
.ToString()+"ms";
}
Universitas Sumatera Utara
Universitas Sumatera Utara
BB-1
CURRICULUM VITAE
1. Biodata
Nama
: Sari Rahmadani Siregar
Alamat Sekarang
: Jln. Dr. Mansyur Gg. Saudara No. 14 Medan
Alamat Orang Tua
: Jln. Cendana III No. 01 Padang Sidempuan
Telp/ Hp
: 085275451323
Email
: sarirahmadanisiregar@gmail.com
2. Riwayat Pendidikan
2012 – 2016
: S1 Ilmu Komputer Universitas Sumatera Utara, Medan
2009 – 2012
: SMA Negeri 3 Padang Sidempuan
2006 – 2009
: SMP Negeri 5 Padang Sidempuan
2000 – 2006
: SD Negeri 200515 Padang Sidempuan
3. Keahlian
Bahasa
: Indonesia, Inggris
Pemrograman
: C#, MATLAB
Database
: MySql
Design
: Photoshop, Corel Draw
Perkantoran
: Microsoft Office
4. Kursus yang diikuti
2007-2009
: Les Bahasa Inggris di Sentika English Course
5. Pengalaman Organisasi
[2008 – 2009]
: Sekretaris OSIS SMP Negeri 5 Padang Sidempuan
[20010 – 2011]
: Skeretaris OSIS SMA Negerei 3 Padang Sidempuan
[2012 – 2016]
: Anggota IMAKOPASID
Universitas Sumatera Utara
3B-2
6. Seminar
[2013]
: Seminar Internasional Forum Bisnis ( MIBEX 2013)
[2014]
: Seminar Nasional Literasi Informasi “SENARAI”
[2015]
: Seminar Sosialisasi Toward ASEAN Community 2015:
ASEAN Goes to Campus
Universitas Sumatera Utara
A-1
LISTING PROGRAM
1.
Fibonacci Code
//membuat fungsi Fibonacci Code
public static String GetFibonacciCode(int n) {
StringBuilder fib = new StringBuilder("1");
int a, b, c;
List fibs = new List();
if (n >= 1) {
a = 1;
b = 1;
c = a + b;
fibs.Add(b);
while (n >= c) {
fibs.Add(c);
a = b;
b = c;
c = a + b;
}
fibs.Reverse();
for (int i = 0; i < fibs.Count; i++) {
if (n >= fibs[i]) {
n = n - fibs[i];
fib.Insert(0, "1");
}
else
fib.Insert(0, "0");
}
}
return fib.ToString();
}
//memanggil fungsi Fibonacci Code
void Button1Click(object sender, EventArgs e)
{
String kalimat = richTextBox1.Text;
Stopwatch watch = new Stopwatch(); // running time
watch.Start();
ClassFibonacci.Fibonacci(kalimat);
String stb =
ClassFibonacci.StringToStb(kalimat,ClassFibonacci.cs,ClassFibon
acci.fc);
String code = ClassFibonacci.Encode(stb);
watch.Stop();
Universitas Sumatera Utara
B
A-2
SaveFileDialog simpan = new SaveFileDialog();
simpan.Filter = "Compressed Files( *.fib)|*.fib";
simpan.FileName = "*.fib";
if (simpan.ShowDialog() == DialogResult.OK)
{
FileStream
fstream=new FileStream(simpan.FileName,FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(fstream);
SeekOrigin seekorigin = new SeekOrigin();
sw.BaseStream.Seek(0, seekorigin);
sw.Write(code);
sw.Flush();
sw.Close();
string filenamee=simpan.FileName.Substring(0,si
mpan.FileName.Length- 4) + "f.dat";
FileStream
fstreamm=new FileStream(filenamee,FileMode.OpenOrCreate);
StreamWriter sww = new StreamWriter(fstreamm);
SeekOrigin seekoriginn = new SeekOrigin();
sww.BaseStream.Seek(0, seekoriginn);
sww.Write(ClassFibonacci.cs+"~");
for (int n
= 0; n < ClassFibonacci.cs.Length; n++)
sww.Write(ClassFibonacci.fc[n]+"~");
sww.Flush();
sww.Close();
MessageBox.Show("file berhasil dikompresi");
}
double RC = (kalimat.Length* 8 * 1.0) / stb.Length;
textBox5.Text = Math.Round(RC,2).ToString();
double CR
= (stb.Length/(kalimat.Length* 8 * 1.0))*100;
textBox4.Text =Math.Round(CR,2).ToString()+"
%";
double redu = 100-CR;
textBox8.Text = Math.Round(redu,2).ToString()+" %";
textBox6.Text =
Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4)
.ToString()+" ms";
}
Universitas Sumatera Utara
CA-3
2.
Elias Gamma Code
//membuat fungsi Elias Gamma Code
public static void InvertedEliasGammaCodes(String st) {
int[] freq = CountFreq(st);
String charset = GetCharSet(st);
int t = charset.Length;
InsertionSort(freq, charset);
freq = fr;
charset = cs;
egc = new String[t];
iegc = new String[t];
int c = 0;
int ic = 0;
for (int n = 1; n < t + 1; n++) {
String b = DecToBin(n);
int M = b.Length;
StringBuilder u = new StringBuilder();
for (int k = 0; k < M - 1; k++)
u.Append("0");
u.Append("1");
StringBuilder s1 = new StringBuilder();
for (int j = 0; j < M; j++) {
s1.Append(b[j]);
s1.Append(u[j]);
}
String s2 = s1.ToString();
String s = s2.Substring(1, s2.Length - 1);
egc[c++] = s;
StringBuilder s3 = new StringBuilder();
for (int j = 0; j < s.Length; j++) {
if (s[j] == '0')
s3.Append("1");
else
s3.Append("0");
}
iegc[ic++] = s3.ToString();
}
}
}
//memanggil fungsi Elias Gamma Code
void Btn_dekomClick(object sender, EventArgs e)
{
Stopwatch watch = new Stopwatch();
watch.Start();
String dc = ClassEliasGamma.Decode(code);
String ds =
ClassEliasGamma.Decompress(dc, cs, iegc);
richTextBox1.Text = ds;
Universitas Sumatera Utara
DA-4
watch.Stop();
textBox6.Text =
Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4)
.ToString()+"ms";
}
Universitas Sumatera Utara
Universitas Sumatera Utara
BB-1
CURRICULUM VITAE
1. Biodata
Nama
: Sari Rahmadani Siregar
Alamat Sekarang
: Jln. Dr. Mansyur Gg. Saudara No. 14 Medan
Alamat Orang Tua
: Jln. Cendana III No. 01 Padang Sidempuan
Telp/ Hp
: 085275451323
: sarirahmadanisiregar@gmail.com
2. Riwayat Pendidikan
2012 – 2016
: S1 Ilmu Komputer Universitas Sumatera Utara, Medan
2009 – 2012
: SMA Negeri 3 Padang Sidempuan
2006 – 2009
: SMP Negeri 5 Padang Sidempuan
2000 – 2006
: SD Negeri 200515 Padang Sidempuan
3. Keahlian
Bahasa
: Indonesia, Inggris
Pemrograman
: C#, MATLAB
Database
: MySql
Design
: Photoshop, Corel Draw
Perkantoran
: Microsoft Office
4. Kursus yang diikuti
2007-2009
: Les Bahasa Inggris di Sentika English Course
5. Pengalaman Organisasi
[2008 – 2009]
: Sekretaris OSIS SMP Negeri 5 Padang Sidempuan
[20010 – 2011]
: Skeretaris OSIS SMA Negerei 3 Padang Sidempuan
[2012 – 2016]
: Anggota IMAKOPASID
Universitas Sumatera Utara
3B-2
6. Seminar
[2013]
: Seminar Internasional Forum Bisnis ( MIBEX 2013)
[2014]
: Seminar Nasional Literasi Informasi “SENARAI”
[2015]
: Seminar Sosialisasi Toward ASEAN Community 2015:
ASEAN Goes to Campus
Universitas Sumatera Utara