Optimalisasi Algoritma Huffman Perbandingan kompresi teks menggunakan algoritma huffman statis, huffman dinamis dan modifikasi algoritma huffman.

3.4 Optimalisasi Algoritma Huffman

Seperti yang telah disebutkan dari awal, bahwa algoritma Huffman merupakan dasar dari algoritma kompresi yang ada pada saat ini. Melihat posisi tersebut bukan tidak mungkin dilakukan suatu modifikasi untuk mengoptimalkan hasil kompresi dari algoritma Huffman. Algoritma Huffman mempunyai dua macam algoritma, yaitu Huffman Dinamis dan Huffman Statis. Kedua algoritma tersebut mempunyai persamaan yaitu terbuat dari pohon biner yang dikenal dengan pohon biner Huffman, hanya saja kedua algoritma tersebut mempunyai perbedaan pada preprocessing data. Algoritma Huffman Dinamis lebih fleksibel dan tanpa preprocessing karena data yang masuk akan diolah penempatannya ketika berada di pohon biner, sedangkan algoritma Huffman Statis melakukan pengurutan frekuensi kemunculan dahulu sebelum membuat pohon biner. Kedua algoritma mempunyai persamaan menempatkan karakter yang sering muncul berada di dekat akar sehingga mempunyai kode terpendek. Pada penelitian ini mencoba untuk memodifikasi algoritma Huffman supaya lebih optimal dalam mendapatkan hasil ukuran kompresi. Secara garis besar, modifikasi ini merupakan turunan dari algoritma Huffman Statis. Untuk lebih memahaminya, maka sebuah contoh akan penulis berikan. Data : E B C D A A E A Langkah 1 : cek frekuensi kemunculan setiap huruf, dan di dapat : Hasil : E = 2, B = 1, C = 1, D = 1, A = 3 Langkah 2 : urutkan data dari frekuensi kemunculan terbanyak hingga sedikit : Hasil : A = 3, E = 2, B = 1, C = 1, D = 1 Langkah 3 : pembentukan pohon biner berdasarkan letak setiap karakter, jika pada posisi ganjil maka akan menuju ke sebelah kanan pohon. Jika terletak pada posisi genap maka akan menuju ke sebelah kiri pohon. Secara umum dapat dinyatakan dengan pseudecode sebagai berikut : 1. Cek frekuensi kemunculan tiap karakter. 2. Urutkan frekuensi dari yang terbanyak muncul hingga paling sedikit muncul. 3. Cek posisi karakter yang telah diurutkan, variabel cursor == akar : Ganjil :  Jika cursor.getKanan == null, buat node baru.  Jika cursor.getKanan = null, maka cursor = cursor.getKanan . Genap :  Jika cursor.getKiri == null, buat node baru.  Jika cursor.getKiri == null, maka cursor = cursor.getKiri . 4. Lakukan nomor 3 hingga semua karakter ditempatkan pada pohon biner. Langkah 4 : membuat pohon biner dari data yang telah diurutkan. Gambar 3.4 Pembentukan pohon Huffman modifikasi 1. Pada awalnya hanya akar dan data belum masuk. 2. Kemudian masuk karakter A, karena posisinya di awal ganjil dan data belum ada maka langsung membuat node A di sebelah kanan akar. 3. Kemudian masuk karakter E, karena posisinya kedua genap dan data belum ada maka langsung membuat node E di sebelah kiri akar. 4. Masuk karakter B yang berada pada urutan ketiga ganjil, tetapi sudah ada data A di sebelah kanan maka cursor turun 1 langkah dan membuat node B di bawah node A. 5. Karakter C lalu masuk sebagai urutan keempat genap, tetapi sudah ada data E di sebelah kiri maka cursor turun 1 langkah dan membuat node C di bawah node E. PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 6. Karakter terakhir adalah D dengan posisi kelima ganjil. Karakter tersebut menempati di sebelah kanan akar, tetapi sudah ada data A dan B maka currsor turun 2 langkah dan membuat node D.

3.5 Desain User Interface