Planificar trabajos en una máquina
Esta tarea trata de hallar un plan óptimo para trabajos en una sola máquina, si el trabajo se puede procesar en tiempo , pero por los segundos de espera antes de procesar el trabajo hay que pagar una penalización de .
Así, la tarea pide hallar una permutación de los trabajos tal que la penalización total sea mínima. Si denotamos por la permutación de los trabajos ( es el primer ítem procesado, el segundo, etc.), entonces la penalización total es igual a:
Soluciones para casos especiales
Funciones de penalización lineales
Primero resolveremos el problema en el caso de que todas las funciones de penalización son lineales, es decir, tienen la forma , donde es un número no negativo. Nótese que estas funciones no tienen un término constante. En caso contrario podemos sumar todos los términos constantes, y resolver el problema sin ellos.
Fijemos alguna permutación , y tomemos un índice . Sea la permutación igual a la permutación con los elementos e intercambiados. Veamos cuánto cambió la penalización.
Es fácil ver que los cambios solo ocurren en los sumandos -ésimo e -ésimo:
\begin{align} &= c_{\pi_i'} \cdot \sum_{k = 1}^{i-1} t_{\pi_k'} + c_{\pi_{i+1}'} \cdot \sum_{k = 1}^i t_{\pi_k'} - c_{\pi_i} \cdot \sum_{k = 1}^{i-1} t_{\pi_k} - c_{\pi_{i+1}} \cdot \sum_{k = 1}^i t_{\pi_k} \ &= c_{\pi_{i+1}} \cdot \sum_{k = 1}^{i-1} t_{\pi_k'} + c_{\pi_i} \cdot \sum_{k = 1}^i t_{\pi_k'} - c_{\pi_i} \cdot \sum_{k = 1}^{i-1} t_{\pi_k} - c_{\pi_{i+1}} \cdot \sum_{k = 1}^i t_{\pi_k} \ &= c_{\pi_i} \cdot t_{\pi_{i+1}} - c_{\pi_{i+1}} \cdot t_{\pi_i} \end{align}
Es fácil ver que si el plan es óptimo, entonces cualquier cambio en él lleva a una penalización aumentada (o a la penalización idéntica); por lo tanto para el plan óptimo podemos escribir la siguiente condición:
Y tras reordenar obtenemos:
Así obtenemos el plan óptimo simplemente ordenando los trabajos por la fracción en orden no creciente.
Cabe señalar que construimos este algoritmo por el llamado método de permutaciones: intentamos intercambiar dos elementos adyacentes, calculamos cuánto cambió la penalización, y luego derivamos el algoritmo para hallar el método óptimo.
Función de penalización exponencial
Sea que la función de penalización se ve así:
donde todos los números son no negativos y la constante es positiva.
Aplicando el método de permutaciones, es fácil determinar que los trabajos deben ordenarse en orden no creciente del valor:
Función de penalización monótona idéntica
En este caso consideramos el caso de que todas las son iguales, y esta función es monótona creciente.
Es obvio que en este caso la permutación óptima es disponer los trabajos por tiempo de procesamiento no decreciente.
El teorema de Livshits-Kladov
El teorema de Livshits-Kladov establece que el método de permutaciones solo es aplicable para los tres casos mencionados arriba, es decir:
- Caso lineal: , donde son constantes no negativas,
- Caso exponencial: , donde y son constantes positivas,
- Caso idéntico: , donde es una función monótona creciente.
En todos los demás casos el método no se puede aplicar.
El teorema se demuestra bajo el supuesto de que las funciones de penalización son suficientemente suaves (existen las terceras derivadas).
En los tres casos aplicamos el método de permutaciones, mediante el cual el plan óptimo deseado se puede hallar por ordenamiento, de ahí en tiempo .