Wednesday 5 January 2011

Knapsack Problem


Salah satu penggunaan metode greedy adalah untuk menyelesaiakan permasalahan Knapsack (Knapsack problem), knapsack problem bisa kita gambarkan, misalnya kita mempunyai sebuah kantong atau tas dengan kapasitas tertentu sedangkan dihadapan kita terdapat begitu banyak pilihan barang, maka kita harus memilih barang mana saja yang kira-kira akan kita ungkut sesuai kapasitas kantong yang kita miliki supaya kita bisa mendapatkan keuntungan yang sebesar-besarnya atau maksimal.
Dalam menghadapi masalah di atas, metode greedy memiliki 3 pilihan strategi pengangkutan, yaitu:
  1. Greedy by Profit
    Strategi ini mengharapkan keuntungan maksimal dengan cara memasukan barang atau objek dengan nilai keuntungan terbesar terlebih dahulu ke dalam kantong atau knapsack. Jadi strategi ini hanya mempertimbangkan jumlah keuntungan dari sekumpulan barang, dengan catatan berat barang yang akan dibawa tidak melebihi kapasitas kantong yang kita miliki.
  2. Greedy by weight 
    Pada strategi ini, kita berusaha memasukan barang sebanyak-banyaknya kedalam kantong, jadi barang atau objek yang dimasukan terlebih dahulu adalah barang dengan bobot paling ringan terlebih dahulu, dengan harapan dengan banyaknya barang atau objek yang terangkut kita bisa mendapatkan keuntungan sebesar-besarnya.
  3. Greedy by density
     Strategi ini mengharapkan keuntungan sbesar-besarnya dengan memasukan barang  yang memiliki keuntungan per unit terbesar (Pi/Wi) terlebih dahulu kedalam kantong. 
Tata cara penggunaan metode greedy dalam persoalan knapsack adalah

  • Masukkan objek satu per satu ke dalam knapsack. Sekali objek dimasukkan ke dalam knapsack, objek tersebut tidak bisa dikeluarkan lagi. 


    Namun karena metode greedy hanya mempertimbangkan keuntungan local dengan harapan mendapat keuntungan global –seperti yang sudah dijelaskan sebelumnya-, maka metode ini juga tidak menjamin akan memberikan solusi optimal
    Contoh 1:
    Tinjau persoalan 0/1 Knapsack dengan n = 4. w1 = 6;   p1 = 12
                            w2 = 5;    p1 = 15
                            w3 = 10;  p1 = 50
                            w4 = 5;    p1 = 10
                            Kapasitas knapsack W = 16
    Solusi dengan algoritma greedy:

    Properti objek
    Greedy by
    Solusi
    Optimal
    i
    wi
    pi
    pi /wi
    profit
    weight
    density
    1
    6
    12
    2
    0
    1
    0
    0
    2
    5
    15
    3
    1
    1
    1
    1
    3
    10
    50
    5
    1
    0
    1
    1
    4
    5
    10
    2
    0
    1
    0
    0
    Total bobot
    15
    16
    15
    15
    Total keuntungan
    65
    37
    65
    65


    ·      Pada contoh diatas, algoritma greedy dengan strategi pemilihan objek berdasarkan profit dan density memberikan solusi optimal, sedangkan pemilihan objek berdasarkan berat tidak memberikan solusi optimal.

    Kemudian perhatikan contoh berikut ini
    Contoh 2:
    persoalan  Knapsack lain dengan 6 objek:
    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 W = 100

    Properti objek
    Greedy by
    Solusi
    Optimal
    i
    wi
    pi
    pi /wi
    profit
    weight
    density
    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
    1
    Total bobot
    100
    80
    85
    100
    Total keuntungan
    40
    34
    51
    55
    • Pada contoh2, terlihat algoritma greedy dengan ketiga strategi pemilihan objek tidak berhasil memberikan solusi optimal.  Solusi optimal permasalah ini adalah X = (0, 1, 1, 0, 0, 0) dengan total keuntungan = 55.
                         
    Kesimpulan: Algoritma greedy tidak selalu berhasil menemukan solusi optimal untuk masalah 0/1 Knapsack.

    3 comments:

    1. pada contoh kedua berhasil kaliii memberikan solusi optimal.
      coba cara yg density itu diperhatiin lg deh, kan bisa tuh yg diberi angka 1 yg di kolom 0,7 | 0,4(yg wi nya = 50) | 0,4(yg wi nya = 45) | 0,4(yg wi nya = 5)
      dapet dah tuh solusi optimal
      total bobot = 100
      total keuntungan = 55

      CMIIW

      ReplyDelete
      Replies
      1. Kalo di greedy, bagian density itu dipilih dari hasil density paling besar dulu, jadi gabisa langsung 0,7 tapi harus ngurut, dari 1,0 dulu

        Delete
    2. Masih bingung gmana cara dapetin profit weight sama density nya

      ReplyDelete