Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie man doppelte Assoziationen beschneidet, um einen einzigartigen, vollständigsten Satz zu erhalten

Das Problem entspricht dem Finden einer maximalen Übereinstimmung in einem zweiteiligen Diagramm . Jedes Spaltenelement repräsentiert einen Scheitelpunkt, jede Zeile repräsentiert eine Kante. Der verlinkte Wikipedia-Artikel liefert einige Hinweise auf Algorithmen zur Lösung dieses Problems. Es gibt eine Implementierung des ungarischen Algorithmus in der Or-Tools-Bibliothek von Google .

Hier ist das gegebene Beispiel als Graph formuliert, wobei die roten Kanten die gegebene Lösung darstellen:

Es würde mich überraschen, wenn Sie eine Lösung nur in SQL finden könnten.