5 Stimmen

Aufteilung einer Liste von Mengen nach gemeinsamen Elementen

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X