有一四个用户的集合,资源需求分别是2,2.6,4,5,其资源总能力为10,为其计算最大最小公平分配:算法
解决方法:咱们经过几轮的计算来计算最大最小公平分配.第一轮,咱们暂时将资源划分红4个大小为2.5的.因为这超过了用户1的需求,这使得剩了0.5个均匀的分配给剩下的3我的资源,给予他们每一个2.66.这又超过了用户2的需求,因此咱们拥有额外的0.066…来分配给剩下的两个用户,给予每一个用户2.5+0.66…+0.033…=2.7.所以公平分配是:用户1获得2,用户2获得2.6,用户3和用户4每一个都获得2.7.资源
算法思想:在知足的最小需求的状况下,而后将没有使用的资源均匀的分配给须要‘大资源’的用户。get
有一四个用户的集合,资源需求分别是4,2,10,4,权重分别是2.5,4,0.5,1,资源总能力是16,为其计算最大最小公平分配.it
解决方法:第一步是标准化权重,将最小的权重设置为1.这样权重集合更新为5,8,1,2.这样咱们就伪装须要的资源不是4份而是5+8+1+2=16份.所以将资源划分红16份.在资源分配的每一轮,咱们按照权重的比例来划分资源,所以,在第一轮,咱们计算C/n为16/16=1.在这一轮,用户分别得到5,8,1,2单元的资源,用户1获得了5个资源,可是只须要4,因此多了1个资源,一样的,用户2多了6个资源.用户3和用户4拖欠了,由于他们的配额低于需求.如今咱们有7个单元的资源能够分配给用户3和用户4.他们的权重分别是1和2,最小的权重是1,所以不须要对权重进行标准化.给予用户3额外的7 × 1/3单元资源和用户4额外的7 × 2/3单元.这会致使用户4的配额达到了2 + 7 × 2/3 = 6.666,超过了需求.因此咱们将额外的2.666单元给用户3,最终得到1 + 7/3 + 2.666 = 6单元.最终的分配是,4,2,6,4,这就是带权的最大最小公平分配.class