Professional Documents
Culture Documents
(solusi
Koin: 10, 7, 1
Uang yang ditukar: 15
Solusi greedy: 15 = 10 + 1 + 1 + 1 + 1 + 1
Solusi optimal: 15 = 7 + 7 + 1
(6
(hanya 3
Contoh 5.
w1 = 100; p1 = 40;
w2 = 50; p2 = 35;
w3 =
45;
p3 = 18;
w4 = 20; p4 = 4;
w5 = 10;
p5 = 10; w6 = 5;
p6
=2
Kapasitas knapsack K = 100
Contoh 6.
w1 = 18;
w3 = 10;
p1 = 25; w2 = 15; p1 = 24
p1 = 15 Kapasitas knapsack K = 20
Activity-Selection
Problem
Penjadwalan aktivitas yang membutuhkan pemanfaatan
sumberdaya umum secara eksklusif. (contohnya ruangan kelas)
Tujuan: menentukan ukuran maksimum dari himpunan
aktivitas yang saling compatible.
Himpunan S = {a1, a2 , , an} dengan n aktivitas yang
memerlukan pemanfaatan sumberdaya umum secara eksklusif.
Tiap aktivitas ai memiliki si = waktu mulai dan fi = waktu
selesai yang berlangsung dalam half-open interval [si, fi).
Aktivitas ai dan aj saling compatible jika interval [si,fi) dan [sj,fj)
tidak overlap.
Aktivitas diasumsikan terurut berdasarkan waktu finish
secara increasing:
f1 f2 ... fn-1 fn
Illustration Knapsack
problem
1
1
1
2
12
10
10
1
1
2
2
2
1
4
0.33
Total Bobot
Total Keuntungan
1
1
1
1
0
5
15
1
0
1
0
1
14
16
1
1
1
1
0
5
15
Solusi
Optimal
1
0
1
0
1
14
16
Penyelesaian dengan
Greedy
Greedy by Profit
Pada setiap langkah Knapsack diisi dengan obyek
yang mempunyai keuntungan terbesar.
Strategi ini mencoba memaksimumkan keuntungan
dengan memilih objek yang paling menguntungkan
terlebih dahulu.
Pertama kali dilakukan adalah menurutkan secara
menurun obyek-obyek berdasarkan profitnya .
Kemudian obyek-obyek yang dapat ditampung oleh
knapsack diambil satu persatu sampai knapsack
penuh atau (sudah tidak ada obyek lagi yang bisa
dimasukan).
Penyelesaian dengan
Greedy
Contoh Soal 1
Data awal :
w1
w2
w3
w4
=
=
=
=
6;
5;
10;
5;
p1
p2
p3
p4
=
=
=
=
12
15
50
10
Kapasitas knapsack W = 16
Penyelesaian dengan
Greedy
Greedy by Wight
Penyelesaian dengan
Greedy
Data awal :
w1
w2
w3
w4
=
=
=
=
6;
5;
10;
5;
p1
p2
p3
p4
=
=
=
=
12
15
50
10
Kapasitas knapsack W = 16
Penyelesaian dengan
Greedy
Greedy By Density
Penyelesaian dengan
Greedy
Data awal :
w1
w2
w3
w4
=
=
=
=
6;
5;
10;
5;
p1
p2
p3
p4
=
=
=
=
12
15
50
10
Kapasitas knapsack W = 16
Penyelesaian dengan
Greedy
Perbandingan hasil :
Prefix code
Prefix code adalah kode dimana tidak
ada satu codeword yang merupakan
prefix dari codeword yang lain.
Dalam pembahasan, kita selalu
mengacu pada prefix code.
0 10 10 11 110 1100
Encoding=dengan menggabungkan
1
0
1
1
karakter .
Contoh:bad=101.0.111
DECODING
11111010111=111.1101.0.111=
Penjabaran algoritma
Step 1: ambil x dan y dari alphabet, dimana x
dan y adalah karakter dengan frequensi
terkecil. Buat subtree yang berisi x dan y
sebagai anak dan z sebagai parent
Step 2: atur frequensi z f(z)=f(x) + f(y)
Hilangkan x dan y dari queue dan masukkan subtree
z ke dalam queue
Frequency(dalam 45
ribu)
13
12
16
Panjang
bervariasi
101
100
111
1101
1100
Contoh
Misalnya data dengan panjang 100 karakter dan
disusun oleh huruf-huruf a,b,c,d,e dengan
frekuensi kemunculan setiap huruf sebagai
berikut :
Algoritma BFS
1. Deklarasikan dua list kosong, Open dan Close
2. Tambahkan vertex awal ke Open
3. Ketika Open tidak kosong, lakukan looping:
a. Hapus vertex awal dari Open
b. Cek dan lihat apakah vertex yang dihapus adalah tujuan
i. Jika vertex yang dihapus adalah tujuan, keluar dari loop,
tambahkan vertex ke Close, dan kembali ke nilai dari
Close
ii. Jika vertex yang dihapus bukan tujuan, lanjutkan looping
c. Ekstrak tetangga dari vertex yang dihapus di atas
d. Tambahkan tetangga ke akhir dari Open, dan tambahkan
vertex yang dihapus ke Close
Lintasan akhir yang akan diambil oleh metode BFS adalah
nilai terakhir dari list Close
Langkah 2:
a.
Periksa vertex yang muncul pertama pada list Open, yaitu B.
b.
Karena B bukan tujuan, telusuri tetangganya, yaitu D dan E. Pindah
B ke list Close.
c.
Tambahkan D dan E ke
akhir dari list Open.
Open: C, D, E
Close: A, B
. Langkah 3:
a.
Periksa vertex C.
b.
Karena C tidak memiliki tetangga, hapus C dari list Open.
Open: D, E
Close: A, B, C
Langkah 4:
a. Periksa vertex D.
b. Karena D bukan tujuan, dan tidak memiliki tetangga,
hapus D dari list Open dan tambahkan ke list Close.
Open: E
Close: A, B, C, D
. Langkah 5:
a. List Open hanya memiliki satu vertex, yaitu E.
b. Karena E adalah tujuan, maka penelusuran dapat
dihentikan.
Open: <kosong>
Close: A, B, C, D, E
Algoritma DFS
1. Deklarasikan dua list kosong, Open dan Close
2. Tambahkan vertex awal ke Open
3. Ketika list Open tidak kosong, lakukan looping:
a. Hapus vertex awal dari Open
b. Cek dan lihat apakah vertex yang dihapus adalah tujuan
i. Jika vertex yang dihapus adalah tujuan, keluar dari loop,
tambahkan vertex ke list Close, dan kembali ke nilai dari list
Close
ii. Jika vertex yang dihapus bukan tujuan, lanjutkan looping
c. Ekstrak tetangga dari vertex yang dihapus di atas
d. Tambahkan tetangga ke awal dari Open, dan tambahkan
vertex yang dihapus ke Close
Lintasan akhir yang akan diambil oleh metode DFS adalah nilai
terakhir dari list Close
Langkah 2:
a.
Periksa vertex yang muncul pertama pada list Open, yaitu B.
b.
Karena B bukan tujuan, telusuri tetangganya, yaitu D dan E.
Pindah B ke list Close.
c.
Tambahkan D dan E ke
awal dari list Open.
Open: D, E, C
Close: A, B
. Langkah 3:
a.
Periksa vertex pada awal dari list Open, yaitu D.
b.
Karena D bukan tujuan dan tidak mempunyai tetangga, hapus
D dari list Open dan tambahkan ke list Close.
Open: E, C
Close: A, B, D
Langkah 4:
a.
Periksa vertex pada awal dari list Open, yaitu E.
b.
Karena E bukan tujuan, telusuri tetangga-tetangganya, yaitu F
dan G. Kemudian hapus E dari list Open dan tambahkan ke list
Close.
c.
Tambahkan F dan G ke awal dari list Open.
Open: F, G, C
Close: A, B, D, E
. Langkah 5:
a.
Periksa vertex pada awal dari list Open, yaitu F.
b.
Karena F adalah tujuan, maka penelusuran dapat dihentikan.
c.
Hapus F dari list Open dan tambahkan ke list Close.
Open: G, C
Close: A, B, D, E, F
3
3
5
3
Spanning
Tree 1
3
3
Spanning
Tree 2
3
3
Spanning
Tree 3
Algoritma
Prim
Contoh Prim
2
42
44
Algoritma Kruskal
Tahap pertama, jika dalam V
terdapat
n
verteks
maka
diinisialisasi n buah subset yang
disjoint, masing-masing berisi
satu verteks, sebagai subsetsubset awal.
Tahap berikutnya, urutkan sisisisi dengan bobot yang terkecil
hingga terbesar.
Mulai dari sisi dengan bobot
terkecil hingga terbesar lakukan
dalam iterasi: jika sisi tsb.
menghubungkan dua verteks
dalam satu subset (berarti
membentuk siklik) maka skip sisi
tersebut
dan
periksa
sisi
berikutnya jika tidak (berarti
membentuk siklik) maka kedua
45
46
47
Algoritma Kruskal
(Implementasi)
Mencari Minimum Spanning Tree pada graph
berbobot berikut ini :
Algoritma Kruskal
(Implementasi)
Vertex Pair
Edge Weight
E1
(0,2)
E2
(3,5)
E3
(0,1)
E4
(1,4)
E5
(2,5)
E6
(1,2)
E7
(2,3)
E8
(0,3)
E9
(2,4)
E10
(4,5)
Algoritma Kruskal
(Implementasi)
Graph
Tambahkan
edge E1
Algoritma Kruskal
(Implementasi)
Tambahkan
edge E2
Tambahkan
edge E3
Algoritma Kruskal
(Implementasi)
Tambahkan
edge E4
Tambahkan
edge E5
Algoritma Dijkstra
1.Tetapkan jarak semua simpul terhadap simpul A, yaitu infinity atau takhingga untuk simpul yang lain dan 0 untuk simpul A.
2.Tandai semua simpul dengan status belum dikunjungi. Jadikan simpul awal
sebagai simpul terkini.
3.Untuk node terkini, hitung jarak semua tetangga simpul ini dengan
menghitung jarak (dari awal simpul). Misalnya, jika saat ini node (C)
memiliki jarak dari simpul A sebesar 6, dan sisi yang menghubungkannya
dengan node lain (B) adalah 2, jarak ke B melalui C akan menjadi 6 +2 = 8.
Jika jarak ini kurang dari jarak yang sebelumnya (tak- hingga di awal) maka
nilai jarak simpul B dengan simpul A akan berubah.
4.Setelah selesai mengecek semua tetangga dari simpul terkini, simpul
terkini ditandai dangna status sudah dikunjungi.
5.Mengulang langkah tiga hingga lima, hingga semua simpul telah
dikunjungi.
Setelah semua simpul dikunjungi maka akan didapati jarak minimum
semua simpul terhadap simpul A.
Bellman ford
Bellman ford
Contoh
Contoh
Titik
v1
v3
v5
v7
v2
v4
v6
Derajat
warna
Hasil Akhir :
Fase 1 : Hijau (AD, AC, AB, CD, BC, DA)
Merah (BD, CA, DB, BA, CB, DC)
Fase 2 : Hijau (BA, BD, AB, CD, BC, DA)
Merah (AC, CA, DB, AD, CB, DC)
Fase 3 : Hijau (CB, CA, AB, CD, BC, DA)
Merah (AC, BD, DB, AD, BA, DC)
Fase 4 : Hijau (DC, DB, AB, CD, BC, DA)
Merah (AC, BD, CA, AD, BA, CB)