Всем привет. Снова туплю над вроде бы не сложной задачей. Думала, пока буду писать вопрос, как обычно, придет мысля. Но мысля, увы, не пришла, так что публикую.
Кароч, задача такая. Собрались десять друзей отмечать новый год. Каждый принес с собой по блюду на праздничный стол. В каждом блюде всего три порции. И друзья договорились, что каждый попробует по одной порции от трех блюд. Свое, естественно, никто есть не хочет. У каждого из друзей есть свои предпочтения и свои антипатии(их может быть неограниченное количество, а может не быть вовсе). Задача в том, чтобы предоставить каждому три наиболее подходящих ему блюда.
Я предполагаю, что нужно выразить свои предпочтения в числовой форме. Например, изначально любое блюдо имеет для меня ценность 0. Я прохожусь по его ингредиентам и проставляю +10 над каждым любимым и -10 над каждым нелюбимым. Потом складываю эти числа, и получится что-то вроде оценки.
Но это как-то слишком просто. Например, получится, что оценка салата, где есть курица (которую я люблю) и спаржа (которую я не люблю) будет равняться нулю. Также как и любого салата, в котором нет ни одного моего любимого ингредиента. Что с этим делать?
Дальше, к примеру, курицы нет нигде. Но есть так называемые “группы ингредиентов”. Можно глянуть группу “мясо” и вместо курицы выбрать индейку (таким бы “одногруппникам” я вместо +10 ставила бы +5). Но опять же, я не совсем понимаю, когда лучше производить эти расчеты: сразу или после анализа любимых/нелюбимых ингредиентов, когда получилась нехватка подходящих блюд.
А как потом это все распределить? То есть “блюдо 1” может быть одинаково высоко оценено пятью людьми. Как среди них выбрать тех троих, кому оно достанется?
В общем, в голове каша, крутится что-то несформулированное и в алгоритм не вырисовывается. Может, кто сталкивался с подобными задачами? Если не трудно, растолкуйте человеческим языком. Ну или хотя бы пните, по каким запросом в гугле искать. Стопудово же есть какой-нибудь метод решения таких задач.