Laporan Proyek Aplikasi Sistem Multimedia

WHUZZED STORE APPLICATION

A.    Latar Belakang

Online shop kini sedang marak-maraknya di Indonesia, sebagian orang memilih untuk membeli barang lewat online shop dibanding harus pergi ke toko untuk membeli barang itu sendiri. Dari sini kami melihat bahwa memiliki usaha online shop itu merupakan hal yang cukup menarik dan menguntungkan, oleh karena itu kami mencoba membuat aplikasi untuk pemesanan dan penjualan produk produk khususnya software dari Adobe.

B.    Manfaat dan Tujuan

Manfaat dari pembuatan video ini adalah menarik perhatian orang orang yang ingin membeli produk Adobe seperti Adobe Photoshop, Adobe Flash, Adobe Illustrator, Adobe Dreamweaver, agar orang tersebut mau menggunakan aplikasi kami.

Dan tujuan dari pembuatan video kami ini adalah kami ingin mencoba menjual software-software Adobe seperti, Adobe Photoshop, Adobe Flash, Adobe Illustrator, Adobe Dreamweaver dan juga memberikan informasi mulai dari harga hingga informasi versi terbaru software tersebut.

C.    Deskripsi Aplikasi

Di aplikasi ini kami mencoba membuat aplikasi online store yang menyediakan produk-produk dari Adobe seperti, Adobe Photoshop, Adobe Flash, Adobe Illustrator, Adobe Dreamweaver, kami menggunakan Adobe Flash CS6 dalam pengerjaannya.

Pada Aplikasi ini kami memiliki 4 main page, Page Home, Page Information, Page Products, dan Page Order. Pembuatan setiap page menggunakan Adobe Flash CS6 dengan menyisipkan efek efek dari Adobe Flash CS6 yang berupa Motion Tween, Shape Tween, Movie Clip, Masking, dsb.

Page Home berisi halaman utama dari aplikasi kami, yang berisi button button yang mengarah kepada page Information, Products, dan Order. Page Home ini juga berisi nama aplikasi kami yang tercantum di bagian atas page, serta maskot kucing di aplikasi kami

Page Information berisi halaman tentang aplikasi kami secara general, apa maksud dari aplikasi kami ini, dan juga menginformasikan lokasi toko kami.

Page Products berisi halaman tentang produk-produk yang kami tawarkan, yaitu Adobe Photoshop, Adobe Flash, Adobe Illustrator, Adobe Dreamweaver.

Page Order bersisi form pemesanan produk, yang berisi form nama, alamat, produk yang akan dibeli, metode pembayaran. Pengguna juga dapat melihat harga dari produk di page order ini.

Aplikasi yang digunakan:

  1. Adobe Photoshop CS5
  2. Adobe Photoshop CS6
  3. CamStudio
  4. Windows Live Movie Maker
  5. Adobe Flash CS6

D.      Penutup

Demikian laporan dari video kami, semoga dapat memberikan manfaat bagi kita semua. Dan terima kasih untuk semua anggota kelompok kami yang berpartisipasi dalam pengerjaan video ini.

Intelegensia Semu | Tugas OFF CLASS/GSLC 31 Mei 2014

1. Text Classification?
2. Information Retrieval?
3.HITS Algorithm?
4.Prolog?

Text Classification

Klasifikasi teks, juga dikenal sebagai kategorisasi: diberi teks dari beberapa jenis, memutuskan mana dari satu set standar dari kelas itu milik. Identifikasi Bahasa dan klasifikasi genre adalah contoh dari klasifikasi teks, seperti analisis sentimen (mengklasifikasikan film atau produk review sebagai positif atau negatif) dan deteksi spam (mengelompokkan pesan email sebagai spam atau tidak-spam).

Klasifikasi berdasarkan kompresi data

Cara lain untuk berpikir tentang klasifikasi adalah sebagai masalah dalam kompresi data. Sebuah algoritma kompresi lossless mengambil urutan simbol, mendeteksi pola-pola berulang di dalamnya, dan menulis deskripsi dari urutan yang lebih kompak daripada yang asli.
Misalnya, teks “0,142857142857142857” mungkin dikompresi untuk Kompresi algoritma bekerja dengan membangun kamus subsequences teks, dan kemudian mengacu pada entri dalam kamus. Contoh di sini hanya satu entri kamus, “142.857.”
Akibatnya, algoritma kompresi menciptakan sebuah model bahasa. Algoritma LZW khususnya langsung model distribusi probabilitas maksimum entropi. Untuk melakukan klasifikasi dengan kompresi.

Information Retrieval

Pencarian informasi adalah tugas mencari dokumen yang relevan dengan kebutuhan pengguna untuk informasi. Contoh yang paling terkenal dari sistem temu kembali informasi adalah mesin pencari di World Wide Web. Seorang pengguna Web dapat mengetik query seperti [AI ke mesin pencari dan melihat daftar halaman yang relevan. Pada bagian ini, kita akan melihat bagaimana sistem tersebut dibangun. Sebuah pencarian informasi (selanjutnya IR) sistem dapat dicirikan oleh:
Sebuah korpus dokumen. Setiap sistem harus memutuskan apa yang ingin memperlakukan sebagai dokumen: sebuah paragraf, halaman, atau teks multipage.
Pertanyaan yang diajukan dalam bahasa query. Sebuah query menentukan apa yang pengguna ingin tahu. Bahasa query dapat hanya daftar kata, seperti [buku AI]; atau dapat menentukan kalimat dari kata-kata yang harus berdekatan.
Sebuah hasil set. Ini subset dari dokumen yang hakim sistem IR untuk menjadi relevan dengan query. Oleh relevan, kita berarti mungkin berguna bagi orang yang berpose query, untuk informasi tertentu perlu dinyatakan dalam query.
Presentasi dari hasil set. Ini dapat yang sederhana seperti daftar peringkat judul dokumen atau serumit warna peta berputar dari hasil set diproyeksikan ke ruang tiga-dimensi, diberikan sebagai tampilan dua dimensi.

Characteristic of IR

1. Sebuah kumpulan tulisan (document).? Sistem harus menentukan mana yang ingin dianggap sebagai dokumen (kertas). Contoh: sebuah paragraf, halaman, dll

2. Query pengguna
Query adalah formula yang digunakan untuk mencari informasi yang dibutuhkan oleh pengguna.? Dalam bentuk yang paling sederhana, sebuah query adalah kata kunci dan dokumen yang mengandung kata kunci adalah dokumen yang dicari
Contoh: [AI book]; [“Buku Al”]; [AI AND book];
[AI buku NEAR] [AI situs buku: www.aaai.org

3. Set Hasil
Hasil dari query. Sebuah bagian dari dokumen yang relevan dengan query.
4. Tampilan hasil set
Bisa daftar hasil di peringkat dokumen judul

HITS Algorithm

Hyperlink-Induced Topic Search (HITS, juga dikenal sebagai hub dan otoritas) adalah algoritma analisis link yang tarif halaman Web, yang dikembangkan oleh Jon Kleinberg. Itu adalah pendahulu untuk PageRank. Ide di balik Hub dan Otoritas berasal dari wawasan tertentu ke dalam penciptaan halaman web ketika Internet awalnya membentuk; yaitu, halaman web tertentu, yang dikenal sebagai hub, menjabat sebagai direktori besar yang tidak benar-benar berwibawa dalam informasi yang diadakan, tetapi digunakan sebagai kompilasi dari katalog yang luas dari informasi yang menyebabkan pengguna langsung ke halaman otoritatif lainnya. Dengan kata lain, sebuah hub baik mewakili halaman yang menunjuk ke halaman lain, dan otoritas yang baik mewakili halaman yang dihubungkan oleh banyak hub berbeda.

Oleh karena itu, skema menugaskan dua nilai untuk setiap halaman: kewenangannya, yang memperkirakan nilai dari isi halaman, dan nilai hub, yang memperkirakan nilai link ke halaman lain.

Dalam jurnal
Sebelumnya, banyak metode yang digunakan untuk peringkat pentingnya jurnal ilmiah. Salah satu metode tersebut adalah faktor dampak Garfield. Namun, banyak jurnal seperti Science dan Nature dipenuhi dengan berbagai kutipan, membuat majalah ini memiliki faktor dampak yang sangat tinggi. Dengan demikian, ketika membandingkan dua jurnal yang lebih jelas yang telah menerima kira-kira jumlah yang sama kutipan tapi salah satu jurnal ini telah menerima banyak kutipan dari Science dan Nature, jurnal ini perlu berada di peringkat lebih tinggi. Dengan kata lain, lebih baik untuk menerima kutipan dari jurnal penting daripada dari satu yang tidak penting.

Di Web
Fenomena ini juga terjadi di Internet. Menghitung jumlah link ke halaman dapat memberikan kita perkiraan umum menonjol di Web, namun halaman dengan sangat sedikit link masuk mungkin juga menonjol, jika dua link ini berasal dari halaman rumah Yahoo! atau Google atau MSN. Dengan demikian, karena situs tersebut adalah penting sangat tinggi tetapi juga Search Engine, bisa ada hasil yang sangat tidak relevan. The Social Network Twitter menggunakan algoritma HITS gaya untuk menyarankan account pengguna untuk mengikuti.

Algoritma
Dalam algoritma HITS, langkah pertama adalah untuk mengambil halaman yang paling relevan dengan permintaan pencarian. Set ini disebut set akar dan dapat diperoleh dengan mengambil halaman n top dikembalikan oleh algoritma pencarian berbasis teks. Satu set dasar yang dihasilkan dengan menambah set akar dengan semua halaman web yang terhubung dari itu dan beberapa halaman yang link ke sana. Halaman-halaman web di set dasar dan semua hyperlink di antara halaman tersebut membentuk subgraf terfokus. The HITS perhitungan dilakukan hanya pada subgraf terfokus ini. Menurut Kleinberg alasan untuk membangun satu set dasar adalah untuk memastikan bahwa sebagian besar (atau banyak) dari otoritas terkuat disertakan.

Nilai otoritas dan hub didefinisikan dalam hal satu sama lain dalam rekursi bersama. Nilai otoritas dihitung sebagai jumlah dari nilai-nilai hub skala yang mengarah ke halaman tersebut. Nilai hub adalah jumlah dari nilai-nilai otoritas skala dari halaman ini menunjuk ke. Beberapa implementasi juga mempertimbangkan relevansi dari halaman yang terhubung.

Algoritma ini melakukan serangkaian iterasi, masing-masing terdiri dari dua langkah dasar:

Pembaruan Authority: Perbarui skor Authority setiap node untuk menjadi sama dengan jumlah dari Hub Skor dari setiap node yang menunjuk ke itu. Artinya, node diberi skor otoritas tinggi dengan menjadi terhubung ke halaman yang dikenali sebagai hub untuk informasi.
Hub Update: Perbarui setiap node Hub Skor menjadi sama dengan jumlah dari Otoritas Skor dari setiap node yang menunjuk ke. Artinya, node diberi skor tinggi hub dengan menghubungkan ke node yang dianggap otoritas pada subjek.
The Hub skor dan skor Authority untuk node dihitung dengan algoritma berikut:

Mulailah dengan setiap node memiliki skor hub dan skor kewenangan 1.
Jalankan Aturan Authority Pembaruan
Jalankan Aturan Hub Pembaruan
Menormalkan nilai-nilai dengan membagi masing-masing nilai Hub dengan akar kuadrat dari jumlah kuadrat dari semua nilai Hub, dan membagi setiap skor Authority dengan akar kuadrat dari jumlah kuadrat dari semua nilai Authority.
Ulangi dari langkah kedua yang diperlukan.
HITS, seperti Page dan Brin PageRank, merupakan algoritma iteratif didasarkan pada keterkaitan dokumen di web. Namun itu memang memiliki beberapa perbedaan utama:

Ini adalah permintaan tergantung, yaitu, (Hub dan Authority) skor yang dihasilkan dari analisis link dipengaruhi oleh istilah pencarian;
Sebagai sebuah konsekuensi, dieksekusi pada saat permintaan, bukan pada saat pengindeksan, dengan hit terkait kinerja yang menyertai pemrosesan query-waktu.
Hal ini tidak umum digunakan oleh mesin pencari. (Meskipun algoritma serupa dikatakan digunakan oleh Teoma, yang diakuisisi oleh Ask Jeeves / Ask.com.)
Ini menghitung dua nilai per dokumen, hub dan otoritas, sebagai lawan dari skor tunggal;
Hal ini diproses pada subset kecil dari dokumen ‘relevan’ (a ‘subgraph fokus’ atau dasar set), tidak semua dokumen seperti yang terjadi dengan PageRank.

Secara terperinci
Untuk memulai peringkat, \ forall p, \ mathrm {} auth (p) = 1 dan \ mathrm {} hub (p) = 1 Kami mempertimbangkan dua jenis update:. Authority Rule Update dan Hub pembaruan Rule. Dalam rangka untuk menghitung skor hub / kewenangan masing-masing node, iterasi berulang Peraturan pembaruan Otoritas dan Update Rule Hub diterapkan. Sebuah aplikasi k-langkah dari algoritma Hub-Otoritas memerlukan melamar k kali pertama Rule pembaruan Authority dan kemudian Update Rule Hub.

Otoritas pembaruan Rule
\ Forall p, kami memperbarui \ mathrm {} auth (p) menjadi penjumlahan:

\ Mathrm {} auth (p) = \ displaystyle \ sum_ {i = 1} ^ n \ mathrm {} hub (i)

di mana n adalah jumlah total halaman yang terhubung ke p dan i adalah halaman yang terhubung ke p. Artinya, skor Kewenangan halaman adalah jumlah dari semua nilai Hub halaman yang mengarah ke sana.

Hub Peraturan Pembaruan
\ Forall p, kami memperbarui \ mathrm {} hub (p) menjadi penjumlahan:

\ Mathrm {} hub (p) = \ displaystyle \ sum_ {i = 1} ^ n \ mathrm {} auth (i)

di mana n adalah jumlah total halaman p terhubung ke dan saya adalah halaman yang menghubungkan ke p. Jadi Hub skor halaman adalah jumlah dari nilai Kewenangan semua halaman yang menghubungkan

Normalisasi
Skor hub-otoritas final node ditentukan setelah pengulangan tak terbatas algoritma. Sebagai langsung dan iteratif menerapkan pembaruan Peraturan Hub dan Otoritas pembaruan Rule menyebabkan divergen nilai-nilai, perlu untuk menormalkan [disambiguasi diperlukan] matriks setelah setiap iterasi. Dengan demikian nilai-nilai yang diperoleh dari proses ini akhirnya akan bertemu. [4]

Pseudocode
1 G: = set halaman
2 untuk setiap halaman p di G do
3 p.auth = 1 / / p.auth adalah skor otoritas halaman p
4 p.hub = 1 / / p.hub adalah skor hub halaman p
5 HubsAndAuthorities function (G)
6 untuk langkah 1 sampai k do / / menjalankan algoritma untuk k langkah
7 norma = 0
8 untuk setiap halaman p di G jangan / / memperbarui semua nilai otoritas pertama
9 p.auth = 0
10 untuk setiap q halaman di p.incomingNeighbors melakukan / / p.incomingNeighbors adalah set halaman yang memiliki pranala ke p
11 p.auth + = q.hub
12 norma + = persegi (p.auth) / / menghitung jumlah nilai auth squared untuk menormalkan
13 norma = sqrt (norma)
14 untuk setiap halaman p di G jangan / / memperbarui nilai auth
15 p.auth = p.auth / norma / / menormalkan nilai auth
16 norma = 0
17 untuk setiap halaman p di G jangan / / kemudian memperbarui semua nilai hub
18 p.hub = 0
19 untuk setiap r di halaman p.outgoingNeighbors melakukan / / p.outgoingNeighbors adalah set halaman yang link ke p
20 p.hub + = r.auth
21 norma + = persegi (p.hub) / / menghitung jumlah nilai hub kuadrat untuk menormalkan
22 norma = sqrt (norma)
23 untuk setiap halaman p di G jangan / / kemudian memperbarui semua nilai hub
24 p.hub = p.hub / norma / / menormalkan nilai hub
Hub dan otoritas nilai berkumpul dalam pseudocode di atas.

Kode di bawah tidak bertemu, karena itu perlu untuk membatasi jumlah langkah yang algoritma berjalan untuk. Salah satu cara untuk berkeliling ini, bagaimanapun, akan menormalkan nilai hub dan otoritas setelah setiap “langkah” dengan membagi setiap nilai wewenang oleh akar kuadrat dari jumlah kuadrat dari semua nilai otoritas, dan membagi setiap nilai hub oleh akar kuadrat dari jumlah kuadrat dari semua nilai hub. Inilah yang pseudocode di atas tidak.

Pseudocode Non-konvergen
1 G: = set halaman
2 untuk setiap halaman p di G do
3 p.auth = 1 / / p.auth adalah skor otoritas halaman p
4 p.hub = 1 / / p.hub adalah skor hub halaman p
5 HubsAndAuthorities function (G)
6 untuk langkah 1 sampai k do / / menjalankan algoritma untuk k langkah
7 untuk setiap halaman p di G jangan / / memperbarui semua nilai otoritas pertama
8 p.auth = 0
9 untuk setiap q halaman di p.incomingNeighbors melakukan / / p.incomingNeighbors adalah set halaman yang memiliki pranala ke p
10 p.auth + = q.hub
11 untuk setiap halaman p di G jangan / / kemudian memperbarui semua nilai hub
12 p.hub = 0
13 untuk setiap r di halaman p.outgoingNeighbors melakukan / / p.outgoingNeighbors adalah set halaman yang link ke p
14 p.hub + = r.auth

Prolog

Prolog adalah bahasa didasarkan pada urutan pertama logika predikat. (Akan merevisi / memperkenalkan kemudian ini).
Kita dapat menyatakan beberapa fakta dan beberapa aturan, kemudian mengajukan pertanyaan untuk mencari tahu apa yang benar.
Fakta:

suka (john, mary).
tinggi (john).
tinggi (sue).
pendek (fred).
mengajarkan (alison, Artificial Intelligence).

Catatan: huruf kecil, berhenti penuh pada akhir.

Aturan:

suka (fred, X): – tinggi (X).
Memeriksa (Person, Course): – mengajar (Person, Course).

John menyukai seseorang jika orang itu adalah tinggi.
Seseorang memeriksa saja jika mereka mengajar kursus itu.
CATATAN: “: -” digunakan untuk berarti IF. Dimaksudkan untuk terlihat sedikit seperti panah mundur
CATATAN: Penggunaan modal (atau kata-kata yang dimulai dengan huruf kapital) untuk variabel.

Prolog dapat kembali lebih dari satu jawaban untuk sebuah pertanyaan.
Ia memiliki built in metode pencarian untuk pergi melalui semua aturan dan fakta yang mungkin untuk mendapatkan semua jawaban yang mungkin.
Metode pencarian “kedalaman pencarian pertama” dengan “kemunduran”.

 

Backlink : http://binusmaya.binus.ac.id/

Backlink : www.binus.ac.id

 

Intelegensia Semu | Tugas GSLC 8 Mei 2014

1. Apa yang dimaksud supervised learning, unsupervised learning dan reinforcement learning? Berikan contoh masing-masing?

A. SUPERVISED LEARNING 
Supervised learning merupakan suatu pembelajaran yang terawasi dimana jika output yang diharapkan telah diketahui sebelumnya. Biasanya pembelajaran ini dilakukan dengan menggunakan data yang telah ada. Pada metode ini, setiap pola yang diberikan kedalam jaringan saraf tiruan telah diketahui outputnya. Satu pola input akan diberikan ke satu neuron pada lapisan input. Pola ini akan dirambatkan di sepanjang jaringan syaraf hingga sampai ke neuron pada lapisan output. Lapisan output ini akan membangkitkan pola output yang nantinya akan dicocokkan dengan pola output targetnya. Nah, apabila terjadi perbedaan antara pola output hasil pembelajaran dengan pola output target, maka akan muncul error. Dan apabila nilai error ini masih cukup besar, itu berarti masih perlu dilakukan pembelajaran yang lebih lanjut. Contoh algoritma jaringan saraf tiruan yang mernggunakan metode supervised learning adalah hebbian (hebb rule), perceptron, adaline, boltzman, hapfield, dan backpropagation.
Pada kesempatan ini saya akan membahas tentang metode hebb rule dan perceptron.
v Hebb rule merupakan metode pembelajaran dalam supervised yang paling sederhana, karena pada metoode ini pembelajaran dilakukan dengan cara memperbaiki nilai bobot sedemikian rupa sehingga jika ada 2 neuron yang terhubung, dan keduanya pada kondisi hidup (on) pada saat yang sama, maka bobot antara kedua dinaikkan. Apabila data dipresentasiakn secara bipolar, maka perbaikan bobotnya adalah
wi(baru)=wi(lama)+xi*y
Keterangan:
wi : bobot data input ke-i;
xi : input data ke-i;
y : output data.
Misalkan kita menggunakan pasangan vektor input (s) dan vektor output sebagai pasangan vektor yang akan dilatih. Sedangkan vektor yang hendak digunakan sebagai testing adalah vektor (x).
Algoritma pasangan vektor diatas adalah sebagai berikut:
0. Insialisasi semua bobot dimana:
wij=0;
i =1,2……n;
j =1,2…..m
1. Pada pasangan input-output(s-t), maka terlebih dahulu dilakukan langkah-langkah sebagai berikut:
a. Set input dengan nilai yang sama dengan vektor inputnya:
xi=si; (i=1,2……,n)
b. Set outputnya dengan nilai yang sam dengan vektor outputnya:
yj=tj; (j=1,2,…..,m)
c. Kemudian jika terjadi kesalahan maka perbaiki bobotnya:
wij(baru)=wij(lama)+xi*yj;
(i=1,2,….,n dan j=1,2,….,m)
sebagai catatan bahwa nilai bias selalu 1.
Contoh:
Sebagaimana yang kita ketahui dalam fungsi OR jika A & B= 0 maka “OR” 0, tetapi jika salah satunya adalah 1 maka “OR” 1, atau dengan kata lain jika angkanya berbeda maka hasilnya 1. Misalkan kita ingin membuat jaringan syaraf untuk melakukan pembelajaran terhadap fungsi OR dengan input dan target bipolar sebagai berikut:
Input Bias Target
-1 -1 1 -1
-1 1 1 1
1 -1 1 1
1 1 1 1
X= T= Bobot awal=
-1 -1 -1 w=
-1 1 1 0
1 -1 1 0
1 1 1 b=0
(catatan penting: bobot awal dan bobot bias kita set=0)
Data ke-1
w1 = 0+1=1
w2 =0+1=1
b =0-1=-1
Data ke-2
w1 = 1-1=0
w2 =1+1=2
b =0+1=1
Data ke-3
w1 = 0+1=1
w2 =2-1=1
b =0+1=1
Data ke-4
w1 = 1+1=2
w2 =1+1=2
b =1+1=2
Kita melakukan pengetesan terhadap salah satu data yang ada, misal kita ambil x=[-1-1] dan kita masukkan pada data ke-4 maka hasilnya adalah sebagai berikut:
y=2+(-1*2)+(-1*2)=-2
karena nilai yin=-2, maka y=f(yin)=f(-2)=-1 (cocok dengan output yang diberikan)
Perceptron merupakan salah satu bentuk jaringan syaraf tiruan yang sederhana. Perceptron biasanya digunakan untuk mengklasifikasikan suatu tipe pola tertentu yang sering dikenal dengan pemisahan secara linear. Pada dasarnya, perceptron pada jaringan syaraf dengan satu lapisan memiliki bobot yang bisa diatur dan suatu nilai ambang(thershold). Algoritma yang digunakan oleh aturan perceptron ini akan mengatur parameter-parameter bebasnya melalui proses pembelajaran. Nilai thershold( pada fungsi aktivasi adalah non negatif. Fungsi aktivasi ini dibuat sedemikian rupa sehingga terjadi pembatasan antara daerah positif dan daerah negatif.
Garis pemisah antara daerah positif dan daerah nol memiliki pertidaksamaan yaitu:
w1x1+ w2x2+b >
Sedangkan garis pemisah antara daerah negatif dengan daerah nol memiliki pertidaksamaan:
w1x1+ w2x2+b < –
Misalkan kita gunakan pasangan vektor input (s) dan vektor output (t) sebagai pasangan vektor yang akan dilatih.
Algoritmanya adalah:
0. Inisialisasi semua bobot dan bias:
(agar penyelesaiannya jadi lebih sederhana maka kita set semua bobot dan bias sama dengan nol).
Set learning rate( ): (0< 1).
1. Selama kondisi berhenti bernilai false. Lakukan langkah-langkah sebagai berikut:
(i) Untuk setiap pasangan pembelajaran s-t, maka:
a. Set input dengan nilai sama dengan vektor input:
xi=si;
b. Hitung respon untuk unit output:
yin=b+y-
c. Perbaiki bobot dan bias jika terjadi error:
jika y≠t maka:
wi(baru)=wi(lama)+
b(baru)=b(lama)+
jika tidak, maka:
wi(baru)= wi(lama)
b(baru)=b(lama)
Selanjutnya lakukan tes kondisi berhenti: jika tidak terjadi perubahan pada bobot pada (i) maka kondisi berhenti adalah TRUE, namun jika masih terjadi perubahan pada kondisi berhenti maka FALSE.
Nah, algoritma seperti diatas dapat digunakan baik untuk input biner maupun bipolar, dengan tertentu, dan bias yang dapat diatur. Pada algoritma tersebut bobot-bobot yang diperbaiki hanyalah bobot-bobot yang berhubungan dengan input yang aktif (xi≠0) dan bobot-bobot yang tidak menghasilkan nilai y yang benar.
Sebagai contoh, misalkan kita ingin membuat jaringan syaraf yang melakukan pembelajaran terhadap fungsi AND dengan input biner dan target bipolar sebagai berikut:
Input Bias Target
1 1 1 1
1 0 1 -1
0 1 1 -1
0 0 1 -1
Bobot awal : w=[0,0 0,0]
Bobot bias awal : b=[0,0]
Learning rate( ) : 0,8
Thershold(tetha) : 0,5
Epoh ke-1(siklus perubahan bobot ke-1)
Data ke-1
yin=0,0+0,0+0,0=0,0
Hasil aktivasi= 0(-0,5 < yin < 0,5)
Target = 1
Bobot baru yang diperoleh:
w1= 0,0+0,8*1,0*1,0=0,8
w2= 0,0+0,8*1,0*1,0=0,8
Maka bobot bias barunya:
b= 0,8+0,8*-1,0=0,8
Data ke-2
yin=0,8+0,8+0,0=1,6
Hasil aktivasi= 1(yin > 0,5)
Target = -1
Bobot baru yang diperoleh:
w1= 0,8+0,8*-1,0*1,0=0,8
w2= 0,8+0,8*-1,0*1,0=0,0
Maka bobot bias barunya:
b= 0,8+0,8*-1,0=0,0
Data ke-3
yin=0,0+0,0+0,8=0,8
Hasil aktivasi= 1( yin > 0,5)
Target = -1
Bobot baru yang diperoleh:
w1= 0,0+0,8*1,0*0,0=0,0
w2= 0,8+0,8*-1,0*1,0=0,8
Maka bobot bias barunya:
b= 0,0+0,8*-1,0=-0,8
Data ke-4
yin=-0,8+0,0+0,0=-0,8
Hasil aktivasi= -1( yin < – 0,5)
Target = -1
Epoh ke-10(siklus perubahan bobot ke-10)
Data ke-1
yin=-3,2+1,6+2,4=0,8
Hasil aktivasi=-1(yin >0,5)
Target = 1
Data ke-2
yin=-3,2+1,6+0,0=-1,6
Hasil aktivasi=-1(yin <-0,5)
Target = -1
Data ke-3
yin=-3,2+0,0+2,4=-0,8
Hasil aktivasi=-1(yin <-0,5)
Target = -1
Data ke-4
yin=-3,2+0,0+0,0=-3,2
Hasil aktivasi=-1(yin <-0,5)
Target = -1
Siklus perubahan setiap bobot tersebut terus diulangi sampai tidak terjadi perubahan bobot lagi. Nah pada algoritma ini perubahan bobot(epoh) sudah tidak terjadi pada langkah ke-10 sehingga pembelajaran dihentikan. Dan hasil yang diperoleh adalah:
Nilai bobot(w1)=1,6
Nilai bobot(w2)=2,4
Bobot bias(b) =-3,2.
Dengan demikian garis yang membatasi daerah positif dan daerah nol memenuhi pertidaksamaan:
1,6×1+2,4×2-3,2 > 0,5
Sedangkan garuis yang membatasi antara daerah negatif dan daerah nolnya memenuhi pertidaksamaan:
1,6×1+2,4×2-3,2 < – 0,5

Contoh : LVQ(Learning Vector Quantization), neocognitron

B. UNSUPERVISED LEARNING 
Unsupervised learning merupakan pembelajan yang tidak terawasi dimana tidak memerlukan target output. Pada metode ini tidak dapat ditentukan hasil seperti apa yang diharapkan selama proses pembelajaran, nilai bobot yang disusun dalam proses range tertentu tergantung pada nilai output yang diberikan. Tujuan metode uinsupervised learning ini agar kita dapat mengelompokkan unit-unit yang hampir sama dalam satu area tertentu. Pembelajaran ini biasanya sangat cocok untuk klasifikasi pola. Contoh algoritma jaringan saraf tiruan yang menggunakan metode unsupervised ini adalah competitive, hebbian, kohonen, LVQ(Learning Vector Quantization), neocognitron.
Pada kali ini saya akan membahas tentang metode kohonen. Jaringan syaraf self organizing, yang sering disebut juga topology preserving maps, yang mengansumsikan sebuah struktur topologi antar unit-unit cluster. Jaringan syaraf self organizing ini pertama kali diperkenalkan oleh Tuevo Kohonen dari University of Helsinki pada tahun 1981. Jaringan kohonen SOM(Self Organizing Map) merupakan salah satu model jaringan syaraf yang menggunakan metode pembelajaran unsupervised. Jaringan kohonen SOM terdiri dari 2 lapisan(layer), yaitu lapisan input dan lapisan output. Setiap neuron dalalm lapisan input terhubung dengan setiap neuron pada lapisan output. Setiap neuron dalam lapisan output merepresentasikan kelas dari input yang diberikan.
Penulisan istilah yang ada pada struktur jaringan kohonen Self Organizing Map adalah sebagai berikut:
X : vektor input pembelajaran.
X=(x1, x2,…, xj,…..,xn)
: learning rate
: radius neighborhood
X1 : neuron/node input
w0j : bias pada neuron output ke-j
Yj : neuron/node output ke-j
C : konstanta
Berikut ini adalah tahapan Algoritma dari kohonen self organizing map adalah sebagai berikut :
Langkah 1. Inisialisasikan bobot wij. Set parameter-parameter tetangga dan set parameter learning rate.
Langkah 2. Selama kondisi berhenti masih bernilai salah, kerjakan langkah-langkah berikut ini :
a. Untuk masing-masing vektor input x, lakukan :
Titik Pusat
(0,0) x,y
b. Untuk masing-masing j, lakukan perhitungan :
D(j)= )
c. Tentukan J sampai D( j) bernilai minimum.
d. Untuk masing-masing unit j dengan spesifikasi tetangga tertentu pada j dan untuk semua I, kerjakan :
wij(baru)=(wij)lama+ [xi –wij( lama)]
e. Perbaiki learning rate ( )
f. Kurangi radius tetangga pada waktu-waktu tertentu.
g. Tes kondisi berhenti.
Sebagai contohnya, data yang digunakan adalah penelitian berupa realisasi penerimaan keuangan daerah tingkat II suatu propinsi serta jumlah penduduk pertengahan tahunnya dalam sebuah kabupaten/kota. Atribut-atribut yang digunakan dalam penelitian ini adalah:
a. X1 = Jumlah penduduk
b. Pendapatan Daerah Sendiri(PDS) yang terdiri dari:
1. Pendapatan Asli Daerah(PDA) yang berupa:
ü X2 = Pajak Daerah
ü X3 = Retribusi Daerah
ü X4 = Bagian laba usaha daerah
ü X4 = Penerimaan lain-lain
2. Bagian pendapatan dari pemerintah dan instansi yang lebih tinggi yang berupa:
ü X6 = Bagi hasil pajak
ü X7 = Bagi hasil bukan pajak
ü X8 = Subsidi daerah otonom
ü X9 = Bantuan pembangunan
ü X10= Penerimaan lainnya
3. Pinjaman pemerintah daerah
ü X11= Pinjaman Pemerintah Pusat
ü X12= Pinjaman Lembaga Keuangan Dalam Negeri
ü X13= Pinjaman Dari Luar Negeri
Data set yang digunakan sebagai input tersebut dinormalkan dengan nilai rata-rata sebagai acuan yang analog dengan persamaan:
f(x)-
Berdasarkan data yang tesebut maka akan terlihat untuk masing-masing atribut memiliki nilai terendah, nilai tertinggi, dan nilai rata-rata. Selanjutnya dari nilai rata-rata tersebut maka akan menjadi acuan untuk menentukan input dari data menuju ke input pada jaringan saraf tiruan kohonen dengan pengkodean 1 dan 0. Kemudian data-data input tersebut akan diproses oleh JST sehingga menghasilkan output berupa kelompok daerah tingkat II berdasarkan penerimaan daerah. Jaringan kohonen SOM ini akan menghubungkan antara neuron input dan neuron output dengan koneksi bobot, yang mana bobot ini selalu diperbaiki pada proses iterasi pelatihan jaringan. Kemudian aliran informasi system JST ini akan mengelompokan tingkat kesejahteraan daerah tingkat II, diawali dengan dimasukkannya data penerimaan daerah. Data-data inilah yang akan berfungsi sebagai input awal selain parameter input berupa learning rate( ), dan radius neighborhood(R).

 Contoh : competitive learning

Reinforcement Learning

Reinforcement Learning (RL) adalah pembelajaran (learning) terhadap apa yang akan dilakukan (bagaimana memetakan situasi kedalam aksi) untuk memaksimalkan reward. Pembelajar (learner) tidak diberitahu aksi mana yang akan diambil, tetapi lebih pada menemukan aksi mana yang dapat memberikan reward yang maksimal dengan mencobanya. Aksi tidak hanya mempengaruhi reward langsung, tetapi juga situasi berikutnya, begitu juga semua reward berikutnya. Dua karekteristik inilah (pencarian trial-error dan reward tertunda) yang membedakan RL dengan yang lain.

Agen harus mampu untuk mengindera (sense) keadaan (state) lingkungan luas dan harus dapat mengambil aksi yang mempengaruhi state.

RL berbeda dengan pembelajaran terawasi (Supervised learning ). Pembelajaran terawasi merupakan pembelajaran dari contoh-contoh yang disediakan oleh pengawas luar yang berpengetahuan. Hal ini sangat penting dalam pembelajaran, tapi itu sendiri tidak cukup untuk belajar dari sebuah interaksi. Dalam permasalahan interaksi, hampir tidak mungkin secara praktis mendapatkan contoh dari perilaku yang diinginkan baik yang benar dan mewakili semua situasi dimana agen harus beraksi. Karena itu agen harus belajar dari pengalamannya.

Salah satu tantangan yang muncul dalam RL dan tidak terdapat pada jenis pembelajaran lain adalah eksplorasi dan eksploitasi. Untuk mendapatkan banyak reward, agen RL lebih mementingkan aksi yang telah dicoba waktu lalu dan terbukti efektif menghasilkan reward. Tapi untuk menemukan aksi tersebut, harus mencoba aksi yang belum pernah terpilih sebelumnya. Agen harus mengeksplotasi apa yang telah diketahui untuk mendapatkan reward, tetapi juga harus mengkeksplorasi untuk membuat pemilihan aksi yang lebih baik kedepannya.

2. Apa yang dimaksud dengan Learning Decision Tree dan berikan contohnya?

Secara konsep Decision tree adalah salah satu dari teknik decision analysis.Tries sendiri pertama kali diperkenalkan pada tahun 1960-an oleh Fredkin. Trie atau digital tree berasal dari kata retrival (pengambilan kembali) sesuai dengan fungsinya. Secara etimologi kata ini diucapkan sebagai ‘tree’. Meskipun mirip dengan penggunaan kata ‘try’ tetapi hal ini bertujuan untuk membedakannya dari general tree. Dalam ilmu komputer, trie, atau prefix tree adalah sebuah struktur data dengan representasi ordered tree yang digunakan untuk menyimpan associative array yang berupa string. Berbeda dengan binary search tree (BST) yang tidak ada node di tree yang menyimpan elemen yang berhubungan dengan node sebelumnya dan, posisi setiap elemen di tree sangat menentukan. Semua keturunan dari suatu node mempunyai prefix string yang mengandung elemen dari node itu, dengan root merupakan string kosong. Values biasanya tidak terkandung di setiap node, hanya di daun dan beberapa node di tengah yang cocok dengan elemen tertentu.

Secara singkat bahwa Decision Tree merupakan salah satu metode klasifikasi pada Text Mining. Klasifikasi adalah proses menemukan kumpulan pola atau fungsi-fungsi yang mendeskripsikan dan memisahkan kelas data satu dengan lainnya, untuk dapat digunakan untuk memprediksi data yang belum memiliki kelas data tertentu (Jianwei Han, 2001).

Decision Tree adalah sebuah struktur pohon, dimana setiap node pohon merepresentasikan atribut yang telah diuji, setiap cabang merupakan suatu pembagian hasil uji, dan node daun (leaf) merepresentasikan kelompok kelas tertentu. Level node teratas dari sebuah Decision Tree adalah node akar (root) yang biasanya berupa atribut yang paling memiliki pengaruh terbesar pada suatu kelas tertentu. Pada umumnya Decision Tree melakukan strategi pencarian secara top-down untuk solusinya. Pada proses mengklasifikasi data yang tidak diketahui, nilai atribut akan diuji dengan cara melacak jalur dari node akar (root) sampai node akhir (daun) dan kemudian akan diprediksi kelas yang dimiliki oleh suatu data baru tertentu.

Decision Tree menggunakan algoritma ID3 atau C4.5, yang diperkenalkan dan dikembangkan pertama kali oleh Quinlan yang merupakan singkatan dari Iterative Dichotomiser 3 atau Induction of Decision “3″ (baca: Tree).
Algoritma ID3 membentuk pohon keputusan dengan metode divide-and-conquer data secara rekursif dari atas ke bawah. Strategi pembentukan Decision Tree dengan algoritma ID3 adalah:
• Pohon dimulai sebagai node tunggal (akar/root) yang merepresentasikan semua data..
• Sesudah node root dibentuk, maka data pada node akar akan diukur dengan information gain untuk dipilih atribut mana yang akan dijadikan atribut pembaginya.
• Sebuah cabang dibentuk dari atribut yang dipilih menjadi pembagi dan data akan didistribusikan ke dalam cabang masing-masing.
• Algoritma ini akan terus menggunakan proses yang sama atau bersifat rekursif untuk dapat membentuk sebuah Decision Tree. Ketika sebuah atribut telah dipilih menjadi node pembagi atau cabang, maka atribut tersebut tidak diikutkan lagi dalam penghitungan nilai information gain.
• Proses pembagian rekursif akan berhenti jika salah satu dari kondisi dibawah ini terpenuhi:
1. Semua data dari anak cabang telah termasuk dalam kelas yang sama.
2. Semua atribut telah dipakai, tetapi masih tersisa data dalam kelas yang berbeda. Dalam kasus ini, diambil data yang mewakili kelas yang terbanyak untuk menjadi label kelas pada node daun.
3. Tidak terdapat data pada anak cabang yang baru. Dalam kasus ini, node daun akan dipilih pada cabang sebelumnya dan diambil data yang mewakili kelas terbanyak untuk dijadikan label kelas.

Beberapa contoh pemakaian Decision Tree,yaitu :
• Diagnosa penyakit tertentu, seperti hipertensi, kanker, stroke dan lain-lain
• Pemilihan produk seperti rumah, kendaraan, komputerdanlain-lain
• Pemilihan pegawai teladan sesuai dengan kriteria tertentu
• Deteksi gangguan pada computer atau jaringan computer seperti Deteksi Entrusi, deteksi virus (Trojan dan varians)

Referensi :

 

Back Link to : www.binus.ac.id

Back Link to : www.binusmaya.ac.id

Proyek Sistem Multimedia

Creating Photoshop Effects

A.    Latar Belakang

Photoshop merupakan perangkat lunak editor buatan Adobe Systems yang bertujuan untuk memodifikasi foto atau gambar dan pembuatan efek. Photoshop sudah digunakan oleh semua kalangan, dari anak anak atau remaja yang ingin mencoba memodifikasi gambar hingga desainer professional yang melakukan pekerjaan sehari harinya menggunakan Photoshop. Dari sini kami melihat bahwa memainkan Photoshop merupakan hal yang menarik, oleh karena itu kami mencoba membuat video tentang pembuatan efek efek dalam Photoshop.

B.    Manfaat dan Tujuan

Manfaat dari pembuatan video ini adalah menarik perhatian orang orang yang ingin belajar Photoshop dan memberikan gambaran atau contoh modifikasi modifikasi yang dapat dilakukan pada aplikasi Photoshop.

Dan tujuan dari pembuatan video kami ini adalah kami ingin memberikan informasi tentang penggunaan aplikasi Photoshop dan juga untuk pengerjaan tugas mata kuliah Sistem Multimedia.

C.    Deskripsi Video

Di video ini kami mencoba membuat video yang contoh pembuatan efek efek dalam Photoshop, kami menggunakan beberapa efek, seperti efek meng-highlight suatu gambar dengan quick selection tool dan juga mixer secara monochrome, efek lainnya berupa efek smoke dan juga penggunaan liquify dan penggunaan refine edge untuk menghaluskan ujung ujung gambar yang di crop, ada juga efek yang diperlihatkan pada gambar gambar dalam video ini berupa splatter effect menggunakan custom brush.

Pada pembutan video ini kami menggunakan aplikasi untuk merekam proses pembuatan karya kami dengan menggunakan CamStudio. Kami juga menggunakan 2 aplikasi Photoshop yaitu Photoshop CS5 dan Photoshop CS6. Dalam pembuatan videonya kami menggunakan aplikasi Windows Live Movie Maker.

Proses pembuatan video kami pertama tama mencari gambar yang ingin kami berikan efek, lalu kami menggunakan Adobe Photoshop CS5 dan CS6 untuk memodifikasi gambar, selama proses meng-edit gambar, kami merekamnya menggunakan aplikasi CamStudio, kami meng-edit beberapa gambar dalam Photoshop, setelah pengeditan dan perekamannya kami menggabungkannya dengan menggunakan aplikasi Windows Live Movie Maker.

Aplikasi yang digunakan:

  1. Adobe Photoshop CS5
  2. Adobe Photoshop CS6
  3. CamStudio
  4. Windows Live Movie Maker

Link to video : http://www.youtube.com/watch?v=2Z_V3EXmCEg&feature=youtu.be

D.      Penutup

Demikian laporan dari video kami, semoga dapat memberikan manfaat bagi kita semua. Dan terima kasih untuk semua anggota kelompok kami yang berpartisipasi dalam pengerjaan video ini, dan juga terima kasih pada teman teman yang sudah menonton video kami.

Intelegensia Semu | Tugas OFF CLASS (GSLC) 13 Maret 2014

1. Apa yang dimaksud Adversarial Search & Constraint Satisfaction Problems? berikan contoh?

Secara teoritis , algoritma pencarian ini didasarkan teorema minimax von Neumann yang menyatakan bahwa dalam jenis permainan selalu ada serangkaian strategi yang mengarah ke kedua pemain mendapatkan nilai yang sama dan bahwa mengingat ini adalah nilai terbaik seseorang dapat mengharapkan untuk mendapatkan , orang harus menggunakan set ini strategi . Pencarian minimax terutama dikenal karena kegunaannya dalam menghitung langkah terbaik dalam dua pertandingan pemain di mana semua informasi yang tersedia , seperti catur atau tic tac toe . Ini terdiri dari menavigasi melalui pohon yang menangkap semua kemungkinan bergerak dalam permainan , di mana setiap langkah diwakili dalam hal kerugian dan keuntungan untuk salah satu pemain . Ini mengikuti bahwa ini hanya dapat digunakan untuk membuat keputusan dalam zero-sum game , di mana kehilangan satu pemain adalah keuntungan pemain lain . Secara teoritis , algoritma pencarian ini didasarkan teorema minimax von Neumann yang menyatakan bahwa dalam jenis permainan selalu ada serangkaian strategi yang mengarah ke kedua pemain mendapatkan nilai yang sama dan bahwa mengingat ini adalah nilai terbaik seseorang dapat mengharapkan untuk mendapatkan , orang harus menggunakan set strategi ini.

Contoh : Permainan Catur dan Tic Tac Toe

Dalam intelijensia semu dan riset operasi buatan , kepuasan kendala adalah proses menemukan solusi untuk satu set kendala yang memaksakan kondisi bahwa variabel harus memuaskan . Oleh karena itu solusinya adalah seperangkat nilai-nilai untuk variabel-variabel yang memenuhi semua kendala yaitu titik di wilayah layak.
Teknik yang digunakan dalam kepuasan kendala tergantung pada jenis kendala yang dipertimbangkan, yang sering digunakan adalah kendala pada domain yang terbatas , ke titik yang kendala masalah kepuasan biasanya diidentifikasi dengan masalah berdasarkan kendala pada domain yang terbatas . Masalah tersebut biasanya diselesaikan melalui pencarian , khususnya bentuk kemunduran atau pencarian lokal . Propagasi Kendala metode lain yang digunakan pada masalah tersebut , kebanyakan dari mereka tidak lengkap pada umumnya , yaitu mereka dapat memecahkan masalah atau membuktikannya unsatisfiable , tetapi tidak selalu . Kendala metode propagasi juga digunakan dalam hubungannya dengan pencarian untuk membuat soal yang diberikan sederhana untuk memecahkan . Jenis lain dianggap kendala berada pada bilangan real atau rasional ; pemecahan masalah pada kendala-kendala tersebut dilakukan melalui eliminasi variabel atau algoritma simpleks .

Contoh : Backtracking dan Map Coloring

2. Apa itu Propositional Logic?berikan contoh?

Dalam logika matematika, kalkulus proposisional atau logika (juga disebut kalkulus sentential atau logika sentensial) adalah sistem formal di mana formula dari bahasa formal dapat ditafsirkan untuk mewakili proposisi. Sebuah sistem aturan inferensi dan aksioma memungkinkan formula tertentu untuk diturunkan. Ini rumus yang diturunkan disebut teorema dan dapat ditafsirkan sebagai proposisi benar. Seperti urutan terbuat dari formula dikenal sebagai derivasi atau bukti dan rumus terakhir dari urutan adalah teorema tersebut. Derivasi dapat ditafsirkan sebagai bukti proposisi diwakili oleh teorema.
Biasanya dalam logika proposisional Kebenaran-fungsional, formula ditafsirkan sebagai memiliki salah satu nilai kebenaran benar atau nilai kebenaran palsu. [Klarifikasi diperlukan] logika proposisional Kebenaran-fungsional dan sistem isomorfik untuk itu, dianggap logika zeroth-order.

Contoh :

Simple axiom system

Let \mathcal{L}_1 = \mathcal{L}(\Alpha,\Omega,\Zeta,\Iota), where \Alpha\Omega\Zeta\Iota are defined as follows:

  • The alpha set \Alpha, is a finite set of symbols that is large enough to supply the needs of a given discussion, for example:
\Alpha = \{p, q, r, s, t, u \}.\,\!
  • Of the three connectives for conjunction, disjunction, and implication (\wedge\lor, and \rightarrow), one can be taken as primitive and the other two can be defined in terms of it and negation (\neg).[8] Indeed, all of the logical connectives can be defined in terms of a sole sufficient operator. The biconditional (\leftrightarrow) can of course be defined in terms of conjunction and implication, with a \leftrightarrow b defined as (a \to b) \land (b \to a).
Adopting negation and implication as the two primitive operations of a propositional calculus is tantamount to having the omega set \Omega = \Omega_1 \cup \Omega_2 partition as follows:
\Omega_1 = \{ \lnot \},
\Omega_2 = \{ \rightarrow \}.
  • (p \to (q \to p))
  • ((p \to (q \to r)) \to ((p \to q) \to (p \to r)))
  • ((\neg p \to \neg q) \to (q \to p))
  • The rule of inference is modus ponens (i.e., from p and (p \to q), infer q). Then a \lor b is defined as \neg a \to b, and a \land b is defined as \neg(a \to \neg b).


3. Buat coding (Boleh C, C++ atau Java) untuk Algoritma A & Algoritma A* (A Star)?

Algoritma A* [C++]

public Solution search( INode initial, INode goal ) {
  // Start from the initial state
  INodeSet open = StateStorageFactory.create( StateStorageFactory.TREE );
  INode copy = initial.copy();
  scoringFunction.score( copy );
  open.insert( copy );

  // Use Hashtable to store states we have already visited.
  INodeSet closed = StateStorageFactory.create( StateStorageFactory. HASH );
  while( !open.isEmpty() ) {
    // Remove node with smallest evaluation function and mark closed.
    INode n = open.remove();

    closed.insert( n );

    // Return if goal state reached.
    if( n.equals( goal ) ) { return new Solution( initial, n ); }

    // Compute successor moves and update OPEN/CLOSED lists.
    DepthTransition trans = (DepthTransition)n.storedData();
    int depth = 1;

    if( trans ! = null ) { depth = trans.depth + 1; }

    DoubleLinkedList<IMove> moves = n.validMoves();

    for( Iterator<IMove> it = moves.iterator(); it.hasNext(); ) {
      IMove move = it.next();

      // Make move and score the new board state.
      INode successor = n.copy();
      move.execute( successor );

      // Record previous move for solution trace and compute
      // evaluation function to see if we have improved upon
      // a state already closed
      successor.storedData( new DepthTransition( move, n, depth ) );
      scoringFunction.score( successor );

      // If already visited, see if we are revisiting with lower
      // cost. If not, just continue; otherwise, pull out of closed
      // and process
      INode past = closed.contains( successor );

      if( past ! = null ) {
        if( successor.score() >= past.score() ) {
          continue;
        }

        // we revisit with our lower cost.
        closed.remove( past );
      }

      // place into open.
      open.insert( successor );
    }
  }

  // No solution.
  return new Solution( initial, goal, false );
}

Algoritma A [Java]

import java.util.Comparator;
import java.util.InputMismatchException;
import java.util.PriorityQueue;
import java.util.Scanner;

public class BestFirstSearch
{
private PriorityQueue<Vertex> priorityQueue;
private int heuristicvalues[];
private int numberOfNodes;

public static final int MAX_VALUE = 999;

public BestFirstSearch(int numberOfNodes)
{
this.numberOfNodes = numberOfNodes;
this.priorityQueue = new PriorityQueue<Vertex>(this.numberOfNodes,
new Vertex());
}

public void bestFirstSearch(int adjacencyMatrix[][], int[] heuristicvalues,int source)
{
int evaluationNode;
int destinationNode;
int visited[] = new int [numberOfNodes + 1];
this.heuristicvalues = heuristicvalues;

priorityQueue.add(new Vertex(source, this.heuristicvalues[source][/source]));
visited[source][/source] = 1;

while (!priorityQueue.isEmpty())
{
evaluationNode = getNodeWithMinimumHeuristicValue();
destinationNode = 1;

System.out.print(evaluationNode + “\t”);
while (destinationNode <= numberOfNodes)
{
Vertex vertex = new Vertex(destinationNode,this.heuristicvalues[destinationNode]);
if ((adjacencyMatrix[evaluationNode][destinationNode] != MAX_VALUE
&& evaluationNode != destinationNode)&& visited[destinationNode] == 0)
{
priorityQueue.add(vertex);
visited[destinationNode] = 1;
}
destinationNode++;
}
}
}

private int getNodeWithMinimumHeuristicValue()
{
Vertex vertex = priorityQueue.remove();
return vertex.node;
}

public static void main(String… arg)
{
int adjacency_matrix[][];
int number_of_vertices;
int source = 0;
int heuristicvalues[];

Scanner scan = new Scanner(System.in);
try
{
System.out.println(“Enter the number of vertices”);
number_of_vertices = scan.nextInt();
adjacency_matrix = new int[number_of_vertices + 1][number_of_vertices + 1];
heuristicvalues = new int[number_of_vertices + 1];

System.out.println(“Enter the Weighted Matrix for the graph”);
for (int i = 1; i <= number_of_vertices; i++)
{
for (int j = 1; j <= number_of_vertices; j++)
{
adjacency_matrix[i][j] = scan.nextInt();
if (i == j)
{
adjacency_matrix[i][j] = 0;
continue;
}
if (adjacency_matrix[i][j] == 0)
{
adjacency_matrix[i][j] = MAX_VALUE;
}
}
}
for (int i = 1; i <= number_of_vertices; i++)
{
for (int j = 1; j <= number_of_vertices; j++)
{
if (adjacency_matrix[i][j] == 1 && adjacency_matrix[j][i] == 0)
{
adjacency_matrix[j][i] = 1;
}
}
}

System.out.println(“Enter the heuristic values of the nodes”);
for (int vertex = 1; vertex <= number_of_vertices; vertex++)
{
System.out.print(vertex + “.”);
heuristicvalues[vertex] = scan.nextInt();
System.out.println();
}

System.out.println(“Enter the source “);
source = scan.nextInt();

System.out.println(“The graph is explored as follows”);
BestFirstSearch bestFirstSearch = new BestFirstSearch(number_of_vertices);
bestFirstSearch.bestFirstSearch(adjacency_matrix, heuristicvalues,source);

} catch (InputMismatchException inputMismatch)
{
System.out.println(“Wrong Input Format”);
}
scan.close();
}
}

class Vertex implements Comparator<Vertex>
{
public int heuristicvalue;
public int node;

public Vertex(int node, int heuristicvalue)
{
this.heuristicvalue = heuristicvalue;
this.node = node;
}

public Vertex()
{

}

@Override
public int compare(Vertex vertex1, Vertex vertex2)
{
if (vertex1.heuristicvalue < vertex2.heuristicvalue)
return -1;
if (vertex1.heuristicvalue > vertex2.heuristicvalue)
return 1;
return 0;
}

@Override
public boolean equals(Object obj)
{
if (obj instanceof Vertex)
{
Vertex node = (Vertex) obj;
if (this.node == node.node)
{
return true;
}
}
return false;
}
}