Wir erhalten eine Menge von Früchten. Jede Frucht hat Preis und Vitamingehalt ; wir haben Frucht mit dem geordneten Paar assoziiert . Jetzt müssen wir diese Früchte so anordnen, dass die sortierte Liste die Preise in aufsteigender Reihenfolge und den Vitamingehalt in absteigender Reihenfolge enthält.N P i V i f i
Beispiel 1 : und .F = { ( 2 , 8 ) , ( 5 , 11 ) , ( 7 , 9
Wenn wir die Liste so anordnen, dass alle Preise in aufsteigender Reihenfolge und der Vitamingehalt in absteigender Reihenfolge angegeben sind, lauten die gültigen Listen wie folgt:
Aus den obigen Listen möchte ich die Liste mit der maximalen Größe auswählen. Wenn mehr als eine Liste die maximale Größe hat, sollten wir die Liste der maximalen Größe auswählen, deren Preissumme am geringsten ist. Die Liste, die im obigen Beispiel ausgewählt werden sollte, lautet .
Beispiel 2 : und
Die Antwort auf diese Beispielinstanz lautet .
Bis jetzt habe ich Folgendes getan:
- Sortieren Sie die ursprüngliche Liste in aufsteigender Reihenfolge des Preises.
- Finden Sie alle Teilsequenzen der sortierten Liste.
- Überprüfen Sie, ob die Teilsequenz gültig ist, und vergleichen Sie alle gültigen Teilsequenzen.
Dies dauert jedoch exponentiell. Wie kann ich dieses Problem effizienter lösen?