Алгоритм сопряжения двух неравных списков с парными ограничениями

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

Сложность в том, что у меня есть набор пар, которые неприемлемы. В частности, у каждого ученика может быть один или несколько учителей, с которыми он не может быть в паре.

Я знаю, что мог бы создать очень эффективный жадный алгоритм, который просто начинает произвольно сопоставлять совпадения и пропускает совпадения, которые не работают, поскольку число учеников, которым назначен каждый учитель, не обязательно должно быть точным. Независимо от того, я хотел бы эффективный и полный способ сделать это. Спасибо за любой совет, который вы можете предложить!

1 ответ

Решение

Я бы начал с самого ограниченного соответствия до менее ограниченного, это оставит неограниченное соответствие последним, и вы можете использовать их для баланса.

Другие вопросы по тегам