+ - problema zaino


9

Dato un insieme di articoli, ciascuno con un peso e un valore, determina il numero di ciascun articolo da includere in una raccolta in modo che il peso totale sia inferiore o uguale a un determinato limite e il valore totale sia il più grande possibile.

Wikipedia per ulteriori informazioni

Ad esempio, è possibile assegnare un peso massimo di 15 e oggetti con valore / masse come [5,2], [7,4] [1,1]e si otterrebbe un output di [7,0,1]7 [5 <value>, 2 <mass>]oggetti e 1 [1 <value>, 1 <mass>]oggetto per un punteggio di 36.

Regole

L'input può essere preso in qualsiasi formato ragionevole

L'output è anche un formato flessibile,

Non è possibile utilizzare librerie non standard. Se è necessario installare o scaricare qualsiasi libreria di usarlo separato dal setup iniziale, allora è non consentito

Gli oggetti possono avere massa e valore negativi (ovvero -1, -1)

Sono richieste risposte ottimali

vincente

Il codice più corto vince

Massa e valore negativi?

Questa è una parte fondamentale di questa sfida. Diciamo che hai un oggetto con oggetti (massa, valore) come [4,3],[-1,-1]e una borsa con capacità di 15. Puoi mettere 3 dei primi e segnare 9 o mettere 4 dei primi e uno dei -1, -1 oggetto per un punteggio di 11.



Possiamo supporre che nessun oggetto avrà una massa non positiva?
HyperNeutrino,

@HyperNeutrino rimuove un secondo per le modifiche
Christopher,

2
Possiamo supporre che tutto sia un numero intero? Inoltre, dovremo affrontare casi come [[2, 1], [-1, -1]] in cui il valore totale può essere reso arbitrariamente grande?

5
Il titolo è fuorviante. A causa di pesi negativi questo non è il problema dello zaino ma una variazione del problema della programmazione lineare.
ngn,

Risposte:


2

Pyth, 18 byte

h.MshMZfghQseMTy*F

Output come un elenco di coppie [valore, peso]. Orrendamente inefficiente, ma è NP-completo.
Provalo qui

Spiegazione

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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.