2010-05-16 15 views
11

Sólo una pregunta de curiosidad. ¿Recuerda cuando en el trabajo de grupo de la clase el profesor dividiría a las personas en grupos de un cierto número (n)?Divida a las personas en equipos para mayor satisfacción

Algunos de mis profesores tomaría una lista de n la gente que uno quiere trabajar con la gente y n uno no quiere trabajar con el uno del estudiante, y luego mágicamente a salir grupos de n donde los estudiantes se emparejan con las personas que prefieren y evitan trabajar con personas que no prefieren.

Para mí, este algoritmo se parece mucho a un problema de mochila, pero pensé que podría preguntar acerca de cuál sería su enfoque para este tipo de problema.

EDIT: Encontrado an ACM article describiendo algo exactamente como mi pregunta. Lee el segundo párrafo para deja vu.

+1

Eso suena bien; mis profesores siempre me asignaron a trabajar con las personas más perezosas de la clase y terminaría haciendo demasiado trabajo. ;-) –

+0

@james a veces es la mejor manera de aprender. ;) –

+7

@Jweede: podría ser una buena forma de aprender que (1) las personas lo explotarán y (2) su jefe no reconocerá su arduo trabajo –

Respuesta

5

Para mí, suena más como un tipo de problema clique.

La forma en que veo el problema, que había definido la siguiente graph:

  • vértices serían los estudiantes
  • Dos estudiantes estarían conectados por un borde si ambas cosas siguientes sostienen:
    1. Al menos uno de los dos estudiantes quiere trabajar con el otro.
    2. Ninguno de los dos estudiantes no quiere trabajar con el otro.

Es entonces una cuestión de dividir el gráfico en grupos de tamaño n. (Suponiendo que el número de estudiantes es divisible por n)

Si esto no fuera posible, probablemente dejaría que la primera restricción en los bordes se deslice, y tenga bordes entre dos personas siempre y cuando ninguno de ellos diga explícitamente que no quiero trabajar con el otro

En cuanto a un enfoque para resolver esto de manera eficiente, no tengo ni idea, pero esto con suerte te acercará a una idea del problema.

+0

Interesante ... probablemente incluso podrías usar eso para descubrir la complejidad del problema. – WhirlWind

+0

La teoría de grafos fue mi otro pensamiento sobre el problema. Si recuerdo bien, las camarillas son NP-Hard. Sin embargo, no creo que el tamaño de las clases sea tan grande como para hacer que esto no se pueda resolver. –

+0

@Jweede, en realidad es NP-completo según ese artículo de wikipedia. Lo que supongo que también lo convierte en NP-Hard. – Cam

1

Este problema puede ser forzado por la fuerza bruta, por lo tanto, mi enfoque sería primero forzarlo a fuerza bruta, luego arreglarlo cuando tenga una mejor idea.

+0

Uhh, vale, sabemos cómo forzarlo brutalmente. ¿Cómo es esa una respuesta? – WhirlWind

+1

Creo que Knuth estaría de acuerdo con usted allí. –

+2

@WhirlWind: no preguntó específicamente qué algoritmo hubiésemos usado, y preguntó "cuál sería su enfoque para este tipo de problema". Y este sería mi enfoque. –

3

Se podría modelar esto con bastante facilidad como un problema de agrupamiento y que ni siquiera realmente necesita para definir un espacio, en realidad se podría simplemente definir las distancias:

Hacer dos personas muy cerca si ambos quieren trabajar juntos. Cerrar si uno de ellos quiere trabajar con el otro. Distancia media si solo hay apatía. Lejos si ninguno de los dos quiere trabajar con el otro.

Entonces usted podría encontrar agrupaciones, yay. Luego, divida los grupos de tamaño demasiado grande, con la confianza de que las personas de los grupos estarán bien trabajando juntas.

+1

La idea es interesante. Usar la distancia en ese espacio abstracto nos permite no tratar de trazar los puntos (lo que requeriría resolver el problema en primer lugar). Como la partición de un clúster tarda aproximadamente O (Tamaño), creo que podríamos solucionar el problema de manera bastante eficiente allí. Sin embargo, habría que modificar la distancia para tener en cuenta la simetría (es más probable que trabajes con alguien que te gusta y te guste más que con alguien que te gusta pero que no se preocupa por ti). Eso significa 5 distancias en lugar de 3 si estimamos que Love-Hate es equivalente a Medium-Medium. –

0

Hay un par de algoritmos que puede usar. Un gran ejemplo es el llamado "problema de matrimonio estable", que tiene una solución perfecta.Puede leer más sobre esto aquí:

http://en.wikipedia.org/wiki/Stable_marriage_problem

El problema de la unión estable sólo trabaja con dos grupos de personas (hombres/mujeres en el caso del matrimonio). Si quieres formar un par puedes usar una variación, el problema del compañero de cuarto estable. En este caso, usted crea pares, pero todos provienen de un solo grupo.

Pero usted pidió un equipo (que traduzco en> 2 personas por equipo). En este caso, puede dejar que todos rellenen su mejor y peor coincidencia y luego ejecutar

Cuestiones relacionadas