Мне нужно найти все вложенные массивы, которые разделяют любые общие элементы, и объединить их в один вложенный массив.(Реализация на Python, но любая алгоритмическая идея была бы полезна)
Структура многомерного массива:
categories = {'car':['automobile','auto'],
'bike':['vehicle','motorcycle','motorbike','automobile'],
'software':['computer','macbook','apple','microsoft','mozilla'],
'firefox':['internet','mozilla','browser']
'bicycle':['vehicle']}
Я бы хотел объединить 'car', 'bike' и 'bike' водин список ( сохранить ключ первого списка ключом нового списка может быть любой из соответствующих ключей), а также «программное обеспечение» и «firefox» объединены в один список.
Производительность имеет решающее значение.
Лучшее решение, которое я мог бы найти до сих пор, - это сохранить сплющенный одномерный массив из element => list_key (например, ' automotive '=>' car ') и затем запустить следующую рекурсивную функцию для каждого списка в многомерном массиве (псевдокод):
function merge_similar(list_key):
For each element in categories[list_key]:
If flatten_array.has_key(element):
list_to_merge = flatten_array[element]
merge_similar(list_to_merge) /* merge other lists which share an element with our newly found similar list */
categories[list_key] = merge(categories [list_key], categories[list_to_merge])
delete categories[list_to_merge]
Есть идеи, как улучшить его производительность?
Спасибо!