Il problema equivale a trovare una corrispondenza massima in un grafo bipartito . Ogni elemento di colonna rappresenta un vertice, ogni riga rappresenta un bordo. L'articolo di Wikipedia collegato fornisce alcuni suggerimenti sugli algoritmi per risolvere questo problema. Esiste un'implementazione dell'algoritmo ungherese nella libreria or-tools di Google .
Ecco l'esempio fornito formulato come un grafico, con i bordi rossi che rappresentano la soluzione data:
Sarebbe sorprendente per me se potessi trovare una soluzione esclusivamente in SQL.