Чтобы немного расширить ответ st0le ...
Итак, у вас есть список элементов:
a, b, c, d, e, f
И список отношений:
ab
cd
de
Инициализируйте, поместив каждый элемент в его собственную группу.
Затем выполните итерацию по вашему спискуотношения.
Для каждого отношения найдите группу, членом которой является каждый элемент, а затем объедините эти группы.
Итак, в этомпример:
1: init -> {a}, {b}, {c}, {d}, {e}, {f}
2: a-b -> {a,b}, {c}, {d}, {e}, {f}
3: c-d -> {a,b}, {c,d}, {e}, {f}
4: d-e -> {a,b}, {c,d,e}, {f}
Вам, очевидно, придется проверить все ваши отношения.В зависимости от того, как вы реализуете часть поиска, это будет влиять на эффективность вашего алгоритма.Поэтому на самом деле вы хотите знать, какой самый быстрый способ найти элемент в наборе групп элементов.Наивный подход сделает это за O (n).Вы можете улучшить это, ведя учет, в какой группе находится данный элемент. Затем, конечно, когда вы объединяете две группы, вам придется обновить свою запись.Но это все еще полезно, потому что вы можете объединить меньшую группу в большую, что сэкономит на количестве записей, которые вам нужно обновить.