我应该使用什么类型的算法?

use*_*525 7 algorithm graph nodes

可以说我有四个小组

A [0,4,9]

B [2,6,11]

C [3,8,13]

D [7,12]

现在我需要每组中的一个数字(即一个新组)E [A的数量,B的数量,C的数量,D的数量],这样E中的最大数量和E中的最小数量之间的差值应该是可能最低.这是什么类型的问题?哪种图形算法能更好地解决这类问题?提前致谢.

PS:我正试图在java中解决这个问题并且对于未指定的标题感到抱歉.

编辑:最后我找到了我真正想要的东西http://rcrezende.blogspot.in/2010/08/smallest-relevant-text-snippet-for.html

Evg*_*uev 4

  1. 将每个组的内容合并到一个数组中。数组的每个元素应该是一对(数字,组名称)。
  2. 按数字对该数组进行排序。
  3. 一个接一个地推进两个迭代器。当并非每个组的元素都位于这些迭代器之间时,移动第一个迭代器。当这些迭代器之间存在每个组的元素时,移动第二个迭代器。详细信息请参阅这个问题
  4. 迭代器之间的最小距离决定了最佳结果组(当同一组有多个代表时,您只需要删除不需要的元素)。

其他算法:

  1. 对每个组的元素进行排序(如果尚未排序)。
  2. 将每个组的最小元素的一对(数字,组名称)放入优先级队列(最小堆,优先级=数字)。
  3. 从队列中删除最小的元素,并将其替换为同一组中的下一个元素。
  4. 重复步骤3,直到某个组中不再有元素为止。计算每次迭代的 max(queue) - min(queue),如果它小于任何先前的值,则更新迄今为止最好的结果组。