Implementasi dan Analisis Algoritma Kompresi Punctured Elias Codes dan Ternary Comma Code Pada File .Doc

6

BAB 2

TINJAUAN PUSTAKA

2.1 Kompresi
Istilah kompresi berasal dari kata bahasa Inggris compression yang berarti pemampatan.
Kompresi berarti memampatkan data yang berukuran besar sehingga menjadi kecil sehingga
dapat mengatasi pemborosan dalam penggunaan media penyimpanan.
Kompresi data adalah proses yang dapat mengubah masukan sebuah aliran data
masukan (sumber atau data asli) ke dalam aliran data yang lain (keluaran atau data yang
terkompresi) yang memiliki ukuran yang lebih kecil. Aliran data dapat berupa file, buffer di
memori atau bit individual yang dikirim pada saluran komunikasi (Salomon & Motta, 2010).
Kompresi data adalah (dalam bidang ilmu komputer, ilmu pengetahuan dan seni)
sebuah penyajian informasi ke dalam bentuk yang lebih sederhana. Kompresi data adalah
sebagai sarana untuk representasi yang efisien dari sumber data digital seperti teks, gambar,
suara atau kombinasi dari semuanya yaitu video. Tujuan dari kompresi data adalah untuk
representasi dari sumber data dalam bentuk digital dengan bit sesedikit mungkin sementara
memenuhi persyaratan minimum rekontruksi yang asli (Pu, 2006).
Proses kompresi merupakan proses mereduksi ukuran data untuk menghasilkan

representasi digital yang padat atau mampat (compact) namun tetap mewakili kuantitas
informasi yang terkandung pada data tersebut. Tujuan dari kompresi data adalah untuk
mengurangi data berlebihan (redundancy) sehingga ukuran data menjadi lebih kecil dan lebih
ringan dalam proses transmisi dan menghemat ruang memori dalam penyimpanan data
(Putra, 2010).
Data dalam konteks kompresi data melingkupi segala bentuk digital dari informasi,
yang dapat diproses oleh sebuah program komputer. Bentuk dari informasi tersebut secara
luas dapat diklasifikasikan sebagai teks, suara, gambar dan video (Salomon, 2007).

Universitas Sumatera Utara

7
Data dapat dalam bentuk file teks, gambar, suara atau deretan angka. Alasan kenapa
kompresi data sangat dibutuhkan karena semakin banyak informasi saat ini yang digunakan
dalam bentuk digital dan semakin lama ukuran yang dibutuhkan untuk menyajikan data
tersebut semakin besar (Sayood, 2006).
Kompresi data sangat popular sekarang ini karena dua alasan yaitu (Salomon, 2007) :
1. Orang-orang lebih suka mengumpulkan data. Tidak perduli seberapa besar media
penyimpanan yang dimilikinya. Akan tetapi cepat atau lambat akan terjadi overflow.
2. Orang-orang tidak suka menunggu dalam waktu lama untuk memindahkan data. Misalnya

ketika duduk didepan komputer untuk menunggu halaman Web terbuka atau mendownload sebuah file.

2.2.1 Teknik Kompresi Data
Ketika kita berbicara tentang teknik kompresi atau algoritma kompresi, kita sebenarnya
mengacu pada dua algoritma. Ada algoritma kompresi yang mengambil sebuah input x dan
menghasilkan xc sebagai representasi yang memerlukan bit yang lebih sedikit dan ada
algoritma rekontruksi yang beroperasi pada representasi kompresi xc untuk menghasilkan
rekontruksi y . Operasi ini secara skematis diperlihatkan pada Gambar 2.1 (Sayood, 2006).

Hallo
Mahasiswa
Tingkat
Akhir

Hallo
Mahasiswa
Tingkat
Akhir

Gambar 2.1 Kompresi dan Rekontruksi (Sayood, 2006)


Universitas Sumatera Utara

8
Berdasarkan kemungkinan data yang telah dikompresi dapat dikembalikan ke data
sebelum dikompresi atau data aslinya, teknik kompresi data dikelompokkan menjadi dua
bagian yaitu kompresi data Lossless dan kompresi data Lossy (Pu, 2006).

1. Kompresi Data Lossless
Kompresi lossless adalah kompresi data yang menghasilkan file data hasil kompresi yang
dapat dikembalikan menjadi file data asli sebelum dikompresi secara utuh tanpa
perubahan apapun. Kompresi jenis ini ideal untuk kompresi data teks. Teknik kompresi
lossless digunakan ketika data asli dari sumber sangat penting dan kita tidak ingin
kehilangan rincian data apapun. Contoh seperti data gambar medis, teks dan gambar
sebagai bukti untuk alasan hukum, beberapa file komputer dan lain-lain.
Pada Gambar 2.1, masukan string AABB direkonstruksi setelah eksekusi dari
algoritma kompresi diikuti dengan dekompresi. kompresi lossless disebut kompresi
reversibel karena data asli dapat kembali dengan sempurna dengan adanya proses
dekompresi.


Gambar 2.2 Kompresi Lossless (Pu, 2006)

2. Kompresi Data Lossy
Kompresi lossy adalah kompresi data yang menghasilkan file data hasil kompresi yang
tidak dapat dikembalikan menjadi file data sebelum dikompresi secara utuh. Ketika data
hasil kompresi di-decode kembali, data hasil decoding tersebut tidak dapat dikembalikan
menjadi sama dengan data asli tetapi ada bagian data yang hilang. Kompresi lossy disebut
kompresi ireversibel karena tidak mungkin untuk memulihkan data asli persis dengan
dekompresi. Gambar 2.2 berikut menunjukkan contoh di mana angka desimal yang
panjang menjadi pendek setelah proses kompresi dan dekompresi.

Universitas Sumatera Utara

9

Gambar 2.3 Kompresi Lossy (Pu, 2006)

2.2.2 Parameter Analisis Kinerja Algoritma Kompresi
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa faktor atau
variabel yang biasa digunakan untuk mengukur kualitas dari suatu teknik kompresi data

tersebut, yaitu :
1. Ratio of Compression (RC)
Ratio of Compression (RC) adalah perbandingan antara ukuran data sebelum dikompresi
dengan ukuran data setelah dikompresi (Salomon & Motta, 2010).

RC 

Ukuran Data Sebelum Dikompresi
Ukuran Data Setelah Dikompresi

2. Compression Ratio (CR)
Compression Ratio (CR) adalah presentasi besar data yang telah dikompresi yang didapat
dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran sebelum
dikompresi (Salomon & Motta, 2010).

CR 

Ukuran Data Setelah Dikompresi
 100%
Ukuran Data Sebelum Dikompresi


3. Space Savings (SS)
Space Savings (SS) adalah presentasi selisih ukuran data setelah dikompresi dengan
ukuran data sebelum dikompresi (Salomon & Motta, 2010).

SS  Ukuran Data Sebelum Kompresi  Ukuran Data Setelah Kompresi

Universitas Sumatera Utara

10
4. Time Process (Waktu)
Time Process adalah waktu kompresi dan dekompresi, yaitu waktu yang dibutuhkan oleh
sebuah sistem untuk melakukan proses kompresi dan dekompresi mulai dari pembacaan
data hingga proses encoding pada data tersebut. Semakin kecil waktu yang diperoleh
maka semakin efisien metode yang digunakan dalam proses kompresi dan dekompresi.

2.3 Dekompresi
Algoritma kompresi tidak akan bekerja kecuali proses dekompresi juga tersedia. Kata
kompresi sendiri menyiratkan konteks kompresi dan dekompresi. Proses dekompresi dapat
dengan mudah diperoleh setelah melakukan proses kompresi. Efisiensi proses dekompresi

lebih penting dari proses kompresi, misalnya data film, foto dan audio sering dikompresi
pertama oleh seniman dan kemudian dengan versi file yang sama file kompresi didekompresi
berkali-kali oleh jutaan pemirsa dan pendengar. Gambar 2.4 dibawah ini menunjukkan
hubungan antara kompresi dan dekompresi (Pu,2006).

Gambar 2.4 Kompresi dan Dekompresi (Pu, 2006)

2.4 Algoritma Punctured Elias Codes

Punctured Elias Codes untuk bilangan integer dirancang oleh Peter Fenwick dalam sebuah
percobaan untuk meningkatkan performa the Burrows-Wheeler transform. Istilah Punctured
datang dari tempat pengawasan error code-code (ECC). ECC terdiri dari data yang asli
ditambah sejumlah bilangan dari check bits. Jika beberapa check bits dihilangkan, untuk
mempersingkat serangkaian kode itu, hasil kode Punctured Elias Codes ini adalah sebagai
berikut :

Universitas Sumatera Utara

11
1. Ambil bilangan biner dari n.

2. Reversed (balikkan bit-bitnya) dan siapkan flag untuk menunjukkan jumlah bit yang
bernilai 1 didalam n.
3. Untuk setiap bit 1 didalam n kita siapkan flag dari 1dan akhiri flag dengan 0.
4. Gabungkan flag dengan bilangan biner yang sudah dibalikkan (reversed).

Kode Punctured ini dinamakan kode P1 dan kode ini dimulai dengan 1 (paling sedikit
terdapat satu flag, kecuali untuk kode P1 dengan n  0 ) dan juga diakhiri dengan 1 (karena n
yang asli, yaitu bit MSB (Most Significant Bit) adalah 1, telah dibalikkan) (Salomon, 2007).

Tabel 2.1 Punctured Elias Codes (Salomon, 2007)
n

Binary of n

Reserved

Flag

Flag | Reserved


P1

0

0

-

-

-

0

1

1

1


10

10 | 1

101

2

10

01

10

10 | 01

1001

3


11

11

110

110 | 11

11011

4

100

001

10

10 | 001

10001

5

101

101

110

110 | 101

110101

6

110

011

110

110 | 011

110011

7

111

111

1110

1110 | 111

1110111

8

1000

0001

10

10 | 0001

100001

2.5 Algoritma Ternary Comma Code
Angka Binary (basis 2) adalah dua bit 0 dan 1. Sama dengan angka Ternary (basis 3) yang
didasarkan pada tiga digit (trits) 0, 1 dan 2. Setiap trit (angka) biasa dikodekan dalam dua bit,
tetapi dua bit tersebut dapat memiliki empat nilai. Jadi, hal tersebut tampak masuk akal untuk
berkerja dengan menggunakan sistem angka Ternary dimana setiap trit (angka) diwakili oleh
dua bit dan dalam sebuah penjumlahan menjadi tiga trit (angka) terdapat pada simbol
keempat, yakni Comma (c). Sekali kita masukkan simbol c, itu akan memudahkan kita untuk
membangun Ternary Comma Code untuk bilangan bulat. Comma Code untuk n adalah
bentuk sederhana dari perwakilan Ternary dari n – 1 yang diikuti oleh c. Dengan demikian,

Universitas Sumatera Utara

12
Comma Code dari 8 adalah 21c (karena 7  2  3  1) dan Comma Code dari 18 adalah 122c
(karena 17  1  9  2  3  2 ).
Tabel 2.2 daftar beberapa Ternary Comma Code (Label L menunjukkan panjang dari
kode, dalam bit). Kode-kode ini telah ada (lebih lama dari pada kode-kode yang telah
dijelaskan sebelumnnya disini) namun berkembang secara pelan. Karena itu, mereka cocok
untuk aplikasi dimana bilangan bulat yang nilainya adalah umum. Kode ini juga mudah
untuk di-encode dan di-decode-kan dan hal yang paling prinsip adalah Comma Symbol
(sebagai tanda akhir sebuah kode) yang diperlukan adalah dua bit. Ketidak efisiensi ini
bukanlah hal yang serius, namun dapat menjadi lebih bagi Comma Code yang didasarkan
pada angka dasar yang besar. Pada angka basis 15 Comma Code, contohnya, setiap 15 digit
memerlukan 4 bit dan The Comma-nya juga 4 bit bentuk. Setiap kode diakhiri dengan 4 bit
Comma, tidak termasuk dengan teori minimal dari satu bit dan fitur ini membuat kode-kode
terlihat tidak efesien (bagaimana pun juga, redundansi per simbol menurun untuk sejumlah
besar basis. Dalam sistem basis 7, salah satu dari delapan simbol dikorbankan untuk Comma,
sementara dalam basis 15 itu adalah salah satu dari 16 simbol) (Salomon, 2007).

Tabel 2.2 Ternary Comma Code (Salomon, 2007)
Value

Code

L

Value

Code

L

0

c

2

11

101c

8

1

1c

4

12

102c

8

2

2c

4

13

110c

8

3

10c

4

14

111c

8

4

11c

6

15

112c

8

5

12c

6

16

120c

8

6

20c

6

17

121c

8

7

21c

6

18

122c

8

8

22c

6

19

200c

8

9

100c

6

20

201c

8

…..

…..

64

2001c

10

1,000

1101000c

16

128

11201c

12

3,000

11010002c

18

256

100110c

14

10,000

111201100c

20

512

200221c

14

65,536

10022220020c

24

Universitas Sumatera Utara

13
2.6 File Teks
Text file atau file teks disebut juga dengan flat file, yaitu salah satu jenis file komputer yang
tersusun dalam suatu urutan baris data teks biasanya diwakili oleh 8 bit kode ASCII (atau
EBCDIC) (Pu, 2006).
Teks adalah kumpulan dari karakter-karakter atau string yang menjadi satu kesatuan.
Teks yang memuat banyak karakter didalamnya selalu menimbulkan masalah pada media
penyimpanan dan kecepatan waktu pada saat transmisi data. File teks merupakan file yang
berisi informasi-informasi dalam bntuk teks. Data yang berasal dari dokumen pengolah data,
angka yang digunakan dalam perhitungan, nama dan alamat dalam basis data merupakan
contoh masukan data teks yang terdiri dari karakter, angka dan tanda baca (Pramilo, 2008).
Secara umum, format data teks dibagi menjadi dua bagian, yaitu (Purnomo, 2005) :
1. Teks Sederhana (plain text)
Format data teks (*.txt) merupakan contoh format teks jenis ini yang paling popular.
Format data teks merupakan format teks yang digunakan untuk menyimpan huruf, angka,
karakter control (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 control atau simbol pada arsip teks memakan tempat satu byte.
2. Teks Terformat (formatted text)
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 popular. 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 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.

2.7 Bahasa Pemrograman C#
C# atau sering disebut C sharp merupakan sebuah bahasa pemrograman yang berorientasi
objek yang dikembangkan oleh Microsoft. Seperti halnya bahasa pemrograman yang lain, C#
bisa digunakan untuk membangun berbagai macam jenis aplikasi, seperti aplikasi berbasis

Universitas Sumatera Utara

14
windows (deksktop) dan aplikasi berbasis web serta aplikasi berbasis web service. Terdapat
beberapa editor dari pemrograman C#, yaitu (Saputra, 2013) :
1. Notepad
Notepad dapat membuat aplikasi berbahasa pemrograman C#. File-file C# disimpan
dengan ekstensi .cs. Jika tidak hati-hati menyimpan file C# di Notepad, misalnya
menyimpan file dengan nama test.cs, maka tidak menutup kemungkinan file tersebut
test.cs.txt kecuali kita telah men-setting terlebih dahulu box drop down list pada fungsi
Save As menjadi All File.
2. Visual Studio 6
Jika anda telah terbiasa menggunakan Visual Studio 6, tools tersebut bisa digunakan
untuk membuat aplikasi dengan C#, khususnya dengan menggunakan editor Microsoft
Visual C++.

Ada beberapa alasan kenapa developer memilih C#, yaitu (Nugroho et al, 2013) :
1. Sederhana (simple)
C# menghilangkan beberapa hal yang bersifat kompleks yang terdapat dalam beberapa
macam bahasa pemrograman seperti Java dan C++, termasuk diantaranya menghilangkan
macro, templates, multiple inheritance dan virtual base classes.
2.

Modern
Adanya beberapa fitur seperti exception handling, garbage collection, extensible data
types dan code security. Adanya fitur tersebut menjadikan bahasa C# sebagai bahasa
pemrograman yang modern.

3. Object-oriented language
Kunci dari bahasa pemrograman yang bersifat object-oriented adalah encapsulation,
inheritance dan polymorphism.
4. Powerful dan fleksibel
C# bisa digunakan untuk membuat berbagai macam aplikasi, seperti aplikasi pengolah
kata, grafik, spreadsheet atau bahkan membuat compiler untuk sebuah bahasa
pemrograman.
5. Efisien
C# adalah pemrograman yang manggunakan kata-kata yang tidak terlalu banyak. C#
hanya berisi kata-kata yang biasa disebut dengan keyword.

Universitas Sumatera Utara

15
6. Modular
Kode C# ditulis dengan pembagian masing class-class yang terdiri dari beberapa routines
yang disebut sebagai member methods.
7. C# akan popular
Dengan dukungan penuh dari Microsoft yang mengeluarkan produk-produk utamanya
dengan dukungan Framework .NET, maka masa depan bahasa C# sebagai salah satu
bahasa pemrograman yang ada didalam lingkungan Framework .NET akan lebih baik.

2.8 UML (Unifed Modelling Language)
UML (Unifed Modelling Language) adalah salah satu standar bahasa yang banyak digunakan
di dunia industri untuk mendefinisikan requirement, membuat analisis dan desain, serta
menggambarkan arsitektur dalam pemrograman berorientasi objek. UML muncul karena
adanya kebutuhan pemodelan visual untuk menspesifikasikan, menggambarkan, membangun
dan dokumentasi dari sistem perangkat lunak. UML merupakan bahasa visual untuk
pemodelan dan komunikasi mengenai sebuah sistem dengan menggunakan diagram dan teksteks pendukung. UML hanya berfungsi untuk melakukan pemodelan. Pengguna tidak terbatas
pada metodologi tertentu, meskipun pada kenyataannya UML paling banyak digunakan pada
metodologi berorientasi objek (Sukamto & Shalahuddin, 2013).
Didalam penelitian ini hanya terdapat 4 jenis UML, yaitu Use Case Diagram, Activity
Diagram, Sequence Diagram dan Class Diagram.

1. Use Case Diagram
Use case diagram merupakan pemodelan untuk kelakuan (behavior) sistem informasi
yang akan dibuat. Use Case mendeskripsikan sebuah interaksi antara salah satu atau lebih
aktor dengan sistem informasi yang akan dibuat. Use Case digunakan untuk mengetahui
fungsi apa saja yang ada di dalam sebuah sistem informasi dan siapa saja yang berhak
menggunakan fungsi-fungsi itu . Simbol dasar yang akan digunakan pada use case
diagram adalah (Sukamto & Shalahuddin, 2013):
a. Use Case
Fungsionalitas yang disediakan sistem sebagai unit-unit yang saling bertukar pesan
antar unit dan aktor. Biasanya dinyatakan dengan menggunakan kata kerja di awal
frase nama use case.

Universitas Sumatera Utara

16
b. Actor
Orang, proses atau sistem lain yang berinteraksi dengan sistem informasi yang akan
dibuat diluar sistem informasi yang akan dibuat itu sendiri, jadi walaupun simbol dari
aktor adalah gambar orang, tapi aktor belum tentu merupakan orang.
c.

Association
Komunikasi antar aktor dan use case yang berpartisipasi pada use case atau use case
memiliki interaksi dengan aktor.

2. Activity Diagram
Activity diagram menggambarkan workflow (aliran kerja) atau aktivitas dari sebuah
sistem atau proses bisnis atau menu yang ada pada perangkat lunak. Activity diagram
menggambarkan aktivitas sistem bukan apa yang dilakukan aktor. Simbol dasar yang
akan digunakan pada activity diagram adalah (Sukamto & Shalahuddin, 2013) :
a. Initial note
Status awal aktivitas sistem, sebuah diagram aktivitas memiliki sebuah status awal.
b. Actions
Aktivitas yang dilakukan sistem, aktivitas biasanya diawali dengan kata kerja.
c. Decision
Asosiasi percabangan dimana jika ada pilihan aktivitas lebih dari satu.
d. Join
Asosiasi penggabungan dimana lebih dari satu aktivitas digabungkan menjadi satu.
e. Activity final
Status akhir yang dilakukan sistem, sebuah diagram memiliki sebuah status akhir.

3. Sequence Diagram
Sequence

diagram

menggambarkan

kelakuan

objek

pada

use

case

dengan

mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima antar
objek. Untuk menggambar sequence diagram maka harus diketahui objek-objek yang
terlibat dalam sebuah use case beserta metode-metode yang dimiliki kelas yang
diinstansiasi menjadi objek itu. Simbol dasar yang akan digunakan pada sequence
diagram adalah (Sukamto & Shalahuddin, 2013) :
a. Actor
Seseorang atau sesuatu yang berinteraksi dengan sistem, sama seperti pasa use case.

Universitas Sumatera Utara

17
b. System
Kotak yang menunjukkan sebuah sistem sebagai ‘black box’ atau secara keseluruhan.
c. Lifelines
Garis putus vertikal dibawah aktor dan sistem, menunjukkan berjalannya sistem.
d. Activation bars
Garis membentuk kotak panjang di bawah lifelines, menunjukkan waktu ketika objek
aktif di dalam interaksi.
e. Input messages
Garis panah horizontal dari aktor ke sistem yang menunjukkan input. Cara
penulisannya adalah diawali dengan huruf kecil dan setiap kata setelahnya tetap
digabung (tanpa spasi) namum diawali huruf kapital. Jika mengandung parameter,
ditulis dengan cara yang sama dan setiap parameter diawali dengan koma.
f. Output messages
Garis panah putus-putus horizontal dari sistem ke aktor yang menunjukkan message
yang dikirim dari sistem ke aktor.
g. Receiver actor
Aktor lain diluar sistem yang menerima message dari sistem juga dapat
diikutsertakan.
h. Frame
Sebuah kotak yang dapat menutup satu atau lebih message untuk membagi sequence.
Frame ini dapat menunjukkan loop, pilihan lain.

4. Class Diagram
Class diagram menggambarkan struktur sistem dari segi pendefinisian kelas-kelas yang
akan dibuat untuk membangun sistem. Kelas memiliki apa yang disebut atribut dan
metode atau operasi. Didalam diagram, class ditampilkan dengan kotak berisi tiga bagian
(Sukamto & Shalahuddin, 2013):
a. Bagian atas berisi nama dari class, ditulis dengan huruf tebal, rata tengah dan huruf
pertama kapital.
b. Bagian tengah berisi atribut dari class, ditulis dengan rata kiri dan huruf pertama
kecil.
c. Bagian bawah berisi method atau operation dari class, ditulis dengan rata kiri dan
huruf pertama kecil.

Universitas Sumatera Utara