Das Ganze ist ein (leider
ganzzahliges)
lineares Optimierungsproblem:
Dass die Kombinationen der Listeninhalte die Zielliste ergeben sollen, entspricht den Nebenbedingungen.
Die Zielfunktion ist der Preis einer solchen Kombination.
Meine erste Herangehensweise wäre eine naive Version des
Branch-and-Bound-Verfahren:
Du machst eine Tiefensuche und jede gefundene gültige Kombination ist deine neue obere Preisschranke (wenn besser).
Die Suchstrategie ist vermutlich etwas, wo am einfachsten etwas optimiert werden könnte (siehe Uwe Raabe).
Im Moment fällt mir wenig ein, wie man sinnvoll eine untere Schranke nutzen könnte, aber vielleicht findest du eine gute obere Schranke mit irgendeiner Heuristik.
Außerdem kann man vermutlich eine untere Schranke für den Preis finden, den man von einer unvollständigen Lösung zu einer gültigen braucht. Damit könntest du mit deiner oberen Schranke mehr Branches abschneiden.
Du könntest das Problem aber auch mit jeder beliebigen Lösungsmethode für ganzzahlige lineare Programmierung lösen.
EDIT/
OT:
Ich würde gerne mehr zu dem Problem erfahren ... also:
Was wird da modelliert, wie groß sind die Listen und wie viele sind es?
Außerdem wäre es schön, wenn du die Lösung skizzieren würdest, die du dann letztendlich umgesetzt hast.
Es ist interessant zu sehen, wie solche Probleme in der echten Welt gelöst werden.