¿Qué tipo de algoritmo debo usar?

Digamos que tengo cuatro grupos

A [0, 4, 9]

B [2, 6, 11]

C [3, 8, 13]

D [7, 12]

Ahora necesito un número de cada grupo (es decir, un nuevo grupo) E [número de A, número de B, número de C, número de D], de modo que la diferencia entre el número máximo en E y el número mínimo en E debe ser posible menor. ¿Qué tipo de problema es este? ¿Qué algoritmo gráfico será mejor para resolver este tipo de problema? Gracias por adelantado.

P.S: Estoy tratando de resolver esto en java y lo siento por el título no especificado.

Edición: Finalmente he encontrado lo que realmente estoy buscando.http://rcrezende.blogspot.in/2010/08/smallest-relevant-text-snippet-for.html

Respuestas a la pregunta(2)

Su respuesta a la pregunta