karena itu secara umum, compression ratio yang tinggi tidak akan mungkin terjadi jika menggunakan teknik lossless compression
[2]
.
2.1.2.2 Lossy Compression
Teknik Lossy Compression memperbolehkan adanya informasi dan data yang hilang setelah proses dekompresi. Contoh : MP3, JPEG, MPEG dan WMA.
Kelebihan dari teknik ini adalah ukuran file yang lebih kecil namun masih dapat memenuhi syarat setelah di dekompresi. Teknik ini sebenarnya
membuang bagian-bagian yang tidak berguna, tidak begitu dirasakan dan tidak begitu dilihat sehingga manusia masih beranggapan bahwa data tersebut masih
memenuhi syarat dan masih bisa digunakan. Jika dilihat dari contoh di atas, sebagian besar produk hasil dari teknik ini
merupakan file multimedia seperti lagu, gambar dan video. Hal itu didasarkan karena file multimedia hanya untuk didengar atau dilihat, sehingga data yang
hilang tidak akan terlalu mempengaruhi selagi masih dalam batas wajar.
2.2 Struktur Data
Dalam penelitian ini, salah satu konsep terpenting yang diambil dari ilmu komputer adalah struktur data. Struktur data merupakan sebuah cabang dari ilmu
komputer yang mempelajari tentang cara dan algoritma dalam pengolahan data. Dalam algoritma Huffman, struktur data merupakan dasar terpenting di mana
pembentukan pohon biner tersebut diambil dari konsep struktur data. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Selain konsep pohon biner, dalam algoritma Huffman juga terdapat konsep pengurutan data. Pengurutan data digunakan untuk preprocessing dalam algoritma
Huffman Statis di mana setelah data di cek frekuensi kemunculannya, maka data akan diurutkan secara descending dari besar ke kecil. Seperti yang telah dibahas
sebelumnya, data dengan kemunculan terbanyak ditempatkan dekat dengan akar.
2.2.1 Pohon Biner Binary Tree
Sebuah pohon biner terbuat dari titik – titik nodes, di mana setiap titik
mempunyai pointer kiri dan kanan serta data element. Pointer akar terletak di paling atas dari pohon. Pointer kiri dan kanan secara rekursif membentuk subtree
[5]
. Dalam setiap pohon biner, terdapat sifat
– sifat pohon antara lain
[8]
: 1.
Node simpul : obyek sederhana elemen dari senarai berantai yang dapat memiliki elemen dan penunjuk ke node lain.
2. Edge : garis yang menghubungkan dua buah node.
3. Path : sederetan node edge dari awal node ke node lain target.
4. Root node : node pertama dalam sebuah tree subtree.
5. Subtree : tree yang merupakan bagian dari sebuah tree yang lebih besar.
6. Left Subtree : subtree yang berada di sebelah kiri sebuah tree.
7. Right subtree : subtree yang berada di sebelah kanan sebuah tree.
8. Parent : node yang berada tepat di atas sebuah node.
9. Child : node yang berada tepat di bawah sebuah node.
10. Left Child : node pertama dalam seuah left subtree parentnode dari left
subtree. 11.
Right Child : node pertama dalam seuah right subtree parentnode dari right subtree.
12. Sibling : node dengan parent yang sama.
13. Leaf Node terrminal simpul : node yang tidak memiliki child.
14. Internal Node : node yang bukan leaf node.
Pohon biner secara umum mempunyai ciri bahwa setiap node hanya mempunyai anak paling banyak dua. Sering kali pohon biner yang baik dan
sempurna adalah pohon biner yang seimbang. Pohon biner seimbang yaitu pohon yang mempunyai tinggi subtree kanan dan kiri tidak lebih dari satu, semua daun
terisi dan semua simpul memiliki dua anak
[8]
.
2.2.2 Quick Sort
Salah satu metode dalam pengurutan data adalah Quick Sort. Pengurutan merupakan salah satu konsep dari struktur data yang digunakan dalam mengolah
data. Pengurutan itu sendiri dapat dibedakan menjadi dua yaitu ascending pengurutan dari data terkecil ke data terbesar dan descending pengurutan dari
data terbesar ke data terkecil. Banyak algoritma pengurutan yang ada seperti bubble sort, selection sort, insertion sort, dan merge sort . Ide dasar metode quick
sort adalah mempartisi array ke dalam subarray kiri dan subarray kanan sehingga setiap elemen di subarray kiri lebih kecil dari setiap elemen di subarray kanan
[9]
. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dari ide dasar metode quick sort tersebut, dapat dipahami bahwa inti dari pengurutannya adalah membagi data menjadi dua bagian. Cara kerja quick sort
[9]
: 1.
Tentukan elemen sebagai pivot dari array, misalkan elemen awal. 2.
Atur array sehingga semua elemen yang lebih kecil atau sama dengan pivot di sebelah kiri pivot dan semua elemen yang lebih besar dari pivot berada di
sebelah kanan. 3.
Secara rekursif quick sort subarray kiri dengan elemen yang lebih kecil atau sama dengan dari pivot dan subarray kanan dengan elemen yang lebih besar
dari pivot.
Gambar 2.1 Penetuan pivot dan cara kerja Quick Sort
Menurut gambar cara kerja quick sort di atas, penentuan sebuah pivot atau titik acuan didasarkan pada elemen awal dalam array. Penentuan ini akan terus
dilakukan pada setiap hasil pembagian data hingga tidak ada array yang tersisa PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
atau dengan kata lain semua data berdiri sendiri. Algoritma quick sort itu sendiri adalah sebagai berikut
[9]
:
Larik A dengan N elemen akan diurutkan secara menaik ascending. Pemanggilan fungsi quick sort rekursif dengan parameter array x, indek awal dan
indek akhir. Parameter
: x adalah array bertipe int. awal = indek awal dari vektor subvektor yang akan diurutkan =
akhir = indek akhir dari vektor subvektor yang akan diurutkan = N-1
Test apakah indek awal akhir, jika ya kerjakan langkah – langkah sebagai
berikut: Langkah 1
: tentukan i = awal + 1, j = akhir. Langkah 2
: tambahkan nilai i dengan 1 selama i = akhir dan x[i] = x[awal]. Langkah 3
: kurangi nilai j dengan 1 selama j awal dan x[j] x[awal]. Langkah 4
: kerjakan langkah 5 sampai 7 selama i j. Langkah 5
: tukarkan nilai x[i] dengan x[j]. Langkah 6
: tambahkan nilai i dengan 1 selama i = akhir dan x[i] = x[awal]. Langkah 7
: kurangi nilai j dengan 1 selama j awal dan x[j] x[awal]. Langkah 8
: tukarkan nilai x[awal] dengan x[j]. Langkah 9
: panggil fungsi quick sort rekursif dengan parameter indek awal = awal dan indek akhir = j -1.
Langkah 10 : panggil fungsi quick sort rekursif dengan parameter indek awal =
j + 1 dan indek akhir = akhir. Langkah 11
: selesai.
2.3 Algoritma Huffman