Matakuliah Tahun : T0034 / Perancangan & Analisis Algoritma : 2008 Pertemuan 19 HUFFMAN CODE KOMPRESI DATA • Bagaimana sebenarnya program kompresi data itu bekerja? • Mengapa sebuah file yang ukurannya sudah baku ternyata bisa diperkecil tanpa mengurangi isinya? • Misalkan kita hendak menyimpan sebuah huruf A. Komputer akan mengenali huruf A ini sebagai karakter dengan urutan ke-65, maka huruf A disimpan di harddisk sebagai 100 0001 atau merupakan kode biner dari angka 65. – Berarti dibutuhkan 7 digit biner untuk menyimpan huruf A. • Kompresi data berusaha menyimpan sebuah data dengan jumlah digit biner seminimum mungkin. [buku utama, bab 8.1] Bina Nusantara CHARACTER ENCODING • ASCII (American Standard Code for Information Interchange) – Character encoding ASCII terdiri atas 95 karakter yang bisa dicetak dan 33 karakter perintah. Jadi total terdapat 128 karakter yang diwakili dengan 7 bit bilangan biner • ISO 8859-1 adalah standar karakter sepanjang 8 bit, dapat menyimpan 256 karakter. – Standar ini sering disebut juga dengan character encoding Latin-1. Bagian awal dari ISO 8859-1 memiliki set yang hampir sama dengan ASCII. • UTF-8 (Unicode Transformation Format) adalah standar character encoding yang memungkinkan huruf dari berbagai bahasa dimunculkan secara bersamasama. Jumlah bit untuk menyimpan 1 karakter pada standar ini berbeda-beda. – Karakter ASCII disimpan sepanjang 1 byte (8 bit). – Karakter-karakter Latin, Greek, Cyrillic, Armenian, Hebrew, Arabic, Syriac dan Thaana disimpan sepanjang 2 byte (16 bit). – Karakter-karakter bahasa lain disimpan sepanjang 3 byte (24 bit). Yang menarik, karakter huruf Jawa/Bali (alfabet hanacaraka) dan karakter Bugis dari Indonesia sudah terdaftar dalam UTF-8 bagian ini. – Masih dimungkinkan menyimpan karakter sepanjang 4 byte untuk keperluan masa depan (saat ini belum digunakan). Bina Nusantara TABEL KARAKTER Biner 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0011 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 # C 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 sp ! " # $ % & ' ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? Biner 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0100 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0101 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 # C 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ Biner 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0111 0111 0111 0111 0111 0111 0111 0111 0111 0111 0111 0111 0111 0111 0111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 # C 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ [buku utama, tabel 8.1] Bina Nusantara ALGORITMA HUFFMAN • • • Diciptakan oleh David A. Huffman pada tahun 1951 sebagai tugas kuliah ketika menempuh pendidikan Ph.D di Massachusetts Institute of Technology (MIT). Dosen pengajar Huffman (bernama Robert M. Fano) menawarkan kepada para mahasiswanya bahwa siapa saja yang dapat menulis sebuah artikel tentang membangun pohon biner yang efisien akan mendapatkan nilai bagus tanpa harus menempuh ujian. Setelah lama mencoba dan hampir menyerah, Huffman akhirnya menemukan sebuah metode untuk membangun pohon biner berdasarkan frekuensi. – Tekniknya kemudian diakui sebagai teknik yang paling efisien, melebihi teknik buatan sang dosen sendiri. • • Binary Tree (pohon biner) yang dibuat oleh Huffman (disebut sebagai Huffman Tree) adalah dasar dari kompresi data dengan format ZIP yang kita kenal sekarang. Teknik ini juga dipakai sebagai salah satu algoritma penyusun format file gambar JPEG dan format file musik populer MP3. – Jadi, bila kita sekarang bisa mendengarkan MP3 player kita sambil berkegiatan, salah satu faktor yang membuat teknologi ini ada adalah algoritma Huffman. [buku utama, bab 8.2] Bina Nusantara MEMBUAT HUFFMAN TREE 1. Urutkan karakter dari yang frekuensinya paling kecil menjadi sebuah tabel. 2. Pilih 2 karakter teratas, buat menjadi leaf node dari tree. Cantumkan isi karakter dan frekuensi nya dalam node. 3. Buat node baru dengan posisi sebagai parent node dari kedua leaf node. Frekuensinya didapat dari penjumlahan frekuensi kedua child node-nya. 4. Hilangkan huruf-huruf yang sudah dipakai dari tabel. 5. Masukkan node baru ke dalam tabel. 6. Ulangi proses dari langkah nomor 2 hingga isi tabel habis. Bina Nusantara CONTOH KASUS • Misalkan kita hendak menyimpan kalimat : – LOGIKA ALGORITMA • Maka dibuat tabel frekuensi : Bina Nusantara K R T M sp L O G I A 1 1 1 1 1 2 2 2 2 3 HUFFMAN TREE • Pelajari penjelasan tiap langkah pada ilustrasi 8.3 untuk memahami bagaimana Huffman Tree dibuat [buku utama, ilustrasi 8.3i] Bina Nusantara TABEL HUFFMAN CODE • • • • • • • • • • • • • • • • K R T M sp L O G I A 11110 11111 0100 0101 1110 011 100 101 110 00 L O G I K A sp A L G O R I T M A Bina Nusantara 011 100 101 110 11110 00 1110 00 011 101 100 11111 110 0100 0101 00 3 bit 3 bit 3 bit 3 bit 5 bit 2 bit 4 bit 2 bit 3 bit 3 bit 3 bit 5 bit 3 bit 4 bit 4 bit 2 bit PENDALAMAN MATERI • Selain bit yang berisi data, tabel yang berisi Huffman Code juga perlu disimpan agar data dapat diterjemahkan kembali • Pelajari juga contoh kasus 8.2 di buku utama – Tabel frekuensi (tabel 8.5) – Huffman Tree (ilustrasi 8.4) – Huffman Code (tabel 8.6) Bina Nusantara LATIHAN • Buatlah tabel frekuensi, Huffman Tree dan Huffman Code untuk mengkompresi kalimat berikut MARI BELAJAR TEKNOLOGI INFORMASI Bina Nusantara REVIEW • Apa yang sudah dipahami? • Apa yang akan dibahas selanjutnya? Bina Nusantara
© Copyright 2024 Paperzz