METODE GREEDY. Secara matematis, masalah knapsack tersebut dapat ditulis sebagai berikut :

dokumen-dokumen yang mirip
Algoritma Greedy (lanjutan)

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

Design and Analysis Algorithm

Pertemuan ke-1 Teori Dasar Graf

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

Algoritma Greedy (lanjutan)

Pendahuluan. Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

PERBANDINGAN PENYELESAIAN KNAPSACK PROBLEM SECARA MATEMATIKA, KRITERIA GREEDY DAN ALGORITMA GREEDY

STRATEGI DIVIDE AND CONQUER

Logika dan Algoritma Yuni Dwi Astuti, ST 2

UNIVERSITAS GUNADARMA

Algoritma Brute Force (lanjutan)

IF5110 Teori Komputasi. Teori Kompleksitas. (Bagian 1) Oleh: Rinaldi Munir. Program Studi Magister Informatika STEI-ITB

Pohon (Tree) Contoh :

Aplikasi Algoritma Greedy pada Pemilihan Jenis Olahraga Ringan

Penerapan Algoritma Greedy dalam Optimasi Keuntungan Perusahaan Pengiriman Barang

IMPLEMENTASI ALGORITMA GREEDY UNTUK MENYELESAIKAN MASALAH KNAPSACK PROBLEM

Soal dan Jawaban Materi Graf, Pohon, dan Kompleksitas Algoritma

METODE DEVIDE AND CONQUER (DANDC)

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

Review Teori P dan NP

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

Penentuan Lokasi Pemasaran Produk dengan Media Periklanan Menggunakan Algoritma Greedy

BAB III ANALISIS ALGORITMA

MEMBANDINGKAN KEMANGKUSAN ALGORITMA PRIM DAN ALGORITMA KRUSKAL DALAM PEMECAHAN MASALAH POHON MERENTANG MINIMUM

Algoritma Brute Force (lanjutan)

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

ALGORITMA GREEDY : MINIMUM SPANNING TREE. Perbandingan Kruskal dan Prim

Lecture Note Logika & Algoritma. Jurusan Manajemen Informatika Fakultas Ilmu Komputer & Teknologi Informasi Universitas Gunadarma

Penerapan Algoritma Runut-balik pada Permainan Math Maze

PERBANDINGAN PENYELESAIAN KNAPSACK PROBLEM SECARA MATEMATIKA, KRITERIA GREEDY DAN ALGORITMAGREEDY

PENERAPAN METODE GREEDY KNAPSACK DALAM MENENTUKAN KOMPOSISI BUAH PADA MASALAH KERANJANG. Abstract

Teori Dasar Graf (Lanjutan)

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Permodelan Pohon Merentang Minimum Dengan Menggunakan Algoritma Prim dan Algoritma Kruskal

RANCANG BANGUN APLIKASI MINIMUM SPANNING TREE (MST) MENGGUNAKAN ALGORITMA KRUSKAL

Algoritma Pemrograman

Algoritma Greedy (Bagian 2) IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

Algoritma Pemrograman

Studi Algoritma Optimasi dalam Graf Berbobot

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

BAB II LANDASAN TEORI

BAB I PENDAHULUAN. Knapsack adalah suatu permasalahan dalam menentukan pemilihan objek

BAB 6 METODE PENGUJIAN

Algoritma Runut-balik (Backtracking) Bahan Kuliah IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

Penerapan Algoritma Greedy dalam Permainan MarketGlory

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

DEFINISI. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. pohon pohon bukan pohon bukan pohon 2

Design and Analysis of Algorithms CNH2G3- Week 8 Greedy Algorithm

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Implementasi Algoritma Greedy pada Permainan Ludo

2.4. Struktur Branching

Algoritma Brute Force (Bagian 2) Oleh: Rinaldi Munir Bahan Kuliah IF2251 Strategi Algoritmik

Decrease and Conquer

CCH1A4 / Dasar Algoritma & Pemrogramanan

Penggunaan Graf dalam Pemodelan Matematis Permainan Delapan Jari

Algoritma dan Pemrograman Searching/Pencarian

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

White Box Testing Merupakan metode perancangan test case yang menggunakan struktur kontrol dari perancangan prosedural untuk mendapatkan test case.

PENGUJIAN PERANGKAT LUNAK

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Gambar 6. Graf lengkap K n

Algoritma Brute Force

Aplikasi Algoritma Greedy pada Optimasi Pelaksanaan Misi dalam Permainan Assassins Creed : Revelations

BAB VI SEARCHING (PENCARIAN)

Konstruksi Dasar Algoritma

Kompleksitas Algoritma (1)

PERBANDINGAN KOMPLEKSITAS PENERAPAN ALGORITMA GREEDY UNTUK BEBERAPA MASALAH

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Penggunaan Algoritma Greedy dalam Optimasi Masalah Perkebunan

Searching [pencarian] Algoritma Pemrograman

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

PENERAPAN ALGORITMA GREEDY PADA PERMASALAHAN KNAPSACK UNTUK OPTIMASI PENGANGKUTAN PETI KEMAS

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Kompleksitas Algoritma

BAB 2 LANDASAN TEORI

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S.

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Algoritma HitungGajiKaryawan Deklarasi NIK,Nama,Jabatan : String Gaji, Tunj, Pajak, Gaber : Real

Algoritma Divide and Conquer (Bagian 1)

BAB VII ALGORITMA DIVIDE AND CONQUER

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

Optimisasi Penjadwalan Proses Pada Central Processing Unit Dengan Menggunakan Algoritma Greedy

TUGAS RESUME MATERI KULIAH ALGORITMA DAN STRUKTUR DATA STRATEGI ALGORITMA : H

STRUKTUR DASAR ALGORITMA

PENGUJIAN PERANGKAT LUNAK

BAB I PENDAHULUAN. pada sektor masyarakat meluas dengan cepat[4]. menentukan tingkat kegiatan-kegiatan yang akan dilakukan, dimana masingmasing

Algoritma Runut-balik (Backtracking) Bagian 1

Algoritma Pemrograman

OPTIMASI ALGORITMA POHON MERENTANG MINIMUM KRUSKAL

BAB II LANDASAN TEORI

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Kompleksitas Algoritma

Algoritma Runut-balik (Backtracking)

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

Transkripsi:

METODE GREEDY MASALAH KNAPSACK Kita diberikan sebuah knapsack (ransel) yang dapat menampung berat maksimum M dan sehimpunan benda A = {a 0,a 1,...,a n-1 } yang berbobot W = {w 0,w 1,...,w n-1 }. Setiap benda tersebut diberikan nilai profit yang dinotasikan dengan P = {p 0,p 1,...,p n-1 }. Jika kita diperbolehkan memasukkan z i bagian dari benda a i yang ada ke dalam knapsack dimana 0 z i 1, maka kita dapatkan profit sebesar z i p i untuk benda a i tersebut. Yang dimaksud dengan masalah knapsack adalah : Bagaimana kita memilih atau menentukan z i untuk masing-masing benda a i dari keadaan di atas dengan tujuan mendapatkan total profit yang maksimal, dan dengan kendala bahwa total bobot dari benda-benda yang dimasukkan ke dalam knapsack tidak melebihi M. Secara matematis, masalah knapsack tersebut dapat ditulis sebagai berikut : n-1 maksimumkan Q = z ipi i=0 dengan kendala n 1 i= 0 zi w i W dan 0 z i 1, p i 0, w i 0, 0 i n-1 Sebuah solusi yang optimal adalah himpunan Z = {z 0,z 1,...,z n-1 } yang memaksimalkan nilai Q dan memenuhi kendala-kendala yang ada. Contoh : Kita diberikan sebuah knapsack (ransel) yang dapat menampung berat maksimum 15 Kg dan sehimpunan benda A = {a 0, a 1, a 2, a 3 } yang berbobot (dalam Kg) W = {5,9,2,4}. Setiap benda tersebut diberikan nilai profit P = {100, 135, 26, 20}. Jika kita diperbolehkan memasukkan z i

bagian dari benda a i yang ada ke dalam knapsack dimana 0 z i 1, maka tentukanlah Z = {z 0,z 1,z 2,z 3 } agar diperoleh total profit yang maksimal! Algoritma Sekuensial Knapsack Metode Greedy Salah satu cara untuk menyelesaikan masalah knapsack secara sekuensial adalah dengan pemakaian metode Greedy. Procedure tersebut disebut procedure GREEDY_KNAPSACK. Sebelum procedure tersebut digunakan, benda-benda harus diurutkan rasio p i /w i -nya tidak menaik. Dengan kata lain : p 0 / w 0 p 1 / w 1... p n-1 / w n-1 Adapun procedure GREEDY_KNAPSACK adalah sebagai berikut : procedure GREEDY_KNAPSACK(P,W,M,Z,n) real P(0:n-1),W(0:n-1),Z(0:n-1),cu; {n = banyak benda} integer i,n; Z 0 { Z(0), Z(1),..., Z(n-1) = 0} cu M for i 0 to n-1 do if W(i) cu then exit endif Z(i) 1 cu cu - W(i) repeat if i n-1 then Z(i) cu/w(i) endif end GREEDY_KNAPSACK Jika algoritma ini digunakan untuk menyelesaikan masalah seperti pada contoh yang lalu, dimana n = 4; M = 15; W = { 5,9,2,4 }; P = { 100,135,26,20 }, maka akan terlihat hasil tracenya sebagai berikut : Z 0 cu 15 i = 0 karena W(0) cu yaitu : 5 15 berarti : Z(0) 1 Logika dan Algoritma Yuni Dwi Astuti, ST 2

cu 15-5 = 10 i = 1 karena W(1) cu yaitu : 9 10 berarti : Z(1) 1 cu 10-9 = 1 i = 2 karena W(2) cu yaitu : 2 1 berarti : keluar dari loop (exit) Karena 2 3 maka Z(2) cu/w(2) = 1/2 = 0,5 Jadi optimisasi masalah knapsack diperoleh bila Z = { 1; 1; 0,5; 0 } Sehingga Q = 1 x 100 + 1 x 135 + 0,5 x 26 + 0 x 20 = 100 + 135 + 13 + 0 = 248 Analisis : Kompleksitas waktu dari algoritma Greedy_Knapsack ini adalah O(n). Tetapi jika data yang digunakan belum terurut rasio p i /w i -nya tidak menaik, maka diperlukan kompleksitas waktu sebesar O(n log n) untuk mengurutkan sebelumnya. Sehingga untuk masalah optimisasi knapsack, kompleksitas waktu dari algoritma ini akan lebih besar pada waktu proses pengurutannya. Latihan : Diketahui 3 buah benda dan sebuah knapsack dengan kapasitas maksimum 20. Berat dan profit dari masing-masing benda tersebut adalah (18, 15, 10) dan (25, 24, 15). Tentukanlah Z agar diperoleh total profit yang maksimal! Jawab : Pertama, kita periksa apakah rasio p i /w i -nya tidak menaik. p 0 /w 0 = 25/18 p 1 /w 1 = 24/15 p 2 /w 2 = 15/10 Logika dan Algoritma Yuni Dwi Astuti, ST 3

Terlihat bahwa syarat rasio p i /w i -nya tidak menaik belum terpenuhi. Jadi susunan (urutan) -nya untuk sementara kita ubah, agar syarat rasio p i /w i -nya tidak menaik terpenuhi dan kita dapat menyelesaikan masalah tersebut dengan procedure GREEDY_KNAPSACK. Untuk itu, kita ubah sementara urutan benda-bendanya (setelah diperoleh jawaban sementara, kita kembalikan urutan ke susunan semula). Perubahan yang kita lakukan adalah sebagai berikut : urutan ke- (yang lama) urutan ke- (yang baru) 0 2 1 0 2 1 sehingga syaratnya terpenuhi ; 24/15 15/10 25/18 rasio p i /w i -nya tidak menaik Sekarang kita sudah dapat menggunakan procedure GREEDY_KNAPSACK untuk menyelesaikan masalah tersebut. Adapun hasil trace-nya adalah sebagai berikut : Z 0 cu 20 i = 0 karena W(0) cu yaitu : 15 20 berarti : Z(0) 1 cu 20-15 = 5 i = 1 karena W(2) cu yaitu : 10 5 berarti : keluar dari loop (exit) Karena 1 2 maka Z(1) cu/w(1) = 5/10 = 0,5 Jadi diperoleh : Z(0) = 1 ; Z(1) = 0,5 ; Z(2) = 0 Sekarang urutannya kita kembalikan seperti semula, yakni : Logika dan Algoritma Yuni Dwi Astuti, ST 4

urutan ke- (yang saat ini) urutan ke- (yang semula) Z(i) 2 0 0 0 1 1 1 2 0,5 Jadi optimisasi masalah knapsack diperoleh bila Z = { 0; 1; 0,5 } Sehingga Q = 0 x 25 + 1 x 24 + 0,5 x 15 = 0 + 24 + 7,5 = 31,5 MASALAH POHON RENTANGAN MINIMAL Permasalahan umum dari pohon rentangan minimal adalah mencari minimum biaya (cost) pohon rentangan dari setiap ruas suatu graf yang membentuk pohon. Setiap graf tidak dapat ditentukan pohon rentangan minimalnya. Adapun graf yang dapat kita tentukan pohon rentangan minimalnya adalah graf yang memenuhi ketiga syarat berikut : 1. graf tersebut harus terhubung 2. setiap ruas dari graf tersebut harus mempunyai nilai atau bobot (graf berlabel) 3. graf teresbut tidak berarah Algoritma yang dapat digunakan untuk menyelesaikan masalah pohon rentangan minimal cukup banyak. Dalam pembahasan ini, algoritma yang akan dipakai adalah algoritma PRIM S. Berikut ini akan disajikan langkah-langkah penyelesaian masalah pohon rentangan minimal dengan menggunakan algoritma PRIM S. PROCEDURE PRIM(E,COST,n,T,mincost) REAL COST(n,n),mincost INTEGER NEAR(n),n,i,j,k,l,T(1:n-1,2) (k,l) ruas dengan biaya atau bobot yang minimum mincost COST(k,l) Logika dan Algoritma Yuni Dwi Astuti, ST 5

(T(1,1),T(1,2)) (k,l) FOR i 1 TO n DO IF COST (i,l) < COST(i,k) THEN NEAR (i) l ELSE NEAR(i) k ENDIF REPEAT i NEAR(k) NEAR(l) 0 FOR i 2 TO n-1 DO Pilih j (sebuah index) sedemikian sehingga NEAR(j) 0 AND COST(j,NEAR(j)) adalah minimum (T(i,1),T(i,2)) (j,near(j)) mincost mincost + COST(j,NEAR(j)) NEAR(j) 0 FOR k 1 TO n DO IF NEAR(k) 0 AND COST(k,NEAR(k)) > COST(k,j) THEN NEAR(k) j ENDIF REPEAT k REPEAT i IF mincost ~ THEN PRINT bukan pohon rentangan ENDIF END PRIM Contoh : Perhatikan graf berikut ini : Tentukanlah nilai pohon rentangan minimalnya, serta pohon yang membentuk pohon rentangan minimal tersebut. Logika dan Algoritma Yuni Dwi Astuti, ST 6

Penyelesaian : Dengan menggunakan algoritma PRIM S, prosesnya adalah sebagai berikut : (k,l) (1,2) mincost COST(1,2) = 10 (T(1,1),T(1,2)) (1,2) i=1 COST (1,2) < COST(1,1)? 10 < ~ TRUE : NEAR (1) 2 i=2 COST (2,2) < COST(2,1)? ~ < 10 FALSE : NEAR (2) 1 i=3 COST (3,2) < COST(3,1)? 50 < ~ TRUE : NEAR (3) 2 i=4 COST (4,2) < COST(4,1)? ~ < 30 FALSE : NEAR (4) 1 i=5 COST (5,2) < COST(5,1)? 40 < 45 TRUE : NEAR (5) 2 i=6 COST (6,2) < COST(6,1)? 25 < ~ TRUE : NEAR (6) 2 NEAR(1) NEAR(2) 0 i = 2 Pilih j = 6 karena NEAR(6) 0 dan COST(6,NEAR(6)) adalah minimum (T(2,1),T(2,2)) (6,2) mincost 10 + COST(6,2) = 10 + 25 = 35 NEAR(6) 0 Logika dan Algoritma Yuni Dwi Astuti, ST 7

k = 1 NEAR(1) 0 dan COST(1,NEAR(1)) > COST(1,6)? k = 2 NEAR(2) 0 dan COST(2,NEAR(2)) > COST(2,6)? 0 0 dan ~ > 25 FALSE dan TRUE FALSE k = 3 NEAR(3) 0 dan COST(3,NEAR(3)) > COST(3,6)? 2 0 dan 50 > 15 TRUE dan TRUE TRUE : NEAR(3) = 6 k = 4 NEAR(4) 0 dan COST(4,NEAR(4)) > COST(4,6)? 1 0 dan 30 > 20 TRUE dan TRUE TRUE : NEAR(4) = 6 k = 5 NEAR(5) 0 dan COST(5,NEAR(5)) > COST(5,6)? 2 0 dan 40 > 55 TRUE dan FALSE FALSE k = 6 NEAR(6) 0 dan COST(6,NEAR(6)) > COST(6,6)? i = 3 Pilih j = 3 karena NEAR(3) 0 dan COST(3,NEAR(3)) adalah minimum (T(3,1),T(3,2)) (3,6) mincost 35 + COST(3,6) = 35 + 15 = 50 NEAR(3) 0 k = 1 NEAR(1) 0 dan COST(1,NEAR(1)) > COST(1,3)? k = 2 NEAR(2) 0 dan COST(2,NEAR(2)) > COST(2,3)? 0 0 dan ~ > 50 FALSE dan TRUE FALSE k = 3 Logika dan Algoritma Yuni Dwi Astuti, ST 8

NEAR(3) 0 dan COST(3,NEAR(3)) > COST(3,3)? k = 4 NEAR(4) 0 dan COST(4,NEAR(4)) > COST(4,3)? 6 0 dan 20 > ~ TRUE dan FALSE FALSE k = 5 NEAR(5) 0 dan COST(5,NEAR(5)) > COST(5,3)? 2 0 dan 40 > 35 TRUE dan TRUE TRUE : NEAR(5) = 3 k = 6 NEAR(6) 0 dan COST(6,NEAR(6)) > COST(6,3)? 0 0 dan ~ > 15 FALSE dan TRUE FALSE i = 4 Pilih j = 4 karena NEAR(4) 0 dan COST(4,NEAR(4)) adalah minimum (T(4,1),T(4,2)) (4,6) mincost 50 + COST(4,6) = 50 + 20 = 70 NEAR(4) 0 k = 1 NEAR(1) 0 dan COST(1,NEAR(1)) > COST(1,4)? 0 0 dan ~ > 30 FALSE dan TRUE FALSE k = 2 NEAR(2) 0 dan COST(2,NEAR(2)) > COST(2,4)? k = 3 NEAR(3) 0 dan COST(3,NEAR(3)) > COST(3,4)? k = 4 NEAR(4) 0 dan COST(4,NEAR(4)) > COST(4,4)? k = 5 NEAR(5) 0 dan COST(5,NEAR(5)) > COST(5,4)? Logika dan Algoritma Yuni Dwi Astuti, ST 9

3 0 dan 35 > ~ TRUE dan FALSE FALSE k = 6 NEAR(6) 0 dan COST(6,NEAR(6)) > COST(6,4)? 0 0 dan ~ > 20 FALSE dan TRUE FALSE i = 5 Pilih j = 5 karena NEAR(5) 0 dan COST(5,NEAR(5)) adalah minimum (T(5,1),T(5,2)) (5,3) mincost 70 + COST(5,3) = 70 + 35 = 105 NEAR(5) 0 k = 1 NEAR(1) 0 dan COST(1,NEAR(1)) > COST(1,5)? 0 0 dan ~ > 45 FALSE dan TRUE FALSE k = 2 NEAR(2) 0 dan COST(2,NEAR(2)) > COST(2,5)? 0 0 dan ~ > 40 FALSE dan TRUE FALSE k = 3 NEAR(3) 0 dan COST(3,NEAR(3)) > COST(3,5)? 0 0 dan ~ > 35 FALSE dan TRUE FALSE k = 4 NEAR(4) 0 dan COST(4,NEAR(4)) > COST(4,5)? k = 5 NEAR(5) 0 dan COST(5,NEAR(5)) > COST(5,5)? k = 6 NEAR(6) 0 dan COST(6,NEAR(6)) > COST(6,5)? 0 0 dan ~ > 55 FALSE dan TRUE FALSE mincost ~? 105 ~ FALSE Logika dan Algoritma Yuni Dwi Astuti, ST 10

terdapat sebuah pohon rentangan, yang mempunyai nilai minimal = 105 Berikut adalah bentuk pohon rentangan minimalnya : Logika dan Algoritma Yuni Dwi Astuti, ST 11