Я изо всех сил пытаюсь создать эффективный алгоритм, который может определить, можно ли разделить группу студентов на две группы.Графический алгоритм разделения студентов на две группы
Обратите внимание, что существуют некоторые ограничения, предусмотренные типа, что для (X,Y)
студента X
должен быть с учеником Y
и некоторыми ограничениями типа, что для (A,B)
студента A
не может быть с учеником B
. Не у каждого ученика есть ограничение, и у некоторых учеников есть несколько ограничений.
Я рассмотрел график, в котором каждый ученик является узлом, а затем два узла связаны ребром, если учащиеся могут находиться в одной группе (например, они либо имеют ограничение, что они должны быть вместе, либо У меня есть ограничение, что они не могут быть вместе). Но я не уверен, какой алгоритм я мог бы применить для решения (или доказал, учитывая, что набор ограничений это невозможно), как только я построил это представление графика.
Любые советы приветствуются? Спасибо!
Я думаю, что ваш план хорош как первый шаг. У вас может быть несколько кластеров, учеников, которые связаны границей ограничений «в одной группе». После этого для разделения кластеров на две группы можно использовать ограничения «не в одной группе». Я не знаю, как относиться к учащимся, у которых нет ограничений. –
Вы хотите покрасить свой график, используя только 2 цвета, что делается с использованием двудольного графика, как предположил Али. – purpletentacle