Anda di halaman 1dari 164

CII2K3

STRATEGI ALGORITMA

Topik 2:
GREEDY
Outline
1. Permasalahan optimasi

2. Algoritma greedy

3. Permasalahan penukaran koin/uang

4. Penjadwalan kerja

5. 0/1 knapsack problem

6. Fractorial knapsack problem

7. Job scheduling with deadlines

8. Pemampatan data

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 2


Permasalahan optimasi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 3


Permasalahan optimasi

◦ Persoalan optimasi (optimization problems) adalah persoalan


yang menuntut pencarian solusi optimum
◦ Ada dua macam persoalan optimasi:
▶ Maksimasi
▶ Minimasi
◦ Solusi optimum (terbaik) adalah solusi yang bernilai minimum
atau maksimum dari sekumpulan alternatif solusi yang mungkin

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 4


Algoritma greedy

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 5


Algoritma greedy
◦ Greedy berarti rakus/tamak
◦ Prinsip greedy adalah “take what you can get now!”
◦ Algoritma greedy membentuk solusi langkah per langkah
▶ Pada setiap langkah harus dibuat keputusan yang terbaik dalam
menentukan pilihan
▶ Keputusan yang telah diambil pada suatu langkah tidak dapat
diubah lagi pada langkah berikutnya
◦ Pendekatan yang digunakan di dalam algoritma greedy adalah
membuat pilihan yang “tampaknya” memberikan perolehan
terbaik
▶ yaitu dengan membuat pilihan optimum lokal pada setiap
langkah
▶ harapannya, dengan mengambil optimum lokal, kita dapat menuju
optimum global

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 6


Skema umum greedy

Algoritma greedy disusun oleh komponen-komponen berikut:


◦ Himpunan kandidat
◦ Himpunan solusi
◦ Fungsi solusi
◦ Fungsi seleksi
◦ Fungsi kelayakan
◦ Fungsi obyektif

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 7


Himpunan kandidat dan himpunan solusi

◦ Himpunan kandidat berisi elemen-elemen pembentuk solusi


◦ Himpunan yang berisi, atau merepresentasikan, obyek-obyek
yang telah terpilih

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 8


Fungsi solusi dan fungsi seleksi

◦ Fungsi solusi adalah fungsi yang menentukan akhir dari iteras


◦ Memilih kandidat yang paling memungkinkan mencapai solusi
optimal
◦ Kandidat yang sudah dipilih pada suatu langkah tidak pernah
dipertimbangkan lagi pada langkah selanjutnya

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 9


Fungsi kelayakan

◦ Memeriksa apakah suatu kandidat yang telah dipilih dapat


memberikan solusi yang layak, yakni kandidat tersebut
bersama-sama dengan himpunan solusi yang sudah terbentuk
tidak melanggar kendala (constraints) yang ada
◦ Kandidat yang layak dimasukkan ke dalam himpunan solusi,
sedangkan kandidat yang tidak layak dibuang dan tidak pernah
dipertimbangkan lagi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 10


Fungsi obyektif

Fungsi yang memaksimumkan atau meminimumkan nilai solusi


(misalnya panjang lintasan, keuntungan, dan lain-lain).

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 11


Permasalahan penukaran koin/uang

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 12


Masalah penukaran koin
Permasalahan:
Diberikan uang senilai A. Kita ingin menukar A dengan koin-koin
uang yang ada. Berapa jumlah minimum koin yang diperlukan untuk
penukaran tersebut?

Contoh:
Tersedia koin-koin 1, 5, 10, dan 25 (tidak terbatas banyaknya).
Uang senilai 32 dapat ditukar dengan cara berikut:
32 = 1 + 1 + . . . + 1 (32 koin)
32 = 5 + 5 + 5 + 5 + 10 + 1 + 1 (7 koin)
32 = 10 + 10 + 10 + 1 + 1 (5 koin)
. . . dan seterusnya
Minimum:
32 = 25 + 5 + 1 + 1 (4 koin)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 13


Kompleksitas penukaran koin dengan exhaustive
search

Jika dikerjakan dengan exhaustive search,


◦ Setiap elemen xi pada X = {x1 , x2 , . . . , xn } dapat bernilai 0 atau
1, sehingga total kemungkinan solusi adalah 2n
◦ Perhitungan fungsi obyektif dan kendala dapat dilakukan dalam
O(n) karena kita cukup menjumlahkan tidak lebih dari n nilai
untuk setiap fungsinya
◦ Algoritma exhaustive search untuk menyelesaikan permasalahan
ini berada pada kelas O(n.2n )

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 14


Penukaran koin: strategi greedy

“Selalu pilih koin bernilai besar yang mungkin dipilih”

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 15


Penukaran koin: komponen-komponen greedy

◦ Himpunan kandidat: himpunan koin yang merepresentasikan


nilai dan banyaknya koin
◦ Himpunan solusi: himpunan koin yang telah terpilih
◦ Fungsi solusi: total nilai koin yang dipilih tepat sama jumlahnya
dengan nilai uang yang ditukarkan
◦ Fungsi seleksi: memilih koin yang mempunyai nilai paling tinggi
dari himpunan kandidat yang tersisa
◦ Fungsi kelayakan: memeriksa apakah nilai total dari himpunan
koin yang dipilih tidak melebihi nilai uang yang ditukar
◦ Fungsi obyektif: banyaknya koin yang digunakan minimum

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 16


Penukaran koin: contoh implementasi greedy
Mari kita tinjau masalah penukaran uang yang bernilai 32 dengan
koin 1, 5, 10, dan 25.

Langkah Koin yang Total Nilai untuk Keterangan


dipilih koin ditukar (batas)
0 - 0 32 Nilai awal

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Penukaran koin: contoh implementasi greedy
Mari kita tinjau masalah penukaran uang yang bernilai 32 dengan
koin 1, 5, 10, dan 25.

Langkah Koin yang Total Nilai untuk Keterangan


dipilih koin ditukar (batas)
0 - 0 32 Nilai awal
1 25 25 32 − 25 = 7

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Penukaran koin: contoh implementasi greedy
Mari kita tinjau masalah penukaran uang yang bernilai 32 dengan
koin 1, 5, 10, dan 25.

Langkah Koin yang Total Nilai untuk Keterangan


dipilih koin ditukar (batas)
0 - 0 32 Nilai awal
1 25 25 32 − 25 = 7
2 5 30 32 − 30 = 2

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Penukaran koin: contoh implementasi greedy
Mari kita tinjau masalah penukaran uang yang bernilai 32 dengan
koin 1, 5, 10, dan 25.

Langkah Koin yang Total Nilai untuk Keterangan


dipilih koin ditukar (batas)
0 - 0 32 Nilai awal
1 25 25 32 − 25 = 7
2 5 30 32 − 30 = 2
3 1 31 32 − 31 = 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Penukaran koin: contoh implementasi greedy
Mari kita tinjau masalah penukaran uang yang bernilai 32 dengan
koin 1, 5, 10, dan 25.

Langkah Koin yang Total Nilai untuk Keterangan


dipilih koin ditukar (batas)
0 - 0 32 Nilai awal
1 25 25 32 − 25 = 7
2 5 30 32 − 30 = 2
3 1 31 32 − 31 = 1
4 1 32 32 − 32 = 0

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Penukaran koin: contoh implementasi greedy
Mari kita tinjau masalah penukaran uang yang bernilai 32 dengan
koin 1, 5, 10, dan 25.

Langkah Koin yang Total Nilai untuk Keterangan


dipilih koin ditukar (batas)
0 - 0 32 Nilai awal
1 25 25 32 − 25 = 7
2 5 30 32 − 30 = 2
3 1 31 32 − 31 = 1
4 1 32 32 − 32 = 0 Batas = 0 → selesai

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17


Penukaran koin: contoh implementasi greedy
Mari kita tinjau masalah penukaran uang yang bernilai 32 dengan
koin 1, 5, 10, dan 25.

Langkah Koin yang Total Nilai untuk Keterangan


dipilih koin ditukar (batas)
0 - 0 32 Nilai awal
1 25 25 32 − 25 = 7
2 5 30 32 − 30 = 2
3 1 31 32 − 31 = 1
4 1 32 32 − 32 = 0 Batas = 0 → selesai
Solusi: banyaknya koin minimum adalah 4 (yang memang merupakan
solusi optimum)
Pada setiap langkah di atas, diperoleh optimum lokal, dan berakhir
pada optimum global.
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 17
Penukaran koin: pemodelan matematis
Misalkan koin-koin yang tersedia dinyatakan sebagai himpunan
ganda (multiset) {d1 , d2 , . . . , dn }.
Solusi persoalan dinyatakan sebagai tupel X = {x1 , x2 , . . . , xn }
dimana untuk i = 1, . . . , n,
{
1 , jika di dipilih,
xi =
0 , jika di tidak dipilih.

Misalkan uang bernilai A akan ditukar dengan sejumlah koin, maka


∑n
Fungsi obyektif (minimisasi): F = xi , dan
i=1

n
Fungsi kelayakan (kendala): di = A.
i=1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 18


Penukaran koin: algoritma greedy
function tukarKoin (input C : himpunan_ koin,
A : integer)→himpunan_ koin
{Masukan: himpunan koin C dan nilai yang akan ditukar A
Keluaran: himpunan koin S bernilai total A dan banyaknya koin min.}
Deklarasi
x, tot : integer
S : himpunan_ koin
Algoritma
S ← {}
tot ← 0
while (tot ̸= A) and (C ̸= {}) do
x← koin yang punya nilai terbesar
C← C∑- {x}
if ( (nilai semua koin pada S)+x)≤ A then
S← S ∪ {x}
tot← tot + x
endif
endwhile
if (tot = A) then
return S
else
write(`Tidak ada solusi')
endif
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 19
Penukaran koin: kompleksitas algoritma greedy
◦ Pada setiap langkah, kita memilih koin dengan nilai sebesar
mungkin dari himpunan koin yang tersisa dengan syarat
pemilihan koin tidak menyebabkan total nilai koin melebihi nilai
uang yang ditukarkan.
◦ Agar pemilihan koin berikutnya optimal, maka perlu mengurutkan
himpunan koin dalam urutan yang menurun (nonincreasing
order ).
◦ Jika himpunan koin sudah terurut menurun, maka kompleksitas
algoritma greedy adalah O(n).

Catatan: algoritma greedy untuk masalah penukaran uang ini TIDAK


selalu menghasilkan solusi optimum; bergantung pada koin mata
uang yang digunakan.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 20


Akurasi penukaran koin dengan greedy

◦ Algoritma greedy untuk permasalahan penukaran koin tidak


selalu menghasilkan solusi terbaik
◦ Contoh 1:
Tersedia tak hingga banyak koin-koin 5, 4, 3, dan 1. Jika kita
ingin menukarkan uang bernilai 7,

◦ Contoh 2:
Tersedia tak hingga banyak koin-koin 10, 7, dan 1. Jika kita ingin
menukarkan uang bernilai 15,

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 21


Akurasi penukaran koin dengan greedy

◦ Algoritma greedy untuk permasalahan penukaran koin tidak


selalu menghasilkan solusi terbaik
◦ Contoh 1:
Tersedia tak hingga banyak koin-koin 5, 4, 3, dan 1. Jika kita
ingin menukarkan uang bernilai 7,
solusi greedy →
solusi terbaik →
◦ Contoh 2:
Tersedia tak hingga banyak koin-koin 10, 7, dan 1. Jika kita ingin
menukarkan uang bernilai 15,
solusi greedy →
solusi terbaik →

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 21


Akurasi penukaran koin dengan greedy

◦ Algoritma greedy untuk permasalahan penukaran koin tidak


selalu menghasilkan solusi terbaik
◦ Contoh 1:
Tersedia tak hingga banyak koin-koin 5, 4, 3, dan 1. Jika kita
ingin menukarkan uang bernilai 7,
solusi greedy → 5 + 1 + 1 (3 koin)
solusi terbaik → 4 + 3 (2 koin)
◦ Contoh 2:
Tersedia tak hingga banyak koin-koin 10, 7, dan 1. Jika kita ingin
menukarkan uang bernilai 15,
solusi greedy → 10 + 1 + 1 + 1 + 1 + 1 (6 koin)
solusi terbaik → 7 + 7 + 1 (3 koin)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 21


Keterbatasan greedy

Pada sebagian masalah, algoritma greedy tidak selalu berhasil


memberikan solusi yang benar-benar optimum.

Ini karena algoritma greedy tidak beroperasi secara menyeluruh


terhadap semua alternatif solusi yang ada (sebagaimana pada
metode exhaustive search).

Pada praktiknya, pembuktian kebenaran algoritma greedy diperlukan


sebelum dapat digunakan dalam penyelesaian suatu masalah.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 22


Latihan (1)

Misalkan seseorang ingin menukarkan uang senilai 35 dengan koin,


dengan banyak koin yang seminimum mungkin. Diketahui bahwa
tersedia koin dengan nilai 1, 2, 3, dan 6.
Tentukan koin apa saja yang seharusnya didapatkan agar diperoleh
banyak koin yang minimum. Gunakan teknik greedy dan tentukan
keputusan per langkahnya.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 23


Penjadwalan kerja

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 24


Permasalahan penjadwalan kerja

◦ Sebuah server mempunyai n pelanggan yang harus dilayani.


◦ Waktu pelayanan untuk setiap pelanggan sudah ditetapkan
sebelumnya, yaitu pelanggan i membutuhkan waktu ti .
◦ Urutkan pelayanan pelanggan sedemikian sehingga total waktu
semua pelanggan berada di dalam sistem adalah minimum.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 25


Penjadwalan kerja: pemodelan matematis

◦ Total waktu di dalam sistem, dapat dihitung dengan


n
T = xi
i=1

dimana xi = total waktu pelanggan i berada di dalam sistem.


◦ Meminimumkan total waktu di dalam sistem ≡ meminimumkan
waktu rata-rata pelanggan berada di dalam sistem.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 26


Contoh penjadwalan kerja

Misalkan kita mempunyai tiga pelanggan dengan

t1 = 5, t2 = 10, t3 = 3

Maka urutan pelayanan yang mungkin adalah


Urutan Pelayanan T (total waktu penggunaan server)
1, 2, 3 5 + (5 + 10) + (5 + 10 + 3) = 38
1, 3, 2 5 + (5 + 3) + (5 + 3 + 10) = 31
2, 1, 3 10 + (10 + 5) + (10 + 5 + 3) = 43
2, 3, 1 10 + (10 + 3) + (10 + 3 + 5) = 41
3, 1, 2 3 + (3 + 5) + (3 + 5 + 10) = 29
3, 2, 1 3 + (3 + 10) + (3 + 10 + 5) = 34

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 27


Contoh penjadwalan kerja

Misalkan kita mempunyai tiga pelanggan dengan

t1 = 5, t2 = 10, t3 = 3

Maka urutan pelayanan yang mungkin adalah


Urutan Pelayanan T (total waktu penggunaan server)
1, 2, 3 5 + (5 + 10) + (5 + 10 + 3) = 38
1, 3, 2 5 + (5 + 3) + (5 + 3 + 10) = 31
2, 1, 3 10 + (10 + 5) + (10 + 5 + 3) = 43
2, 3, 1 10 + (10 + 3) + (10 + 3 + 5) = 41
3, 1, 2 3 + (3 + 5) + (3 + 5 + 10) = 29
3, 2, 1 3 + (3 + 10) + (3 + 10 + 5) = 34

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 27


Penjadwalan kerja dengan exhaustive search

◦ Banyaknya kemungkinan urutan pelanggan untuk dilayani


merupakan suatu permutasi
◦ Banyaknya cara untuk menyusun urutan n pelanggan adalah n!
◦ Waktu yang dibutuhkan untuk menghitung fungsi obyektif adalah
O(n)
◦ Kompleksitas waktu algoritma exhaustive search yang dapat
menyelesaikan masalah penjadwalan sistem adalah O(n.n!)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 28


Penjadwalan kerja dengan greedy

“Pelanggan dengan waktu pelayanan terkecil dilayani terlebih


dahulu.”

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 29


Penjadwalan kerja: komponen-komponen greedy

◦ Himpunan kandidat: himpunan pengguna yang


merepresentasikan pelanggan yang akan dilayani
◦ Himpunan solusi: himpunan pengguna yang telah terpilih untuk
dilayani
◦ Fungsi solusi: semua pelanggan telah terlayani
◦ Fungsi seleksi: memilih pengguna dengan waktu pelayanan
terkecil dari himpunan kandidat yang tersisa
◦ Fungsi kelayakan: -
◦ Fungsi obyektif: meminimumkan total waktu pengguna di
dalam sistem

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 30


Penjadwalan kerja: contoh implementasi greedy

Mari kita tinjau kembali permasalahan sebelumnya, dimana suatu


server mempunyai tiga pelanggan yang harus dilayani, dengan waktu
pelayanan
t1 = 5, t2 = 10, t3 = 3.
Langkah Pelanggan Pelanggan Total waktu
yang menunggu terlayani penggunaan server
0 1, 2, 3 − 0

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 31


Penjadwalan kerja: contoh implementasi greedy

Mari kita tinjau kembali permasalahan sebelumnya, dimana suatu


server mempunyai tiga pelanggan yang harus dilayani, dengan waktu
pelayanan
t1 = 5, t2 = 10, t3 = 3.
Langkah Pelanggan Pelanggan Total waktu
yang menunggu terlayani penggunaan server
0 1, 2, 3 − 0
1 1, 2 3 3

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 31


Penjadwalan kerja: contoh implementasi greedy

Mari kita tinjau kembali permasalahan sebelumnya, dimana suatu


server mempunyai tiga pelanggan yang harus dilayani, dengan waktu
pelayanan
t1 = 5, t2 = 10, t3 = 3.
Langkah Pelanggan Pelanggan Total waktu
yang menunggu terlayani penggunaan server
0 1, 2, 3 − 0
1 1, 2 3 3
2 2 3, 1 3 + (3 + 5) = 11

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 31


Penjadwalan kerja: contoh implementasi greedy

Mari kita tinjau kembali permasalahan sebelumnya, dimana suatu


server mempunyai tiga pelanggan yang harus dilayani, dengan waktu
pelayanan
t1 = 5, t2 = 10, t3 = 3.
Langkah Pelanggan Pelanggan Total waktu
yang menunggu terlayani penggunaan server
0 1, 2, 3 − 0
1 1, 2 3 3
2 2 3, 1 3 + (3 + 5) = 11
3 − 3, 1, 2 3 + (3 + 5) + (3 + 5 + 10) = 29

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 31


Algoritma greedy untuk penjadwalan kerja

function jadwal (input C : himpunan_ pengguna)→himpunan_ pengguna


{Mencari urutan jadwal pengguna dari persoalan minimasi waktu
penggunaan server
Masukan: himpunan pengguna C
Keluaran: himpunan pengguna S}

Deklarasi
x : pengguna
S : himpunan_ pengguna
Algoritma
S ← {}
while (C ̸= {}) do
x← pengguna dengan ti terkecil
C← C - {x}
S← S ∪ {x}
endwhile
return S

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 32


Kompleksitas greedy untuk penjadwalan kerja

◦ Pada setiap langkah, kita memilih pelanggan yang membutuhkan


waktu pelayanan paling sedikit di antara semua pelanggan yang
belum terlayani
◦ Agar proses pemilihan pelanggan berikutnya optimal, maka
pelanggan perlu diurutkan berdasarkan waktu pelayanannya
secara menaik
◦ Jika waktu pengurutan tidak dihitung, maka kompleksitas
algoritma greedy untuk masalah minimasi waktu di dalam sistem
adalah O(n).

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 33


Akurasi penjadwalan kerja dengan greedy

◦ Pemilihan strategi greedy untuk masalah penjadwalan akan


selalu menghasilkan solusi optimum
◦ Keoptimuman ini dinyatakan dalam Teorema berikut:
Teorema:
Misalkan pj merepresentasikan pelanggan yang dilayani pada
urutan ke-j pada suatu permutasi p. Jika t1 ≤ t2 ≤ . . . ≤ tn , nilai


n ∑
i
tp j
i=1 j=1

akan minimum dibandingkan semua permutasi p yang mungkin,


jika pj = j.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 34


Latihan (2)

Misalkan kita mempunyai lima pelanggan dengan waktu pelayanan


yang telah diketahui sebelumnya, yaitu:
t + 1 = 3, t2 = 5, t3 = 10, t4 = 2, t5 = 7.

Urutkan urutan pelayanan yang harus dilakukan agar didapatkan total


waktu pelanggan dalam sistem yang minimum!

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 35


0/1 knapsack problem

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 36


Permasalahan 0/1 knapsack
◦ Diberikan n buah objek dan sebuah knapsack dengan kapasitas
bobot K. Setiap objek i memiliki properti bobot (weight) wi dan
keuntungan (profit) pi .
◦ Jika setiap objek tidak dapat dipecah/dibagi, objek mana sajakah
yang harus dibawa agar keuntungan yang didapat maksimum?
◦ Solusi permasalahan dinyatakan sebagai vektor n−tupel:

X = {x1 , x2 , . . . , xn }

dimana untuk setiap i = 1, . . . , n,


{
1 , jika objek ke-i dimasukkan ke dalam knapsack
xi =
0 , jika objek ke-i TIDAK dimasukkan ke dalam knapsack

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 37


Pemodelan matematis 0/1 knapsack problem

Maximasi

n
F = pi x i
i=1

dengan batasan

n
w i xi ≤ K
i=1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 38


0/1 knapsack problem dengan exhaustive search

◦ Setiap elemen xi pada X = {x1 , . . . , xn } dapat bernilai 0 atau 1,


sehingga banyaknya kemungkinan solusi adalah 2n .
◦ Perhitungan total bobot dan total berat untuk masing-masing
solusi dapat dilakukan dalam O(n).
◦ Kompleksitas waktu algoritma exhaustive search untuk
menyelesaikan 0/1 knapsack problem adalah O(n.2n ).

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 39


Greedy untuk 0/1 knapsack problem

Terdapat beberapa pendekatan greedy yang dapat digunakan untuk


menyelesaikan permasalahan 0/1 knapsack, yaitu:
◦ Greedy by profit

◦ Greedy by weight

◦ Greedy by density

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 40


Greedy untuk 0/1 knapsack problem

Terdapat beberapa pendekatan greedy yang dapat digunakan untuk


menyelesaikan permasalahan 0/1 knapsack, yaitu:
◦ Greedy by profit
→ “utamakan objek yang paling menguntungkan”
◦ Greedy by weight

◦ Greedy by density

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 40


Greedy untuk 0/1 knapsack problem

Terdapat beberapa pendekatan greedy yang dapat digunakan untuk


menyelesaikan permasalahan 0/1 knapsack, yaitu:
◦ Greedy by profit
→ “utamakan objek yang paling menguntungkan”
◦ Greedy by weight
→ “utamakan objek yang paling ringan”
◦ Greedy by density

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 40


Greedy untuk 0/1 knapsack problem

Terdapat beberapa pendekatan greedy yang dapat digunakan untuk


menyelesaikan permasalahan 0/1 knapsack, yaitu:
◦ Greedy by profit
→ “utamakan objek yang paling menguntungkan”
◦ Greedy by weight
→ “utamakan objek yang paling ringan”
◦ Greedy by density
→ “utamakan objek dengan keuntungan per unit berat terbesar”

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 40


Greedy untuk 0/1 knapsack problem

Terdapat beberapa pendekatan greedy yang dapat digunakan untuk


menyelesaikan permasalahan 0/1 knapsack, yaitu:
◦ Greedy by profit
→ “utamakan objek yang paling menguntungkan”
◦ Greedy by weight
→ “utamakan objek yang paling ringan”
◦ Greedy by density
→ “utamakan objek dengan keuntungan per unit berat terbesar”

pi
Keuntungan per unit berat (densitas) dari objek i = .
wi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 40


0/1 knapsack: komponen-komponen greedy
◦ Himpunan kandidat: himpunan objek yang merepresentasikan
objek yang belum dipilih
◦ Fungsi solusi: tidak ada kandidat yang dapat dipilih karena
beban yang melebihi sisa kapasitas knapsack
◦ Fungsi seleksi: memilih objek dari himpunan kandidat yang
tersisa yang
▶ by profit: memiliki keuntungan terbesar
▶ by weight: memiliki berat terkecil
▶ by density: memiliki densitas terbesar
◦ Fungsi kelayakan: total berat yang dipilih tidak lebih besar dari
kapasitas knapsack
◦ Fungsi obyektif: memaksimumkan total keuntungan (profit)
dari objek-objek yang dipilih

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 41


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2
2 5 15 3
3 10 50 5
4 5 10 2
Total bobot
Total keuntungan

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2
2 5 15 3 1 (1)
3 10 50 5
4 5 10 2
Total bobot 5
Total keuntungan 15

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2
2 5 15 3 1 (1)
3 10 50 5
4 5 10 2 1 (2)
Total bobot 10
Total keuntungan 25

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3)
2 5 15 3 1 (1)
3 10 50 5
4 5 10 2 1 (2)
Total bobot 16
Total keuntungan 37

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3)
2 5 15 3 1 (1)
3 10 50 5 0 (4)
4 5 10 2 1 (2)
Total bobot 16
Total keuntungan 37

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3)
2 5 15 3 1 (1)
3 10 50 5 0 (4) 1 (1)
4 5 10 2 1 (2)
Total bobot 16 10
Total keuntungan 37 50

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3)
2 5 15 3 1 (1) 1 (2)
3 10 50 5 0 (4) 1 (1)
4 5 10 2 1 (2)
Total bobot 16 15
Total keuntungan 37 65

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3) 0 (3)
2 5 15 3 1 (1) 1 (2)
3 10 50 5 0 (4) 1 (1)
4 5 10 2 1 (2) 0 (4)
Total bobot 16 15
Total keuntungan 37 65

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3) 0 (3)
2 5 15 3 1 (1) 1 (2)
3 10 50 5 0 (4) 1 (1) 1 (1)
4 5 10 2 1 (2) 0 (4)
Total bobot 16 15 10
Total keuntungan 37 65 50

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3) 0 (3)
2 5 15 3 1 (1) 1 (2) 1 (2)
3 10 50 5 0 (4) 1 (1) 1 (1)
4 5 10 2 1 (2) 0 (4)
Total bobot 16 15 15
Total keuntungan 37 65 65

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3) 0 (3) 0 (3)
2 5 15 3 1 (1) 1 (2) 1 (2)
3 10 50 5 0 (4) 1 (1) 1 (1)
4 5 10 2 1 (2) 0 (4) 0 (4)
Total bobot 16 15 15
Total keuntungan 37 65 65

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


0/1 knapsack: contoh implementasi greedy
Mari kita tinjau persoalan 0/1 knapsack dengan kapasitas knapsack
K = 16 dan 4 objek, dengan berat dan profit:
w1 = 6 ; p1 = 12 w3 = 10 ; p3 = 50
w2 = 5 ; p2 = 15 w4 = 5 ; p4 = 10

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 6 12 2 1 (3) 0 (3) 0 (3) 0
2 5 15 3 1 (1) 1 (2) 1 (2) 1
3 10 50 5 0 (4) 1 (1) 1 (1) 1
4 5 10 2 1 (2) 0 (4) 0 (4) 0
Total bobot 16 15 15 15
Total keuntungan 37 65 65 65

angka di dalam kurung menandakan urutan keputusan dibuat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 42


Algoritma greedy by profit
function knapsack01Profit (input C[1 . . . n] : himpunan_ objek,
K: integer)→himpunan_ solusi
{Menghasilkan solusi persoalan 0/1 Knapsack dengan pemilihan objek
berdasarkan profit (C.p[i], C sudah diurutkan berdasarkan profit).
Solusi dinyatakan sebagai vektor X = x[1], . . . , x[n]}

Deklarasi
i, tot : integer
x : himpunan_ solusi
Algoritma
for i ← 1 to n do
x[i] ← 0 {inisialisasi himpunan solusi}
endfor
i ← 1
tot ← 0
while (tot ≤ K) and (i ≤ n) do
if (tot + C.w[i] ≤ K) then
x[i]← 1
tot← tot + C.w[i]
endif
i← i + 1
endwhile
return x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 43
Kompleksitas greedy untuk 0/1 knapsack problem

◦ Pada setiap langkah, kita memilih barang keuntungan terbesar


yang masih bisa dipilih (berdasarkan kapasitas knapsack) di
antara semua barang yang belum dipilih
◦ Untuk mengoptimalkan proses pemilihan objek berdasarkan
keuntungan, maka objek perlu diurutkan berdasarkan besar
keuntungan secara menurun
◦ Jika waktu pengurutan tidak dihitung, maka kompleksitas
algoritma greedy by profit untuk masalah 0/1 knapsack adalah
O(n).

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 44


Akurasi greedy untuk 0/1 knapsack problem
Algoritma greedy tidak selalu berhasil menemukan solusi terbaik
untuk masalah 0/1 knapsack.
Ketidakakuratan greedy dapat dilihat pada contoh 0/1 knapsack
problem dengan kapasitas K = 100 dan 6 pilihan objek seperti
berikut:
Properti objek Greedy by Solusi
i wi pi wi /pi Profit Weight Density terbaik
1 100 40 0, 4 1 0 0 0
2 50 35 0, 7 0 0 1 1
3 45 18 0, 4 0 1 0 1
4 20 4 0, 2 0 1 1 0
5 10 10 1, 0 0 1 1 0
6 5 2 0, 4 0 1 1 0
Total bobot 100 80 85 95
Total keuntungan 40 34 51 83
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 45
Latihan (3)
Kelly diberikan sebuah tas dengan kapasitas maksimum 16 kg, serta
daftar beberapa barang sebagai berikut:
Barang Berat (kg) Keuntungan (£)
1 7 14
2 2 4
3 3 6
4 6 12
5 4 10
Kelly diberikan kesempatan untuk memasukkan barang-barang
tersebut ke dalam tas yang diberikan, selama barang-barang yang
dimasukkan tidak melebihi kapasitas tas tersebut. Barang mana
sajakah yang harus Kelly masukkan ke dalam tas tersebut untuk
mendapatkan keuntungan yang terbesar?
Selesaikan permasalahan tersebut dengan metode greedy (by
weight, by profit, dan by density).
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 46
Fractorial knapsack problem

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 47


Permasalahan fractorial knapsack
◦ Diberikan n buah objek dan sebuah knapsack dengan kapasitas
bobot K. Setiap objek i memiliki properti bobot (weight) wi dan
keuntungan (profit) pi .
◦ Jika setiap objek dapat dipecah (diambil sebagian saja), objek
mana sajakah yang harus dibawa agar keuntungan yang didapat
maksimum?
◦ Solusi permasalahan dinyatakan sebagai vektor n−tupel:

X = {x1 , x2 , . . . , xn }

dimana untuk setiap i = 1, . . . , n,

0 ≤ xi ≤ 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 48


Pemodelan matematis fractorial knapsack
problem

Maximasi

n
F = pi x i
i=1

dengan batasan

n
w i xi ≤ K
i=1

dimana untuk setiap i = 1, . . . , n,

0 ≤ xi ≤ 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 49


Fractorial knapsack problem dengan exhaustive
search

◦ Setiap elemen xi pada X = {x1 , . . . , xn } dapat bernilai


berapapun dari 0 hingga 1 (0 ≤ xi ≤ 1), sehingga terdapat tak
hingga banyaknya kemungkinan solusi.
◦ Karena enumerasi kemungkinan solusi tidak dapat dilakukan,
fractorial knapsack problem tidak dapat diselesaikan dengan
exhaustive search

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 50


Greedy untuk fractorial knapsack problem

Sama dengan untuk permasalahan 0/1 knapsack, terdapat beberapa


pendekatan greedy yang dapat digunakan untuk menyelesaikan
permasalahan fractorial knapsack, yaitu:
◦ Greedy by profit
→ “utamakan objek yang paling menguntungkan”
◦ Greedy by weight
→ “utamakan objek yang paling ringan”
◦ Greedy by density
→ “utamakan objek dengan keuntungan per unit berat terbesar”

pi
Keuntungan per unit berat (densitas) dari objek i = .
wi

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 51


Komponen-komponen greedy pada fractional
knapsack problem
◦ Himpunan kandidat: himpunan objek yang merepresentasikan
(bagian) objek yang belum dipilih
◦ Himpunan solusi: himpunan objek yang merepresentasikan
objek yang telah terpilih
◦ Fungsi solusi: total berat objek yang dipilih telah memenuhi
kapasitas knapsack
◦ Fungsi seleksi: memilih (bagian) objek dari himpunan kandidat
yang tersisa yang
▶ by profit: memiliki keuntungan terbesar
▶ by weight: memiliki berat terkecil
▶ by density: memiliki densitas terbesar
◦ Fungsi kelayakan: total berat yang dipilih tidak lebih besar dari
kapasitas knapsack
◦ Fungsi obyektif: memaksimumkan total keuntungan (profit)
dari objek-objek yang dipilih
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 52
Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4
2 15 24 1, 6
3 10 15 1, 5
Total bobot
Total keuntungan

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4
2 15 24 1, 6
3 10 15 1, 5 1 (1)
Total bobot 10
Total keuntungan 15

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4
2 15 24 1, 6 2/3 (2)
3 10 15 1, 5 1 (1)
Total bobot 20
Total keuntungan 31

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4 0 (3)
2 15 24 1, 6 2/3 (2)
3 10 15 1, 5 1 (1)
Total bobot 20
Total keuntungan 31

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4 0 (3) 1 (1)
2 15 24 1, 6 2/3 (2)
3 10 15 1, 5 1 (1)
Total bobot 20 18
Total keuntungan 31 25

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4 0 (3) 1 (1)
2 15 24 1, 6 2/3 (2) 2/15 (2)
3 10 15 1, 5 1 (1)
Total bobot 20 20
Total keuntungan 31 28, 2

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4 0 (3) 1 (1)
2 15 24 1, 6 2/3 (2) 2/15 (2)
3 10 15 1, 5 1 (1) 0 (3)
Total bobot 20 20
Total keuntungan 31 28, 2

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4 0 (3) 1 (1)
2 15 24 1, 6 2/3 (2) 2/15 (2) 1 (1)
3 10 15 1, 5 1 (1) 0 (3)
Total bobot 20 20 15
Total keuntungan 31 28, 2 24

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4 0 (3) 1 (1)
2 15 24 1, 6 2/3 (2) 2/15 (2) 1 (1)
3 10 15 1, 5 1 (1) 0 (3) 1/2 (2)
Total bobot 20 20 20
Total keuntungan 31 28, 2 31, 5

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4 0 (3) 1 (1) 0 (3)
2 15 24 1, 6 2/3 (2) 2/15 (2) 1 (1)
3 10 15 1, 5 1 (1) 0 (3) 1/2 (2)
Total bobot 20 20 20
Total keuntungan 31 28, 2 31, 5

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Contoh fractional knapsack problem
Mari kita tinjau persoalan fractional knapsack dengan kapasitas
knapsack K = 20 dan 3 objek, dengan berat dan profit:
w1 = 18 ; p1 = 25
w2 = 15 ; p2 = 24
w3 = 10 ; p3 = 15

Properti objek Greedy by Solusi


i wi pi pi /wi weight profit density terbaik
1 18 25 1, 4 0 (3) 1 (1) 0 (3) 0
2 15 24 1, 6 2/3 (2) 2/15 (2) 1 (1) 1
3 10 15 1, 5 1 (1) 0 (3) 1/2 (2) 1/2
Total bobot 20 20 20 20
Total keuntungan 31 28, 2 31, 5 31, 5

angka di dalam kurung menandakan urutan pengambilan keputusan

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 53


Fractional knapsack: algoritma greedy by density
function fKnapsackDens (input C[1 . . . n] : himpunan_ objek,
K: real)→himpunan_ solusi
{Menghasilkan solusi persoalan Fractional Knapsack dengan greedy by
density (C.p[i]/C.w[i], C sudah diurutkan berdasarkan density).}
Deklarasi
i, tot : integer
x : himpunan_ solusi
Algoritma
for i ← 1 to n do
x[i] ← 0
endfor
i ← 1
tot ← 0
while i ≤ n do
if (tot + C.w[i] ≤ K) then
x[i]← 1
tot← tot + C.w[i]
else
x[i]← (K - tot) / C.w[i]
i← n
endif
i← i + 1
endwhile
return x
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 54
Fractional knapsack problem: komplesitas greedy

◦ Pada setiap langkah, kita memilih (bagian) barang dengan


densitas terbesar yang masih bisa dipilih, berdasarkan kapasitas
knapsack, di antara semua barang yang belum dipilih
◦ Untuk mengoptimalkan proses pemilihan objek berdasarkan
densitas, maka objek perlu diurutkan berdasarkan besar
densitas secara menurun
◦ Jika waktu pengurutan tidak dihitung, maka kompleksitas
algoritma greedy by density untuk masalah fractional knapsack
adalah O(n).

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 55


Fractional knapsack problem: akurasi greedy

Algoritma greedy untuk persoalan fractional knapsack dengan


strategi pemilihan objek berdasarkan keuntungan per satuan berat
(densitas) akan selalu memberikan solusi yang terbaik. Hal ini
dinyatakan dalam Teorema berikut:

Teorema:
Jika p1 /w1 ≥ p2 /w2 ≥ . . . ≥ pn /wn , maka algoritma greedy dengan
strategi pemilihan objek berdasarkan pi /wi terbesar menghasilkan
solusi yang optimum.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 56


Latihan (4)
Kelly diberikan sebuah tas dengan kapasitas maksimum 16 kg, serta
daftar beberapa barang sebagai berikut:

Barang Berat (kg) Keuntungan (£)


1 7 14
2 2 4
3 3 6
4 6 12
5 4 10

Kelly diberikan kesempatan untuk memasukkan barang-barang


tersebut ke dalam tas yang diberikan, selama barang-barang yang
dimasukkan tidak melebihi kapasitas tas tersebut. Jika setiap barang
dapat dipecah, barang mana sajakah yang harus Kelly masukkan ke
dalam tas tersebut untuk mendapatkan keuntungan yang terbesar?
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 57
Job scheduling with deadlines

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 58


Permasalahan penjadwalan kerja dengan tenggat
waktu

◦ Terdapat n buah pekerjaan yang akan dikerjakan oleh sebuah


mesin
◦ Mesin dapat mengerjakan setiap pekerjaan dalam satu satuan
waktu
◦ Setiap perkerjaan i mempunyai properti tenggat waktu di ≥ 0
(satuan waktu) dan keuntungan pi
◦ Keuntungan dari pekerjaan i akan diperoleh jika dan hanya jika i
selesai dikerjakan tanpa melebihi tenggat waktunya
◦ Pekerjaan mana saja yang harus dikerjakan oleh mesin agar
didapat keuntungan yang maksimum?

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 59


Pemodelan matematis job scheduling with
deadlines

Maximasi ∑
F = pi
i∈J

dimana J = himpunan pekerjaan yang terselesaikan sebelum tenggat


waktunya

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 60


Contoh job scheduling with deadlines
Misalkan mesin A dapat memilih 4 pekerjaan dengan tenggat dan
keuntungan masing-masing:
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 61


Contoh job scheduling with deadlines
Misalkan mesin A dapat memilih 4 pekerjaan dengan tenggat dan
keuntungan masing-masing:
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Jika dikerjakan dengan exhaustive search, terdapat

P (4, 0) + P (4, 1) + P (4, 2) + P (4, 3) + P (4, 4)

kemungkinan solusi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 61


Contoh job scheduling with deadlines
Misalkan mesin A dapat memilih 4 pekerjaan dengan tenggat dan
keuntungan masing-masing:
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Jika dikerjakan dengan exhaustive search, terdapat

P (4, 0) + P (4, 1) + P (4, 2) + P (4, 3) + P (4, 4)

kemungkinan solusi.

Untuk contoh di atas, tenggat waktu terlama adalah 2 (satuan waktu)


sehingga mesin dapat memilih paling banyak dua pekerjaan:

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 61


Contoh job scheduling with deadlines
Misalkan mesin A dapat memilih 4 pekerjaan dengan tenggat dan
keuntungan masing-masing:
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Jika dikerjakan dengan exhaustive search, terdapat

P (4, 0) + P (4, 1) + P (4, 2) + P (4, 3) + P (4, 4)

kemungkinan solusi.

Untuk contoh di atas, tenggat waktu terlama adalah 2 (satuan waktu)


sehingga mesin dapat memilih paling banyak dua pekerjaan:terdapat
P (4, 0) + P (4, 1) + P (4, 2) kemungkinan solusi.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 61


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} {2, 1}
{1} {2, 3}
{2} {2, 4}
{3} {3, 1}
{4} {3, 2}
{1, 2} {3, 4}
{1, 3} {4, 1}
{1, 4} {4, 2}
{4, 3}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1}
{1} 50 layak {2, 3}
{2} 10 layak {2, 4}
{3} 15 layak {3, 1}
{4} 30 layak {3, 2}
{1, 2} {3, 4}
{1, 3} {4, 1}
{1, 4} {4, 2}
{4, 3}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1}
{1} 50 layak {2, 3}
{2} 10 layak {2, 4}
{3} 15 layak {3, 1}
{4} 30 layak {3, 2}
{1, 2} tidak layak {3, 4}
{1, 3} {4, 1}
{1, 4} {4, 2}
{4, 3}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1}
{1} 50 layak {2, 3}
{2} 10 layak {2, 4}
{3} 15 layak {3, 1}
{4} 30 layak {3, 2}
{1, 2} - tidak layak {3, 4}
{1, 3} {4, 1}
{1, 4} {4, 2}
{4, 3}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1}
{1} 50 layak {2, 3}
{2} 10 layak {2, 4}
{3} 15 layak {3, 1}
{4} 30 layak {3, 2}
{1, 2} - tidak layak {3, 4}
{1, 3} layak {4, 1}
{1, 4} {4, 2}
{4, 3}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1}
{1} 50 layak {2, 3}
{2} 10 layak {2, 4}
{3} 15 layak {3, 1}
{4} 30 layak {3, 2}
{1, 2} - tidak layak {3, 4}
{1, 3} 65 layak {4, 1}
{1, 4} {4, 2}
{4, 3}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1}
{1} 50 layak {2, 3}
{2} 10 layak {2, 4}
{3} 15 layak {3, 1}
{4} 30 layak {3, 2}
{1, 2} - tidak layak {3, 4}
{1, 3} 65 layak {4, 1}
{1, 4} tidak layak {4, 2}
{4, 3}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1}
{1} 50 layak {2, 3}
{2} 10 layak {2, 4}
{3} 15 layak {3, 1}
{4} 30 layak {3, 2}
{1, 2} - tidak layak {3, 4}
{1, 3} 65 layak {4, 1}
{1, 4} - tidak layak {4, 2}
{4, 3}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1} 60 layak
{1} 50 layak {2, 3} 25 layak
{2} 10 layak {2, 4} - tidak layak
{3} 15 layak {3, 1} 65 layak
{4} 30 layak {3, 2} - tidak layak
{1, 2} - tidak layak {3, 4} - tidak layak
{1, 3} 65 layak {4, 1} 80 layak
{1, 4} - tidak layak {4, 2} - tidak layak
{4, 3} 45 layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan exhaustive
search
p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Urutan Profit Kelayakan Urutan Profit Kelayakan
{} 0 layak {2, 1} 60 layak
{1} 50 layak {2, 3} 25 layak
{2} 10 layak {2, 4} - tidak layak
{3} 15 layak {3, 1} 65 layak
{4} 30 layak {3, 2} - tidak layak
{1, 2} - tidak layak {3, 4} - tidak layak
{1, 3} 65 layak {4, 1} 80 layak
{1, 4} - tidak layak {4, 2} - tidak layak
{4, 3} 45 layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 62


Job scheduling with deadlines dengan Greedy

Pilih pekerjaan dengan keuntungan terbesar terlebih dahulu


dan tempatkan mendekati tenggat waktunya

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 63


Komponen-komponen greedy pada job
scheduling with deadlines

◦ Himpunan kandidat: himpunan pekerjaan dan himpunan slot


yang dapat dipilih
◦ Fungsi solusi: tidak ada pekerjaan yang layak dipilih
◦ Fungsi seleksi: memilih pekerjaan dengan keuntungan tertinggi
dan memilih slot yang mendekati tengat waktu pekerjaan tersebut
◦ Fungsi kelayakan: pekerjaan yang dipilih dapat ditempatkan
pada slot waktu sebelum masa tenggatnya habis
◦ Fungsi obyektif: memaksimumkan total keuntungan (profit)
dari pekerjaan-pekerjaan yang dipilih

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 64


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3 tidak layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3 - 80 tidak layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3 - 80 tidak layak
4 2 - 80 tidak layak

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: contoh
implementasi greedy

p1 = 50 ; d1 = 2 p3 = 15 ; d3 = 2
p2 = 10 ; d2 = 1 p4 = 30 ; d4 = 1
Langkah Pekerjaan Slot Keuntungan Kelayakan
0 - - 0 -
1 1 1−2 50 layak
2 4 0−1 80 layak
3 3 - 80 tidak layak
4 2 - 80 tidak layak
Solusi: {4, 1}

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 65


Job scheduling with deadlines: algoritma greedy

function jobSched (input C[1 . . . n] : himp_ pekerjaan)→himp_ solusi


{Menghasilkan solusi job scheduling w. deadlines dengan greedy.
C sudah diurutkan berdasarkan profit, C.d[i]≤n untuk setiap i.}
Deklarasi
i, j : integer
x : himpunan_ solusi
Algoritma
for i ← 1 to n do
x[i] ← 0
endfor
i ← 1
while i ≤ n do
for j ← C.d[i] to 1 do
if x[j] = 0 then
x[j]← i
i← i + 1
endwhile
return x

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 66


Job scheduling with deadlines: kompleksitas
greedy

◦ Pada setiap langkah, kita memilih pekerjaan dengan keuntungan


terbesar yang belum dipilih dan memeriksa apakah ada slot
waktu yang tersedia untuk pekerjaan tersebut
◦ Untuk mengoptimalkan proses pemilihan pekerjaan, maka
pekerjaan perlu diurutkan berdasarkan keuntungan secara
menurun
◦ Jika waktu pengurutan tidak dihitung, maka kompleksitas
algoritma greedy untuk masalah job scheduling with deadlines
adalah O(n2 ).

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 67


Latihan (5)
Misalkan pada satu waktu diberikan list tawaran pekerjaan sebagai
berikut:

Pekerjaan Profit Tenggat waktu (jam)


1 50 2
2 20 1
3 30 2
4 10 3
5 70 2
6 50 1
Jika setiap pekerjaan dapat dikerjakan dalam satu jam, pekerjaan
mana sajakah yang harus diambil untuk mendapatkan keuntungan
yang maksimum?

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 68


Pemampatan data

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 69


Pemampatan data

Proses mengurangi ruang yang dibutuhkan penyimpanan suatu data.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 70


Pemampatan data

Proses mengurangi ruang yang dibutuhkan penyimpanan suatu data.

Contoh:
Sebuah berkas yang berisi 100.000 karakter dengan frekuensi
kemunculan alfabet di dalam data sebagai berikut:
Alfabet a b c d e f
Frekuensi 45% 13% 12% 16% 9% 5%

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 70


Pemampatan data

Proses mengurangi ruang yang dibutuhkan penyimpanan suatu data.

Contoh:
Sebuah berkas yang berisi 100.000 karakter dengan frekuensi
kemunculan alfabet di dalam data sebagai berikut:
Alfabet a b c d e f
Frekuensi 45% 13% 12% 16% 9% 5%

Jika menggunakan 3-bit untuk mengkodekan setiap karakter:


Alfabet a b c d e f
Kode 000 001 010 011 100 111
Maka data tersebut akan menghasilkan 300.000 bit.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 70


Pemampatan data dengan greedy

Karakter dengan frekuensi terbanyak dikodekan dengan


panjang kode yang kecil.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 71


Algoritma Huffman
Algoritma Huffman:
Misalkan terdapat n buah alfabet dalam suatu data
1. Inisialisasi n pohon yang masing-masing berisi satu simpul dan
beri simpul-simpul tersebut ID berupa alfabet yang diberikan, dan
bobot berupa frekuensi kemunculan alfabet tersebut dalam data
yang diberikan.
2. Ulangi langkah berikut hingga terbentuk satu pohon saja:
▶ Cari dua pohon dengan bobot akar yang terkecil
▶ Bentuk pohon baru dengan menambahkan satu simpul dengan
bobot yang didapat dari penambahan akar dari dua pohon yang
dipilih dan sambungkan simpul tersebut dengan kedua akar dari
pohon yang dipilih sedemikian sehingga simpul baru tersebut
menjadi akar dari pohon yang baru

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 72


Contoh implementasi algoritma huffman

a 0,45

b 0,13

c 0,12

d 0,16

e 0,09

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

c 0,12

d 0,16

e 0,09

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

c 0,12

d 0,16

e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

c 0,12

d 0,16

e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

0,25

c 0,12

d 0,16

e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

0,25

c 0,12

d 0,16

e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

0,25

c 0,12

d 0,16

0,30
e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

0,25

c 0,12

d 0,16

0,30
e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

0,25

c 0,12
0,55

d 0,16

0,30
e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13

0,25

c 0,12
0,55

d 0,16

0,30
e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13
1,00
0,25

c 0,12
0,55

d 0,16

0,30
e 0,09

0,14

f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13
1,00
0,25

c 0,12
0,55

d 0,16

0,30
e 0,09 0
0,14

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45

b 0,13 0
1,00
0,25

c 0,12 1
0,55

d 0,16

0,30
e 0,09 0
0,14

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45
0

b 0,13 0
1,00
0,25
0
c 0,12 1 1
0,55

d 0,16
0
1
0,30
e 0,09 0
0,14
1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a
b
b 0,13 0 c
1,00
0,25 d
0 e
c 0,12 1 1
0,55
f

d 0,16
0
1
0,30
e 0,09 0
0,14
1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a 0
b
b 0,13 0 c
1,00
0,25 d
0 e
c 0,12 1 1
0,55
f

d 0,16
0
1
0,30
e 0,09 0
0,14
1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a 0
b 100
b 0,13 0 c
1,00
0,25 d
0 e
c 0,12 1 1
0,55
f

d 0,16
0
1
0,30
e 0,09 0
0,14
1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a 0
b 100
b 0,13 0 c 101
1,00
0,25 d
0 e
c 0,12 1 1
0,55
f

d 0,16
0
1
0,30
e 0,09 0
0,14
1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a 0
b 100
b 0,13 0 c 101
1,00
0,25 d 110
0 e
c 0,12 1 1
0,55
f

d 0,16
0
1
0,30
e 0,09 0
0,14
1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a 0
b 100
b 0,13 0 c 101
1,00
0,25 d 110
0 e 1110
c 0,12 1 1
0,55
f

d 0,16
0
1
0,30
e 0,09 0
0,14 1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a 0
b 100
b 0,13 0 c 101
1,00
0,25 d 110
0 e 1110
c 0,12 1 1
0,55
f 1111

d 0,16
0
1
0,30
e 0,09 0
0,14 1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a 0
b 100
b 0,13 0 c 101
1,00
0,25 d 110
0 e 1110
c 0,12 1 1
0,55
f 1111

d 0,16
0
1 ‘ada’
0,30 → ‘01100’
e 0,09 0
0,14
1

f 0,05 1

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Contoh implementasi algoritma huffman

a 0,45 Alf. Kode


0 a 0
b 100
b 0,13 0 c 101
1,00
0,25 d 110
0 e 1110
c 0,12 1 1
0,55
f 1111

d 0,16
0
1 ‘ada’
0,30 → ‘01100’
e 0,09 0
0,14
1 ‘10001010’
1
→ ‘baca’
f 0,05

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 73


Keefektifan algoritma Huffman
Pada contoh sebelumnya, data yang berisi 100.000 karakter akan
menghasilkan kode dengan panjang 300.000 bit.

Dengan algoritma Huffman,


Alf. a b c d e f
Frekuensi 45% 13% 12% 16% 9% 5%
Kode 0 100 101 110 1110 1111
data yang berisi 100.000 karakter akan menghasilkan kode dengan
panjang
100.000 × ((0, 45 × 1) + (0, 13 × 3) + (0, 12 × 3) + (0, 16 × 3) + (0, 09 × 4) + (0, 05 × 4))

224.000 bit. Yang artinya, algoritma Huffman memampatkan data


sebesar (300.000 − 224.000)/300.000 = 25, 3%.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 74


Kompleksitas algoritma Huffman

◦ Pada setiap langkah, algoritma Huffman mencari dua akar


dengan nilai terkecil dan membentuk pohon baru dengan
menggabungkan dua akar yang ditemukan
◦ Untuk n alfabet, pencarian nilai terkecil dilakukan 2 ∗ (n − 1) kali
◦ Pencarian nilai terkecil mempunyai kompleksitas O(log n)
◦ Kompleksitas algoritma Huffman adalah O(n log n)

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 75


Latihan (6)

Diberikan suatu data yang berisi karakter A, B, C, D, dan _ dengan


frekuensi kemunculan sebagai berikut:
Alfabet A B C D _
Frekuensi 35% 15% 20% (14)% (16)%
a) Konstruksi kode Huffman untuk data tersebut (tunjukkan pohon
yang terbentuk)
b) Tulislah kode untuk ‘ABACABAD’ dengan menggunakan kode
Huffman yang didapat

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 76


Latihan (7)
Diketahui kota A, B, C, D, dan E dengan jarak antar kota sbb:

A
3
5
7 4
5
E B
3
2
6 4

D C
4

Seorang pedagang yang berada di kota A ingin mengunjungi seluruh


kota tersebut, dimana kota B, C, D, dan E tepat dikunjungi sekali
sebelum ia kembali ke kota A. Tentukan rute yang harus pedagang
tersebut lalui untuk mendapatkan jarak yang minimum, dengan
menggunakan teknik greedy.

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 77


Latihan (8)
Pada suatu provinsi, akan dibangun jalan tol antar kota untuk
menghubungkan lima kota: A, B, C, D, dan E. Besaran estimasi biaya
yang diperlukan untuk jalan tol antar kota adalah sbb:
A
3
5
7 4
5
E B
3
2
6 4

D C
4

Untuk meminimumkan biaya yang dikeluarkan, gubernur


memutuskan untuk hanya membangun empat jalan tol, namun dapat
menghubungkan kelima kota tersebut. Jalur jalan tol mana sajakah
yang perlu dibangun agar total estimasi biaya yang didapatkan
minimum? Gunakan teknik greedy untuk menyelesaikan masalah
tersebut.
CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 78
Referensi

1. T. H. Cormen, C. E. Leiserson, R. L. Riverst, C. Stein.


Introduction to Algorithms –3rd Edition, MIT Press, 2009.
2. A. Levitin. Introduction to The Design and Analysis of Algorithms
–3rd Edition, Pearson, 2011.
3. R. Neapolitan, K. Naimipour. Foundations of Algorithms –5th
Edition, Jones and Bartlett Learning, 2014.
4. Ir. Rinaldi Munir, M.T. Diktat Strategi Algoritmik IF2251.
Departemen Teknik Informatika, Institut Teknologi Bandung
5. Ian Parberry. Lecture notes on Algorithm Analysis. Department of
Computer Sciences, University of North Texas, 2001

CII2K3-Strategi Algoritma / PRODI S1 INFORMATIKA 79


THANK YOU

Anda mungkin juga menyukai