数学建模

     

任务描述:

现假设有N台机器,每台机器的权重为W(n),数据为0-K的范围(其中K远大于N)。

现在每台机器中都有一部分在范围上连续的数据,分别为R(1),R(2)...R(m),每台机器可能包含多个不定长的非连续范围。

需求则是,提供一种算法,使其移动最少量的数据,使全部数据按照权重比例分配在N台机器中,并使每台机器仅包含一个连续的范围段(多个连续的范围段放到一起会合并成一个大的连续的范围段)。

例如,现在有10台机器(A-J代表),每台机器的权重为1,2,3,4,5,6,7,8,9,10。数据范围则是1-10000。 当前每台机器的数据平均分布,分别包含10个不连续的范围段。

主机名 范围1 范围2 范围3 ...
A 1-100 1001-1100 2001-2100 ...
B 101-200 1101-1200 2101-2200 ...
C 201-300 1201-1300 2202-2300 ...
D 301-400 1301-1400 2301-2400 ...
E 401-500 1401-1500 2401-2500 ...
F 501-600 1501-1600 2501-2600 ...
G 601-700 1601-1700 2601-2700 ...
H 701-800 1701-1800 2701-2800 ...
I 801-900 1801-1900 2801-2900 ...
J 901-1000 1901-2000 2901-3000 ...

而计算结果则应当类似(本结果不一定为移动最少数据所需要的结果):

主机名 范围
A 1-181
B 182-546
C 547-1093
D 1094-1822
E 1823-2733
F 2734-3826
G 3827-5101
H 5102-6558
I 6559-8197
J 8198-10000

每个机器仅包含一个连续的范围段,而范围段的范围比例则与每台机器的权重相同,同时需要确保中途所移动的数据量最少。

最笨的方式按照排列组合,遍历所有可能的组合并找到最优的解,其开销为1x2x3...xN,并不可取。该任务的优胜者为提供算法效率最高者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值