Алгоритм минимизации корзины покупателя

У меня есть список товаров , который состоит из списка магазинов , которые его продали.

{
    'Book A': [ShopA, ShopB, ShopC],
    'Book B': [ShopC, ShopD],
    'Movie C': [ShopA, ShopB, ShopD, ShopE],
    ...
}

(Цена в магазинах разная)

В каждом магазине также есть стоимость доставки. Это стоимость доставки "за заказ", не имеет значения, сколько товаров в моей корзине. И это тоже различается между магазинами.

Пример: если я покупаю «Книгу A» в ShopA, «Книгу B» в ShopC и «Фильм C» в ShopA, итоговая цена будет: Цена книги A в ShopA + Book Цена B в ShopC + Цена фильма C в ShopA + Стоимость доставки ShopC + ShopA стоимость доставки

Если стоимость доставки была равна нулю или она была на -item базис и константа, то я бы просто отсортировал списки предложений по полю цена + доставка и получил бы первый результат из каждого набора.

Мне нужно купить все предметы один раз и найти минимальную цену и получившийся набор.

Я не очень хорошо разбираюсь в алгоритмах оптимизации и динамическом программировании, поэтому мне нужно решение или просто намек в правильном направлении.

7
задан dmzkrsk 17 January 2012 в 08:06
поделиться