У меня есть список списков, которые необходимо объединить на основе общих вхождений элементов списка. Списки, которые совместно используют элементы, должны быть объединены вместе, чтобы сформировать кластеры.
Я рассмотрел обход в ширину, чтобы сделать это, но из-за того, как устроен список списков, трудно реализовать обход
Пример списка списков:
input:
[
[1,2,3],
[2,4,5],
[4,6,8],
[9,10,16],
[16,18,19],
[20,21,22]
]
output: [[1,2,3,4,5,6,8], [9,10,16,18,19], [20,21,22]]
Первые три списка должны быть объединены в один список (первый список и второй список имеют общий ресурс 2, второй и третий списки 4), четвертый и пятый должны быть объединены, поскольку эти два ресурса 16. Третий является не объединены ни с одним другим списком, так как он не разделяет ни один элемент с другими.
Хотя это можно сделать за O (n ^ 2) раз (n - количество списков), я пытаюсь найти наиболее эффективный из возможных способов.