¿Cuál es el mejor algoritmo para ordenar una pila de 400 exámenes de algoritmos, si tiene 16 TA?

Asumiré que esto está pidiendo ordenarlos por nombre, ya que esa fue la clasificación que me pidieron cuando era un TA.

Que haría yo:

  • dividir las pruebas en 26 cubos (uno para cada letra)
    • Esto es fácilmente paralelizable: asigne a cada TA 1/16 de la pila (aproximadamente, no vale la pena ser exacto) y haga que creen sus propias pilas (se ejecuta en O (n / t), donde ‘t’ es el número de TA) , y luego combine cada conjunto de minipilas en pilas reales (O (t)).
  • Ahora cada TA clasifica las letras por sí mismas. Estas mini pilas deberían promediar unos 15 exámenes, por lo que debería ser rápido (es decir, menos de 2 minutos).
  • Editar: ahora puedes combinar trivialmente las pilas colocando la pila A en la parte inferior, la pila B en la parte superior, etc. Esto es O (1) y es muy rápido en la práctica.

Una ventaja de este enfoque es la flexibilidad: si algunos TA son más rápidos que otros (o toman pilas más pequeñas), pueden pasar a la siguiente letra para ordenarlos sin esperar a los otros TA.

Tiene la ventaja adicional de ser fácil de explicar (“todos toman algunos exámenes y los clasifican por letra; ahora combine sus pilas con las otras pilas de TA; ahora tome una pila y comience a ordenar”)

Esto fue más o menos lo que usamos antes de graduarme. Cómo exactamente los TA calificaron sus mini-pilas fue más o menos de ellos.

A2A. He tenido que ordenar hasta 400 exámenes por mí mismo, y creo que soy más eficiente si el primer paso es dividir las pruebas en tantas pilas como pueda alcanzar en la mesa sin levantarme. 26 pilas suena un poco excesivo.

Para las pilas más pequeñas, la ordenación por inserción funciona muy bien. Además, probablemente se escala mejor con los exámenes físicos que en una computadora, ya que cambiar un gran segmento de pruebas ya clasificadas es relativamente fácil.

Pero la respuesta de Morgan tiene la agradable propiedad de ser simple de explicar y recordar. Entonces, con tanta gente, es probablemente el mejor enfoque.

Si les toma más de diez minutos a las 16 personas, probablemente estén haciendo algo mal.

Me gustó la idea del bucketing. Pero en lugar de 26 cubos, me dividiría en 4 cubos (AF, GL, MR, SZ).

Cada TA obtiene aproximadamente 400/16 documentos, que él / ella mapea en 4 cubos como se mencionó.

A continuación, emparejamos los TA para fusionar sus 4 cubos individuales en 4 cubos combinados. (A1, A2, A3, A4 y B1, B2, B3, B4 se fusionan en AB1, AB2, AB3, AB4). Mi objetivo es mantener los reductores ocupados tanto como sea posible, aunque hacia el final algunos de los reductores quedarían inactivos.

Una vez que tenemos 1 cuádruple simple de 16 cuádruples, los colocamos uno sobre otro en secuencia sin necesidad de ordenarlos.

¿Por qué incluso crear 4 cubos en lugar de simplemente hacer un tipo de fusión? – Hacia el final, los tamaños de pila serían grandes, lo que dificultaría la clasificación a pesar de que ambas partes se clasifican individualmente. Este no será el caso aquí, suponiendo una distribución aproximadamente uniforme.

FIFO (primero en entrar, primero en salir).

Si todos están en la misma sala (o al menos en el edificio), haga que cada TA tome una pequeña cantidad de exámenes, tal vez 5 o 10, y califíquelos. Repita hasta que esté hecho.

Los TA deben tener los conocimientos suficientes para poder evaluar las respuestas a las preguntas de codificación múltiple y, por supuesto, utilizar una clave para la opción múltiple u otras preguntas de respuesta simple.

Alternativamente, haga que cada examen sea calificado (sin marcar el examen) por dos TA diferentes y resuelva cualquier conflicto que ocurra. Esto es más confiable pero duplica la carga de trabajo de TA.

Realmente depende de la calidad de los TA.

Pero wow! ¿Solo 25 estudiantes por TA? ¡Agradable! Cuando era un graduado de TA que enseñaba a Pascal o ensamblador, tenía (inicialmente) alrededor de 50 estudiantes en mi clase cada semestre y tuve que calificar todos sus exámenes y tareas de programación por mí mismo.

Me gusta el uso de letras de la idea del alfabeto, pero 26 cubos es demasiado en realidad, ¿no?
Y si hace que cada TA cree sus propias pilas, eso es 26 * 16 pilas totales, que es más que el número de exámenes en este problema.

Puedes hacer una especie de fusión:

  • Dé a cada TA ~ 25 exámenes, o 1/16 de la pila, y pídales que lo clasifiquen.
  • Empareje los TA y haga que fusionen sus pilas ordenadas.
  • Puede hacerlo rápidamente comparando los papeles superiores en cada pila ordenada y colocando el correcto encima de la pila recién formada.
  • Nota: Dado que se trata de pilas, compare y seleccione los exámenes de manera que la clasificación de la pila recién fusionada se invierta (no tiene que lidiar con maniobras a través de grandes pilas de exámenes).
  • Continúe combinando grupos de TA para fusionar sus pilas como se describió anteriormente.
    • Para evitar que el agotamiento combine las pilas más grandes, haga que pares de TA fusionen 50 exámenes a la vez, luego cambie.
  • Los tamaños de las pilas irán de 25 -> 50 -> 100 -> 200 -> 400. Dado que estamos fusionando un número par de veces, la pila final de 400 debe clasificarse según el orden en que se ordenó en la primera iteración de 25)

    Probablemente esto no sea tan eficiente, pero como hay 16 TA, me siento obligado a hacer algo con potencias de 2.

  • Cuando califico los exámenes, hago Solitario:

    Clasificación de la paciencia – Wikipedia

    Calificas un examen y luego lo arrojas sobre una pila en tu escritorio. No requiere mucho esfuerzo por adelantado, y luego fusionas las pilas al final. La fusión puede ser un poco molesta, pero hago la fusión al ingresar calificaciones en la hoja de cálculo.

    Hago trampa un poco y, a veces, hago el tipo de inserción si es obvio dónde debe ir una prueba dentro de una pila (por ejemplo, en la parte inferior de una pila existente o al lado del mismo apellido … un año tuve tres “Xu” y cuatro “Anderson” “Estudiantes).

    A continuación, puede hacer una combinación de todos los TA que hicieron clases individuales de Solitario.

    Entregue los 400 exámenes al TA más cercano y dígales que lo resuelvan.

    ¿Su objetivo es solo ordenarlos por algún orden (es decir, alfa por nombre) u ordenarlos por algún orden y hacerlo en el tiempo más rápido? Si es más tarde, ¿quizás pueda dar una estimación de cuánto tiempo toma un TA para marcar un examen en el peor de los casos?

    Personalmente, lo que diré con respecto a esto es que el mejor algoritmo para ordenar una pila de 400 exámenes de algoritmos sería algo con una complejidad de tiempo rápida como Merge Sort para ordenar grandes grupos de datos. Podría estar equivocado ya que no soy experto en diseño algorítmico, pero Merge Sort tiene una complejidad de tiempo (Big-O) de O (n log n) en su peor caso, por lo que para grandes grupos de datos, Merge sort es Una gran apuesta, de nuevo, no me cite sobre esto, podría estar equivocado.

    More Interesting

    ¿Cuál es el algoritmo de coincidencia utilizado por las declaraciones de consulta SQL del servidor SQL como "Me gusta 'A%'", "Me gusta '% A'" o "Me gusta '% A%'"?

    ¿Cuáles son algunos conceptos que debo saber antes de aprender programación dinámica?

    ¿Hay algún proyecto de aprendizaje automático de finanzas que pueda ejercer con Python?

    Cómo encontrar la tasa de ganancia más efectiva con la menor cantidad de coincidencias posible (algoritmo)

    ¿Cuánto tiempo se necesita para leer Introducción a Algoritmos de TH Cormen, para un principiante?

    ¿Qué es una matriz?

    ¿Cuál es el número total de rompecabezas de sudoku posibles?

    ¿Hay algún libro sobre estructuras de datos y algoritmos que tenga estructuras de datos diferentes, su complejidad, sus usos y todas las cosas interesantes sobre ellos?

    ¿Puedo aprender el algoritmo yo mismo?

    ¿Se puede usar el algoritmo de Prim para encontrar la ruta más corta desde un vértice a todos los demás vértices en un gráfico no dirigido?

    Cómo comenzar a aprender o fortalecer mi conocimiento de estructuras de datos y algoritmos

    Dado un problema, ¿cómo puedo decidir si usar un enfoque codicioso o dividir y conquistar?

    ¿Es más difícil probar la corrección de algoritmos codiciosos que probar la corrección de cualquier otra clase de algoritmos?

    ¿Hay algún modelo físico o fenómeno que permita resolver rápidamente los problemas NP-hard?

    ¿Cuál es el enfoque para encontrar un acuerdo que produzca el salario mínimo?