Kompresi File Teks Berbahasa Indonesia dengan Metode Huffman



Proses kompresi file teks berbahasa Indonesia dengan Metode Huffman dapat dijelaskan melalui flowchart (diagram alur program) dibawah ini :

Untitled

Sistem yang akan dibuat mampu mengompresi file teks, maka jenis inputan yang dibutuhkan untuk menjalankan sistem ini adalah file dokumen teks, ataupun inputan teks manual. Masukan terhadap sistem ini sendiri adalah teks yang berbahasa Indonesia, baik berupa kata, kalimat, ataupun sekumpulan kalimat yang membentuk sebuah paragraf atau lebih. Tahapan kerja sistem ini dapat dijabarkan sebagai berikut :

  1. Data inputan dimasukkan ke dalam sistem. Ada dua cara memasukkan inputan ini, yaitu dengan memasukkan file dokumen teks, atau dengan memasukkannya secara manual. Inputan ini dibatasi, yaitu harus berbahasa Indonesia, dan panjang dokumen teks ini tidak dibatasi.
  2. Sistem akan menghilangkan karakter spasi (space) dan tanda baca.
  3. Sistem kemudian akan menghitung banyaknya kemunculan tiap karakter tanpa duplikasi karakter, dan akan dimasukkan ke dalam sebuah array Array[i] dengan i adalah banyaknya karakter unik–1 (i=0…n). Kemudian banyaknya karakter tersebut akan dimasukkan ke dalam array frekuensi F[i]. Array[i] dan F[i] saling berkaitan.
  4. F[i] tersebut akan diposisikan ulang dengan memperhatikan urutan ascending, yaitu dimulai dari frekuensi yang paling kecil. Jika ada nilai F[i] yang sama, maka pengurut akan dilakukan berdasarkan alfabetic dengan memperharikan Array[i].
  5. Merge Array[0] dan Array [1] dan dimasukkan ke dalam Array[0], tetapi frekuensi keduanya dijumlahkan, dan dimasukkan ke dalam F[0]. Secara otomatis Array[1] dan F[1] kosong.
  6. Geser sekali semua isi Array[i] dan F[i] ke kiri untuk mengisi Array[i] dan F[i] yang kosong, yaitu pada posisi i=1.
  7. Ulangi langkah 5 dan langkah 6 sampai yang tersisa adalah Array[0] dan F[0], yaitu ketika semua karakter sudah tergabung.
  8. Proses untuk mendapatkan kode biner didapatkan mulai dari langkah ini. Langkah utamanya yaitu dengan melakukan burst dari karakter di Array[0] yang tersisa sebagai root ke semua leaf sesuai dengan penggabungan semua karakter tersebut dari awal.
  9. Setiap branch yang terbentuk akan dikodekan dengan kode biner (0 dan 1), kode 0 untuk branch kiri, dan kode 1 untuk branch kanan sampai leaf paling bawah (karakter unik) terkodekan.
  10. Proses selanjutnya adalah membaca kode biner yang membentuk karakter di leaf. Cara membacanya dimulai dari root dan diakhiri pada leaf yang bersangkutan.
  11. Untuk menuliskan hasil kompresi ini, kode biner yang diperoleh di setiap leaf diatas ditulis secara utuh menggantikan setiap karakter pada inputan (teks aslinya).

Output dari proses kompresi diatas adalah ukuran file yang lebih kecil, dengan kode-kode biner yang menggantikan setiap karakter penyusun teks/dokumen yang diinputkan pada awal sistem dimulai. Untuk menampilkan hasil kompresi ini, dapat dituliskan dengan kode biner dan juga perbandingan ukuran teks asli dan hasil kompresinya. Hasil kompresi yang diperoleh ditampilkan menggunakan tabel yang menunjukkan kode biner setiap karakternya. Sementara itu, ukuran teks asli dapat diperoleh dengan mengalikan setiap karakter dengan 8 bit, dan hasil kompresi yang sudah berupa kode biner dapat secara langsung diketahui ukuran datanya.
Sebagai contoh, data teks berupa “logika matematika” dengan ukuran sebesar 128 bit (8 bit per karakter) akan menjadi 0000 0001 0011 110 111 01 100 01 101 0010 100 01 101 110 111 01 dengan panjang 48 bit.

Leave a Reply