Problema Knapsack dengan Algoritma Greedy

kapan kita harus berhenti karena telah sampai kepada solusi tetapi penyelesaian masalah akan dilakukan dengan membandingkan solusi pada tiap daun. Dalam persoalan ini, akan dibandingkan jumlah keuntungan yang diperoleh pada tiap daun dan solusi permasalah merupakan lintasan yang menuju daun yang memiliki keuntungan terbesar. Dari gambar diatas dapat disimpulkan bahwa solusi permasalahan dibentuk oleh lintasan yang menuju simpul 13 dan 7 dimana keduanya merupakan solusi yang serupa yaitu memilih barang 2 dengan berat 5 kg , keuntungan 15 dan barang 3 dengan berat 10 kg, keuntungan 50 sebagai solusi permasalahan dan akan menghasilkan keuntungan yang maksimal pada penjualan yaitu sebesar 65.

2.2 Problema Knapsack dengan Algoritma Greedy

Problema knapsack 01 pada bab ini akan dibahas dengan menggunakan strategy greedy. Pendekatan yang digunakan di dalam algoritma greedy adalah membuat pilihan yang “tampaknya” memberikan perolehan terbaik, yaitu dengan membuat pilihan optimum local local optimum pada setiap langkah dengan harapan bahwa sisanya mengarah ke solusi optimum global global optimum Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah, pada setiap langkah : 1. Mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan prinsip “take what you can get now” 2. Berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global. Dengan algoritma greedy, persoalan knapsack dapat dipecahkan dengan memasukkan objek satu per satu ke dalam knapsack. Sekali objek dimasukkan ke dalam knapsack, objek tersebut tidak bias dikeluarkan lagi. Terdapat beberapa strategy greedy yang heuristik yang dapat digunakan untuk memilih objek yang akan dimasukkan ke dalam knapsack. Universitas Sumatera Utara

2.2.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. Pertama kali yang dilakukan adalah secara menurun objek – objek berdasarkan profitnya. Kemudian baru diambil satu – persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bias dimasukkan. Algoritmanya yaitu : Berdasarkan algoritma diatas maka dapat dihitung komplesitas waktu asimptotik-nya adalah On Sebagai data pengujian diberikan data-data untuk w Weight dan P Profit : Dengan kapasitas knapsack W = 16 procedure Giby Profit var dt3 : arrayData;W : real; Var i,j: integer temp: data cW: real tukar:boolean program UrutkanDataBerdasarkanProfitdt3 WhilecWWandi=lengthdt3do ifdt3[i].w=W-cWthen cW ←cW+dt3[i].w dt3[i].status ←True inci 10 5 50 ; 10 15 ; 5 12 ; 2 1 4 1 3 1 2 1 1 = = = = = = = = p w p w p w p w Universitas Sumatera Utara Tabel 2.2 Greedy by profit Properti I w i p i Piw i Status 3 10 50 5 Diambil 2 5 15 3 Diambil 1 6 12 2 Tidak 4 5 10 2 Tidak

2.2.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. Pertama kali yag dilakukan adalah mengurutkan secara menaik objek-objek berdasarkan weightnya. Kemudian baru diambil satu persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bias dimasukkan. Algoritma greedy by profit sebagai berikut : Berdasarkan algoritma di atas maka dapat dihitung komplesitas waktu asimptotik-nya adalah On procedure Giby Weight var dt3 : arrayData;W : real; Var i,j: integer temp: data cW: real tukar:boolean program UrutkanDataBerdasarkanWeightdt3 WhilecWWandi=lengthdt3do ifdt3[i].w=W-cWthen cW ←cW+dt3[i].w dt3[i].status ←True inci Universitas Sumatera Utara Sebagai data pengujian diberikan data-data untuk w Weight dan P Profit : Dengan kapasitas knapsack W = 16 Tabel 2.3 Greedy by weight Properti I w i p i piw i Status 2 5 15 3 Diambil 4 5 10 2 Diambil 1 6 12 2 Diambil 3 10 50 5 Tidak

2.2.3. Greedy by density

Pada setiap langkah, knapsack diisi dengan objek yang mempunyai densitas terbesar. Strategi ini mencoba memaksimumkan keuntungan dengan memilih objek yang mempunyai keuntungan per unit berat terbesar. Pertama kali yang dilakukan adalah mencari nilai profit per unit density dari tiap-tiap objek. Kemudian objek-objek tersebut diurutkan berdasarkan densitynya. Kemudian baru diambil satu-persatu objek yang dapat ditampung oleh knapsack sampai knapsack penuh atau sudah tidak ada objek lagi yang bisa dimasukkan. Pemilihan objek berdasarkan salah satu dari ketika strategi di atas tidak menjamin akan memberikan solusi optimal. Berbeda dengan strategi brute force yang selalu dapat memberikan hasil yang optimal. Tetapi greedy mengurangi jumlah langkah kompleksitas pencarian. 10 5 50 ; 10 15 ; 5 12 ; 2 1 4 1 3 1 2 1 1 = = = = = = = = p w p w p w p w Universitas Sumatera Utara Berdasarkan algoritma diat maka dapat dihitung komplesitas waktu asimptotik-nya adalah On Sebagai data pengujian diberikan data-data untuk w Weight dan P Profit : Dengan kapasitas knapsack W = 16 Tabel 2.4 Greedy by density Properti I w i p i piw i Status 3 10 50 5 Diambil 2 5 15 3 Diambil 4 5 10 2 Tidak 1 6 12 5 Tidak procedure GbyPW var dt3 : arrayData;W : real; Var i,j: integer temp: data cW: real tukar:boolean program UrutkanDataBerdasarkanWeightdt3 →Mengurutkan data berdasarkan whilecWWandi=lengthdt3do nilai density yang terbesar ifdt3[i].w=W-cWthen ke nilai yang terkecil cW ←cW+dt3[i].w dt3[i].status ←True inci 10 5 50 ; 10 15 ; 5 12 ; 2 1 4 1 3 1 2 1 1 = = = = = = = = p w p w p w p w Universitas Sumatera Utara Maka, hasil akhirnya kita mendapatkan dta seperti di bawah ini: Tabel 2.5 Greedy by density Properti objek Greedy by i w i p i p i w i profit weight Density 1 6 12 2 1 2 5 15 3 1 1 1 3 10 50 5 1 1 4 5 10 2 1 Total bobot 15 16 15 Total keuntungan 65 37 65

2.3 Problema Knapsack dengan Exhaustive Search