Я пишу проект для класса алгоритма, и мне действительно нужна помощь!Вот проблема:
У меня есть набор имен, подобных этому N = (Джеймс, Джон, Роберт, Мэри, Патрисия, Линда Барбара), которые хранятся в дереве RB.Исходя из этого набора имен, формируется серия таких пар:
(Джеймс, Мэри) (Джеймс, Патриция) (Джон, Линда) (Джон, Барбара) (Роберт, Линда) (Роберт,Барбара)
Теперь мне нужно объединить элементы таким образом, чтобы я могла сформировать n подгрупп с условием, что каждая пара соблюдается, и группа имеет наименьшее возможное количество элементов.
С парамив примере они сформируют две группы (Джеймс, Мэри, Патриция) и (Джон, Роберт, Барбара, Линда).
Задача состоит в том, чтобы вернуть максимальное количество сформированных групп и количество мужчин и женщин.в группе с максимальным количеством элементов.
В этом случае это будет 2 2 2
Я думал о построении графа, в котором каждое имя представлено вершиной, а две вершины находятся вкрай только если они в паре.Затем я могу использовать алгоритм (например, Kruskal), чтобы найти минимальное связующее дерево. Это верно?
Проблема в том, что граф не будет полностью связан.Мне также нужно найти способ сопоставить имена с краями графа и наоборот.Можно ли индексировать края строкой?
Каждая помощь действительно ценится :) Спасибо за совет!