• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II LANDASAN TEORI"

Copied!
42
0
0

Teks penuh

(1)

BAB II

LANDASAN TEORI

2.1 Pengertian Audio Digital

Suara yang kita dengar sehari-hari adalah merupakan gelombang analog. Gelombang ini berasal dari tekanan udara yang ada di sekeliling kita, yang dapat kita dengar dengan bantuan gendang telinga. Gendang telinga ini bergetar, dan getaran ini dikirim dan diterjemahkan menjadi informasi suara yang dikirimkan ke otak, sehingga kita dapat mendengarkan suara. Suara yang kita hasilkan sewaktu berbicara berbentuk tekanan suara yang dihasilkan oleh pita suara. Pita suara ini akan bergetar, dan getaran ini menyebabkan perubahan tekanan udara, sehingga kita dapat mengeluarkan suara.

Komputer hanya mampu mengenal sinyal dalam bentuk digital. Bentuk digital yang dimaksud adalah tegangan yang diterjemahkan dalam angka “0” dan “1”, yang juga disebut dengan istilah “bit”. Tegangan ini berkisar 5 volt bagi angka “1” dan mendekati 0 volt bagi angka “0”. Dengan kecepatan perhitungan yang dimiliki komputer, komputer mampu melihat angka “0” dan “1” ini menjadi kumpulan bit-bit dan menerjemahkan kumpulan bit-bit tersebut menjadi sebuah informasi yang bernilai.

Bagaimana caranya memasukkan suara analog ini sehingga dapat dimanipulasi oleh peralatan elektronik yang ada? Alat yang diperlukan untuk melakukan ini adalah transducer. Dalam hal ini, transducer adalah istilah untuk menyebut sebuah peralatan yang dapat mengubah tekanan udara (yang kita dengar sebagai suara) ke dalam tegangan elektrik yang dapat dimengerti oleh perangkat elektronik, serta sebaliknya. Contoh

(2)

transducer adalah mikrofon dan speaker. Mikrofon dapat mengubah tekanan udara menjadi tegangan elektrik, sementara speaker melakukan pekerjaan sebaliknya.

Tegangan elektrik diproses menjadi sinyal digital oleh sound card. Ketika Anda merekam suara atau musik ke dalam komputer, sound card akan mengubah gelombang suara (bisa dari mikrofon atau stereo set) menjadi data digital, dan ketika suara itu dimainkan kembali, sound card akan mengubah data digital menjadi suara yang kita dengar (melalui speaker), dalam hal ini gelombang analog. Proses pengubahan gelombang suara menjadi data digital ini dinamakan Analog-to-Digital Conversion (ADC), dan kebalikannya, pengubahan data digital menjadi gelombang suara dinamakan Digital-to-Analog Conversion (DAC).

Proses pengubahan dari tegangan analog ke data digital ini terdiri atas beberapa tahap yang ditunjukkan pada Gambar 2.1, yaitu:

1. Membatasi frekuensi sinyal yang akan diproses dengan Low Pass Filter.

2. Mencuplik sinyal analog ini (melakukan sampling) menjadi beberapa potongan waktu.

3. Cuplikan-cuplikan ini diberi nilai eksak, dan nilai ini diberikan dalam bentuk data digital.

(3)

Gambar 2.1 Konversi Sinyal Analog ke Digital

Proses sebaliknya, yaitu pengubahan dari data digital menjadi tegangan analog juga terdiri atas beberapa tahap, yang ditunjukkan pada gambar 2.2, yaitu:

1. Menghitung data digital menjadi amplitudo-amplitudo analog. 2. Menyambung amplitudo analog ini menjadi sinyal analog.

3. Memfilter keluaran dengan Low Pass Filter sehingga bentuk gelombang keluaran menjadi lebih mulus.

Gambar 2.2 Konversi Sinyal Digital ke Analog

Proses pengubahan sinyal analog menjadi digital harus memenuhi sebuah kriteria, yaitu kriteria Nyquist. Kriteria ini mengatakan bahwa untuk mencuplik sebuah sinyal yang memiliki frekuensi X Hertz, maka harus mencupliknya minimal dua kali lebih rapat, atau 2X Hertz. Jika tidak, sinyal tidak akan dapat dikembalikan ke dalam bentuk semula.

2.2. Kelebihan Audio Digital

Kelebihan audio digital adalah kualitas reproduksi yang sempurna. Kualitas reproduksi yang sempurna yang dimaksud adalah kemampuannya untuk menggandakan sinyal audio secara berulang-ulang tanpa mengalami penurunan kualitas suara.

(4)

Kelebihan lain dari audio digital adalah ketahanan terhadap noise (sinyal yang tidak diinginkan). Pada saat transmisi data dan pemrosesan dengan komponen-komponen elektrik, pada sinyal analog sangat mudah sekali terjadi gangguan-gangguan berupa noise. Suara desis pada kaset rekaman merupakan salah satu contoh terjadinya noise berupa gangguan pada frekuensi tinggi.

Audio digital akan mempermudah pemrosesan sinyal, karena proses-proses pengolahan sinyal digital dapat dilakukan dengan menggunakan operasi-operasi matematis yang diimplementasikan dalam bentuk digital signal processor atau melalui software. Operasi-operasi tersebut antara lain meliputi mixing, filtering, volume control, equalizing, noise reduction, high frequency rebirth, DC offset correction, pengaturan tempo, penambahan efek dan sebagainya.

2.3. Istilah Dalam Audio Digital

Dalam dunia audio digital, ada beberapa istilah yaitu channel (jumlah kanal), sampling rate (laju pencuplikan), bandwidth, bit per sample (banyaknya bit dalam satu sample), bit rate (laju bit).

2.3.1. Channel (Jumlah Kanal)

Jumlah kanal menentukan banyaknya kanal audio yang digunakan. Audio satu kanal dikenal dengan mono, sedangkan audio dua kanal dikenal dengan strereo. Saat ini untuk audio digital standar, biasanya digunakan dua kanal, yaitu kanal kiri dan kanal kanan. Audio untuk penggunaan theater digital menggunakan lebih banyak kanal. Ada

(5)

yang menggunakan tiga kanal, yaitu 2 kanal depan dan surround. Ada yang menggunakan 6 kanal (dikenal dengan format audio 5.1) yaitu terdiri dari 2 kanal depan dan 2 kanal surround, 1 kanal tengah dan 1 kanal subwoofer. Bahkan ada yang menggunakan 8 kanal (format audio 7.1) yaitu terdiri dari 2 kanal depan dan 2 kanal surround, 1 kanal tengah dan 1 kanal subwoofer dan ditambah 2 buah speaker EX (Environmental Extended) untuk menghasilkan suara dari belakang.

2.3.2. Sampling Rate (Laju Pencuplikan)

Ketika sound card mengubah audio menjadi data digital, sound card akan memecah suara tadi menurut nilai menjadi potongan-potongan sinyal dengan nilai tertentu. Proses sinyal ini bisa terjadi ribuan kali dalam satuan waktu. Banyak pemotongan dalam satu satuan waktu ini dinamakan sampling rate (laju pencuplikan). Satuan sampling rate yang biasa digunakan adalah KHz (kilo Hertz)

Kerapatan laju pencuplikan ini menentukan kualitas sinyal analog yang akan diubah menjadi data digital. Makin rapat laju pencuplikan ini, kualitas suara yang dihasilkan akan makin mendekati suara aslinya. Sebagai contoh, lagu yang disimpan dalam Compact Disc Audio (CDA) memiliki sampling rate 44.1 KHz, yang berarti lagu ini dicuplik sebanyak 44100 kali dalam satu detik untuk memastikan kualitas suara yang hampir sama persis dengan aslinya.

Tabel 2.1 Frekuensi Sampling dan Kualitas Suara yang Dihasilkan Sampling Rate (KHZ) Aplikasi

8 Telepon

(6)

16 Kompromi antara 11,025 dan 22,025 KHz

22,025 Mendekati Radio FM

32,075 Lebih baik dari Radio FM

44,1 Compact Disc Audio (CDA)

48 Digital Audio Tape (DAT)

Sampling rate yang umumnya digunakan antara lain 8 KHz, 11 KHz, 16 KHz, 22 KHz, 24 KHz, 44 KHz, 88 KHz. Makin tinggi sampling rate, semakin baik kualitas audio. Teori Nyquist menyatakan bahwa sampling rate yang diperlukan minimal 2 kali bandwidth sinyal. Hal ini berkaitan dengan kemampuan untuk merekonstruksi ulang sinyal audio.

2.3.3. Bandwidth

Bandwidth adalah selisih antara frekuensi tertinggi dan frekuensi terendah yang akan diolah. Misalnya sinyal audio pada telepon yang digunakan untuk menyampaikan sinyal dengan frekuensi 300 – 3400 Hz (ucapan manusia), berarti bandwidth-nya adalah 3100 Hz (3400 dikurangi 300). Maka sampling rate minimum yang diperlukan adalah 2 kali yaitu 6,2 KHz. Demikian pula dengan frekuensi suara secara umum, frekuensi yang dapat didengar manusia adalah 20 – 20.000 Hz, dengan bandwidth 19.980. Berarti sampling rate minimum yang digunakan adalah 39.960 Hz. Jadi frekuensi sampling yang mencukupi adalah 44.100 Hz.

(7)

Bit per sample menyatakan seberapa banyak bit yang diperlukan untuk menyatakan hasil sample tersebut, hal ini berkaitan dengan proses kuantisasi. Bit rate yang digunakan adalah 8 bit per sample atau 16 bit per sample. Proses kuantisasi akan mengubah amplitudo sinyal audio menjadi suatu level sinyal tertentu. Dengan 8 bit per sample akan ada 256 level pilihan sedangkan 16 bit per sample akan ada 65.536 level pilihan. Makin tinggi bit per sample makin teliti proses kuantisasi. Dalam contoh ini, penggunaan 16 bit per sample dibandingkan penggunaan 8 bit per sample akan mempertinggi ketelitian kualitas kuantisasi sebanyak 256 kali.

2.3.5. Bit Rate (Laju Bit )

Istilah bit rate merupakan gabungan dari istilah sampling rate dan bit per sample. Bit rate menyatakan banyaknya bit yang diperlukan untuk menyimpan audio selama satu detik, satuannya adalah bit per detik. Bit rate (dengan satuan bit per detik) diperoleh dengan rumus yang sederhana yaitu perkalian antara jumlah kanal, sampling rate (dengan satuan Hertz) dan bit per sample (dengan satuan bit)

Tabel 2.2 Tabel Penyimpanan Berbagai Konfigurasi Audio Digital Sampling rate Bit per sample Jumlah kanal

Bit rate Byte rate (1 byte = 8 bit) Byte rate per menit 12 kHz 8 1 96.000 12.000 720 KB 12 kHz 8 2 192.000 24.000 1,44 MB 12 kHz 16 1 192.000 24.000 1,44 MB 12 kHz 16 2 348.000 48.000 2,88 MB

(8)

24 kHz 8 1 192.000 24.000 1,44 MB 24 kHz 8 2 348.000 48.000 2,88 MB 24 kHz 16 1 348.000 48.000 2,88 MB 24 kHz 16 2 768.000 96.000 5,76 MB 44.1 kHz 8 1 352.800 44.100 2,646 MB 44.1 kHz 8 2 705.600 88.200 5,292 MB 44.1 kHz 16 1 705.600 88.200 5,292 MB 44.1 kHz 16 2 1.411.200 176.400 10,584 MB

Audio sekualitas CD Audio menggunakan sampling rate 44,1 kHz, 16 bit per sample, 2 kanal. Total media yang diperlukan untuk menyimpan data audio ini perdetik adalah 176.400 byte, untuk durasi 1 menit diperlukan 10,584 MB. Jika rata-rata durasi satu lagu selama 5 menit, maka dibutuhkan tempat lebih dari 50 MB untuk menyimpan data audio lagu tersebut jika diasumsikan 1 KB = 1.000 byte dan 1 MB = 1.000 KB = 1.000.000 byte.

2.4. Data Audio

Salah satu tipe data multimedia adalah audio yang berupa suara ataupun bunyi, data audio sendiri telah mengalami perkembangan yang cukup pesat seiring dengan semakin umumnya orang dengan perangkat multimedia. Tentunya yang merupakan syarat utama supaya komputer mampu menjalankan tipe data tersebut adalah adanya speaker yang merupakan output untuk suara yang dihasilkan dan untuk menghasilkan maupun mengolah data suara yang lebih kompleks seperti *.WAV, *.MIDI tersebut tentunya sudah diperlukan perangkat yang lebih canggih lagi yaitu sound card.

(9)

Tipe dari pelayanan audio memerlukan format yang berbeda untuk informasi audio dan teknologi yang berbeda untuk menghasilkan suara. Windows menawarkan beberapa tipe dari pelayanan audio :

1. Pelayanan audio Waveform menyediakan playback dan recording untuk perangkat keras digital audio. Waveform digunakan untuk menghasilkan non-musikal audio seperti efek suara dan suara narasi. Audio ini mempunyai keperluan penyimpanan yang sedang dan keperluan untuk tingkat transfer paling kecil yaitu 11 K/detik. 2. Midi Audio, menyediakan pelayanan file MIDI dan MIDI playback melalui

synthesizer internal maupun eksternal dan perekaman MIDI. MIDI digunakan untuk aplikasi yang berhubungan dengan musik seperti komposisi musik dan program MIDI sequencer. Karena memerlukan tempat penyimpanan lebih kecil dan tingkat transfer yang lebih kecil daripada Waveform audio, maka sering digunakan untuk keperluan background.

3. Compact Disc Audio (CDA) menyediakan pelayanan untuk playback informasi Red Book Audio dalam CD dengan drive CD-ROM pada komputer multimedia. CD menawarkan kualitas suara tertinggi, namun juga memerlukan daya penyimpanan yang paling besar pula, sekitar 176 KB/detik.

4. Wave Audio merupakan kreasi perusahaan raksasa perangkat lunak Microsoft yang berasal dari standar RIFF (Resource Interchange File Format). Wave audio ini telah menjadi standar format file audio komputer dari suara sistem dan games sampai CD Audio. File Wave diidentifikasikan dengan nama yang berekstensi *.WAV. Format asli dari tipe file tersebut sebenarnya berasal dari bahasa C.

(10)

2.5. Struktur File Wave

Aplikasi multimedia seperti diketahui memerlukan manajemen penyimpanan dari sejumlah jenis data yang bervariasi, termasuk bitmap, data audio, data video, informasi mengenai kontrol device periperal. RIFF menyediakan suatu cara untuk menyimpan semua jenis data tersebut. Tipe data pada sebuah file RIFF dapat diketahui dari ekstensi filenya. Sebagai contoh jenis-jenis file yang disimpan dalam bentuk format RIFF adalah sebagai berikut:

1. Audio/visual interleaved data (.AVI) 2. Waveform data (.WAV)

3. Bitmapped data (.RDI) 4. MIDI information (.RMI) 5. Color palette (.PAL) 6. Multimedia Movie (.RMN) 7. Animated cursor (.ANI)

Pada saat ini, file *.AVI merupakan satu-satunya jenis file RIFF yang telah secara penuh diimplementasikan menggunakan spesifikasi RIFF. Meskipun file *.WAV juga menggunakan spesifikasi RIFF, karena struktur file *.WAV ini begitu sederhana maka banyak perusahaan lain yang mengembangkan spesifikasi dan standar mereka masing-masing.

Format file WAVE seperti yang diketahui, merupakan bagian dari spesifikasi RIFF Microsoft yang digunakan sebagai penyimpan data digital audio. Format file ini merupakan salah satu format file audio pada PC. Seiring dengan popularitas Windows maka banyak aplikasi yang mendukung format file ini.

(11)

Karena bekerja pada lingkungan Windows yang menggunakan prosesor Intel, maka format data dari file WAVE disimpan dalam format urutan little-endian (least significant byte) dan sebagian dalam urutan big-endian.

2.5.1. Format Wave PCM

Jenis format Wave ini merupakan jenis file Wave yang paling umum dan hampir dikenal oleh setiap program. Format Wave PCM (Pulse Code Modulation) adalah file wave yang tidak terkompresi, akibatnya ukuran file sangat besar jika file mempunyai durasi yang panjang. Berikut ini diagram (Gambar 2.4) yang menggambarkan format file Wave PCM.

(12)

Gambar 2.3 Diagram Format File Wave Tabel 2.3 Penjelasan Struktur File Wave Offset Size Nama Field Deskripsi

0 4 ChunkID Terdiri atas kata “RIFF” dalam bentuk ASCII (0x52494646 dalam bentuk big-endian).

4 4 Chunksize 36 + SubChunk2Size atau lebih tepatnya:

4 + (8 + SubChunk1Size) + (8 + SubChunk2Size). Ini adalah besar seluruh file dalam byte dikurangi 8 byte untuk 2 field yang tidak termasuk dalam hitungan: ChunkID dan ChunkSize

8 4 Format Terdiri atas kata “WAVE” (0x57415645 dalam bentuk big-endian).

12 4 SubChunk1ID Terdiri atas kata “fmt “ (0x666d7420 dalam bentuk big-endian).

16 4 SubChunk1Size 16 untuk jenis PCM.

20 2 AudioFormat PCM = 1 (Linear quantization). Nilai lebih dari 1 mengindikasikan file Wave kompresi.

22 2 NumChannels Mono = 1, Stereo = 2 dan seterusnya

24 4 SampleRate 8000, 44100, dan seterusnya dalam satuan Hz 28 4 ByteRate = SampleRate * NumChannels * BitsPerSample / 8 32 2 BlockAlign = NumChannels * BitsPerSample / 8

Jumlah byte untuk satu sampel termasuk semua channel.

(13)

34 2 BitsPerSample 8 bits = 8, 16 bits = 16, dan seterusnya.

36 4 SubChunk2ID Terdiri atas kata “data” (0x64617461 dalam bentuk big-endian).

40 4 SubChunk2Size = NumSamples * NumChannels * BitsPerSample / 8

44 * Data Data Sound sebenarnya.

Sebagai contoh, berikut ini merupakan 72 byte pertama dari sebuah file Wave yang ditampilkan dalam heksadesimal:

52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00 22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00 24 17 1e f3 3c 13 3c 14 16 f9 18 f9 34 e7 23 a6 3c f2 24 f2 11 ce 1a 0d Berikut ini (Gambar 2.4) interpretasi dari tiap byte pada file Wave di atas:

Gambar 2.4 Interpretasi Tiap Byte pada File Wave

(14)

Arsitektur dari pelayanan multimedia dirancang berdasarkan konsep dari extensibilitas (ekstensibility) dan device independence (kebebasan alat). Berdasarkan kata multimedia dapat diasumsikan bahwa multimedia merupakan suatu wadah atau penyatuan beberapa media menjadi satu.

Elemen-elemen dalam pembentukan aplikasi multimedia adalah teks, gambar, suara dan video. Untuk itu ekstensibilitas memungkinkan arsitektur perangkat lunak dengan mudah mengakomodasikan lebih canggih dalam teknologi tanpa perubahan pada arsitektur itu sendiri.

Kebebasan alat memungkinkan aplikasi multimedia menjadi lebih mudah dikembangkan yang akan berjalan pada perangkat keras yang berbeda-beda. 3 (tiga) elemen desain dari perangkat lunak sistem mendukung ekstensibilitas dan kebebasan alat yaitu :

1. Lapisan translasi (MMSystem) yang mengisolasikan aplikasi dari driver peralatan dan memusatkan pada kode kebebasan alat.

2. Hubungan run-time yang memungkinkan lapisan translasi untuk menghubungkan dengan driver yang dibutuhkan.

3. Suatu bentuk yang diatur sesuai dan driver konsisten interface yang meminimalkan kode khusus dan membuat instalasi dan meningkatkan proses menjadi lebih mudah.

Untuk lebih jelasnya maka digambarkan bagaimana lapisan translasi menterjemahkan sebuah fungsi multimedia menjadi panggilan kepada driver alat audio:

Level Aplikasi Level Translasi

Level Device Driver

(15)

Gambar 2.5 Lapisan-Lapisan Multimedia dengan Windows

2.7. Pengertian Windows API

Windows API (Application Programming Interface) merupakan sekumpulan fungsi-fungsi eksternal yang terdapat dalam file-file library Windows (perpustakaan Windows) atau file library lainya yang dapat digunakan oleh program. Fungsi ini dapat menangani semua yang berhubungan dengan Windows seperti pengaksesan disk, grafik Windows, kotak dialog (membuka file, simpan file, memilih font, memilih warna, dan lain-lain), Windows Shell, setting sistem operasi, penanganan file, mengakses sistem registry, memainkan musik dan lain sebagainya . Fungsi ini menyediakan banyak fitur-fitur standar untuk semua program yang berbasis Windows.

Semua fungsi Windows API hampir terdapat pada direktori sistem milik Windows (biasanya terdapat dalam direktori \Windows\System dan \Windows\System32, bergantung pada setting pertama instalasi Windows), dan paling banyak berektensi .DLL yang digunakan oleh sistem operasi Windows. Selain itu fungsi ini juga memastikan secara konsisten penggunaan semua sumber yang terdapat dalam Windows. File-file itulah yang disebut dengan Windows API.

(16)

File library Windows (Dynamic Link Library) yang sering disebut DLL, adalah kode yang sudah dikompilasi dan dapat digunakan oleh program lain. Jika suatu fungsi dan subrutin diletakkan ke dalam DLL, berarti fungsi tersebut dapat diakses oleh semua program pada saat yang bersamaan. DLL biasanya ditulis dengan bahasa C/C++, Delphi atau bahasa lainnya yang mendukung sistem operasi Windows.

Dengan memanggil fungsi yang terdapat dalam DLL, maka dimungkinkan mengakses ribuan fungsi yang berhubungan dengan sistem Windows. Berikut ini nama-nama library milik Windows yang sering dan paling banyak digunakan dalam Windows API.

Tabel 2.4 Deskripsi File-File DLL Nama File DLL Deskripsi File

ADAPI32.DLL

Library yang mendukung fungsi-fungsi keamanan dan rutin-rutin registry.

COMDLG32.DLL Standar kotak dialog Windows GDI32.DLL Penanganan grafik Windows.

KERNEL32.DLL Fungsi sistem operasi Windows 32-bit. LZ32.DLL Fungsi kompresi file.

MPR.DLL Fungsi Internet. NETAPI32.DLL Fungsi Jaringan. SHELL32.DLL Library shell 32-bit.

USER32.DLL Penanganan rutin user interface. VERSION.DLL Versi Windows.

(17)

WINSPOOL.DRV Fungsi-fungsi printer spooler.

2.9. Binary Tree

Suatu binary tree memiliki tipikal sebagai berikut: a. Sebuah root

b. Terdapat node yang disebut sebagai parent atau child c. Parent masing-masing memiliki maksimum 2 buah child d. Node yang tidak memiliki child disebut dengan leaf

Untuk lebih jelasnya tipikal dari binary tree diperlihatkan pada Gambar 2.7 berikut ini.

Gambar 2.6 Contoh Binary Tree Child dari A: {B, C}

(18)

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 (Gambar 2.8).

Gambar 2.7 Contoh Completely Binary Tree

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). Gambar 2.9 memperlihatkan contoh dari pohon biner sempurna.

(19)

Gambar 2.8 Contoh Perfect Binary Tree

Metode Untuk Menyimpan Pohon Biner

Pohon biner dapat dikonstruksi dari bahasa pemrograman primitif dengan beberapa cara. Pada suatu bahasa dengan record dan referensi, pohon biner secara tipikal dikonstruksi dengan sebuah struktur pohon node yang terdiri dari beberapa data dan referensi pada node anak sisi kiri dan node anak sisi kanan. Kadang-kadang juga terdiri atas sebuah referensi pada parent-nya yang unik. Jika suatu node mempunyai lebih dari dua anak, beberapa pointer dari anak mungkin diset ke suatu nilai null khusus, atau ke node sentinel khusus.

Pohon biner juga dapat disimpan dengan array, dan jika pohon merupakan suatu pohon biner lengkap, metode ini tidak memborosokan ruang penyimpanan. Dengan pengaturan kompak tersebut, jika suatu node yang mempunyai indeks i, anak-anaknya dapat ditemukan pada indeks (2i + 1) ke sisi kiri dan (2i + 2) ke sisi kanan, sementara parent-nya ditemukan pada indeks floor ((i1)/2) dengan asumsi akar mempunyai indeks nol. Metode ini menguntungkan sebab lebih kompak dari segi penyimpanan dan referensi

(20)

lokasi yang lebih baik, terutama selama pemindahan pada urutan awal. Bagaimanapun juga, ini memerlukan memori yang saling berdampingan, sulit bertambah, dan menghabiskan ruang proporsional sebesar 2h n untuk sebuah pohon dengan height (h)

dan node (n).

Array disusun atau ditempatkan secara level order traversal seperti terlihat pada Gambar 2.10 berikut ini.

Gambar 2.9 Penyimpanan Pohon Biner Dengan Array

Jadi untuk menentukan Parent dari node 3 maka dapat dicara dengan persamaan: Parent (i) = Floor ( (i 1) / 2)

Parent (1) = Floor ((1 1) / 2) = 0 Parent (3) = Floor ( (3  1) / 2 ) = 1

(21)

Kompresi data dilakukan untuk mereduksi ukuran data atau file. Dengan melakukan kompresi atau pemadatan data maka ukuran file atau data akan lebih kecil sehingga dapat mengurangi waktu transmisi sewaktu data dikirim dan tidak banyak banyak menghabiskan ruang media penyimpan.

2.10.1. Teori Kompresi Data

Dalam makalahnya di tahun 1948, “A Mathematical Theory of Communication”, Claude E. Shannon merumuskan teori kompresi data. Shannon membuktikan adanya batas dasar (fundamental limit) pada kompresi data jenis lossless. Batas ini, disebut dengan entropy rate dan dinyatakan dengan simbol H. Nilai eksak dari H bergantung pada informasi data sumber, lebih terperinci lagi, tergantung pada statistikal alami dari data sumber. Adalah mungkin untuk mengkompresi data sumber dalam suatu bentuk lossless, dengan laju kompresi (compression rate) mendekati H. Perhitungan secara matematis memungkinkan ini dilakukan lebih baik dari nilai H.

Gambar 2.10 Claude E. Shannon

Shannon juga mengembangkan teori mengenai kompresi data lossy. Ini lebih dikenal sebagai rate-distortion theory. Pada kompresi data lossy, proses dekompresi data

(22)

tidak menghasilkan data yang sama persis dengan data aslinya. Selain itu, jumlah distorsi atau nilai D dapat ditoleransi. Shannon menunjukkan bahwa, untuk data sumber (dengan semua properti statistikal yang diketahui) dengan memberikan pengukuran distorsi, terdapat sebuah fungsi R(D) yang disebut dengan rate-distortion function. Pada teori ini dikemukakan jika D bersifat toleransi terhadap jumlah distorsi, maka R(D) adalah kemungkinan terbaik dari laju kompresi.

Ketika kompresi lossless (berarti tidak terdapat distorsi atau D = 0), kemungkinan laju kompresi terbaik adalah R(0) = H (untuk sumber alphabet yang terbatas). Dengan kata lain, laju kompresi terbaik yang mungkin adalah entropy rate. Dalam pengertian ini, teori rate-distortion adalah suatu penyamarataan dari teori kompresi data lossless, dimana dimulai dari tidak ada distorsi (D = 0) hingga terdapat beberapa distorsi (D > 0).

Teori kompresi data lossless dan teori rate-distortion dikenal secara kolektif sebagai teori pengkodean sumber (source coding theory). Teori pengkodean sumber menyatakan batas fundamental pada unjuk kerja dari seluruh algoritma kompresi data. Teori tersebut sendiri tidak dinyatakan secara tepat bagaimana merancang dan mengimplementasikan algoritma tersebut. Bagaimana pun juga algoritma tersebut menyediakan beberapa petunjuk dan panduan untuk memperoleh unjuk kerja yang optimal. Dalam bagian ini, akan dijelaskan bagaimana Shannon membuat model dari sumber informasi dalam istilah yang disebut dengan proses acak (random process). Di bagian selanjutnya akan dijelaskan mengenai teorema pengkodean sumber lossless Shannon, dan teori Shannon mengenai rate-distortion. Latar belakang mengenai teori probabilitas diperlukan untuk menjelaskan teori tersebut.

(23)

2.10.2. Pemodelan Sumber (Source Modeling)

Bayangkan bila kita pergi ke perpustakaan dimana perpustakaan tersebut mempunyai pilihan buku-buku yang banyak, katakanlah terdapat 100 juta buku dalam perpustakaan tersebut. Tiap buku dalam perpustakaan ini sangat tebal, sebagai contoh tiap buku mempunyai 100 juta karakter (atau huruf). Ketika anda pergi ke perpustakaan tersebut, mengambil sebuah buku secara acak dan meminjamnya. Buku yang dipilih tersebut merupakan informasi sumber yang akan dikompresi. Buku yang terkompresi tersebut disimpan pada zip disk untuk dibawa pulang, atau ditransmisi secara langsung melalui internet ke rumah anda ataupun bagaimana kasusnya.

Secara matematis buku yang dipilih tersebut didenotasikan sebagai: X = (X1, X2, X3, X4, …)

Dimana X merepresentasikan seluruh buku, dan X1 merepresentasikan karakter

pertama dari buku tersebut, X2 merepresentasikan karakter kedua, dan seterusnya.

Meskipun pada kenyataannya panjang karakter dalam buku tersebut terbatas, secara matematis diasumsikan mempunyai panjang karakter yang tidak terbatas. Alasannya adalah buku tersebut terlalu tebal dan dapat dibayangkan jumlah karakternya terlalu banyak. Untuk menyederhanakan hal tersebut, misalkan diasumsi semua karakter dalam buku tersebut terdiri atas huruf kecil (‘a’ hingga ‘z’) atau SPACE. Sumber alphabet misalkan A didefinisikan merupakan kumpulan dari 27 kemungkinan nilai dari tiap karakter:

Sekarang jika seorang yang ingin merancang suatu algoritma kompresi maka sangat sulit baginya untuk mengetahui buku yang mana yang akan dipilih. Orang tersebut

(24)

hanya mengetahui bahwa seseorang akan memilih sebuah buku dari perpustakaan tersebut. Dengan cara pandangnya, karakter-karakter dalam buku merupakan (Xi, i = 1, 2 , …) merupakan variabel acak yang diambil dari nilai alphabet A. Keseluruhan buku, X merupakan urutan tak berhingga dari variabel acak, makanya X merupakan suatu proses acak. Ada beberapa cara untuk menyatakan model statistik dari buku tersebut:

A. Zero-Order Model. Tiap karakter distatistik secara bebas dari semua karakter dan 27 kemungkinan nilai dalam alphabet A dinyatakan sama seperti yang muncul. Jika model tersebut akurat, maka cara tipikal untuk membuka sebuah buku adalah seperti berikut ini (semua contoh berasal dari paper Shannon “A Mathematical Theory of Communication“ di tahun 1948) xfoml rxkhrjffjuj zlpwcfwkcyj ffjeyvkcqsghyd qpaamkbzaacibzlhjqd

1. First-Order Model. Dalam bahasa Inggris diketahui beberapa huruf muncul lebih sering dibandingkan huruf yang lain. sebagai contoh, huruf ‘a’ dan ‘e’ lebih umum daripada huruf ‘q’ dan ‘z’. Jadi dalam model ini karakter masih secara bebas terhadap satu sama lain, tetapi distribusi probabilitas dari karakter-karakter tersebut menurut distribusi statistikal urutan pertama dari teks bahasa Inggris. Teks yang secara tipikal dari model ini berbentuk seperti ini: ocroh hli rgwr nmielwis eu ll nbnesebya th eei alhenhttpa oobttva nah brl

2. Second-Order Model. Dua model sebelumnya diasumsi menurut statistik secara bebas dari satu karakter hingga karakter berikutnya. Ini tidak begitu akurat dibandingkan dengan bahasa alami Inggris. Sebagai contoh, beberapa huruf dalam kalimat tersebut hilang. Bagaimanapun juga, kita masih dapat menerka huruf-huruf tersebut dengan mencarinya pada konteks kalimat. Ini

(25)

mengimplikasikan beberapa ketergantungan antara karakter-karakter. Secara alami, karakter yang saling berhubungan dekat lebih saling bergantung daripada karakter yang berhubungan jauh satu sama lainnya. Pada model ini, karakter yang ada Xi bergantung pada karakter sebelumnya Xi−1, tetapi secara kondisional

tidak bergantung dengan semua karakter (X1, X2, …, Xi−2). Menurut model ini,

distribusi probabilitas dari karakter Xi beragram menurut karakter sebelumnya

Xi−1. Sebagai contoh, huruf ‘u’ jarang muncul (probabilitas = 0.022).

Bagaimanapun juga, jika dinyatakan karakter sebelumnya adalah ‘q’ maka probabilitas dari ‘u’ dalam karakter berikutnya lebih tinggi (probabilitas = 0.995). Teks tipikal untuk model ini terlihat seperti berikut: on ie antsoutinys are t inctore st be s deamy achin d ilonasive tucoowe at teasonare fuso tizin andy tobe seace ctisbe

3. Third-Order Model. Ini merupakan pengembangan model sebelumnya. Berikut ini merupakan karakter Xi yang bergantung pada dua karakter sebelumnya (Xi−2,

Xi−1) tetapi secara kondisional tidak bergantung pada semua karakter sebelumnya

sebelum: (X1, X2,…, Xi−3). Pada model ini, distribusi dari Xi beragam menurut

(Xi−2, Xi−1). Teks tipikal dari model ini seperti bentuk berikut ini: in no ist lat

whey cratict froure birs grocid pondenome of demonstures of the reptagin is regoactiona of cre

Penyusunan kembali menjadi teks Inggris asli akan memudahkan tiap teks di atas dapat dibaca.

4. General Model. Pada model ini, buku X merupakan proses acak seimbang yang berubah-ubah. Properti statistikal pada model seperti ini terlalu kompleks untuk

(26)

dipertimbangkan sebagai tujuan praktikal. Model ini disukai hanya dalam sudut pandang teoritikal saja.

Model A di atas merupakan kasus khusus dari model B. Model B merupakan kasus spesial dari Model C. Model C merupakan kasus spesial dari model D. Model D merupakan kasus spesial dari model E.

2.10.3. Entropi Rate Dari Suatu Sumber

Entropy rate dari suatu sumber adalah suatu bilangan yang bergantung hanya pada statistik alami sumber. Jika sumber mempunyai suatu model sederhana, maka nilai tersebut dapat dengan mudah dikalkulasi. Berikut ini, contoh dari sumber yang berubah-ubah:

Dimana X merupakan teks dalam bahasa Inggris. Maka model statistik sumber di atas adalah sebagai berikut:

A. Zero-Order Model. Karakter-karakter secara statistik bersifat bebas untuk setiap alphabet A dan secara bersamaan muncul. Misalkan m merupakan ukuran dari alphabet. Dalam kasus ini, entropy rate dapat dinyatakan dengan persamaan:

(2.3)

Untuk teks dalam bahasa Inggris, ukuran alphabet m = 27. Jadi, jika ini merupakan model akurat untuk teks dalam bahasa Inggris, maka entropy rate akan bernilai H = log2 27 = 4,75 bits/character.

(27)

B. First-Order Model. Karakter-karakter secara statistik bersifat bebas. Misalkan m adalah ukuran dari alphabet dan misalkan Pi merupakan probabilitas dari huruf ke-i

dalam alphabet. Entropy ratenya adalah: (2.4)

Dengan menggunakan first-order distribution, entropy rate dari teks Inggris sebesar 4,07 bits/character.

C. Second-Order Model. Misalkan Pji adalah probabilitas yang berkondisi untuk

karakter yang berlaku saat ini dan merupakan huruf ke-j dalam alphabet yang merupakan karakter sebelumnya yaitu huruf ke-i. maka entropy ratenya adalah:

(2.5)

Dengan menggunakan second-order distribution, entropy rate dengan model di atas adalah 3,36 bits/character.

D. Third-Order Model. Misalkan Pkj,i adalah probabilitas berkondisi yang berlaku

untuk karakter saat ini dan merupakan karakter ke-k dalam alphabet yang didapat dari karakter sebelumnya yaitu huruf ke-j dan satu karakter sebelum huruf ke-i. Entropy rate untuk model tersebut adalah:

(2.6)

Dengan menggunakan third-order distribution, entropy rate dari teks Inggris dengan model di atas adalah 2,77 bits/character.

E. General Model. Misalkan Bn merepresentasikan karakter n pertama. Entropy rate

dalam kasus yang umum dinyatakan dengan persamaan berikut ini: (2.7)

(28)

Dimana seluruh jumlah dari semua mn merupakan kemungkinan nilai dari Bn.

Adalah tidak mungkin untuk menghitung entropy rate menurut persamaan di atas. Dengan menghitung metoda prediksi, Shannon mampu memperkirakan entropy rate dari ke-27 teks Inggris adalah 2,3 bits/character. Hanya terdapat satu entropy rate untuk suatu sumber yang diberikan. Semua definisi di atas untuk entropy rate saling bersesuaian satu sama lainnya.

2.10.4. Dalil Shannon Mengenai Lossless Source Coding

Dalil Shannon mengenai Lossless Source Coding berdasarkan pada konsep dari block coding. Untuk mengilustrasikan konsep tersebut, diperkenalkan suatu sumber informasi khusus dimana suatu alphabet terdiri atas hanya dua huruf:

Di sini, huruf ‘a’ dan ‘b’ sama-sama mempunyai kemungkinan untuk muncul. Bagaimanapun juga, misalkan ‘a’ muncul dalam karakter sebelumnya, probabilitas ‘a’ untuk muncul lagi dalam karakter saat ini adalah 0,9. Sama halnya dengan ‘b’ muncul sebagai karakter sebelumnya, probabilitas ‘b’ akan muncul sekali lagi sebagai karakter saat ini adalah 0,9. Ini dikenal sebagai Binary Symmetric Markov Source.

Suatu urutan block code ke-n merupakan suatu pemetaan yang ditetapkan untuk tiap blok dari karakter berurutan n dalam suatu untaian bit dengan panjang yang beragam. Contoh berikut mengilustrasikan konsep ini:

1. First-Order Block Code. Tiap karakter dipetakan sebagai suatu bit tunggal.

Codeword

(29)

Codeword

b 0.5 1

R =1 bit/character Contoh:

Sebagai catatan 24 bit dipakai untuk merepresentasi 24 karakter − rata-rata 1 bit / karakter.

2. Second-Order Block Code. Tiap pasangan karakter dipetakan dengan satu, dua, atau tiga bit.

Codeword aa 0.45 0 bb 0.45 10 ab 0.05 110 ba 0.05 111 R=0.825 bits/character Contoh:

(30)

Sebagai catatan 20 bit dipakai untuk merepresentasi 24 karakter − rata-rata 0,83 bit / karakter.

3. Third-Order Block Code. Triplet dari karakter dipetakan dengan satu urutan bit dengan panjang mulai dari satu hingga enam.

Codeword aaa 0.405 0 bbb 0.405 10 aab 0.045 1100 abb 0.045 1101 bba 0.045 1110 baa 0.045 11110 aba 0.005 111110 bab 0.005 111111 R=0.68 bits/character Contoh:

Sebagai catatan 17 bit dipakai untuk merepresentasi 24 karakter − rata-rata 0,71 bit / karakter.

(31)

A. Nilai tingkat yang ditunjukkan pada tabel dikalkulasi dengan persamaan: (2.8)

dimana l(Bn) adalah panjang dari codeword untuk block Bn.

B. Semakin tinggi urutan, maka semakin rendah laju berarti semakin baik kompresinya. C. Kode yang dipakai sebagai contoh di atas merupakan kode Huffman.

D. Code Table yang ditampilkan merupakan data terkompresi yang diturunkan dari data asli. Semua contoh yang ditampilkan merupakan lossless.

Dalil: Misalkan Rn* adalah laju untuk urutan ke-n dari kode kompresi data lossless

yang optimal (dalam bit / karakter). Maka (2.9)

Dikarenakan baik upper dan lower bound dari Rn* mendekati entropy rate. H

maka n menuju ketakterhinggaan, maka: (2.10)

Jadi, dalil ditetapkan bahwa entropy rate adalah laju untuk kode kompresi data lossless optimal. Limit yang berada sepanjang sumber diistilah sebagai stationary.

2.10.5. Vector Quantization (VQ)

Vector Quantization (VQ) adalah suatu metoda kompresi data lossy yang berdasarkan atas prinsip dari block coding. VQ merupakan algoritma fixed-fixed length. Pada masa yang lalu, merancang suatu vector quantizer diperhitungkan sebagai masalah yang penuh tantangan karena memerlukan integrasi multi-dimensi. Pada tahun 1980, Linde, Buzo, dan Gray (LBG) mengajukan suatu algoritma desain VG yang berdasarkan

(32)

pada suatu training sequence. Penggunaan dari training sequence melewatkan keperluan untuk integrasi multi-dimensi. Sebuah VQ didesain menggunakan algoritma ini dalam literatur dikenal sebagai LBQ-VQ.

Suatu VQ tidak lebih merupakan suatu approximator. Ide ini sama halnya dengan “rounding-off” (istilah untuk integer terdekat). Sebuah contoh dari VQ 1-dimensi ditunjukkan pada Gambar 2.13 di bawah ini.

Gambar 2.11 VQ 1-Dimensi

Di sini, setiap nilai kurang dari −2 dikira-kirakan dengan −3. Setiap nilai antara −2 dan 0 dikira-kirakan dengan −1. Setiap nilai antara 0 dan 2 dikira-kirakan dengan +1. Setiap nilai yang lebih besar dari 2 dikira-kirakan dengan +3. Sebagai catatan bahwa nilai perkiraan bersifat unik direpresentasi oleh 2 bit. Ini adalah contoh dari 2-bit VQ 1-dimensi dan mempunyai laju 2 bit/1-dimensi.

(33)

Gambar 2.12 VQ 2-Dimensi

Di sini, setiap pasangan nilai jatuh dalam suatu region tertentu dikira-kirakan dengan suatu bintang berwarna merah yang diasosiasikan dengan region tersebut. Sebagai catatan terdapat 16 region dan 16 buah bintang merah. Tiap dari bagian ini bersifat unik yang direpresentasikan oleh 4 bit. Jadi, pada sebuah 4-bit VQ 2-dimensi mempunyai laju 2 bit/dimensi.

Pada dua contoh di atas, bintang berwarna merah disebut sebagai codevector dan region yang didefinisikan oleh garis biru disebut sebagai encoding regions. Kumpulan dari semua codevector disebut codebook dan kumpulan dari semua encoding regions disebut partisi dari ruang (partition of the space).

(34)

Dalam kompresi data lossless, data yang dikompresi dan didekompresi mempunyai replikasi yang sama dengan data asli. Sedangkan pada kompresi data lossy, data yang didekompresi dapat berbeda dari data asli. Secara tipikal, ada beberapa distorsi antara data asli dan signal yang direproduksi.

Program kompresi data populer seperti WinZip, WinRar, WinAce, dan PkZip merupakan salah satu contoh data kompresi data lossless. JPEG merupakan salah satu contoh dari kompresi data lossy.

2.10.7. Perbedaan Antara Compression Rate Dan Compression Ratio

Terdapat dua jenis utama dalam aplikasi kompresi data yaitu transmisi dan penyimpanan. Suatu contoh dari yang terlebih dahulu adalah speech compression untuk transmisi secara real time melalui jaringan digital selular. Contoh untuk kasus yang kedua adalah kompresi file (contoh seperti program DriveSpace dan DoubleSpace).

Istilah “compression rate” dipakai dalam transmisi, sementara istilah “compression ratio” berasal dari istilah teknik penyimpanan data.

Compression rate atau laju kompresi adalah laju dari data yang dikompresi. Secara tipikal, satuannya adalah bit/sampel, bits/karakter, bits/piksel, atau bit/detik. Compression ratio atau rasio kompresi adalah rasio atau perbandingan antara ukuran atau laju data yang dikompresi dengan ukuran atau laju dari data asli.

Compression Ratio = size or rate of compressed data x 100%

size or rate of original data ...(2.17)

Sebagai contoh, jika suatu image gray-scale aslinya direpresentasi oleh 8 bits /pixel (bpp) dan jika dikompresi hingga 2 bpp, maka dapat dikatakan rasio kompresinya adalah 1 banding 4 (1 : 4). Kadang-kadang dikatakan rasio kompresinya adalah 75%.

(35)

Laju kompresi merupakan istilah yang mutlak, sementara rasio kompresi merupakan istilah yang relatif. Sebagai catatan dalam suatu aplikasi tertentu keduanya dapat dipertimbangkan untuk transmisi dan penyimpanan (storage). Sebagai contoh, suatu gambar format JPEG yang terdapat pada website. Ini tidak hanya menghemat ruang penyimpan pada disk lokal, gambar tersebut juga menambah kecepatan transmisi ketika dikirim sebagai image melalui internet.

2.10.8. Perbedaan Antara Teori Kompresi Data dan Teori Pengkodean Sumber Tidak ada perbedaan antara teori kompresi data (data compression theory) dengan teori pengkodean sumber (source coding theory). Keduanya mempunyai arti yang sama. Istilah “coding” adalah istilah umum yang berarti “data compression” atau “error control coding”.

2.10.9. Pengertian Stationary

Secara matematis, suatu proses acak merupakan stationary jika untuk setiap nilai integer positif n dan k vektor mempunyai distribusi probabilitas yang sama.

“Stationary” merupakan istilah pada contoh dari perpustakaan seperti pada uraian di atas. Misalkan pada huruf pertama dari semua 100 juta buku dan dapat dilihat seberapa sering huruf pertama adalah ‘a’, seberapa sering muncul huruf pertama ‘b’, dan seterusnya. Dengan cara demikian maka akan didapat suatu distribusi probabilitas dari huruf pertama dari suatu buku acak. Jika diulang percobaan tersebut untuk huruf kelima puluh dan keseratus lima, akan didapat dua distribusi yang lain. Jika ketiga distribusi tersebut sama, maka cenderung dikatakan bahwa proses buku tersebut adalah stationary.

(36)

Untuk mendapatkan hasil yang lebih akurat, harus dicari dan digabung distribusi dari huruf pertama dan kedua dan membandingkannya dengan gabungan distribusi dari huruf ke-101 dan 102. Jika gabungan dari distribusi tersebut secara kasar sama, maka dapat dipastikan lagi proses buku tersebut bersifat stationary.

Pada kenyataannya, proses buku tidak dapat bersifat stationary karena karakter pertama tidak dapat berupa spasi (SPACE).

2.10.10. Pengertian Ergodic

Definisi matematika yang sempurna untuk ergodicity terlalu kompleks untuk dijelaskan. Bagaimanapun juga, Shannon menawarkan penjelasan intuitif sebagai berikut. Dalam proses ergodic setiap urutan dihasilkan oleh proses yang sama dalam properti statistik. Jadi frekuensi huruf, frekuensi pasangan huruf, dan sebagainya, diperoleh dari urutan yang khusus, seiring dengan meningkatnya panjang urutan mendekati limit tak bebas dari urutan khusus tersebut. Sebenarnya tidaklah benar untuk tiap urutan tetapi kumpulan darinya salah jika probabilitasnya nol. Secara kasar properti ergodic berarti “statistikal homogenitas”.

2.10.11. Algoritma Blahut Untuk Mengkalkulasi Rate-Distortion Function Misalkan diberikan suatu sumber diskrit dengan fungsi massa probabilitas:

dan pengukuran distorsi

(37)

dan nilai integer yang kecil

Bagian berikut ini adalah Algoritma Blahut untuk mengkalkulasi titik pada kurva R(D) dengan slope s.  merepresentasikan akurasi dari R(D). Dalam algoritma ini, indeks i dan j adalah nilai integer yang mempunyai kisaran dari 1 hingga m.

2.10.12. Jenis-Jenis Algoritma Kompresi Data

Algoritma kompresi untuk jenis kompresi lossless (tanpa kehilangan data) yang banyak digunakan diantaranya : Huffman, RLE, LZ77, LZ78 dan LZW. Sedangkan untuk jenis kompresi lossy (kehilangan beberapa bagian data), algoritma yang banyak digunakan antara lain: Differential Modulation, Adaptive Coding dan Discrete Cosine Transform (DCT).

2.10.13. Algoritma Kompresi Huffman

Algoritma kompresi Huffman dinamakan sesuai dengan nama penemunya yaitu David Huffman, seorang profesor di MIT (Massachusets Instuate of Technology).

Kompresi Huffman merupakan algoritma kompresi lossless dan ideal untuk mengkompresi teks atau file program. Ini yang menyebabkan mengapa algoritma ini banyak dipakai dalam program kompresi.

Kompresi Huffman termasuk dalam algoritma keluarga dengan variable codeword length. Ini berarti simbol individual (karakter dalam sebuah file teks sebagai contoh) digantikan oleh urutan bit yang mempunyai suatu panjang yang nyata (distinct length). Jadi simbol yang muncul cukup banyak dalam file akan memberikan urutan yang

(38)

pendek sementara simbol yang jarang dipakai akan mempunyai urutan bit yang lebih panjang.

Contoh praktis berikut ini menunjukkan cara kerja dari algoritma Huffman. Misalkan akan dikompresi potongan data seperti berikut ini:

ACDABA

Distribusi frekuensi untuk karakter di atas seperti berikut ini:

Karakter A B C D

Frekuensi 3 1 1 1

Selanjutnya dibentuk node seperti bentuk berikut ini berdasarkan frekuensi di atas, disusun mulai dari frekuensi terbesar hingga terkecil. Kemudian dibentuk pohon Huffman agar didapat kode simbol atau kode pengganti untuk karakter-karakter di atas.

A 3 B 1 C 1 D 1

Kemudian diurutkan dari node dengan frekuensi terkecil hingga terbesar

A 3 B 1 C 1 D 1

Selanjutnya dua buah node terkecil digabung membentuk satu node baru dimana frekuensinya merupakan penjumlahan dari keduanya.

(39)

Setelah itu diurutkan kembali berdasarkan frekuensi tiap node secara urutan menaik.

Kemudian dua buah node terkecil digabung menjadi satu kembali untuk membentuk node baru.

Setelah itu diurutkan kembali berdasarkan frekuensi tiap node secara urutan menaik.

Kemudian dua node terakhir ini digabung membentuk satu pohon tunggal yang disebut dengan pohon Huffman dengan node paling atas merupakan root.

(40)

Langkah terakhir adalah memberikan label bit “0” untuk setiap sisi kiri dari pohon dan label bit “1” untuk setiap sisi kanan dari pohon.

Karena potongan data tersebut terdiri atas 6 karakter, maka teks tersebut terdiri atas 6 byte atau 48 bit. Dengan Huffman encoding, akan dicari simbol yang paling sering muncul (dalam kasus ini adalah karakter ‘A’ muncul sebanyak 3 kali). dan kemudian sebuah pohon (tree) akan dibentuk untuk menggantikan simbol dengan urutan bit yang lebih pendek. Pada kasus khusus ini, algoritma akan menggunakan tabel pengganti sebagai berikut: A = 1, B = 010, C = 011, D = 00. Jika code word dipakai untuk

(41)

mengkompresi file, maka data yang telah dikompresi akan terlihat seperti berikut ini. ACDABA

10110010101

Ini berarti hanya 11 bit yang dipakai selain 48 bit, berarti rasio kompresi adalah 4 : 1 untuk file tersebut.

Huffman encoding dapat dioptimalkan dengan dua cara yang berbeda yaitu sebagai berikut:

1. Adaptive Huffman Code secara dinamis mengubah code word menurut perubahan dari probabilitas dari simbol.

2. Extended Huffman Compression dapat meng-encode grup dari simbol daripada pada melakukan encode pada simbol tunggal.

Algoritma kompresi Huffman secara umum efisien dalam mengkompresi teks atau file program. Untuk file image biasanya dipakai algoritma yang lain. Kompresi Huffman secara umum dipakai dalam program kompresi seperti PKZip, LHA, GZ, ZOO, dan ARJ. Algoritma ini juga dipakai dalam kompresi JPEG dan MPEG.

Adapun bentuk algoritma dari Huffman dalam membentuk sebuah pohon biner adalah sebagai berikut:

1. Dimulai dengan penyusunan frekuensi simbol sebagai frekuensi dari pohon 2. Jika terdapat lebih dari satu pohon:

a. Carilah dua pohon dengan jumlah weight yang paling kecil

b. Gabungkan dua pohon tersebut menjadi satu dan mempunyai nilai setara dengan jumlah keduanya, atur salah satunya yang bernilai paling kecil sebagai child sisi kiri dan yang lainnya sebagai child sisi kanan

(42)

3. Lakukan langkah di atas hingga membentuk satu pohon biner tunggal

4. Untuk setiap child sisi kiri beri simbol ‘0’ dan beri simbol ‘1’ untuk merepresentasi child sisi kanan

Gambar

Tabel  2.1   Frekuensi Sampling dan Kualitas Suara yang Dihasilkan Sampling Rate (KHZ) Aplikasi
Tabel 2.2  Tabel Penyimpanan Berbagai Konfigurasi Audio Digital Sampling  rate Bit per sample Jumlah kanal
Gambar 2.3  Diagram Format File Wave Tabel 2.3   Penjelasan Struktur  File Wave Offset Size Nama Field Deskripsi
Gambar 2.4  Interpretasi Tiap Byte pada File Wave
+7

Referensi

Dokumen terkait

Persentase dari tingkat kesulitan butir dari masing-masing kategori dapat diketahui bahwa sebagian besar tingkat kesulitan butir adalah berkategori sedang.. Daya

Menurut Kartika Nuringsih (2005) dan Anggie Noor Rachmad dan Dul Muid (2013) menyatakan bahwa kepemilikan manajerial memiliki pengaruh positif dan signifikan terhadap

Penelitian ini bertujuan untuk menghasilkan produk pengembangan berupa miniatur pembangkit listrik tenaga uap yang dapat digunakan oleh guru dan siswa dalam proses pembelajaran

Waktu melakukan perhitungan THD tegangan digunakan standar untuk tegangan dibawah 69 kV, kemudian dari hasil pengukuran yang telah diperoleh dilakukan perbandingan

Event-driven Process Chain(2) Tindakan Medis Bed Alat Medis Obat- obatan X Pelayanan Bedah Pelayanan Lab PK Pelayanan Radiologi V Pelayanan Medis Selesai Dilakukan XOR Pasien

Proses sheeting yang kurang dari 10 kali akan menghasilkan adonan yang rapuh karena serat gluten ditarik terlalu drastis dari bahan pangan sehingga adonan mi

Berkait dengan kepribadian tokoh yang terepresentasi melalui tokoh Santiago dalam novel Sang Alkemis, dapat memberikan pengaruh yang luar biasa terhadap pembaca dalam

Sedangkan anggota pencinta alam yang kurang bahkan tidak berinisiatif (tidak langsung melakukan pemaknaan atas situasi lingkungan sebagai situasi yang memerlukan bantuan, tanpa