Или Путешествующий продавец играет в Магию!
Я думаю, что это довольно интересная алгоритмическая задача.Любопытно, есть ли у кого-нибудь хорошие предложения по ее решению или если это уже разрешимо известным способом.
TCGPlayer.com продает коллекционные карты для различных игр, в том числе Магическое Собрание .Вместо того, чтобы просто продавать карты из своего инвентаря, они на самом деле являются перепродавцем от нескольких продавцов (50+).Каждый продавец имеет различный инвентарь карт и разную цену за карту .Каждый поставщик также взимает фиксированную ставку за доставку (обычно).Учитывая все это, как найти лучшую цену за колоду карт (скажем, 40 - 100 карт)?
Просто найти лучшую цену для каждой карты не работает, потому что если вы заказываете 10 карт из10 различных поставщиков, тогда вы оплачиваете доставку 10 раз , но если вы заказываете все 10 у одного поставщика, вы платите только доставку один раз .
Однажды вечером я написал простой HTML Scraper (с использованием HTML Agility Pack ), который собирает все разные цены для каждой карты, а затем находит всех продавцов, которые несут все карты вколода, суммирует цены карт от каждого продавца и сортирует по цене.Это было действительно легко.Общие цены оказались близкими к общей средней цене для всех карт.
Я заметил, что некоторые отдельные карты оказались намного выше средней цены.В связи с этим возникает вопрос о разделении заказа между несколькими поставщиками, но только в том случае, если можно было бы добиться достаточной экономии, разделив заказ на покрытие дополнительной доставки (каждый добавленный поставщик добавляет свою плату за доставку).
Логически кажется, чтолучшая цена, вероятно, будет включать только нескольких разных поставщиков, но если карты достаточно дороги (, а некоторые ) , то теоретически заказ каждой карты от другого поставщика может все же привести кдостаточно сбережений, чтобы оправдать всю лишнюю доставку.
Если бы вы собирались заняться этим, как бы вы это сделали?Чисто Грубая сила вычисляет каждую возможную комбинацию комбинаций карт / вендоров?Процесс, который с большей вероятностью будет выполнен в моей жизни, может включать методическую серию оценок в течение фиксированного числа итераций.У меня есть пара идей, но мне любопытно, что могут предложить другие.
Я ищу больше алгоритм, чем реальный код.Я в настоящее время использую .NET, хотя, если это имеет какое-либо значение.