Dada una lista de conjuntos:Algoritmo para la fusión de conjuntos que comparten al menos 2 elementos
- S_1: [1, 2, 3, 4]
- S_2: [3, 4, 5, 6, 7]
- S_3: [8, 9, 10, 11]
- S_4: [1, 8, 12, 13]
- S_5: [6, 7, 14, 15, 16, 17]
Lo que más e forma fidedigna de fusionar todos los conjuntos que comparten al menos 2 elementos? Supongo que esto es similar a un problema de componentes conectados. Así, el resultado sería:
- [1, 2, 3, 4, 5, 6, 7, 14, 15, 16, 17] (S_1 UNION S_2 UNION S_5)
- [8, 9, 10, 11]
- [1, 8, 12, 13] (acciones S_4 1 con S_1, y 8 con S_3, pero no fusionadas, ya que sólo comparten un elemento en cada uno)
La implementación ingenua se O (N^2), donde N es el número de conjuntos, lo cual no es posible para nosotros. Esto necesitaría ser eficiente para millones de conjuntos.
¿Qué rango de valores puede haber en los conjuntos? –
¿Hay enteros? y pueden repetir dentro de un conjunto? – EvilTeach
Los valores en los conjuntos son enteros, y no se repiten dentro de cada conjunto – bajafresh4life