Estoy trabajando en un programa de subprocesos múltiples en el que tengo varios subprocesos de trabajo que realizan tareas de longitud desigual. Quiero equilibrar la carga de las tareas para garantizar que hagan aproximadamente la misma cantidad de trabajo. Para cada tarea T i Tengo un número c i que proporciona una buena aproximación a la cantidad de trabajo que se requiere para esa tarea.Algoritmo heurístico para equilibrar la carga entre subprocesos
Estoy buscando un algoritmo eficiente (O (N) N = número de tareas o mejor) que me dará "aproximadamente" un buen equilibrio de carga dados los valores de c i. No tiene que ser óptimo, pero me gustaría poder tener algunos límites teóricos sobre cuán malas son las asignaciones resultantes.
¿Alguna idea?
¿El conjunto de tareas se conoce con anticipación o se añaden más tareas a medida que avanza? ¿Tiene que preocuparse por la inanición (por ejemplo, una tarea con alta c_i que nunca se ejecuta si se siguen añadiendo tareas c_i bajas)? –
@David: El número de tareas se conocerá de antemano, junto con las estimaciones de su duración. La inanición no es un problema aquí. Básicamente mi objetivo es minimizar el tiempo neto de ejecución –