Que tipo de algoritmo devo usar?

Vamos dizer que eu tenho quatro grupos

A [0, 4, 9]

B [2, 6, 11]

C [3, 8, 13]

D [7, 12]

Agora eu preciso de um número de cada grupo (ie um novo grupo) E [num de A, num de B, num de C, num de D], tal que a diferença entre o número máximo em E e o número mínimo em E deve ser possível menor.Que tipo de problema é este? qual algoritmo gráfico será melhor para resolver este tipo de problema? Desde já, obrigado.

P.S: Estou tentando resolver isso em java e desculpe pelo título não especificado.

Edit: Finalmente eu encontrei o que eu realmente estou procurandohttp://rcrezende.blogspot.in/2010/08/smallest-relevant-text-snippet-for.html

questionAnswers(2)

yourAnswerToTheQuestion