Algoritma Greedy
Secara harfiah, greedy berarti rakus atau tamak.
Algoritma Greedy merupakan algoritma sedarhana
dan lempang yang paling populer untuk pemecahan
persoalan optimasi (maksimum atau minimum).
Prinsip greedy adalah: take what you can get
now!, yang digunakan dalam konteks positif.[7]
http://hermanteknik.blogspot.co.id/2012/10/jenis-jenis-algoritma.html
C. Dynamic programming
D. Metode serakah
dan menggunakan pilihan "serakah" apa yang dilihat terbaik pada saat itu.
E. Algoritma Greedy
ALgoritma greedy merupakan salah satu dari sekian banyak algoritma yang sering
di pakai dalam implementasi sebuah system atau program yang menyangkut
mengenai pencarian optimasi
Di dalam mencari sebuah solusi (optimasi) algoritma greedy hanya memakai 2
buah macam persoalan Optimasi,yaitu:
1. Maksimasi (maxizimation)
2. Minimasi (minimization)
Sekarang kita lanjut ke contoh soal yang aja ya..biar lebih enak membedakan
antara soal mengenai optimasi/maksimasi dengan minimum/minimasi.
F. Algoritma Dijkstra
Misalnya, bila vertices dari sebuah graf melambangkan kota-kota dan bobot sisi
(edge weights) melambangkan jarak antara kota-kota tersebut, maka algoritma
Dijkstra dapat digunakan untuk menemukan jarak terpendek antara dua kota.
Input algoritma ini adalah sebuah graf berarah yang berbobot (weighted directed
graph) G dan sebuah sumber vertex s dalam G dan V adalah himpunan
semua vertices dalam graph G.
Setiap sisi dari graf ini adalah pasangan vertices (u,v) yang melambangkan
hubungan dari vertex u ke vertex v. Himpunan semua tepi disebut E.
w: E [0, )
Ongkos (cost) dari sebuah sisi dapat dianggap sebagai jarak antara duavertex, yaitu
jumlah jarak semua sisi dalam jalur tersebut. Untuk sepasang
vertex s dan t dalam V, algoritma ini menghitung jarak terpendek dari s ke t.
G. Algoritma Kriptograf
H. Algoritma random
misalnya min = 1 dan max = 10, maka akan menghasilkan nilai random pada var a
pada kisaran 1-10.
http://jarjid23.blogspot.co.id/2015/12/algoritma-keamanan-pada-sistem-
operasi.html
Setiap proses mendapat jatah waktu CPU (time slice/quantum) tertentu Time
slice/quantum umumnya ntara 10 100 milidetik.
2. Proses tidak akan menunggu lebih lama dari: (n-1)q time units.
1. Time Quantum dengan ukuran yang besar maka akan sama dengan FCFS.
2. Time Quantum dengan ukuran yang kecil maka time quantum harus diubah
ukurannya lebih besar dengan respek pada context
Sumber:
http://en.wikipedia.org/wiki/Round-robin_scheduling
http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-
1/ch14s05.html
http://blog.uin-malang.ac.id/sin4/2010/10/14/algoritma-penjadwalan-proses-round-
robin-r-r/
Graph adalah suatu struktur data yang berbentuk network / jaringan dimana hubungan
antara
elemen-elemennya adalah many-to-many . contoh dalam kehidupan sehari-hari yang
berbentuk
graph ini cukup banyak , misalnya: hubungan dosen dengan mahasiswa, dimana satu
dosen bisa
mengajar lebih dari satu mahasiswa, dan satu mahasiswa dapat memiliki lebih dari satu
dosen.
Graph terdiri dari Node ( VERTEX) dan ARC ( EDGE ). Yang dimaksud degan Node adalah
elemen graph yang berisi informasi sedangkan ARC (Edge ) dalah Path yang
menghubungkan
dua buah node. Dua buah node yang dihubungkan dengan edge juga disebut Adjacent
Node.
Teminologi
Suatu subset / bagian dari Graph dinamakan SubGraph. Sedangkan yang disebut dengan
Path
adalah hubungan dari kumpulan node-node dimana tiap node dengan node berikutnya
dihubungkan dengan Edge. Sebuah path dikatakan simple path bila setiap node hanya
muncul
satu kali dalam path tersebut.
Undirected GRAPH
Jika sepasang node yang membentuk edge dalam graph tidak berarah seperti
ditunjukkan
oleh gambar di bawah ini :
Bila ada minimal sepasang node mempunyai hubungan maka graph tersebut
UnConnected Graph
seperti gambar di bawah ini :
Jika node pertama dan node terakhir dalam graph adalah sama,maka graph tersebut
dinamakan
Cycle Graph. Apabila semua edge dalam graph diberi nilai ( value ) , maka graph
tersebut
dinamakan Weight Graph.
1. Representasi Graph
Graph dapat direpresentasi Graph dengan dua cara yaitu : Adjancency List dan
Adjacency Matrix.
Dengan mempergunakan gambar di bawah ini sebagai contoh maka representasi graph
dengan
masing-masing cara dapat dijelaskan sebagai berikut :
a) Adjacency List
14.2 Graph Traversal
Sama seperti Tree , maka dalam graph juga dikenal operasi Graph Traversal, yaitu
penelusuran
semua node di dalam graph. Ada 2 cara untuk melakukan Traversal dalam Graph yaitu ;
Breadth First Search dan Depth First Search.
prosedur pencarian Breadth-First Search menggunakan ADT Queue dalam pemrosesan
node, sebaliknya untuk Depth First Search kita mengunakan ADT Stack.
Selama pemrosesan dari algoritma, setiap node didalam graph akan berada pada 3
keadaan
dibawah ini, yang disebut status dari n, 3 keadaan tersebut sebagai berikut:
STATUS = 1: (Ready status) keadaan awal dari setiap node.
STATUS = 2: (Waiting status) node N sudah berada pada queue atau stack, menunggu
untuk
pemrosesan selanjutnya.
Breadth-First Search
Inti dari Breadth First Search(BFS) sendiri adalah pencarian yang dimulai dari root A.
Pertama
kita periksa root-nya A, setelah itu node node yang bertetanggaan dengan A. Setelah
selesai baru kita periksa semua node tetangga A yang bertentanggaan lagi, dan
seterusnya.
Selanjutnya kita harus mengikuti semua tetangga dari A dengan cermat, jangan sampai
ada
satu node yang diproses lebih dari satu kali. Semuanya dapat dilakukan dengan bantuan
queue yang menyimpan node yang menunggu untuk diproses dan dengan menggunakan
field
STATUS untuk mengetahui status dari node.
Algoritmanya:
1. inisialisasi semua node dalam keadalam ready. (STATUS = 1).
2. letakkan root in queue dan ganti statusnya menjadi tunggu (STATUS = 2).
3. ulangi langkah 4 dan 5 sampai queue kosong:
4. pindahkan depan node N di queue. Proses N dan ganti statusnya menjadi sudah
diproses (STATUS = 3).
5. tambahkan ke belakang dari queue semua tetangga dari N yang dalam status ready
saja (STATUS = 1), lalu ganti statusnya (STATUS = 2)
6. exit.
Catatan: algortima diatas akan memeriksa hanya node yang dapat di capai oleh node A
saja.
A FRONT = 1 QUEUE: A
REAR = 1 ORIG: 0
B FRONT = 2 QUEUE: A, F, C, B
REAR = 4 ORIG: 0, A, A, A
C FRONT = 3 QUEUE: A, F, C, B, D
REAR = 5 ORIG: 0, A, A, A, F
D FRONT = 4 QUEUE: A, F, C, B, D
REAR = 5 ORIG: 0, A, A, A, F
E FRONT = 5 QUEUE: A, F, C, B, D, G
REAR = 6 ORIG: 0, A, A, A, F, B
F FRONT = 6 QUEUE: A, F, C, B, D, G
REAR = 6 ORIG: 0, A, A, A, F, B
G FRONT = 7 QUEUE: A, F, C, B, D, G, E
REAR = 7 ORIG: 0, A, A, A, F, B, G
H FRONT = 8 QUEUE: A, F, C, B, D, G, E, J
REAR = 8 ORIG: 0, A, A, A, F, B, G, E
Dikarenakan J adalah tujuannya maka berhenti proses tersebut dan balik arah dari J ke
A dengan
menggunakan array ORIG untuk mendapatkan path, sehingga didapatkan:
J<E<G<B<A
Depth-First Search
ide dari DFS ini hampir sama dengan BFS, hanya saja pada DFS kita akan menggunakan
struktur data Stack. Prosesnya pun sama dengan menggunakan ketiga status yang kita
gunakan juga pada BFS.
Algortimanya:
1. inisialisasi semua node dalam keadalam ready. (STATUS = 1).
2. letakkan root in queue dan ganti statusnya menjadi tunggu (STATUS = 2).
3. ulangi langkah 4 dan 5 sampai queue kosong:
4. pindahkan depan node N di queue. Proses N dan ganti statusnya menjadi sudah
diproses (STATUS = 3).
5. tambahkan ke belakang dari queue semua tetangga dari N yang dalam status ready
saja (STATUS = 1), lalu ganti statusnya (STATUS = 2)
6. exit.
Catatan: algortima diatas akan memeriksa hanya node yang dapat di capai oleh node A
saja.
Contoh DFS:
Misalkan kita akan mencari semua node yang bisa di jangkau oleh node J:
a. push J kedalam stack
STACK: J
b. pop, dan cetak elemen teratas J, kemudian push kedalam stack semua neighbor J
(yang
berada pada status READY)
PRINT: J STACK: D, K
c. pop, dan cetak elemen teratas K, kemudian push kedalam stack semua neighbor K
(yang
berada pada status READY)
PRINT: K STACK: D, E, G
d. pop, dan cetak elemen teratas G, kemudian push kedalam stack semua neighbor dari
G (yang
berada pada status READY)
PRINT: G STACK: D, E, C
e. pop, dan cetak elemen teratas C, kemudian push kedalam stack semua neighbor dari
C (yang
berada pada status READY)
PRINT :C STACK: D, E, F
f. pop, dan cetak elemen teratas F, kemudian push kedalam stack semua neighbor dari F
(yang
berada pada status READY)
PRINT: F STACK: D, E
g. pop, dan cetak elemen teratas E, kemudian push kedalam stack semua neighbor dari
E (yang
berada pada status READY)
PRINT: E STACK: D
h. pop, dan cetak elemen teratas D, kemudian push kedalam stack semua neighbor dari
D (yang
berada pada status READY)
PRINT: D STACK:
Stack dalam keadaan kosong sekarang, selesainya proses traversal DFS dari node J.
Hasilnya
yang tercetak adalah:
J,K, G, C, F, E, D
Feedforward:
Hitung nilai masukan pada tiap pasangan elemen input pada hidden layer
dengan formula :
Hitung sinyal keluaran dari hidden layer untuk mendapatkan keluaran output
layer dengan menggunakan persamaan :
Backpropagation :
Pada tiap unit output, gunakan formula ini untuk memperbaiki nilai bobot dan bias :
Perbaiki nilai bobot dan bias dengan menggunakan formula :
Hitung sinyal balik dari output layer pada tiap unit di hidden layer
Pada tiap unit hidden layer, hitung delta_1 untuk memperbaiki nilai bobot dan bias :
Jika (Epoch < maximum Epoch) atau (MSE < Target Error), ulangi langkah pelatihan.