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。避免長篇大論,這裏直接以圖的形式給出。

wKioL1kW7K7xbi7OAABCMXns3kA763.png

    上面提到的是最基本的分配原則,但實際上往往並不是這麼簡單,每個用戶往往具有不同的權重,因此就有了分配原則的擴展,帶權重的最大最小分配原則


最大最小公平算法定義如下(帶權):


      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,完成分配。

   具體過程如下圖所示:

wKioL1kW7K-CLjXbAABGjSRq5nk388.png



--------muhuizz整理


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章