El corte con guillotina es el proceso de producir formas rectangulares pequeñas de dimensiones fijas a partir de una hoja rectangular grande determinada, utilizando únicamente cortes de guillotina. Un corte con guillotina (también llamado corte de borde a borde) es una línea bisectriz recta que va desde un borde de un rectángulo existente hasta el borde opuesto, de manera similar a lo que hace una guillotina para papel.

El corte con guillotina es particularmente común en la industria del vidrio. Las láminas de vidrio se marcan en líneas horizontales y verticales y luego se rompen según estas líneas para obtener paneles más pequeños. El procedimiento también es útil para cortar placas de acero, cortar láminas de madera para fabricar muebles, y para cortar el cartón empleado en la fabricación de cajas.

Existen varios problema de optimización relacionados con el corte con guillotina, tales como maximizar el área total de las piezas producidas o su valor total; o también minimizar la cantidad de desperdicios (partes no utilizadas) de la hoja grande, o el número total de hojas. Se han estudiado en geometría discreta, investigación de operaciones e ingeniería industrial.Gerhard Wäscher, Heike Haußner, Holger Schumann, An improved typology of cutting and packing problems, European Journal of Operational Research 183 (2007) 1109–1130,

Un problema relacionado pero diferente es la partición con guillotina. En este problema, las dimensiones de los rectángulos pequeños no están fijadas de antemano. El desafío surge del hecho de que la hoja original puede no ser rectangular, sino que puede ser cualquier polígono rectilíneo. En particular, podría contener agujeros (que representan defectos en la materia prima). El objetivo de optimización suele ser minimizar el número de rectángulos pequeños o minimizar la longitud total de los cortes.

Terminología y supuestos Los siguientes términos y notaciones se utilizan a menudo en la literatura sobre corte con guillotina.

El rectángulo grande, también llamado hoja común, es la hoja rectangular en bruto que se debe cortar. Se caracteriza por su ancho W0 y alto H0, que son las entradas principales del problema. Los rectángulos pequeños, también llamados elementos, son las salidas requeridas del corte. Se caracterizan por su ancho wi y alto hi y por i en 1,...,m, donde m es el número de rectángulos. A menudo se permite tener varios rectángulos de las mismas dimensiones; en este caso, el par de dimensiones (wi,hi) suele denominarse tipo. Un patrón de corte, a menudo llamado simplemente patrón, es una disposición de pequeños rectángulos en la hoja de material. Puede darse como una secuencia de puntos (xi,yi), para i en 1,...,m, donde (xi,yi' ') es la coordenada inferior izquierda del rectángulo i. En tal patrón, el rectángulo i ocupa un segmento horizontal (xi, xi+wi) y un segmento vertical (yi, yi +hi). Una construcción se refiere a generar un nuevo rectángulo uniendo dos rectángulos más pequeños. Debido a la restricción de la guillotina, solo hay dos tipos de construcciones: en una construcción horizontal, el rectángulo combinado tiene un ancho wi+wj y una altura máxima(hi, hj); en una construcción vertical, el rectángulo combinado tiene un ancho máximo(wi,wj) y una altura hi+hj. Cada patrón se puede representar como una secuencia recursiva de construcciones, que corresponde a muchos patrones diferentes, que tienen una estructura combinatoria equivalente. El conjunto de todos los patrones correspondientes a la misma construcción recursiva se denomina "clase de corte de guillotina".

Algunos problemas aceptan entradas adicionales, como se explica a continuación. El objetivo es cortar del rectángulo en bruto algunos rectángulos más pequeños que tengan las dimensiones deseadas. A menudo se hacen las siguientes suposiciones:

Todos los cortes tienen ancho cero. Esto no supone mucha pérdida de generalidad, ya que si cada corte tiene un ancho fijo de d>0, entonces el problema se puede reducir a la variante de ancho cero simplemente agregando d a wi y hi para i en 0,...,m. Las dimensiones de destino no se pueden rotar, es decir, w-by-h no es el mismo tipo que h-by-w. Esto tampoco supone una pérdida de generalidad significativa, ya que la variante en la que los rectángulos se pueden rotar se puede reducir a la variante no rotativa agregando explícitamente los patrones rotados.

Comprobación de un patrón dado En el problema de verificación de patrones, hay un patrón de corte dado como una secuencia de puntos (xi,yi), para i en 1,...,m, donde (xi,yi) es la coordenada inferior izquierda del rectángulo i (hay un único rectángulo de cada dimensión objetivo). El objetivo es decidir si este patrón se puede implementar utilizando únicamente cortes de guillotina y, de ser así, encontrar una secuencia para dichos cortes.

Una condición necesaria obvia es que no se superpongan dos rectángulos de entrada en ambas dimensiones. Ben Messaoud, Chengbin y Espinouse fijaron una condición más fuerte, que es a la vez necesaria y suficiente. Los rectángulos de entrada están ordenados de izquierda a derecha, de modo que x1 = ... = xm. Existe una permutación p sobre los índices tal que, con esta permutación, los rectángulos quedarían ordenados de abajo hacia arriba, es decir, yp(1) = ... = yp(m). Dados cuatro índices i1 = i2 y j1 = j2, el conjunto E(i1,i2,j1,j2) contiene los índices de todos los rectángulos cuya esquina inferior izquierda está en el rectángulo [xi1,xi2] X [yp(j1),yp(j2)]. Un patrón de corte es un patrón de guillotina si y solo si, para todas las cuaternas de índices i1 = i2 y j1 = j2, al menos se cumple una de las siguientes condiciones para E(i1,i2,j1,j2):

E(i1,i2,j1,j2) contiene como máximo un elemento La unión de los segmentos horizontales (xi, xi+wi), sobre todas las i en E(i1,i2 ,j1,j2), se compone de al menos dos intervalos disjuntos La unión de los segmentos verticales (yi, yi+hi), sobre todas las i en E(i1,i2 ,j1,j2), se compone de al menos dos intervalos disjuntos.

La condición 2 implica que los rectángulos en E(i1,i2,j1,j2) pueden separarse mediante un corte vertical (que va entre los dos intervalos horizontales). La condición 3 implica que los rectángulos en E(i1,i2,j1,j2) se pueden separar mediante un corte horizontal. Todas las condiciones juntas implican que, si cualquier conjunto de rectángulos adyacentes contiene más de un elemento, entonces pueden separarse mediante algún corte con guillotina.

Esta condición se puede verificar mediante el siguiente algoritmo:

En cada iteración, divídase un patrón determinado, que contenga al menos dos rectángulos, en dos subpatrones separados usando un corte de guillotina y repítase en cada subpatrón. Deténgase cuando todos los subpatrones contengan un rectángulo (en cuyo caso la respuesta es "sí") o no sean posibles más cortes de guillotina (en cuyo caso la respuesta sea "no").

Encontrar un corte con guillotina para un patrón determinado se realiza de la siguiente manera:

Determinar los intervalos horizontales m y ordenarlos de izquierda a derecha; determinar los intervalos verticales m y ordenarlos de abajo hacia arriba. Esto requiere un tiempo de cálculo de O(m log m). Fusionar intervalos horizontales superpuestos y fusionar intervalos verticales superpuestos. Esto requiere un tiempo O(m). Si, después de la fusión, quedan al menos dos intervalos horizontales separados, entonces es posible un corte con guillotina vertical; si hay al menos dos intervalos verticales separados, entonces es posible un corte horizontal; de lo contrario no será posible realizar ningún corte.

La ordenación de los pasos se realiza una vez y el paso de fusión se realiza m-1 veces. Por lo tanto, el tiempo de ejecución de todo el algoritmo es O(m2).

Cuando el algoritmo devuelve "sí", también produce una secuencia de cortes de guillotina; cuando devuelve "no", también produce subconjuntos específicos de rectángulos que no pueden separarse mediante cortes con guillotina.

La condición necesaria y suficiente se puede utilizar para presentar el problema de corte de tiras con guillotina como programa lineal entero mixto. Su modelo tiene 3n4/4 variables binarias y 2n4 restricciones, y no se considera útil en la práctica.

Encontrar un patrón de corte óptimo Estas son variantes de los problemas bidimensionales de corte de material, empaquetado en contenedores y empaquetado de rectángulos, donde los cortes están obligados a ser cortes con guillotina.

En el problema de corte con guillotina básico ("no ponderado"), el resultado requerido es una secuencia de cortes que producen piezas de las dimensiones objetivo, de manera que se maximiza el área total de las piezas producidas (equivalentemente, que se minimicen los desechos del proceso). En la variante ponderada, para cada dimensión objetivo i, también hay un valor vi. El objetivo es entonces maximizar el valor total de las piezas producidas. La variante no ponderada (minimización de residuos) se puede reducir a la variante ponderada haciendo que el valor de cada dimensión objetivo sea igual a su área (vi = hi * wi). En la variante restringida, para cada dimensión objetivo i, hay un límite superior bi en el número de piezas que se pueden producir de ese tipo. En la variante doblemente restringida, para cada dimensión objetivo i hay un límite inferior ai y un límite superior bi en el número de piezas producidas. La variante binaria es una variante restringida en la que cada dimensión de destino debe aparecer como máximo una vez (es decir, el límite superior es 1). Este caso está asociado con un problema de decisión, donde el objetivo es decidir si es posible producir un solo elemento de cada dimensión objetivo mediante cortes de guillotina. En el problema del corte de tiras con guillotina, el rectángulo grande tiene una altura infinita (pero un ancho fijo), y el objetivo es cortar un solo rectángulo de cada tipo, de modo que el material total utilizado (equivalentemente, la altura total) se minimice. Es una variante del Problema de empaquetado en tiras bidimensional. En el problema de minimización de material, hay un número infinito de hojas de material de las mismas dimensiones y el objetivo es cortar todos los rectángulos objetivo necesarios utilizando el menor número posible de hojas. Es una variante del problema de empaquetado en contenedores bidimensional. El corte con guillotina en k etapas es una variante restringida del corte con guillotina, en la que el corte se realiza como máximo en k etapas: en la primera etapa, solo se realizan cortes horizontales; en la segunda etapa solo se realizan cortes verticales; etcétera. En la variante de 2 etapas, otra distinción es si todas las tiras resultantes de la primera etapa se cortan en los mismos lugares (llamados "1 grupo") o en dos lugares diferentes (llamados "2 grupos") o en posiblemente diferentes ubicaciones (llamadas "libres").1-corte con guillotina simple es una variante restringida del corte de guillotina en la que cada corte separa un solo rectángulo. Un 2-corte con guillotina simple es un patrón de 1 simples, de modo que cada parte es en sí mismo un patrón de p 1-cortes simples: los patrones de corte simples se pueden definir de forma recursiva.

Algoritmos de optimización El caso especial en el que solo hay un tipo (es decir, todos los rectángulos objetivo son idénticos y están en la misma orientación) se denomina problema de "carga de palet con guillotina". Tarnowski, Terno y Scheithauer idearon un algoritmo de tiempo polinomial para resolverlo.

Sin embargo, cuando hay dos o más tipos, todos los problemas de optimización relacionados con el corte con guillotina son NP-hard. Debido a su importancia práctica, se han ideado varios algoritmos exactos y algoritmos de aproximación.