Un número de estudiantes quiere entrar en secciones para una clase, algunos ya están registrados en una sección pero quieren cambiar la sección, para que todos entren en la lista de espera. Un estudiante puede ingresar a una nueva sección solo si alguien abandona esa sección. Ningún alumno está dispuesto a dejar una sección en la que ya se encuentra, a menos que pueda estar seguro de ingresar en la sección que está esperando. La lista de espera para cada sección se entrega primero en primer lugar.El problema de las "Listas de espera"
Obtenga tantos estudiantes en las secciones que desee como pueda.
El problema establecido puede pasar rápidamente a un escenario de bloqueo. Mi pregunta es; ¿hay soluciones conocidas para este problema?
Una solución trivial sería tomar cada sección a su vez y forzar el primer estudiante de la lista de espera en la sección a continuación, compruebe si alguien terminan abandonando cuando las cosas se resuelven (O (n) o más en el número de sección). Esto funcionaría para algunos casos, pero creo que podría haber mejores opciones que impliquen forzar a más de un estudiante a una sección (O (n) o más en el recuento de estudiantes) y/u operar en más de una sección a la vez (O (malo) :-)
Haha O (malo) <- encantador. –
Marcado como 'tarea'. Puede que esta no sea tu tarea, pero podría ser la de alguien en algún momento, ya que tuve esta misma pregunta en la universidad hace unos años. –
cambiado a no-mi-tarea para reflejar mejor la realidad – BCS