Analisis Perbandingan Algoritma Huffman Dan Algoritma Sequtur Dalam Kompresi Data Text

6

BAB 2

LANDASAN TEORI

2.1. Kompresi Data
Kompresi adalah mengecilkan/ memampatkan ukuran. Kompresi Data adalah teknik
untuk mengecilkan data sehingga dapat diperoleh file dengan ukuran yang lebih kecil
daripada ukuran file aslinya. Kompresi dibutuhkan untuk menghemat kebutuhan
tempat penyimpanan dan waktu untuk transmisi/pertukaran data[1].
Terdapat dua teknik dalam kompresi data yaitu losseles compression dan lossy
compression. Losseles artinya tidak ada data yang hilang, menggunakan algortima
tertentu untuk mengompres data (compress) dan mengembalikan ke ukuran semula
(decompress) sehingga cocok untuk mengkompresi data berupa teks. Losseles
Compression adalah teknik kompresi yang tidak mengurangi ukuran aslinya.
Sedangkan Lossy artinya ada data yang hilang, bertujuan untuk mengefisienkan data.
Ketika proses dekompresi dilakukan, maka output yang dihasilkan tidak sama
dengan data aslinya. Lossy Compression adalah teknik kompresi yang mengurangi
ukuran aslinya. Lossy Compression biasanya dipakai untuk mengompres data
multimedia.

Pengiriman data hasil kompresi dapat dilakukan jika pihak pengirim atau yang
melakukan kompresi dan pihak penerima memiliki aturan yang sama dalam hal
kompresi data sehingga data yang diterima dapat dibaca/di-decode kembali dengan
benar.

2.2. Parameter Analisis Kompresi
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat
beberapa faktor yang biasa digunakan untuk menganalisa kualitas dari suatu
teknik kompresi data[2] yaitu :

Universitas Sumatera Utara

7

1.

Ratio of Compression
Ratio of Compression (RC) adalah nilai perbandingan antara ukuran bit data
sebelum dikompresi dengan ukuran bit data yang telah dikompresi. Secara
matematis dapat dituliskan sebagai berikut :


2.

RC =

....................................................................... (1)

Compression Ratio
Compression Ratio (CR) adalah persentase perbandingan antara data yang sudah
dikompresi dengan data yang belum dikompresi. Secara matematis dapat
dituliskan sebagai berikut :

3.

×

CR =

Redundancy


% ....................................................... (2)

Redundancy (RD) adalah kelebihan yang terdapat di dalam data sebelum
dikompresi. Jadi setelah dikompresi dapat dihitung Redundancy data yaitu
persentasi dari hasil seleisih antara ukuran data sebelum dikompresi dengan data
setelah dikompresi.
RD =

4.

% − CR

Time Process (Waktu Kompresi dan Dekompresi)
Time Process (waktu

kompresi

dan

dekompresi)


adalah

waktu

yang

dibutuhkan untuk melakukan proses kompresi dan dekompresi. Semakin
kecil waktu yang diperoleh maka semakin efisien metode yang digunakan
dalam proses kompresi dan dekompresi itu.

2.3. Algoritma
Untuk membuat suatu data menjadi lebih kecil ukurannya daripada data asli,
diperlukan tahapan-tahapan (algoritma) untuk mengolah data tersebut. Secara
informal, algoritma adalah prosedur komputasi yang didefinisikan dengan baik yang
mengambil beberapa nilai, atau seperangkat nilai sebagai input dan menghasilkan

Universitas Sumatera Utara

8


nilai, atau seperangkat nilai sebagai output Algoritma juga merupakan kumpulan
instruksi/perintah/langkah yang berhingga jumlahnya, dituliskan secara sistematis, dan
digunakan untuk menyelesaikan masalah/persoalan logika dan matematika dengan
bantuan komputer[3]. Berdasarkan pengertian algoritma tersebut, dapat disimpulkan
bahwa algoritma merupakan suatu istilah yang luas, yang tidak hanya berkaitan
dengan dunia komputer.
Dalam algoritma kompresi data, tidak ada algoritma yang cocok untuk semua
jenis data. Hal ini disebabkan karena data yang akan dimampatkan harus dianalisis
terlebih dahulu, dan berharap menemukan pola tertentu yang dapat digunakan untuk
memperoleh data dalam ukuran yang lebih kecil. Karena itu, muncul banyak
algoritma-algoritma kompresi data[4].

2.4. Algoritma Huffman
Algoritma Huffman adalah salah satu algoritma kompresi tertua yang disusun oleh
David Huffman pada tahun 1952. Algoritma tersebut digunakan untuk membuat
kompresi jenis lossless compression, yaitu pemampatan data dimana tidak satu byte
pun hilang sehingga data tersebut utuh dan disimpan sesuai dengan aslinya.
Algoritma menggunakan prinsip pengkodean yang mirip dengan kode Morse, yaitu
tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit, dimana

karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dan
karakter yang jarang muncul dikodekan dengan rangkaian bit yang lebih panjang[5].
Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi
data yang dimasukkan) menjadi sekumpulan code-word, algoritma Huffman termasuk
ke dalam kelas algoritma yang menggunakan metode statik, yaitu metode yang selalu
menggunakan peta kode yang sama. Metode ini membutuhkan dua fase (two-phase),
yaitu fase pertama untuk menghitung probabilitas kemunculan tiap simbol dan
menentukan peta kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan
kode yang akan ditransmisikan[6].

Universitas Sumatera Utara

9

2.4.1. Pembentukan Pohon Huffman ( Huffman Tree )
Kode pada dasarnya merupakan kode prefiks (prefix code), yaitu himpunan yang
berisi sekumpulan kode biner, dimana pada kode prefiks ini tidak ada kode biner yang
menjadi awalan bagi kode biner yang lain.
Kode prefiks biasanya direpresentasikan sebagai pohon biner yang diberikan
nilai atau label. Untuk cabang kiri pada pohon biner diberi label 0, sedangkan pada

cabang kanan pada pohon biner diberi label 1. Rangkaian bit yang terbentuk pada
setiap lintasan dari akar ke daun merupakan kode prefiks untuk karakter yang
berpadanan. Pohon biner ini biasa disebut pohon. Langkah-langkah pembentukan
pohon adalah sebagai berikut :
1.

Baca semua karakter didalam teks dan hitung banyaknya kemunculan jenis
karakter.

2.

Gabungkan dua pohon yang mempunyai frekuensi terkecil pada sebuah akar.
Ulangi langkah tesebut sampai bertemu daun.

3.

Kodekan rangkaian bit yang telah dibaca dengan karakter di daun. Kode ini
biasanya identik dengan pohon biner yang diberi label 0 untuk cabang kiri dan 1
untuk cabang kanan.


4.

Ganti data yang ada dengan kode bit berdasarkan pohon biner.

5.

Simpan jumlah bit untuk kode bit yang terbesar, jenis karakter yang diurutkan
dari frekuensi keluarnya terbesar ke terkecil beserta data yang sudah berubah
menjadi kode bit sebagai data hasil kompresi.

2.4.2. Proses Encoding
Encoding adalah cara menyusun string biner dari teks yang ada. Encoding adalah cara
nebyusun string biner dari teks yang ada. Proses encoding untuk satu karakter dimulai
dengan membuat pohon terlebih dahulu. Setelah itu, kode untuk satu karakter dibuat
dengan menyusun nama string biner yang dibaca dari akar sampai ke daun pohon .

Universitas Sumatera Utara

10


Langkah-langkah untuk men-encoding suatu string biner adalah sebagai berikut :
1.

Tentukan karakter yang akan di-encoding

2.

Mulai dari akar, baca setiap bit yang ada pada cabang yang bersesuaian sampai
ketemu daun dimana karakter itu berada

3.

Ulangi langkah 2 sampai seluruh karakter di-encoding

2.4.3. Proses Decoding
Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun kembali
data dari string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan
dengan dua cara, yang pertama dengan menggunakan tabel kode dan yang kedua
dengan menggunakan pohon. Langkah-langkah men-decoding suatu string biner
dengan menggunakan pohon adalah sebagai berikut :

1.

Baca sebuah bit dari string biner.

2.

Mulai dari akar

3.

Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian.

4.

Ulangi langkah 1, 2 dan 3 sampai bertemu daun. Kodekan rangkaian bit yang
telah dibaca dengan karakter di daun.

5.

Ulangi dari langkah 1 sampai semua bit di dalam string habis.


2.5. Algoritma Sequitur
Algoritma Sequitur merupakan sebuah algoritma yang menyimpulkan tata bahasa
bebas konteks (context-free grammar) ke dalam suatu pemampatan untuk mengurangi
masukan yang berulang. Pada algoritma ini dikenal simbol nonterminal. Simbol
tersebut merupakan unsur dari production rules (aturan-aturan yang digunakan
untuk membangun sebuah kalimat)[7]. Susunan produksi dalam penulisan ulang
terhadap simbol nonterminal terletak disebelah kiri produksi.
Operasi sequitur terdiri dari pemastian sifat yang berlaku yaitu algoritma
beroperasi menjalankan batasan didalam sebuah tata bahasa yang ketika diagram
keunikan (digram uniqueness) dilanggar maka sebuah aturan baru dibentuk.

Universitas Sumatera Utara

11

2.5.1. Digram Keunikan (Digram Uniqueness)
Digram uniqueness mempunyai arti bahwa tidak ada pasangan dari simbol/ digram
muncul lebih dari sekali dalam sebuah tata bahasa. Jika hal ini terjadi maka akan
melanggar aturan batasan pertama (digram uniqueness) sehingga akan membentuk
aturan baru (simbol non-terminal) yang akan menggantikan simbol/digram yang
muncul lebih dari sekali.

2.6. Kompleksitas Algoritma
Suatu masalah dapat mempunyai banyak algoritma penyelesaian. Algoritma yang
digunakan tidak saja harus benar, namun juga harus efesien. Efesiensi suatu algoritma
dapat diukur dari waktu eksekusi algoritma dan kebutuhan ruang memori. Algoritma
yang efesien adalah algoritma yang meminimumkan kebutuhan waktu dan ruang.
Dengan menganalisis beberapa algoritma untuk suatu masalah, dapat diidentifikasi
satu algoritma yang paling efesien. Besaran yang digunkan menjelaskan model
pengukuran waktu dan ruang ini adalah kompleksitas algoritma.
Kompleksitas algoritma terdiri dari dua macam, yaitu kompleksitas waktu
dan kompleksitas ruang. Kompleksitas waktu dinyatakan dengan T(n), diukur dari
jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai
fungsi dari ukuran masukan n, dimana ukuran masukan (n) merupakan jumlah data
yang diproses oleh sebuah algoritma. Sedangkan kompleksitas ruang S(n), diukur dari
memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai
fungsi dari masukan n. Dengan menggunakan kompleksitas waktu dan ruang, dapat
ditentukan laju peningkatan waktu atau ruang yang diperlukan algoritma, seiring
dengan meningkatnya masukan (n). Terdapat beberapa jenis kelas efisiensi umum
yang dijumpai dalam Big-O, yaitu dapat kita lihat pada tabel 3.1. berikut :

Universitas Sumatera Utara

12

Tabel 3.1 Kompleksitas Algoritma
Fungsi Big-O

Nama

O(1)

Konstan

O(log n)

Logaritmik

O(n)

Linear

O(n log n)

n log n

O(n2)

Kuadratik

O(n3)

Kubik

O(nm)

Polinomiale

O(n!)

Faktorial

Keterangan Tabel :
1. Konstan O(1): Disebut konstan, karena program hanya dieksekusi dengan
suatu nilai yang konstan.
2. Logaritmik O(log n): Disebut algoritma logaritmik, karena peningkatan waktu
eksekusi sebanding dengan peningkatan logaritma dari jumlah data.
3. Linear O(n): Disebut linear, karena peningkatan waktu eksekusi sebanding
dengan peningkatan data, dan merupakan kondisi optimal dalam membuat
algoritma.
4. Linearitmik O(n log n): Disebut linearitmik, karena merupakan gabungan dari
linear dan logaritmik. Algortima ini merupakan algoritma log n yang
dijalankan sebanyak n kali. Biasanya digunakan untuk memecahkan masalah
besar menjadi masalah yang kecil.
5. Kuadratik O(n2): Disebut kuadratik, karena peningkatan waktu eksekusi
program akan sebanding dengan peningatan kuadrat jumlah data.
6. Kubik O(n3): Disebut kubik, karena peningkatan waktu eksekusi program akan
sebanding dengan peningkatan pangkat tiga jumlah data.
7. Polinomiale O(nm): Algoritma yang tidak efisien, karena memerlukan jumlah
langkah penyelesaian yang jauh lebih besar daripada jumlah data.

Universitas Sumatera Utara

13

8. Faktorial O(n!): Merupakan algoritma yang paling tidak efisien, karena waktu
eksekusi program akan sebanding dengan peningkatan faktorial jumlah data.

2.7. Pengertian Data Teks
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. Data teks
merupakan file yang berisi informasi-informasi dalam bentuk teks. Data yang berasal
dari dokumen pengolah kata, angka yang digunakan dalam perhitungan, merupakan
contoh masukan data teks yang terdiri dari karakter, angka dan tanda baca.
Masukan dan keluaran data teks direpresentasikan sebagai set karakter atau
sistem kode yang dikenal oleh sistem komputer. Salah satu set karakter yang umum
digunakan untuk masukan dan keluaran pada komputer yaitu ASCII (American
Standard Code for Information Interchange). ASCII digunakan oleh untuk
menunjukkan teks. Kode ASCII memiliki komposisi bilangan biner sebanyak 8 bit,
dimulai dari 00000000 dan 11111111. Total kombinasi yang dihasilkan sebanyak 256,
dimulai dari kode 0 hingga 255 dalam sistem bilangan desimal.

Universitas Sumatera Utara