Paradigma Rekayasa Perangkat Lunak: Model RAD

Rapid Application Development (RAD) adalah strategi siklus hidup yang ditujukan untuk menyediakan pengembangan yang jauh lebih cepat dan mendapatkan hasil dengan kualitas yang lebih baik dibandingkan dengan hasil yang dicapai melalui siklus tradisional (McLeod, 2002). RAD merupakan gabungan dari bermacam-macam teknik terstruktur dengan teknikprototyping dan teknik pengembangan joint application untuk mempercepat pengembangan sistem/aplikasi (Bentley, 2004). Dari definisi-definisi konsep RAD ini, dapat dilihat bahwa pengembangan aplikasi dengan menggunakan metode RAD ini dapat dilakukan dalam waktu yang relatif lebih cepat.

Pemaparan konsep yang lebih spesifik lagi dijelaskan oleh Pressman (2005) dalam bukunya,“Software Engineering: A Practition’s Approach”. Ia mengatakan bahwa RAD adalah proses model perangkat lunak inkremental yang menekankan siklus pengembangan yang singkat. Model RAD adalah sebuah adaptasi “kecepatan tinggi” dari model waterfall, di mana perkembangan pesat dicapai dengan menggunakan pendekatan konstruksi berbasis komponen. Jika tiap-tiap kebutuhan dan batasan ruang lingkup projek telah diketahui dengan baik, proses RAD memungkinkan tim pengembang untuk menciptakan sebuah “sistem yang berfungsi penuh” dalam jangka waktu yang sangat singkat. Dari penjelasan Pressman (2012) ini, satu perhatian khusus mengenai metodologi RAD dapat diketahui, yakni implementasi metode RAD akan berjalan maksimal jika pengembang aplikasi telah merumuskan kebutuhan dan ruang lingkup pengembangan aplikasi dengan baik.

 

Sedangkan menurut Kendall (2010), RAD adalah suatu pendekatan berorientasi objek terhadap pengembangan sistem yang mencakup suatu metode pengembangan serta perangkat-perangkat lunak. RAD bertujuan mempersingkat waktu yang biasanya diperlukan dalam siklus hidup pengembangan sistem tradisional antara perancangan dan penerapan suatu sistem informasi. Pada akhirnya, RAD sama-sama berusaha memenuhi syarat-syarat bisnis yang berubah secara cepat.

siklus-rad-e1399723570398

Fase dan Tahapan Pengembangan Aplikasi

Menurut Kendall (2010), terdapat tiga fase dalam RAD yang melibatkan penganalisis dan pengguna dalam tahap penilaian, perancangan, dan penerapan. Adapun ketiga fase tersebut adalah requirements planning (perencanaan syarat-syarat), RAD design workshop(workshop desain RAD), dan implementation (implementasi). Sesuai dengan metodologi RAD menurut Kendall (2010), berikut ini adalah tahap-tahap pengembangan aplikasi dari tiap-tiap fase pengembangan aplikasi.

1)      Requirements Planning (Perencanaan Syarat-Syarat)

Dalam fase ini, pengguna dan penganalisis bertemu untuk mengidentifikasikan tujuan-tujuan aplikasi atau sistem serta untuk megidentifikasikan syarat-syarat informasi yang ditimbulkan dari tujuan-tujuan tersebut. Orientasi dalam fase ini adalah menyelesaikan masalah-masalah perusahaan. Meskipun teknologi informasi dan sistem bisa mengarahkan sebagian dari sistem yang diajukan, fokusnya akan selalu tetap pada upaya pencapaian tujuan-tujuan perusahaan (Kendall, 2010).

2)      RAD Design Workshop (Workshop Desain RAD)

Fase ini adalah fase untuk merancang dan memperbaiki yang bisa digambarkan sebagaiworkshop. Penganalisis dan dan pemrogram dapat bekerja membangun dan menunjukkan representasi visual desain dan pola kerja kepada pengguna. Workshop desain ini dapat dilakukan selama beberapa hari tergantung dari ukuran aplikasi yang akan dikembangkan. Selama workshop desain RAD, pengguna merespon prototipe yang ada dan penganalisis memperbaiki modul-modul yang dirancang berdasarkan respon pengguna. Apabila sorang pengembangnya merupakan pengembang atau pengguna yang berpengalaman, Kendall menilai bahwa usaha kreatif ini dapat mendorong pengembangan sampai pada tingkat terakselerasi (Kendall, 2010).

3)      Implementation (Implementasi)

Pada fase implementasi ini, penganalisis bekerja dengan para pengguna secara intens selama workshop dan merancang aspek-aspek bisnis dan nonteknis perusahaan. Segera setelah aspek-aspek ini disetujui dan sistem-sistem dibangun dan disaring, sistem-sistem baru atau bagian dari sistem diujicoba dan kemudian diperkenalkan kepada organisasi (Kendall, 2010).

5

Kelebihan dan Kekurangan RAD

Metode pengembangan sistem RAD relatif lebih sesuai dengan rencana pengembangan aplikasi yang tidak memiliki ruang lingkup yang besar dan akan dikembangkan oleh tim yang kecil. Namun, RAD pun memiliki kelebihan dan kekurangannya sebagai sebuah metodoligi pengembangan aplikasi. Berikut ini adalah kelebihan metodologi RAD menurut Marakas (2006):

  1. Penghematan waktu dalam keseluruhan fase projek dapat dicapai.
  2. RAD mengurangi seluruh kebutuhan yang berkaitan dengan biaya projek dan sumberdaya manusia.
  3. RAD sangat membantu pengembangan aplikasi yang berfokus pada waktu penyelesaian projek.
  4. Perubahan desain sistem dapat lebih berpengaruh dengan cepat dibandingkan dengan pendekatan SDLC tradisional.
  5. Sudut pandang user disajikan dalam sistem akhir baik melalui fungsi-fungsi sistem atau antarmuka pengguna.
  6. RAD menciptakan rasa kepemilikan yang kuat di antara seluruh pemangku kebijakan projek.

Sedangkan, mengacu pada pendapat Kendall (2010), maka dapat diketahui bahwa kekurangan penerapan metode RAD adalah sebagai berikut:

  1. Dengan metode RAD, penganalisis berusaha mepercepat projek dengan terburu-buru.
  2. Kelemahan yang berkaitan dengan waktu dan perhatian terhadap detail. Aplikasi dapat diselesaikan secara lebih cepat, tetapi tidak mampu mengarahkan penekanan terhadap permasalahan-permasalahan perusahaan yang seharusnya diarahkan.
  3. RAD menyulitkan programmer yang tidak berpengalaman menggunakan prangkat ini di mana programmer dan analyst dituntut untuk menguasai kemampuan-kemampuan baru sementara pada saat yang sama mereka harus bekerja mengembangkan sistem.

 

Source: 

https://id.wikipedia.org/wiki/Rapid_application_development
https://murtri.wordpress.com/2014/08/25/model-model-pengembangan-perangkat-lunak-beserta-contoh-penerapannya/
https://piyaneo.wordpress.com/2014/05/10/rapid-application-development-rad/

 

 

Animasi, Prinsip Animasi, dan Perbedaan Antara Cell Animation dan Digital Animation.

PENGERTIAN ANIMASI

Animasi adalah menghidupkan gambar, sehingga anda perlu mengetahui dengan pastisetiap detail karakter anda, mulai dari tampak (depan, belakang, ¾ dan samping) detailmuka si karakter dalam berbagai ekspresi (normal, diam, marah, senyum, ketawa, kesal,dll.) lalu pose/ gaya khas karakter bila sedang melakukan kegiatan tertentu yang menjadiciri khas si karakter tersebut. Bahkan seorang ‘Sinchan’ dengan karakter yang sederhana tetapi mempunyai kekuatan personality-nya sehingga membuat penonton tahu betul sifat-sifatnya. Jadi perlu diperhatikan bahwa karakter anda bukan sekedar gambar tetapimempunyai kelakuan tertentu yang seolah-olah punya jiwa. Karena animasi adalahmembuat gambar anda kelihatan hidup, sehingga kita bisa mempengaruhi emosi penonton menjadi turut merasa sedih, ikutan menangis, jatuh cinta, kesal, gembira bahkan tertawa terbahak-bahak.Bila karakter anda sudah siap, tentu saja setelah lebih dari 100 kali anda mencoba, baruselanjutnya memastikan kelengkapan data pribadinya, sekaligus memberikan ‘warna’seperti pada contoh Ana dengan menggunakan satuan RGB (red, green & blue), gunanyaadalah agar anda dan teman anda yang bergabung dalam team anda tahu betul warnaRGB yang dipakai untuk kulitnya, bajunya, garisnya, dst.nya. Kalau perlu dibuat warnakarakter pada saat malam dan siang hari, di luar ruangan (exterior) dan di dalam ruangan(interior).


PRINSIP ANIMASI.

12 Prinsip Animasi. Kata “animasi” berasal dari kata “animate,” yang berarti untuk membuat obyek mati menjadi seperti hidup. Seorang Animator profesional sepertinya harus mengetahui dan memahami bagaimana sebuah animasi dibuat sedemikian rupa sehingga didapatkan hasil animasi yang menarik, dinamis dan tidak membosankan.

Dua orang animator profesional Thomas dan Johnston memberikan 12 prinsip animasi yang di adopsi dari animasi produksi Walt Disney. Animasi ini sebenarnya paling pas digunakan untuk animasi kartun. Ke-12 prinsip animasi tersebut adalah sebagai berikut :

1. Solid Drawing

Kemampuan menggambar sebagai dasar utama animasi memegang peranan yang menentukan “baik proses maupun hasil” sebuah animasi, terutama animasi klasik. Meskipun kini peran gambar yang dihasilkan sketsa manual sudah bisa digantikan oleh komputer, tetapi dengan pemahaman dasar dariprinsip ‘menggambar’ akan menghasilkan animasi yang lebih ‘peka’. Sebuah obyek/gambar dibuat sedemikian rupa sehingga memiliki karakteristik sebuah obyek (volume, pencahayaan dan konsistensi kualitas gambar/bentuk/karakter).

2. Timing & Spacing

Grim Natwick, seorang animator Disney pernah berkata, “Animasi adalah tentang timing dan spacing”. Timing adalah tentang menentukan waktu kapan sebuah gerakan harus dilakukan, sementara spacing adalah tentang menentukan percepatan dan perlambatan dari bermacam-macam jenis gerak.

Contoh Timing: Menentukan pada detik keberapa sebuah obyek/karakter berjalan sampai ke tujuan atau berhenti.

Contoh Spacing: Menentukan kepadatan gambar (yang pada animasi akan berpengaruh pada kecepatan gerak).

3. Squash & Stretch

Squash and strecth adalah upaya penambahan efek lentur (plastis) pada objek atau figur sehingga seolah-olah ‘memuai’ atau ‘menyusut’ sehingga memberikan efek gerak yang lebih hidup. Penerapan squash and stretch pada figur atau benda hidup (misal: manusia, binatang, creatures) akan memberikan ‘enhancement’ sekaligus efek dinamis terhadap gerakan/action tertentu, sementara pada benda mati (misal : gelas, meja, botol) penerapan squash and stretch akan membuat mereka (benda-benda mati tersebut) tampak atau berlaku seperti benda hidup.

Contoh ketika sebuah bola dilemparkan. Pada saat bola menyentuh tanah maka dibuat seolah-olah bola yang semula bentuknya bulat sempurna menjadi sedikit lonjong horizontal, meskipun kenyataannya keadaan bola tidak selalu demikian. Hal ini memberikan efek pergerakan yang lebih dinamis dan ‘hidup’.

4. Anticipation

Anticipation boleh juga dianggap sebagai persiapan/awalan gerak atau ancang-ancang. Seseorang yang bangkit dari duduk harus membungkukkan badannya terlebih dahulu sebelum benar-benar berdiri. Pada gerakan melompat, seseorang yang tadinya berdiri harus ada gerakan ‘membungkuk’ terlebih dulu sebelum akhirnya melompat.

5. Slow In and Slow Out

Slow In dan Slow Out menegaskan bahwa setiap gerakan memiliki percepatan dan perlambatan yang berbeda-beda. Slow in terjadi jika sebuah gerakan diawali secara lambat kemudian menjadi cepat. Slow out terjadi jika sebuah gerakan yang relatif cepat kemudian melambat. Contoh Slow In :

6. Arcs

Pada animasi, sistem pergerakan tubuh pada manusia, binatang, atau makhluk hidup lainnya bergerak mengikuti pola/jalur (maya) yang disebut Arcs. Hal ini memungkinkan mereka bergerak secara ‘smooth’ dan lebih realistik, karena pergerakan mereka mengikuti suatu pola yang berbentuk lengkung (termasuk lingkaran, elips, atau parabola). Sebagai contoh, Arcs ditunjukkan pada lintasan tangan saat melempar bola dan lintasan gerak bola di udara.

7. Secondary Action

Secondary action adalah gerakan-gerakan tambahan yang dimaksudkan untuk memperkuat gerakan utama supaya sebuah animasi tampak lebih realistik. Secondary action tidak dimaksudkan untuk menjadi ‘pusat perhatian’ sehingga mengaburkan atau mengalihkan perhatian dari gerakan utama. Kemunculannya lebih berfungsi memberikan emphasize untuk memperkuat gerakan utama.

Contoh: Ketika seseorang sedang berjalan, gerakan utamanya tentu adalah melangkahkan kaki sebagaimana berjalan seharusnya. Namun sambil berjalan ‘seorang’ figur atau karakter animasi dapat sambil mengayun-ayunkan tangannya. Gerakan mengayun-ayunkan tangan inilah yang disebut secondary action untuk gerakan berjalan.

8. Follow Through and Overlapping Action

Follow through adalah tentang bagian tubuh tertentu yang tetap bergerak meskipun seseorang telah berhenti bergerak. Misalnya, rambut yang tetap bergerak sesaat setelah melompat. Overlapping action secara mudah bisa dianggap sebagai gerakan saling-silang. Maksudnya, adalah serangkaian gerakan yang saling mendahului (overlapping). Contoh : Kelinci yang melompat. Sesaat setelah melompat telinganya masih bergerak-gerak meskipun gerakan utama melompat telah dilakukan.

9. Straight Ahead Action and Pose to Pose

Dari sisi resource dan pengerjaan, ada dua cara yang bisa dilakukan untuk membuat animasi. Yang pertama adalah Straight Ahead Action, yaitu membuat animasi dengan cara seorang animator menggambar satu per satu, frame by frame, dari awal sampai selesai seorang diri. Teknik ini memiliki kelebihan: kualitas gambar yang konsisten karena dikerjakan oleh satu orang saja. Tetapi memiliki kekurangan yaitu waktu pengerjaan yang lama.

Yang kedua adalah Pose to Pose, yaitu pembuatan animasi oleh seorang animator dengan cara menggambar hanya pada keyframe-keyframe tertentu saja, selanjutnya in-between atau interval antar keyframe digambar/dilanjutkan oleh asisten/animator lain. Cara kedua ini memiliki waktu pengerjaan lebih cepat karena melibatkan lebih banyak sumber daya sehingga lebih cocok diterapkan pada industri animasi.

10. Staging

Staging dalam animasi meliputi bagaimana ‘lingkungan’ dibuat untuk mendukung suasana atau ‘mood’ yang ingin dicapai dalam sebagian atau keseluruhan scene. Biasanya berkaitan dengan posisi kamera pengambilan gambar. Posisi kamera bawah membuat karakter terlihat besar dan menakutkan, kamera atas membuat karakter tampak kecil dan bingung sedangkan posisi kamera samping membuat karakter tampak lebih dinamis dan menarik.

11. Appeal

Appeal berkaitan dengan keseluruhan look atau gaya visual dalam animasi. Kita bisa dengan mudah mengidentifikasi gaya animasi buatan Jepang dengan hanya melihatnya sekilas. Kita juga bisa melihat style animasi buatan Disneyatau Dreamworks cukup dengan melihatnya beberapa saat. Hal ini karena mereka memiliki appeal atau gaya tersendiri dalam pembuatan karakter animasi.

Ada juga yang berpendapat bahwa appeal adalah tentang penokohan, berkorelasi dengan ‘kharisma’ seorang tokoh atau karakter dalam animasi. Sehingga visualisasi animasi yang ada bisa mewakili karakter/sifat yang dimilkiki.

12. Exaggeration

Exaggeration merupakan upaya mendramatisir animasi dalam bentuk rekayasagambar yang bersifat hiperbolis. Dibuat sedemikian rupa sehingga terlihat sebagai bentuk ekstrimitas ekspresi tertentu dan biasanya digunakan untuk keperluan komedik. Seringkali ditemui pada film-film animasi anak-anak (segala usia) seperti Tom & Jery, Donald Duck, Mickey Mouse, Sinchan, dsb.

Contoh : Tubuh Donald duck melayang mengikuti sumber asap saat hidung Donald cuck mencium aroma masakan/makanan lezat.

Ke-12 prinsip animasi diatas sering digunakan dalam teknik animasi stop motion dan dalam penerapannya tentu lebih tergantung pada sang animator. Semakin profesional seorang animator dalam menguasai, mengoptimalkan dan mengeksplorasi kemampuan dirinya dalam membuat animasi secara keseluruhan, tentunya ide cerita akan selalu menarik dan menghasilkan sebuah film animasi yang sangat dinamis dan tidak membosankan bahkan untuk kalangan yang bukan merupakan target utama pengguna.


PERBEDAAN CELL ANIMATION DIGITAL ANIMATION.

Cell Animation

Kata “cell” berasal dari kata “celluloid”, yang merupakan material yang digunakan untuk membuat film gambar bergerak. Disebut Cell Animation karena teknik pembuatannya dilakukan pada celluloid transparent.

Picture

Gambar Konsep Kerja Cell Animation.

Digital Animation.

Digital animation adalah animasi karakter imajinasi yang dibuat dari hasil proses kerja komputer. Sebelum menggunakan komputer, animasi diselesaikan dengan membuat film dari gambar tangan atau urutan-urutan gambar di atas plastik atau kertas (yang disebut dengan cels), satu frame untuk 1/60 detik. Komputer pertama kali digunakan untuk mengontrol pergerakan dari karakter. Digital animation dapat juga membuat special effects dan simulasi gambar yang hampir tidak mungkin dilakukan dengan tanpa animasi, seperti memberikan penjelasan mengenai suatu hal yang sulit, contoh animasi solar flare pada matahari. Digital animation juga dapat digunakan untuk merekonstruksi ulang suatu kejadian.

KONKLUSI

Dengan kata lain Cell Animation adalah gambar animasi 2D (2 Dimensi) dan Digital Animation adalah animasi 3D (3 Dimensi), yang dimana teknik pembuatannya pun berbeda; 2D menggunakan celluloid transparent dan cenderung masih manual dalam proses penggabungan animasi-animasinya. Sedangkan digital animation menggunakan bantuan teknik komputer dalam menyempurnakan animasi dan grafisnya pun lebih baik dibandingkan cell animation.

Kompresi Text Menggunakan Algoritma Huffman


Abstrak

Algoritma Huffman adalah salah satu algoritma kompresi. Algoritma huffman merupakan algoritma yang paling terkenal untuk mengompres teks. Terdapat tiga fase dalam menggunakan algoritma Huffman untuk mengompres sebuah teks, pertama adalah fasepembentukan pohon Huffman, kedua fase encoding dan ketiga fase decoding. Prinsip yang digunakan oleh algoritma Huffman adalah karakter yang sering muncul di -encoding dengan rangkaian bit yang pendek dan karakter yang jarang muncul di-encoding dengan rangkaian bit yang lebih panjang. Teknik kompresi algoritma Huffman mampu memberikan penghematan pemakaian memori sampai 30%. Algoritma Huffman mempunyai kompleksitas O(n log nuntuk himpunan dengan n karakter.


  1. Pendahuluan

Teks adalah kumpulan dari karakter –karakter atau string yang menjadi satu kesatun. Teks yang memuat banyak karakter didalamnya selalu menimbulkan masalah pada media penyimpanan dan kecepatan waktu pada saat transmisi data. Media penyimpanan yang terbatas, membuat semua orang mencoba berpikir untuk menemukan sebuah cara yang dapat digunakan untuk mengompres teks. Walaupun pada saat ini terdapat banyak algoritma untuk mengompres data termasuk teks, seperti LIFO, LZHUF, LZ77 dan variannya (LZ78, LZW, GZIP), Dynamic Markov Compression (DMC), Block -Sorting Lossless, Run-Length, Shannon-Fano, Arithmetic, PPM (Prediction by Partial Matching), Burrows-Wheeler Block Sorting, dan Half Byte. Namun penulis menggunakan algoritma Huffman, karena algoritma ini banyak digunakan dan mudah diimplementasikan dalam proses pengompresan teks. Kompresi adalah proses pengubahan sekumpulan data menjadi bentuk kode dengan tujuan untuk menghemat kebutuhan tempat penyimpanan dan waktu untuk transmisi data[1].

 

Dengan menggunakan algoritma Huffman, proses

pengompresan teks dilakukan dengan menggunakan prinsip pengkodean, yaitu tiap karakter dikodekan

dengan rangkaian beberapa bit sehingga menghasilkan hasil yang lebih optimal. Tujuan dari penulisan makalah ini adalah untuk mengetahui keefektifan algoritma Huffman dalam kompresi teks dan memaparkan cara-cara mengompresi teks dengan menggunakan algoritma Huffman. Untuk mencapai tujuan diatas penulis melakukan serangkaian kegiatan yaitu mengumpulkan data dan referensi-referensi yang ada, serta melakukan studi pustaka.

 

  1. 2.      Dasar Teori

2.1         Algoritma Huffman

Algoritma Huffman, yang dibuat oleh seorang mahasiswa MIT bernama David Huffman pada tahun 1952, merupakan salah satu metode paling lama dan paling terkenal dalam kompresi teks [2]. Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan kode Morse, yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit, dimana karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dan karakter yang jarang muncul dikodekan.dengan rangkaian bit yang lebih panjang. Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi data yang diinputkan) menjadi sekumpulan codeword, algoritma Huffman termasuk kedalam kelas algoritma yang menggunakan metode statik . Metoda statik adalah metoda yang selalu menggunakan peta kode yang sama, metoda ini membutuhkan dua fase (two-pass): fase pertama untuk menghitung probabilitas kemunculan tiap simbol dan menentukan peta kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan di taransmisikan. Sedangkan berdasarkan teknik pengkodean simbol yang digunakan, algoritma Huffman menggunakan metode symbolwise. Metoda symbolwise adalah metode yang menghitung peluang kemunculan dari setiap simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang jarang muncul.

 

2.1.1   Pembentukan Pohon Huffman

Kode Huffman pada dasarnya merupakan kode prefiks (prefix code). Kode prefiks adalah himpunan yang berisi sekumpulan kode biner, dimana pada kode prefik ini tidak ada kode biner yang menjadi awal bagi kode biner yang lain. Kode prefix biasanya direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk cabang kiri pada pohon biner diberi label 0, sedangkan pada cabang kanan pada pohon biner diberi label 1. Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke daun merupakan kode prefiks untuk karakter yang berpadanan. Pohon biner ini biasa disebut pohon Huffman. Langkah-langkah pembentukan pohon Huffman adalah sebagai berikut [3] :

  1. Baca semua karakter di dalam teks untuk menghitung frekuensi kemunculan setiap karakter.

Setiap karakter penyusun teks dinyatakan sebagai pohon bersimpul tunggal. Setiap simpul di-assign dengan frekuensi kemunculan karakter tersebut.

  1. Terapkan strategi algoritma greedy sebagai berikut :

gabungkan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar. Setelah digabungkan akar tersebut akan mempunyai frekuensi yang merupakan jumlah dari frekuensi dua buah pohon-pohon penyusunnya.

  1. Ulangi langkah 2 sampai hanya tersisa satu buah pohon Huffman. Agar pemilihan dua pohon yang akan digabungkan berlangsung cepat, maka semua yang ada selalu terurut menaik berdasarkan frekuensi. Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA” membutuhkan representasi 7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai berikut:

 

A = 01000001

B = 01000010

A = 01000001

C = 01000011

C = 01000011

D = 01000100

A = 01000001

Pada string di atas, frekuensi kemunculan A = 3, B = 1, C = 2, dan D = 1,

Gambar 1. Pohon H uffman untuk Karakter “ABACCDA”

2.1.2        Proses Encoding

Encoding adalah cara menyusun string biner dari teks yang ada. Proses encoding untuk satu karakter dimulai dengan membuat pohon Huffman terlebih dahulu. Setelah itu, kode untuk satu karakter dibuat dengan menyusun nama string biner yang dibaca dari akar sampai ke daun pohon Huffman. Langkah-langkah untuk men-encoding suatu string biner adalah sebagai berikut:

  1. Tentukan karakter yang akan di-encoding
  2. Mulai dari akar, baca setiap bit yang ada pada cabang yang bersesuaian sampai ketemu daun dimana karakter itu berada
  3. Ulangi langkah 2 sampai seluruh karakter diencoding Sebagai contoh kita dapat melihat table dibawah ini, yang merupakan hasil encoding untuk pohon Huffman pada gambar 1

Karakter String

Biner Huffman

A

0

B

110

C

10

D

111

 

Tabel 1. Kode Huffman untuk Karakter “ABCD”

2.1.3        Proses Decoding

Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun kembali data dari string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan dengan dua cara, yang pertama dengan menggunakan pohon Huffman dan yang kedua dengan menggunakan tabel kode  Huffman. Langkah-langkah men -decoding suatu string biner dengan menggunakan pohon Huffman adalah sebagai berikut :

  1. Baca sebuah bit dari string biner.
  2. Mulai dari akar
  3. Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian.
  4. Ulangi langkah 1, 2 dan 3 sampai bertemu daun. Kodekan rangkaian bit yang telah dibaca dengan karakter di daun.
  5. Ulangi dari langkah 1 sampai semua bit di dalam string habis. Sebagai contoh kita akan men-decoding string biner yang bernilai ”111”

Gambar 2. Proses Decoding dengan Menggunakan Pohon Huffman

setelah kita telusuri dari akar, maka kita akan menemukan bahwa string yang mempunyai kode Huffman “111” adalah karakter D. Cara yang kedua adalah dengan menggunakan tabel kode Huffman. Sebagai contoh kita akan menggunakan kode Huffman pada Tabel 1 untuk merepresentasikan string “ABACCDA”. Dengan menggunakan Tabel 1 string tersebut akan direpresentasikan menjadi rangkaian bit : 0 110 0 10 10 1110. Jadi, jumlah bit yang dibutuhkan hanya 13 bit. Dari Tabel 1 tampak bahwa kode untuk sebuah simbol/karakter tidak boleh menjadi awalan dari kode simbol yang lain guna menghindari keraguan (ambiguitas) dalam proses dekompresi atau decoding. Karena tiap kode Huffman yang dihasilkan unik, maka proses decoding dapat dilakukan dengan mudah. Contoh: saat membaca kode bit pertama dalam rangkaian bit “011001010110”, yaitu bit “0”, dapat langsung disimpulkan bahwa kode bit “0” merupakan pemetaan dari simbol “A”. Kemudian baca kode bit selanjutnya, yaitu bit “1”. Tidak ada kode Huffman “1”, lalu baca kode bit selanjutnya, sehingga menjadi “11”. Tidak ada juga kode Huffman “11”, lalu baca lagi kode bit berikutnya, sehingga menjadi “110”. Rangkaian kode bit “110” adalah pemetaan dari simbol “B”.

 

 

2.1.4        Kompleksitas Algoritma Huffman

Algoritma Huffman mempunyai kompleksitas waktu O(n log n), karena dalam melakukan sekali proses itersi pada saat penggabungan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar membutuhkan waktu O(log n), dan proses itu dilakukan berkali-kali sampai hanya tersisa satu buah pohon Huffman itu berarti dilakukan sebanyak n kali[4].

 

2.2  Algoritma Greedy

Algoritma greedy adalah salah satu algoritma yang digunakan untuk menyelsaikan persoalan optimasi, artinya persoalan yang menuntut pencarian solusi optimum, baik masalah maksimasi (maximization ) atau minimasi (Minimization). Algoritma greedy adalah algoritma yang mecahkan masalah langkah per langkah, pada setiap langkahnya algoritma greedy melakukan [3] :

  1. Mmengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan (prinsip “take what you can get now!”)
  2. Berharap bahwa dengan memilih optimum local pada setiap langkah akan berakhir dengan optimum global.

 

2.2.1        Hubungan Algoritma Greedy dengan Algoritma Huffman

Pada awalnya David Huffman hanya menencoding karakter dengan hanya menggunakan pohon biner biasa, namun setelah itu David Huffman menemukan bahwa penggunaan algoritma greedy dapat membentuk kode prefiks yang optimal. Penggunaan algoritma greedy pada algoritma Huffman adalah pada saat pemilihan dua pohon dengan frekuensi terkecil dalam membuat pohon Huffman. Algoritma greedy ini digunakan pada pembentukan pohon Huffman agar meminimumkan total cost yang dibutuhkan. Cost yang digunakan untuk menggabungkan dua buah pohon pada akar setara dengan jumlah frekuensi dua buah pohon yang digabungkan, oleh karena itu total cost pembentukan pohon Huffman adalah jumlah total seluruh penggabungan. Penggabungan dua buah pohon dilakukan setiap langkah dan algoritma Huffman selalu memilih dua buah pohon yang mempunyai frekuensi terkecil untuk meminimumkan total cost. Oleh karena itu algoritma Huffman adalah salah satu contoh algoritma yang menggunaan dari algoritma greddy.

Sebagai contoh terdapat sebuah teks yang terdiri dari 120 karakter, yang masing-masing karakter mempunyai cost. Tujuan kita adalah menghitung total cost yang dikeluarkan untuk membentuk teks tersebut  

 

Karakter

cost

Kode Huffman

Total cost

A

10

000

10×3=30

B

15

010

15×3=45

C

5

0010

5×5=25

D

15

011

15×3=45

E

20

111

20×3=60

F

5

00110

5×5=25

G

15

110

15×3=45

H

30

10

30×2=60

I

5

00111

5×5=25

Total cost

360

 

Tabel 2. Contoh Perhitungan Total Cost pada Suatu Teks

  1. 3.      Pengujian Algoritma Huffman

Pada pengujian digunakan, kita akan menencoding sebuah teks yang berisi 100.000 string, diantaranya 45.000 karakter ‘g’, 13.000 karakter ‘o’, 12.000 karakter ‘p’, 16.000 karakter ‘h’, 9.000 karakter ‘e’, dan 5.000 karakter ‘r’ dengan menggunakan 3 cara, yaitu dengan menggunakan kode ASCII , kode 3-bit dan kode Huffman. Setelah itu ketiga kode tersebut akan dibandingkan satu sama lainnya.

 

  1. a.      Kode ASCII

 

Karakter

ASCII

Biner

g

103

1100111

  • o

111

1101111

p

112

1110000

h

104

1101000

e

101

1100101

r

114

1110010

 

Tabel 3. Kode ASCII untuk karakter “ g,o,p,h,e,r, ”

 

Untuk meng-encoding teks tersebut kita membutuhkan sebanyak:

  • § untuk karakter ‘g’

4.5000 x 8 bit (1100111) = 360.000 bit

  • § untuk karakter ‘o’

13.000 x 8bit (1101111) = 104.000 bit

  • § untuk karakter ‘p’

12.000 x 8bit (1110000) = 96.000 bit

  • § untuk karakter ‘h’

16.000 x 8bit (1101 000 ) = 128.000 bit

  • § untuk karakter ‘e’

9.000 x 8bit (1100101) = 72.000 bit

  • § untuk karakter ‘r’

5.000 x 8bit (1110010) = 40.000 bit

jumlah = 800.000 bit

 

  1. b.      3-bit Kode

 

Karakter

Kode

String Biner

g

0

000

  • o

1

001

p

2

010

h

3

011

e

4

100

r

5

101

 

Tabel 4. 3-bit Kode untuk karakter “ g,o,p,h,e,r”

Untuk meng-encoding teks tersebut kita membutuhkan sebanyak:

  • § untuk karakter ‘g’

45.000 x 3 bit (000) = 135.000 bit

  • § untuk karakter ‘o’

13.000 x 3bit (001) = 39 .000 bit

  • § untuk karakter ‘p’

12.000 x 3bit (010) = 36 .000 bit

  • § untuk karakter ‘h’

16.000 x 3bit (011) = 48 .000 bit

  • § untuk karakter ‘e’

9.000 x 3bit (100) = 27 .000 bit

  • § untuk karakter ‘r’

5.000 x 3bit (101) = 15.000 bit

jumlah = 300.000 bit

 

 

 

 

  1. c.       Kode Huffman

 

Karakter

Frekuensi

Peluang

Kode Huffman

g

45000

3/13

0

  • o

13000

3/13

101

p

12000

1/13

100

h

16000

1/13

111

e

9000

1/13

1101

r

5000

1/13

1100

 

Tabel 5. Kode Huffman untuk Karakter “ g,o,p,h,e,r”,

 

Untuk meng-encoding teks tersebut kita membutuhkan sebanyak:

  • § untuk karakter ‘g’

45.000 x 1 bit (0) = 45 .000 bit

  • § untuk karakter ‘o’

13.000 x 3bit (101) = 39 .000 bit

  • § untuk karakter ‘p’

12.000 x 3bit (110) = 36 .000 bit

  • § untuk karakter ‘h’

16.000 x 3bit (111) = 48.000 bit

  • § untuk karakter ‘e’

9.000 x 4bit (1101) = 36.000 bit

  • § untuk karakter ‘r’

5.000 x 4bit (1100) = 20 .000 bit

jumlah = 224.000 bit

 

Dari data diatas kita dapat lihat bahwa dengan menggunakan kode ASCII untuk meng-encoding teks tersebut membutuhkan 800.000 bit, sedangkan dengan menggunakan 3-bit kode dibutuhkan 300.000 bit dan dengan menggunakan kode Huffman hanya membutuhkan 224.000. Dengan menggunakan data tersebut maka dapat kita lihat bahwa dengan menggunakan algoritma Huffman dapat mengompres teks sebesar 70% dibandingkan kita menggunakan kode ASCII dan sebesar 25,3% dibandingkan kita menggunakan 3-bit kode.

 

  1. 4.      Kesimpulan dan Saran Pengembangan

4.1  Kesimpulan

  1. Algoritma Huffman adalah salah satu algoritma kompresi, yang banyak digunakan dalam kompresi teks.
  2. Terdapat 3 tahapan dalam menggunakan algoritma Huffman, yaitu:
  • § membentuk pohon Huffman
  • § melakukan encoding dengan menggunakan pohon Huffman, dan
  • § melakukan decoding
  1. Algoritma Huffman mempunyai kompleksitas waktu O(n log n).
  2. Algoritma Huffman adalah salah satu algoritma yang menggunakan prinsip algoritma greedy dalam penyusunan pohon Huffman
  3. Dari hasil pengujian yang dilakukan, algoritma Huffman dapat mengompres teks sebesar 70% jika dibandingkan dengan menggunakan kode ASCII dan sebesar 25,3% jika dibandingkan dengan kita menggunakan 3-bit kode.

 

 

4.2  Saran Pengembangan

Untuk dapat lebih melihat dan membuktikan keefektifan, kelebihan dan kelemahan dari algoritma Huffman, perlu diadakannya sebuah penelitian yang bertujuan membandingkan seluruh algoritma kompresi dalam mengompres berbagai data atau file.

 

 

Daftar Pustaka

 

[1]Howe, D., “Free On-line Dictionary of Computing”, http://www.foldoc.org/, 1993.

[2]Huffman Coding http://www.en.wikipedia.org/wiki/Huffman_coding

[3] Rinaldi Munir, 2005, Diktat Kuliah IF2251 Strategi Algoritmik, Penerbit ITB.

[4] Data Structures and Algorithms: Introduction http://ciips.ee.uwa.edu.au/~morris/Year2/PLDS2 10/introduction.html 2005 pukul 11.00 WB

[5] Practical Huffman Coding http://www.compressconsult.com/Huffman

[6] Huffman algorithm, making codes from probabilitieshttp://www.arturocampos.com

[7] http://erizal.files.wordpress.com/2007/10/kompresi-teks-dengan-menggunakan-algoritma-huffman.pdf

Selamat Menulis

Selamat Datang di Dunia Blog, dan selamat menulis…

Pengelola blog kembali mengingatkan akan peraturan pemakaian Blog Universitas Widyatama Bandung adalah sebagai berikut :

  1. Blog ini merupakan milik Universitas Widyatama termasuk didalamnya seluruh sub domain yang digunakan sehingga apa yang terdapat didalam blog ini secara umum akan mengikuti aturan dan kode etik yang ada di Universitas Widyatama Bandung.
  2. Blog ini dibuat dengan menggunakan aplikasi pihak ke tiga (WordPress), dan lisensi plugin plugin didalamnya terikat terhadap developer pembuat plugin tersebut.
  3. Blog ini dapat digunakan oleh Karyawan, Dosen dan Mahasiswa Universitas Widyatama Bandung.
  4. Dilarang melakukan registrasi username atau site/subdomain blog dengan menggunakan kata yang tidak pantas.
  5. Dilarang memasukkan konten dengan unsur SARA, pornografi, pelecehan terhadap seseorang ataupun sebuah institusi.
  6. Dilarang menggunakan blog ini untuk melakukan transaksi elektronik dan pemasangan iklan.
  7. Usahakan sebisa mungkin untuk melakukan embed video atau gambar di bandingkan dengan melakukan upload secara langsung pada server.
  8. Pelanggaran yang dilakukan akan dikenakan sanksi penutupan blog dan atau sanksi yang berlaku pada aturan Universitas Widyatama sesuai dengan jenis pelanggaran yang dilakukan.
  9. Administrator berhak melakukan pembekuan account tanpa pemberitahuan terlebih dahulu jika dianggap ada hal hal yang melanggar peraturan.
  10. Aturan yang ada dapat berubah sewaktu waktu.

Beberapa Link terkait Universitas Widyatama

  1. Fakultas Ekonomi - http://ekonomi.widyatama.ac.id
  2. Fakultas Bisnis & Manajemen – http://manajemen.widyatama.ac.id
  3. Fakultas Teknik – http://teknik.widyatama.ac.id
  4. Fakultas Desain Komunikasi Visual – http://dkv.widyatama.ac.id
  5. Fakultas Bahasa – http://bahasa.widyatama.ac.id

Layanan Digital Universitas Widyatama

  1. Biro Akademik – http://akademik.widyatama.ac.id
  2. Rooster Kuliah – http://rooster.widyatama.ac.id
  3. Portal Mahasiswa – http://mhs.widyatama.ac.id
  4. Portal Dosen – http://dosen.widyatama.ac.id
  5. Digital Library – http://dlib.widyatama.ac.id
  6. eLearning Portal – http://learn.widyatama.ac.id
  7. Dspace Repository – http://repository.widyatama.ac.id
  8. Blog Civitas UTama – http://blog.widyatama.ac.id
  9. Email – http://email.widyatama.ac.id
  10. Penerimaan Mahasiswa Baru – http://pmb.widyatama.ac.id/online

Partner UTama

  1. Putra International College – http://www.iputra.edu.my
  2. Troy University – http://www.troy.edu
  3. Aix Marsielle Universite – http://www.univ-amu.fr
  4. IAU – http://www.iau-aiu.net/content/institutions#Indonesia
  5. TUV – http://www.certipedia.com/quality_marks/9105018530?locale=en
  6. Microsoft – https://mspartner.microsoft.com/en/id/Pages/index.aspx
  7. Cisco – http://www.cisco.com/web/ID/index.html
  8. SAP – http://www.sap.com/asia/index.epx
  9. SEAAIR – http://www.seaair.au.edu

Academic Research Publication

  1. Microsoft Academic  -  http://academic.research.microsoft.com/Organization/19057/universitas-widyatama?query=universitas%20widyatama
  2. Google Scholar – http://scholar.google.com/scholar?hl=en&q=Universitas+Widyatama&btnG=

Info Web Rangking

  1. Webometric – http://www.webometrics.info/en/detalles/widyatama.ac.id
  2. 4ICU – http://www.4icu.org/reviews/10219.html