+ - sırt çantası sorunu


9

Her biri bir ağırlık ve bir değere sahip bir öğe kümesi verildiğinde, toplam ağırlığın belirli bir sınıra eşit veya daha az olması ve toplam değerin mümkün olduğunca büyük olması için bir koleksiyona dahil edilecek her öğenin sayısını belirleyin.

Daha fazla bilgi için Wikipedia

Örneğin, maksimum 15 ağırlık verilebilir ve değeri / kütlesi olan nesnelere verilebilir ve 36 puan için 7 nesne ve 1 nesne olan [5,2], [7,4] [1,1]çıktı alabilirsiniz .[7,0,1][5 <value>, 2 <mass>][1 <value>, 1 <mass>]

kurallar

Giriş herhangi bir makul formatta alınabilir

Çıktı aynı zamanda esnek formattır,

Standart olmayan kitaplıkları kullanamazsınız. Eğer gerekiyorsa yüklemek veya indirmek Gelinen yerde olduğu ilk kurulum ayrı kullanmak için herhangi bir kütüphane değil izin

Nesnelerin kütlesi ve değeri negatif olabilir (yani -1, -1)

Optimal cevaplar gerekli

Kazanan

En kısa kod kazanır

Negatif kütle ve değer?

Bu, bu zorluğun önemli bir parçasıdır. Diyelim ki nesneler (kütle, değer) gibi bir nesneye [4,3],[-1,-1]ve 15 kapasiteye sahip bir çantaya sahipsin. İlklerden 3'ünü ve 9 puan alabilir veya ilklerinden 4'ünü ve -1, -1'den birini koyabilirsiniz. 11 puan için itiraz.



Hiçbir nesnenin pozitif olmayan kütleye sahip olmayacağını varsayabilir miyiz?
HyperNeutrino

Düzenlemeler için bir saniye kaldırma
Christopher

2
Her şeyin bir tamsayı olduğunu varsayabilir miyiz? Ayrıca, toplam değerin keyfi olarak büyütülebileceği [[2, 1], [-1, -1]] gibi durumlarla ilgilenmemiz gerekecek mi?

5
Başlık yanıltıcı. Negatif ağırlıklar nedeniyle bu sırt çantası problemi değil, doğrusal programlama problemindeki bir değişikliktir.
ngn

Yanıtlar:


2

Pyth, 18 bayt

h.MshMZfghQseMTy*F

[Değer, ağırlık] çiftlerinin bir listesi olarak çıktılar. Horrendously verimsiz, ama olan NP-tam.
Burada deneyin

açıklama

h.MshMZfghQseMTy*F
               y*FQ  Get all sets with up to <capacity> of each item.
       fghQseMT      Choose the sets whose total weight fits in the bag.
 .MshMZ              Choose those with the highest value.
h                    Take the first.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.