9 Maret 2011

Alogoritma Boyer-Moore


Algoritma Boyer-Moore adalah salah satu algoritma pencarian string, dipublikasikan oleh Robert S. Boyer, dan J. Strother Moore pada tahun 1977. Algoritma ini dianggap sebagai algoritma yang paling efisien pada aplikasi umum.Tidak seperti algoritma pencarian string yang ditemukan sebelumnya, algoritma Boyer-Moore mulai mencocokkan karakter dari sebelah kanan pattern. Ide dibalik algoritma ini adalah bahwa dengan memulai pencocokkan karakter dari kanan, dan bukan dari kiri, maka akan lebih banyak informasi yang didapat. (Wikipedia)
Algoritma Boyer-Moore melakukan pencocokan karakter dimulai dari kanan ke kiri. Karakter paling kanan pada pola merupakan karakter pertama yang akan dicocokkan dengan teks. Algoritma ini mempunyai dua fase, yaitu fase preprocessing dan fase pencarian. Pada fase preprocessing terdapat dua buah fungsi untuk menggeser pola ke arah kanan. Kedua fungsi ini disebut good-suffix-shift dan bad-character-shift. Fungsi good-suffix-shift disimpan ke dalam sebuah tabel bmGs berukuran m+1. Sedangkan fungsi bad-character-shift disimpan ke dalam sebuah tabel bmBc yang berukuran n. 

Berikut adalah Algoritmanya : (KLIK UNTUK MEMPERBESAR)

8 Maret 2011

Konversi Color Space RGB-HSV dan HSV-RGB dengan Metode Travis

Warna merupakan hasil persepsi dari cahaya dalam spektrum wilayah yang terlihat oleh retina mata, dan memiliki panjang gelombang antara 400nm sampai dengan 700nm. Suatu model warna adalah model matematis abstrak yang menggambarkan cara agar suatu warna dapat direpresentasikan sebagai baris angka, biasanya dengan nilai-nilai dari tiga atau empat buah warna atau komponen, misalnya RGB (Red-Green-Blue) , CMYK (Cyan-Magenta-Yellow-Key/Black), HSI (Hue-Satruation-Lightness), atau HSV (Hue-Satruation-Value).
Warna pada dasarnya merupakan bentukan 3 dimensi, sehingga disebut sebagai "color space". Untuk aplikasi yang berbeda ruang warna yang dipakai bisa juga berbeda, peralatan tertentu biasanya membatasi ukuran dan jenis ruang warna yang dapat digunakan. Misalnya layar monitor menggunakan RGB sedangkan printer menggunakan CMYK. Oleh karena itu, diperlukan konversi color space agar gambar kita misalnya bisa tampil di monitor dan bisa di print dengan benar oleh printer, serta masih banyak contoh lainnya. Yang akan penulis bahas selanjutnya adalah konversi HSV ke RGB.
Model warna HSV mendefinisikan warna dalam terminologi Hue, Saturation dan Value. Keuntungan HSV adalah terdapat warna-warna yang sama dengan yang ditangkap oleh indra manusia. Sedangkan warna yang dibentuk model lain seperti RGB merupakan hasil campuran dari warna-warna primer.
A.     Konversi RGB ke HSV
HSV merupakan kependekan dari Hue, Saturation, dan Value. Dimana karakteristik pokok dari warna tersebut adalah:
1.       Hue: menyatakan warna sebenarnya, seperti merah, violet, dan kuning dan digunakan menentukan kemerahan (redness), kehijauan (greeness), dsb.
2.       Saturation: kadang disebut chroma, adalah kemurnian atau kekuatan warna.
3.       Value : kecerahan dari warna. Nilainya berkisar antara 0-100 %. Apabila nilainya 0 maka warnanya akan menjadi hitam, semakin besar nilai maka semakin cerah dan  muncul variasi-variasi baru dari warna tersebut.
RGB merupakan kependekan dari Red, Green, Blue. Warna – warna yang dibentuk oleh model warna merupakan hasil campuran dari warna-warna primer merah, hijau, dan biru berdasarkan komposisi tertentu.
Ada sebuah metode untuk mengkonversi HSV ke RGB dan sebaliknya yang dibuat oleh Travis sebagai berikut:
Pertama-tama cari nila maksimum dan minimum dari ketiga komponen RGB.
1.       Satruation (S) :
S=(max-min)/max
2.       Value (V) :                                  
V= max
3.       Hue (H) : Pertama-tama hitung R’, G’, dan B’
R'=max-R / max-min
G'=max-G / max-min
B'=max-B / max-min
Jika Satruation, S=0, maka hue tidak terdefinisi (tidak memiliki hue berarti monochrome). kemungkinan lain:
·         if (R = max and G = min)        -> H = 5 + B’
·         else if (R = max and G ≠ min)   -> H = 1 − G’
·         else if (G = max and B = min)   -> H = R’ + 1
·         else if (G = max and B ≠ min)   -> H = 3 – B’
·         else if (R = max)               -> H = 3 + G’
·         otherwise                       -> H = 5 – R’
Hue (H) lalu dikonversi menjadi derajat/degrees dengan cara mengalikan dengan 60 sehingga menghasilkan HSV dengan S dan V antara ) dan 1 dan H antara 0-360
B.      Konversi HSV ke RGB
Untuk mengkonversi balik dari HSV ke RGB ,pertama ambil nilai H (range 0-360) dan bagi dengan 60.
Hex = H/60
Lalu hitung nilai dari warna primer, warna sekunder, a, b, dan c. Warna primer adalah komponen integer dari Hex ( misal dalam C : floor(Hex) ).
Secondary colour = Hex – primary colour
a = (1-S)V
b = (1 − (S * secondary colour))V
c = (1 − (S * (1 − secondary colour)))V
Selanjutnya hitung nilai RGB dengan cara berikut :
·         if primary colour = 0 then     -> R = V,G = c,B = a
·         if primary colour = 1 then     -> R = b,G = V,B = a
·         if primary colour = 2 then     -> R = a,G = V,B = c
·         if primary colour = 3 then     -> R = a,G = b,B = V
·         if primary colour = 4 then     -> R = c,G = a,B = V
·         if primary colour = 5 then     -> R = V,G = a,B = b

Dari perhitungan di atas maka akan didapatkan nilai-nilai dari model warna RGB.
references :

Pengenalan Java Swing

Swing adalah sebuah widget toolkit untuk Java yang merupakan bagian dari Java Foundation Classes (JFC) dari Sun Microsystem. Swing adaah sebuah API (Application Programming Interface) yang menyediakan Graphical User Interface (GUI) untuk program Java dan applet. Swing dikembangkan untuk menyediakan komponen GUI yang lebih canggih dari komponen sebelumnya yang bernama AWT  dan bertujuan untuk mempermudah pengembangan aplikasi JAVA GUI.
AWT dan Swing keduanya menyediakan komponen GUI yang dapat digunakan dalam membuat aplikasi Java dan applet. Namun, tidak seperti beberapa komponen AWT yang menggunakan native code, keseluruhan Swing ditulis menggunakan bahasa pemrograman Java. Swing menyediakan implementasi platform-independent dimana aplikasi yang dikembangkan dengan platform yang berbeda dapat memiliki tampilan look and feel yang sama. Swing API dibangun dari beberapa API yang mengimplementasikan beberapa jenis bagian dari AWT. Kesimpulannya, komponen AWT dapat digunakan dengan komponen Swing.

. Komponen Swing
Package dari Swing menyediakan banyak kelas untuk membuat aplikasi GUI. Package tersebut dapat ditemukan di javax.swing. Komponen Swing ditulis menyeluruh menggunakan Java. Kesimpulannya, program GUI ditulis menggunakan banyak kelas dari package Swing yang mempunyai tampilan look and feel yang sama meski dijalankan pada beda paltform. Lebih dari itu, Swing menyediakan komponen yang lebih menarik seperti color chooser dan option pane.
Nama dari komponen GUI milik Swing hampir sama persis dengan komponen GUI milik AWT. Perbedaan jelas terdapat pada penamaan komponen. Pada dasarnya, nama komponen Swing sama dengan nama komponen AWT tetapi dengan tambahan huruf J pada prefixnya. Sebagai contoh, satu komponen dalam AWT adalah button class. Sedangkan pada Swing, nama komponen tersebut menjadi Jbutton class.
Dalam  ranah  antarmuka  pengguna,  komponen  merupakan  bagian fundamental  di  Java.  Pada  prinsipnya,  segala  sesuatu  yang  kita  lihat  di tampilan aplikasi Java adalah suatu komponen—misalnya window, menu, dan button.
Di  sisi  lain,  container  adalah  jenis  komponen  yang  “menampung”  dan mengelola  komponen-komponen  lainnya.  Idealnya,  suatu  komponen harus diletakkan di sebuah container agar ia dapat digunakan.
Komponen-komponen Swing dapat diklasifikasikan ke dalam tiga bagian, yaitu  top-level  container,  intermediate  container,  dan  komponen  atomic(tunggal).
1.       Container tingkat atas (top-level) berfungsi untuk menyediakan ruang bagi  komponen komponen  lainnya.  Container  jenis  ini  terdiri  dari JFrame, JWindow, JDialog, dan JApplet.
2.       Container  menengah  adalah  komponen  (non         top-level)  yang keberadaannya  untuk  menampung  komponen  lainnya,  misalnya panel, tabbed, dan tool bar. 
3.       Komponen  atomic  berfungsi  untuk  menampilkan  dan/atau  menerima informasi.  Contoh  komponen  atomic  adalah  text  field,  button,  dan label.
Berikut adalah daftar dari beberapa komponen Swing.
(KLIK GAMBAR BILA KURANG JELAS ^^ )

Sekilas tentang Jaringan Syaraf Tiruan (Artificial Neural Network)


Jaringan Saraf Tiruan (JST) atau Artificial Neural Network (ANN), atau juga disebut Simulated Neural Network (SNN), atau umumnya hanya disebut Neural Network (NN), adalah jaringan dari sekelompok unit pemroses kecil yang dimodelkan berdasarkan jaringan saraf manusia. JST merupakan sistem adaptif yang dapat merubah strukturnya untuk memecahkan masalah berdasarkan informasi eksternal maupun internal yang mengalir melalui jaringan tersebut. (Sumber : http://id.wikipedia.org/wiki/Jaringan_saraf_tiruan)

Jaringan saraf tiruan diperkenalkan secara sederhana pada tahun 1943 oleh McCulloch dan Pitts. Pada saat itu McCulloch dan Pitts melalui beberapa komputasi menggunakan neuron-neuron sederhana dapat mengubahnya menjadi sebuah sistem baru (disebut sistem neural) yang mempunya kemampuan komputasi yang lebih baik. Selain itu McCulloch dan Pitts juga mengusulkan pemberian bobot dalam jaringan yang dapat diatur untuk melakukan fungsi logika sederhana. Beliau-beliau ini menggunakan semacam fungsi aktivasi threshold.

Pada tahun 1958, Rosenblatt beserta Minsky dan Papert mulai mengembangkan model jaringan yang disebut dengan perceptron. Dalam model ini mereka mencoba untuk mengoptimalkan hasil iterasinya. Kemudian pada tahun 1960 Widrow dan Hoff mengembangkan model perceptron ini dengan memperkenalkan aturan pelatihan jaringan yang disebut aturan delta (sering juga disebut kuadrat rata-rata terkecil). Aturan tersebut akan mengubah bobot perceptron apabila keluaran yang dihasilkan tidak lagi sesuai dengan target yang telah ditetapkan. Hal inilah yang menyebabkan komputer dapat “belajar” dengan sendirinya. Kecepatan belajar dapat diatur dengan menggunakan parameter tertentu.

Perkembangan selanjutnya dibuat oleh Rumelhart (1986) dengan mencoba mengembangkan sistem layar tunggal (single layer) pada perceptron menjadi sistem layar jamak (multilayers), yang kemudian disebut dengan sistem backpropagation. Setelah itu, muncul beberapa model jaringan saraf tiruan lain yang dikembangkan oleh Kohonen (1972), Hopfield (1982), dan lain-lain.

Sistem jaringan saraf tiruan merupakan analogi yang berkaitan erat dengan proses berpikir dalam otak manusia. Sesungguhnya jaringan saraf tiruan merupakan pembentukan generalisasi model matematika dengan menggunakan beberapa asumsi, diantaranya:
·        - Sistem proses informasi terjadi pada banyak elemen sederhana (neuron).
·         -Sinyal yang dikirimkan di antara neuron-neuron melalui penghubung-penghubung (sinapsis).
·        - Penghubung antarneuron memiliki bobot yang akan memperkuat atau memperlemah sinyal.

·         Untuk menentukan output (target), setiap neuron menggunakan fungsi aktivasi (biasanya bukan merupakan fungsi linear) yang dikenakan pada jumlahan input yang diterima. Besarnya output akan dibandingkan (learning process) dengan suatu batas ambang (threshold).
Dengan demikian, dari asumsi-asumsi tersebut jaringan saraf tiruan ditentukan oleh 3 hal yang paling mendasar:

1.      Pola hubungan antarneuron (arsitektur jaringan),
2.      Metode untuk menentukan bobot penghubung (learning atau training method), dan
3.      Fungsi aktivasi.
Hingga saat ini jaringan saraf tiruan telah memiliki beberapa aplikasi yang banyak digunakan dalam kehidupan manusia. Aplikasi yang sering digunakan antara lain:

·         Pengenalan pola (pattern recognition)
      Jaringan saraf tiruan dapat dipakai untuk mengenali beberapa pola seperti huruf, angka, suara, bahkan tanda tangan. Hal ini sangat mirip dengan otak manusia yang mampu mengenali seseorang, tentu saja yang pernah berkenalan dengan kita.
·         Pengolahan sinyal (signal processing)
      Jaringan saraf tiruan (terutama model ADALINE (adaptive linear newton)) dapat digunakan untuk menekan derau (noise) dalam saluran telepon.
·         Peramalan (forecasting)
      Jaringan saraf tiruan juga dapat dipakai untuk meramalkan apa yang terjadi di masa depan berdasarkan pola yang terbentuk di masa lampau. Hal ini dapat dilakukan karena kemampuan jaringan saraf tiruan untuk mengingat dan membuat generalisasi dari apa yang sudah ada sebelumnya.

Maaf ^^

Udah lama sekali ga nulis di blog ini, maaf buat yang udah pada comment dan ga sempat di bales. penulis sangat kesibukan akhir ini. insyaallah segera bisa ngeblog lagi.
thanks