Binary Tree Implementasi Algoritma Shannon-Fano Pada Kompresi Audio

20 4. Berilah label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1. 5. Ulangi langkah 3 sampai node tidak dapat dibagi lagi. 6. Telusuri pohon biner dari akar sampai ke daun. Barisan label label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk symbol yang bersesuaian. Jika ingin mengembalikan audio yang terkompresi menjadi audio ukuran asli maka harus dilakukan proses dekompresi. Langkah-langkah dekompresi menggunakan algoritma Shannon-Fano adalah sebgai berikut: 1. Membaca bit pertama dari kode yang dihasilkan. 2. Jika bit pertama ada dalam tabel kode Shannon-Fano, maka bit tersebut diterjemahkan menjadi simbol yang sesuai dengan bit tersebut. 3. Jika bit tersebut tidak ada dalam tabel kode Shannon-Fano, gabungkan bit tersebut dengan bit selanjutya, kemudian cocokkan dengan tabel hasil pengkodean. 4. Ulangi langkah 3 sampai ada rangkaian bit yang cocok dengan tabel kode Shannon-Fano, terjemahkan rangkaian bit tersebut menjadi simbol yang sesuai. 5. Jika terdapat simbol yang sesuai, maka baca bit selanjutnya dan ulangi langkah 2, 3, dan 4 sampai rangkaian kode habis.

2.5 Binary Tree

Suatu binary tree memiliki ciri ciri sebagi berikut: a. Sebuah root b. Terdapat node yang disebut parent atau child c. Parent masing-masing memiliki maksimum 2 buah child d. Node yang tidak memiliki child disebut leaf Universitas Sumatera Utara 21 Untuk lebih jelasnya pembuatan contoh binary tree dapat dilihat pada Gambar 2.6 berikut. Root A B C E D H I Parent Parent child child K F G leaf leaf leaf leaf leaf leaf J Gambar 2.6 Contoh Binary Tree Child dari A: {B, C} Descendant dari A: {B, C, D, E, F, G, H, I, J, K} Child dari B: {D, E} Descendant dari B: {D, E, H, I, J, K} Child dari C: {F, G} Child dari D: {H, I} Child dari E: {J, K} Dilihat dari kepemilikan node pada masing-masing parent dan tinggi tree, maka pohon biner binary tree dibedakan menjadi dua yaitu pohon biner lengkap dan pohon biner sempurna. Pohon biner lengkap completely binary tree, yakni masing- masing node memiliki 2 buah anak atau tidak memiliki anak sama sekali. A B C E D H I F G Gambar 2.7 Contoh Completely Binary Tree Universitas Sumatera Utara 22 Sebuah pohon biner sempurna perfect binary tree adalah pohon biner yang lengkap yang masing-masing node memiliki 2 buah anak dan mempunyai kedalaman yang sama jarak dari akar atau biasanya disebut juga dengan height. A B C E D F G H I J K L M N O Gambar 2.8 Contoh Perfect Binary Tree Berikut ilustrasi untuk memperjelas cara kerja algoritma Shannon-Fano serta pembentukan pohon biner. Diambil suatu sampel data audio yang dinyatakan dalam bentuk heksadesimal. 1. Misalnya file audio dalam bentuk heksadesimal sebagai berikut: FE 3F 02 00 FE 3F 02 FF 7C 3F 2. Langkah awal adalah membentuk tabel distribusi frekuensi seperti terlihat pada Tabel 2.4. Tabel 2.4 Tabel Distribusi Frekuensi Karakter Frekuensi 3F 3 FE 2 02 2 00 1 FF 1 7C 1 Universitas Sumatera Utara 23 3. Kemudian dibentuk node pohon untuk tiap karakter beserta nilai frekuensinya masing-masing. Pengurutan dilakukan secara menurun descending dari nilai frekuensi terbesar hingga terkecil dan frekuensi yang sama didahulukan sesuai dengan urutan yang pertama muncul dapat dilihat pada Gambar 2.9. 3F 3 02 2 FE 2 00 1 7C 1 FF 1 Gambar 2.9 Contoh Pengurutan Frekuensi Secara Descending 4. Setelah itu, dibagi menjadi dua buah bagian node dengan jumlah frekuensi kemunculan simbol yang sama atau hampir mendekati sama antara node yang satu dengan node yang lainnya seperti Gambar 2.10. 3F FE 5 02 00 FF 7C 5 Gambar 2.10 Contoh Pembagian Menjadi Dua Node 5. Berikutnya dengan mengulangi langkah 4, yaitu membagi menjadi dua buah node dengan jumlah frekuensi kemunculan simbol yang sama atau hampir mendekati sama pada salah satu node di node sebelah kiri. 3F FE 5 3F 3 FE 2 02 00 FF 7C 5 Gambar 2.11 Contoh Pembagian Menjadi Dua Node Kedua 6. Untuk node yang di sebelah kiri, node tidak bisa lagi dibagi sehingga dilanjutkan pada node sebelah kanan. Pada node sebelah kanan, ulangi langkah 5 yaitu membagi jumlah frekuensi kemunculan simbol yang sama atau hampir mendekati sama pada salah satu node dapat dilihat pada Gambar 2.12. Universitas Sumatera Utara 24 3F FE 5 3F 3 FE 2 02 00 FF 7C 5 02 2 00 FF 7C 3 Gambar 2.12 Contoh Pembagian Menjadi Dua Node Ketiga 7. Node sebelah kanan dapat dibagi lagi maka lakukan langkah seperti langkah 6, dapat dilihat pada Gambar 2.13. 3F FE 5 3F 3 FE 2 02 00 FF 7C 5 02 2 00 FF 7C 3 00 FF 2 7C 1 Gambar 2.13 Contoh Pembagian Menjadi Dua Node Keempat 8. Kemudian lakukan langkah langkah seperti diatas sampai semua node tidak dapat dibagi lagi. Hasil dari perulangan dapat dilihat pada Gambar 2.14. 3F FE 5 3F 3 FE 2 02 00 FF 7C 5 02 2 00 FF 7C 3 00 FF 2 7C 1 00 1 FF 1 Gambar 2.14 Contoh Pembagian Menjadi Dua Node Kelima Universitas Sumatera Utara 25 9. Setelah semua node tidak dapat dibagi lagi dan membentuk pohon biner, maka tambahkan label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1. Kemudian telusuri pohon biner dari akar hingga ke daun. Barisan label label pada sisi pohon dari akar ke daun menyatakan kode Shannon- Fano untuk simbol yang bersesuaian dapat dilihat pada Gambar 2.15. 3F FE 5 3F 3 FE 2 02 00 FF 7C 5 02 2 00 FF 7C 3 00 FF 2 7C 1 00 1 FF 1 3F FE 02 00 FF 7C 10 1 1 1 1 1 Gambar 2.15 Contoh Pembagian Menjadi Dua Node Keenam 10. Pada Gambar 2.15 dapat dilihat tiap karakter telah memiliki kode Shannon-Fano Penelusuran dari akar ke daun dari atas ke bawah menghasilkan kode Shannon- Fano dengan kode bit untuk tiap karakter seperti pada Tabel 2.5. Tabel 2.5 Tabel Hasil Kode Shannon-Fano Simbol Frekuensi Kode Bit 3F 3 00 2 bit FE 2 01 2 bit 02 2 10 2 bit 00 1 1100 4 bit FF 1 1111 4 bit 7C 1 111 3 bit Universitas Sumatera Utara 26 11. Maka file audio untuk FE 3F 02 00 FE 3F 02 FF 7C 3F hasil kode bit adalah 0100101100100101110111100 dengan jumlah bit hasil kompresi 25 bit dan jumlah sebelum dikompresi yaitu jumlah karakter dalam byte  8 bit = 10  8 bit = 80 bit. Jika ingin mengembalikan audio yang terkompresi menjadi audio ukuran asli maka harus dilakukan proses dekompresi. Sebagai contoh untuk menulis kembali file audio asli dari bilangan heksa pengganti 4B 25 DE 00 maka hal pertama yang perlu dilakukan adalah mengubahnya kembali ke kode bit. Tabel 2.6 Tabel Pengubahan Heksadesimal ke Biner Kode Heksadesimal Kode Biner 4B 01001011 25 00100101 DE 11011110 00 00000000 Setelah didapat kode bit pengganti seperti gambar di atas, kemudian diambil informasi dari header audio untuk mengecek apakah sebelumnya dilakukan penambahan bit. Jika dilakukan adanya penambahan bit, maka kode pengganti tersebut harus dikurangi sebanyak bit yang ditambah pada bit belakang. Misalkan sebelumnya kode bit 01001011001001011101111000000000 ditambah 7 bit maka kode bit ini juga harus dikurangi sebanyak tujuh bit dari belakang menjadi 0100101100100101110111100. Setelah itu, dilakukan langkah langkah proses dekompresi dengan menggunakan tabel kode Shannon-Fano sebelumnya, dari tabel tersebut dibaca bit pertama dari kode yang dihasilkan 0100101100100101110111100. Universitas Sumatera Utara 27 Tabel 2.7 Tabel Kode Shannon-Fano Simbol Frekuensi Kode Bit 3F 3 00 2 bit FE 2 01 2 bit 02 2 10 2 bit 00 1 110 3 bit FF 1 1110 4 bit 7C 1 1111 4 bit Bit pertama adalah 0, dicocokkan pada tabel kode Shannon-Fano diatas. Jika tidak ada simbol yang bersesuaian maka baca bit selanjutnya yaitu 01 dimana terdapat pada tabel kode Shannon-Fano yang merupakan kode dari bilangan heksa FE. Begitu seterusnya sampai akhir rangkaian kode bit sehingga diperoleh kembali bahwa sampel audio semula adalah FF 3F 02 00 FE 3F 02 FF 7C 3F. Universitas Sumatera Utara BAB 3 ANALISIS DAN PERANCANGAN Bab ini secara garis besar membahas analisis algoritma Shannon-Fano untuk kompresi file audio dan tahap-tahap yang akan dilakukan dalam perancangan aplikasi yang akan dibangun.

3.1 Analisis Algoritma