Encajar rectángulos juntos de manera óptima

Me preguntaba si alguien sabe de algún algoritmo adecuado para unir N número de rectángulos de tamaño desconocido en el rectángulo contenedor más pequeño posible.

Por óptimo quiero decir con reducir la cantidad de espacio en blanco que queda en el rectángulo que contiene resultante.

Me gustaría usar esto para generar sprites CSS a partir de una serie de imágenes.

Muchas gracias,

Ian

Respuestas a la pregunta(4)

Su respuesta a la pregunta