Hier ist der Kern des Problems: Gegeben ist eine Liste von Mengen, wie z.B.:
[ (1,2,3), (5,2,6), (7,8,9), (6,12,13), (21,8,34), (19,20) ]
Gibt eine Liste von Gruppen der Mengen zurück, so dass Mengen, die ein gemeinsames Element haben, in der gleichen Gruppe sind.
[ [ (1,2,3), (5,2,6), (6,12,13) ], [ (7,8,9), (21,8,34) ], [ (19,20) ] ]
Die Menge (6,12,13) hat kein gemeinsames Element mit (1,2,3), aber sie werden wegen (5,2,6) in dieselbe Gruppe gesetzt.
Um die Sache zu verkomplizieren, sollte ich erwähnen, dass ich nicht wirklich diese ordentlichen Sets habe, sondern eher eine DB-Tabelle mit mehreren Millionen Zeilen, die wie folgt aussieht:
element | set_id
----------------
1 | 1
2 | 1
3 | 1
5 | 2
2 | 2
6 | 2
und so weiter. Ich würde also gerne eine Möglichkeit finden, dies in SQL zu tun, aber ich wäre mit einer allgemeinen Richtung für die Lösung zufrieden.
EDITAR : Die Namen der Tabellenspalten wurden in (element, set_id) anstelle von (key, group_id) geändert, um die Begriffe konsistenter zu machen. Beachten Sie, dass die Antwort von Kev die alten Spaltennamen verwendet.