Minggu, 26 Desember 2010

Analytic Hierarchy Process (AHP)


Keputusan akan menjadi sulit ketika ada banyak kriteria pilihan dan tiap-tiap kriteria memiliki bobot yang berbeda. Udah gitu, kita masih dibingungkan dengan memilih satu yang terbaik dari beberapa alternatif yang ada. Agar content tidak terasa garing, mari kita bahas bagaimana Parjono memilih cewek?


Parjono adalah pemuda desa yg culun namun cerdas, sehingga bisa masuk ITB. Setelah mendapat Mata Kuliah Sistem Pendukung Keputusan (SPK), dia mempunyai strategi dalam memilih cewek.

Kamis, 23 Desember 2010

Pengenalan OOP

Object oriented programming (OOP) adalah paradigma pemrograman yang dominan saat ini, dan telah menggantikan teknik structured atau procedural programming yang telah dikembangkan sejak awal tahun 70-an. Bahasa pemrograman Java adalah bahasa pemrograman yang secara total menerapkan paradigma pemrograman berorientasi obyek.

Untuk memahami OOP lebih lanjut, penulis akan menganalogikan dengan hal berikut ini. Bagaimana perusahaan manufaktur seperti Toshiba dan Sony VIAO mampu membuat begitu banyak model notebook dan merespon kebutuhan pasar dengan cepat? Jawabannya karena perusahaan tersebut membeli komponen-komponen dari vendor-vendor yang reputasinya baik, lalu merakitnya. Mereka tidak menginvestasikan waktu untuk merancang dan membangun power supply, disk drive, motherboards, dan komponen-komponen lain.

Gambar: UML Class Diagram of  Store Software



Obyek dapat dibuat sendiri atau dibeli dengan pertimbangan efisiensi tenaga dan waktu. Salah satu contohnya, Software CRM (Customer Relationship Management) mungkin perlu membeli komponen untuk mengirim SMS dalam menunjang salah satu fungsinya seperti marketing campaign daripada mereka mengembangkan sendiri untuk alasan efisiensi waktu.

Sabtu, 18 Desember 2010

Quick Sort Algoritma

Quick Sort adalah algoritma pengurutan yang sangat cepat dengan tipe penyelesaian divide and conquer. sehingga cocok untuk mengurutkan data dalam jumlah besar. Proses pengurutan Quick Sort adalah sebagai berikut:


Minggu, 12 Desember 2010

Binary Search

Algoritma binary search adalah jenis algoritma bertipe devide and conquer yang diciptakan untuk mereduksi jumlah perbandingan secara drastis dengan cara menentukan batas daerah solusi lalu menyelesaikan (solve it) secara berulang (recursive) sampai data ditemukan. Syarat wajib bekerjanya algoritma binary search adalah data harus dalam kondisi berurutan agar proses pencarian bisa dilakukan. 

Gambar: Proses pencarian pada Binary search

Selection Sort

Tipe algoritma brute force lainnya dalam pengurutan data adalah selection sort. Dikatakan selection sort karena algoritma ini mencoba memilih satu per satu elemen data dari posisi awal, untuk mencari data paling kecil dengan mencatat posisi index-nya saja, lalu dilakukan pertukaran hanya sekali pada akhir setiap tahapan.

Algoritma Selection Sort dilakukan untuk menyempurnakan kekurangan dari bubble sort yang melakukan pertukaran setiap kali perbandingan memenuhi kriterianya.

Gambar: Hasil running

Linear Search

Salah satu contoh tipe algoritma brute force lainnya adalah linear search (pencarian berurutan), Dikatakan demikian karena algoritma ini menggunakan strategi langsung dengan membandingkan data secara berurutan (lurus) tanpa menggunakan strategi khusus.

Gambar: Linear Search

Pada contoh di atas terlihat, terdapat 15 data dan dilakukan pencarian terhadap kosakata "access". Jika linear search dimulai dari kiri, maka posisi berawal dari elemen ke-1 dan membandingkannya sampai ketemu. Kompleksitas dari algoritma ini sebanyak n pebandingan untuk kasus terburuk (data tidak ditemukan atau berada di posisi terakhir). Bila rata-rata posisi data ada ditengah, maka kompleksitas menjadi 1/2 n. 

Bubble Sort

Salah satu contoh tipe algoritma brute force adalah bubble sort (pengurutan gelembung). Dikatakan demikian karena algoritma ini menggunakan strategi langsung dengan membandingkan semua posisi dan melakukan pertukaran.

Gambar: Tahapan pengurutan data pada  bubble sort

Jumat, 10 Desember 2010

Linear Congruential Generator

Gambar: Hasil running LCG
Salah satu Pembangkit bilangan acak Semu atau Pseudo Random Number Generator (PRNG) sebagai dasar yang cukup baik untuk dipelajari adalah Linear Congruential Generator (LCG) dengan rumus:

Xn = (a * Xn – 1 + b) mod m

Dimana:
  • Xn = bilangan acak ke-n dari deretnya
  • Xn – 1 = bilangan acak sebelumnya
  • a = faktor pengali
  • b = increment
  • m = modulus pembagi

Pembangkit Bilangan Acak

Bilangan acak (random) adalah bilangan yang tidak dapat diprediksi kemunculannya. Bilangan acak sering kali digunakan pada kriptografi. Beberapa penerapannya antara lain:
  1. Pembangkit kunci panjang yang berukuran sama dengan plaintext-nya (One Time Pad) pada algoritma kunci-simetris berbasis stream cipher.
  2. Pembangkit initialization vector (IV) pada algoritma kunci-simetri.
  3. Pembangkit parameter kunci pada algoritma kunci-publik. 

Minggu, 05 Desember 2010

Enkripsi dengan XOR

Seiring dengan hadirnya komputer yang memperkenalkan sistem bilangan bit biner dan byte dalam penyimpanan dan pemrosesan data, Bitwise operator XOR (Exlusive OR) digunakan sebagai operasi dasar yang paling banyak digunakan dalam enkripsi berbasis byte. Operator XOR akan menghasilkan bit 1 bila kedua operand (A dan B) berbeda dan  menghasilkan bit 0 bila kedua operator sama (A dan B), bernilai 0 semua atau 1 semua. Lihat tabel kebenaran di atas.

Sabtu, 04 Desember 2010

Algoritma

Algoritma adalah langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran.


Algoritma dapat ditulis dengan notasi:
  1. Flow chart atau Bagan alir
  2. Pseudo-code (gabungan antara bahasa alami dengan bahasa pemrograman)
  3. Kalimat-kalimat deskriptif
Algoritma yang paling baik adalah Algoritma yang benar dan mangkus (efficient). Algoritma yang mangkus artinya algoritma yang membutuhkan waktu (time) yang pendek dan ruang memori (space) untuk komputasi yang minimum, dalam menyelesaikan suatu masalah.

Jumat, 03 Desember 2010

Enkripsi dengan SHIFT

Selain menggunakan operator XOR, kita bisa menggunakan bitwise operator pergeseran bit dengan Shift Left dan Shift Right untuk melakukan enkripsi berbasis bit dan byte. Pada bahasa C, C++ dan Java, operator Shift Left adalah tanda << dan operator Shift Right adalah tanda >>.