Anda di halaman 1dari 13

JENIS JENIS ALGORITMA

BRANCH AND BOUND


Metode Branch and Bound adalah sebuah teknik algoritma yang secara khusus mempelajari
bagaimana caranya memperkecil Search Tree menjadi sekecil mungkin.
Sesuai dengan namanya, metode ini terdiri dari 2 langkah yaitu :
Branch yang artinya membangun semua cabang tree yang mungkin menuju solusi.
Bound yang artinya menghitung node mana yang merupakan active node (E-node) dan node
mana yang merupakan dead node (D-node) dengan menggunakan syarat batas constraint
(kendala).

TEKNIK BRANCH AND BOUND


FIFO Branch and Bound
Adalah teknik Branch and Bound yang menggunakan bantuan queue untuk perhitungan Branch
and Bound secara First In First Out.
LIFO Branch and Bound
Adalah teknik Branch and Bound yang menggunakan bantuan stack untuk perhitungan Branch
and Bound secara Last In First Out.
Least Cost Branch and Bound
Teknik ini akan menghitung cost setiap node. Node yang memiliki cost paling kecil dikatakan
memiliki kemungkinan paling besar menuju solusi.
MASALAH YANG DAPAT DIPECAHKAN
Branch and Bound dapat digunakan untuk memecahkan berbagai masalah yang menggunakan
Search Tree
Traveling Salesman Problem
N-Queen Problem
15 Puzzle Problem
0/1 Knapsack Problem
-Shortest Path

Algoritma Brute Force


Algoritma Brute Force adalah sebuah pendekatan
yang lempang (straightforward) untuk memecahkan
suatu masalah, biasanya didasarkan pada pernyataan
masalah (problem statement) dan definisi konsep
yang dilibatkan.[7]

Prinsip prinsip algoritma brute force untuk


menyelesaikan persoalan Integer Knapsack ialah:
1) Mengenumerasikan semua himpunan bagian
dari solusi.
2) Mengevaluasi total keuntungan dari setiap
himpunan bagian dari langkah pertama
3) Pilih himpunan bagian yang mempunyai total
keuntungan terbesar

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]

Ada tiga pendekatan dalam menyelesaikan


persoalan Integer Knapsack dengan algoritma
Greedy:
1) Greedy by profit.
Pada setiap langkah, knapsack diisi dengan objek
yang mempunyai keuntungan terbesar. Strategi ini
mencoba memaksimumkan keuntungan dengan
memilih objek yang paling menguntungkan terlebih
dahulu.
2) Greedy by weight.
Pada setiap langkah, knapsack diisi dengan objek
yang mempunyai berat paling ringan. Strategi ini
mencoba memaksimumkan keuntungan dengan
memasukkan sebanyak mungkin objek ke dalam
knapsack.
3) Greedy by density.
Pada setiap langkah, knapsack diisi dengan objek
yang mempunyai densitas, pi /wi terbesar. Strategi
ini mencoba memaksimumkan keuntungan dengan
memilih objek yang mempunyai keuntungan per unit
berat terbesar.

Algoritma Dynamic Programming


Program Dinamis (dynamic programming): metode
pemecahan masalah dengan cara menguraikan solusi
menjadi sekumpulan langkah (step) atau tahapan
(stage) sedemikian sehingga solusi dari persoalan
dapat dipandang dari serangkaian keputusan yang
saling berkaitan.[7]

Pada penyelesaian persoalan dengan metode ini:


(1) terdapat sejumlah berhingga pilihan yang
mungkin,
(2) solusi pada setiap tahap dibangun dari hasil
solusi tahap sebelumnya,
(3) kita menggunakan persyaratan optimasi dan
kendala untuk membatasi sejumlah pilihan yang
harus dipertimbangkan pada suatu tahap.

Dua pendekatan yang digunakan dalam Dynamic


Progamming adalah maju (forward atau up-down)
dan mundur (backward atau bottom-up).
Misalkan x1, x2, , xn menyatakan peubah (variable)
keputusan yang harus dibuat masing-masing untuk
tahap 1, 2, , n. Maka,
a. Program dinamis maju: Program dinamis
bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai tahap n.
Runtunan
peubah keputusan adalah x1, x2, , xn.

b. Program dinamis mundur: Program dinamis


bergerak mulai dari tahap n, terus mundur ke
tahap n 1, n 2, dan seterusnya sampai tahap
1. Runtunan peubah keputusan adalah xn, xn-1,
, x1.

Secara umum, ada empat langkah yang dilakukan


dalam mengembangkana algoritma program
dinamis:
1. Karakteristikkan struktur solusi optimal.
2. Definisikan secara rekursif nilai solusi
optimal.
3. Hitung nilai solusi optimal secara maju atau
mundur.
4. Konstruksi solusi optimal.

Algoritma Divide and Conquer


Algoritma divide and conquer sudah lama diperkenalkan sebagai sumber dari
pengendalian proses paralel, karena masalah-masalah yang terjadi dapat diatasi
secara independen. Banyak arsitektur dan bahasa pemrograman paralel mendesain
implementasinya (aplikasi) dengan struktur dasar dari algoritma divide and conquer.
Untuk menyelesaikan masalah-masalah yang besar, dan dibagi (dipecah) menjadi
bagian yang lebih kecil dan menggunakan sebuah solusi untuk menyelesaikan
problem awal adalah prinsip dasar dari pemrograman/strategi divide and conquer.

http://hermanteknik.blogspot.co.id/2012/10/jenis-jenis-algoritma.html

ALGORITMA KEAMANAN PADA SISTEM OPERASI JARINGAN


A. Algoritma Genetika (Genetic Algorithm, GA)

Algoritma Genetika pada dasarnya adalah program komputer yang


mensimulasikan proses evolusi. Dalam hal ini populasi dari kromosom dihasilkan
secara random dan memungkinkan untuk berkembang biak sesuai dengan
hukum-hukum evolusi dengan harapan akan menghasilkan individu kromosom
yang prima. Kromosom ini pada kenyataannya adalah kandidat penyelesaian dari
masalah, sehingga bila kromosom yang baik berkembang, solusi yang baik
terhadap masalah diharapkan akan dihasilkan.

Algoritma genetika sangat tepat digunakan untuk penyelesaian masalah optimasi


yang kompleks dan sukar diselesaikan dengan menggunakan metode yang
konvensional. Sebagaimana halnya proses evolusi di alam, suatu algoritma
genetika yang sederhana umumnya terdiri dari tiga operator yaitu: operator
reproduksi, operator crossover (persilangan) dan operator mutasi.

B. Divide and Conquer

paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-


permasalahan yang lebih kecil.

C. Dynamic programming

paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu


masalah yang mengandung sub-struktur yang optimal (, dan mengandung
beberapa bagian permasalahan yang tumpang tindih .

D. Metode serakah

Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya


jawaban dari submasalah tidak perlu diketahui dalam setiap tahap;

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

Algoritma Dijkstra, (dinamai menurut penemunya, seorang ilmuwan


komputer, Edsger Dijkstra), adalah sebuah algoritma rakus (greedy algorithm) yang
dipakai dalam memecahkan permasalahan jarak terpendek (shortest path problem)
untuk sebuah graf berarah (directed graph) dengan bobot-bobot sisi (edge weights)
yang bernilai tak-negatif.

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.

Bobot (weights) dari semua sisi dihitung dengan fungsi

w: E [0, )

jadi w(u,v) adalah jarak tak-negatif dari vertex u ke vertex v.

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

Algoritma kriptograf atau cipher , dan juga sering disebut dengan


istilahsandi adalah suatu fungsi matematis yang digunakan untuk melakukan
enkripsi dan dekripsi (Schneier, 1996). Ada dua macam algoritma kriptograf,
yaitu algoritma simetris (symmetric algorithms) dan algoritma
asimetris(asymmetric algorithms).

H. Algoritma random

algoritma random sering dibutuhkan ketika membuat AI untuk musuh, misalnya


untuk memunculkan pasukan musuh secara random. fungsi sederhana berikut ini
digunakan untuk mencari nilai random dari bilangan antara min max.

var a = Math.floor(Math.random() * (max min + 1)) + min;

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

Penggunaan Waktu Quantum


Berikut adalah algoritma penjadwalan Round Robin secara Keseluruhan :

Setiap proses mendapat jatah waktu CPU (time slice/quantum) tertentu Time
slice/quantum umumnya ntara 10 100 milidetik.

1. Setelah time slice/quantum maka proses akan di-preempt dan dipindahkan ke


antrian ready.

2. Proses ini adil dan sangat sederhana.

Jika terdapat n proses di antrian ready dan waktu quantum q (milidetik),


maka:

1. Maka setiap proses akan mendapatkan 1/n dari waktu CPU.

2. Proses tidak akan menunggu lebih lama dari: (n-1)q time units.

Performance dari algoritma ini tergantung dari ukuran time quantum

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

switch sebaliknya akan memerlukan ongkos yang besar.

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.

Graph dibedakan atas dua tipe , yaitu :

Undirected GRAPH
Jika sepasang node yang membentuk edge dalam graph tidak berarah seperti
ditunjukkan
oleh gambar di bawah ini :

Gambar 14.2: Undirected Graph

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.

STATUS = 3: (Processed status) node N sudah diproses.

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

Algoritma Pembelajaran Backpropagation


Sesuai dengan namanya, algoritma ini melakukan dua tahap komputasi yaitu :
perhitungan maju (feedforward) dan perhitungan mundur (backward), dalam setiap
iterasinya, jaringan akan memperbaiki nilai-nilai bobot dan bias pada semua neuron
yang ada di jaringan.

Algoritma Backpropagation adalah salah satu algoritma yang menggunakan metode


terawasi (supervised learning), dan termasuk jaringan MLP (Multi Layer Perceptron).

Gb.1 Jaringan Multi Layer Perpceptron

Algoritma Pembelajaran Backpropagation :


Inisialisasi semua input, target, bobot awal, bias awal dan target keluaran.
Inisialisasi Epoch.
Inisialisasi learning rate, maximum error.

Feedforward:
Hitung nilai masukan pada tiap pasangan elemen input pada hidden layer
dengan formula :

Jika kita menggunakan fungsi aktivasi sigmoid, hitung output dengan :

Hitung sinyal keluaran dari hidden layer untuk mendapatkan keluaran output
layer dengan menggunakan persamaan :

Jika kita menggunakan fungsi aktivasi sigmoid, hitung output dengan :

Kemudian, keluaran jaringan dibandingkan dengan target, hitung error E dengan :

Hitung MSE (Mean Square Error) :

dengan n adalah jumlah input masukan.

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 :

Perbaiki nilai bobot dan bias dengan menggunakan formula :

Untuk semua layer, perbaiki bobot dan bias :

Hitung MSE (Mean Square Error) dengan menggunakan formula :

dengan n adalah jumlah input masukan.

Jika (Epoch < maximum Epoch) atau (MSE < Target Error), ulangi langkah pelatihan.

Anda mungkin juga menyukai