max-min fairness 最大最小公平算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了max-min fairness 最大最小公平算法相关的知识,希望对你有一定的参考价值。

     我们总会面临这样的问题,需要给一组用户分配一些稀缺资源,站在资源分配者的角度,他们具有等价的权利获取资源,但实际上,一些用户可能获取较少的资源就能够满足需要,这样看来,他们对资源的获取又不是完全等价的,似乎不适合去平分资源,因此就有了最大最小公平算法


最大最小公平算法定义如下(不带权):

     1、资源按照需求递增的顺序进行分配;

     2、不存在用户获得的资源超过自身的需求;;

     3、对于未满足的用户,等价分享剩余资源;


算法实现逻辑(不带权):

     首先假定用户集合有n个用户,1到n,他们对资源的需求已经排序完毕,满足s1<s2< .... <sn,资源总量为S。

     1、将资源S/n分配给需求最小的1用户,这很可能已经超出了用户1的需求;

     2、将超出的部分回收,再次将(S-s1)/(n-1)的资源分配给用户2,依次次重复上述过程,直到某一次分给该用户的资源不满足该用户的需求;

    

3、假定当分配到第k个用户时,分配到的资源不能达到该用户的需求,那么就将剩下的资源,平均分配给未获得资源的所有用户,至此,分配任务结束。

【还有一种说法,是先将资源整体平分,再从小到大,将超出的资源平分给资源没有得到满足的用户,这两中做法的结果是一致的】


举个栗子:

     有用户组G,该组中有4个用户,资源需求分别为2.4,3.6,4,5,资源总量为10。避免长篇大论,这里直接以图的形式给出。

技术分享

    上面提到的是最基本的分配原则,但实际上往往并不是这么简单,每个用户往往具有不同的权重,因此就有了分配原则的扩展,带权重的最大最小分配原则


最大最小公平算法定义如下(带权):


      1、通过权重实现分配的标准化;

  2、不存在用户得到的资源超过自己的需求;

  3、未得到满足的用户,按照权重共享资源;

    

这里直接举例说明:

    有用户组G,该组中有4个用户,资源需求分别为2,4,4,10,权重分别为4,2.5,1,0.5资源总量为16。

    1、首先对权重进行标准化,将最小权重设置为1,则权重变为8,5,2,1,总和为16。将总资源分为16等分,四个用户分别得到8,5,2,1。

    2、用户1多获得了6份资源,用户2多获得了1份资源,用户3、4资源不满足,因此,将多出来的7份资源再按照权重分配给用户3、4,用户3,4分别再获得7*(2/3)、7*(1/3)份资源;

    3、目前为止,用户3获得6.666份资源,用户4获得3.333,将用户3多出的资源再分配给用户4,完成分配。

   具体过程如下图所示:

技术分享



--------muhuizz整理


本文出自 “暮回” 博客,请务必保留此出处http://muhuizz.blog.51cto.com/11321490/1925330

以上是关于max-min fairness 最大最小公平算法的主要内容,如果未能解决你的问题,请参考以下文章

uvalive 3231 Fair Share 公平分配问题 二分+最大流 右边最多流量的结点流量尽量少。

F. Fairness 分硬币最大差值最小

Performance Modeling of IEEE 802.11 DCF Based Fair Channel Access for Vehicular-to-Roadside Communic

spark的task调度器(FAIR公平调度算法)

java线程 公平锁 ReentrantLock(boolean fair)

RabbitMQ简单应用の公平分发(fair dipatch)