Antecedentes
Suponga que hay 2*npersonas para casarse, y suponga además que cada persona se siente atraída por notras exactamente bajo las restricciones que:
- La atracción es simétrica ; es decir, si la persona
Ase siente atraída por la personaB, entoncesBse atrae a la personaA. - La atracción es antitransitiva ; es decir, si la persona
Ay la personaBse sienten atraídas por la personaC, entonces la personaAy la personaBno se sienten atraídas entre sí.
Así, la red de atracciones forma el gráfico bipartito completo (no dirigido) Kn,n. También suponemos que cada persona ha clasificado a las personas que le atraen. Estos pueden representarse como pesos de borde en el gráfico.
Un matrimonio es un emparejamiento (A,B)donde Ay Bse sienten atraídos el uno al otro. El matrimonio es inestable si hay otro matrimonio en el que una persona de cada matrimonio podría divorciarse de su pareja y casarse entre sí y ambos terminan con alguien que clasificaron más alto que su pareja anterior.
Objetivo
Su tarea es escribir un programa o función completa que tome las preferencias de cada persona como entrada y produzca un matrimonio para cada persona de modo que cada matrimonio sea estable.
Entrada
La entrada puede estar en cualquier formato conveniente; por ejemplo, gráfico ponderado, lista ordenada de preferencias, diccionario / asociación, etc. Opcionalmente, puede tomar el número total de personas como entrada, pero no se permite ninguna otra entrada.
Salida
La salida también puede estar en cualquier formato conveniente; por ejemplo, lista de tuplas, cobertura mínima de borde , una función que asocia a cada persona su pareja, etc. Tenga en cuenta que la única restricción es que cada matrimonio es estable, no hay otros requisitos de optimización.
Notas
- Puede encontrar más información y un
O(n^2)algoritmo para resolver este problema en Wikipedia o en este video de Numberphile . Sin embargo, puede utilizar cualquier algoritmo. - Las lagunas estándar están prohibidas.
- Este es el código de golf . La respuesta más corta (en bytes) gana.
fuente

Respuestas:
Mathematica, 28 bytes
En pensaría, esto es hacer trampa. A mí mismo me gusta esto:
(Sí
Combinatoricaestá en desuso pero cuesta menos bytes queFindIndependentEdgeSet)Ejemplo (similar a GoT): (Para ser justos, adiviné los pesos ... pero estoy de acuerdo con los resultados)
fuente