Struktur Data Perbandingan kompresi teks menggunakan algoritma huffman statis, huffman dinamis dan modifikasi algoritma huffman.

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