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

2021-10-22 04:34:11 字數 1323 閱讀 5681

我們總會面臨這樣的問題,需要給一組使用者分配一些稀缺資源,站在資源分配者的角度,他們具有等價的權利獲取資源,但實際上,一些使用者可能獲取較少的資源就能夠滿足需要,這樣看來,他們對資源的獲取又不是完全等價的,似乎不適合去平分資源,因此就有了最大最小公平演算法。

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

1、資源按照需求遞增的順序進行分配;

2、不存在使用者獲得的資源超過自身的需求;;

3、對於未滿足的使用者,等價分享剩餘資源;

演算法實現邏輯(不帶權):

首先假定使用者集合有n個使用者,1到n,他們對資源的需求已經排序完畢,滿足s11、將資源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,完成分配。

具體過程如下圖所示:

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

我們經常面臨給一組使用者劃分稀有資源的問題,他們都享有等價的權利來獲取資源,但是其中一些使用者實際上只需要比其他使用者少的資源.那麼我們如何來分配資源呢?一種在實際中廣泛使用的分享技術稱作 最大最小公平分享 直觀上,公平分享分配給每個使用者想要的可以滿足的最小需求,然後將沒有使用的資源均勻的分配給需...

曾經最開心,曾經最掏心

曾經一路聊過來的朋友,現在還剩幾個,自己都不忍心去想這個問題,說他們背叛,也沒這麼言重,所以心裡總是有點不安,只好強悍。在特定的環境,那時情緒的我對於愛是很簡單,但也沒那麼簡單,愛過之後才發現變得實際也許好,也許壞各一半,以前不愛孤單,但是久了也會很習慣了。這樣就不用擔心誰,也不怕被誰管。快樂了就做...

php最簡單最基礎入門筆記

偶然翻到之前剛學php時記錄的筆記,特此分享給大家,希望對初學者有所幫助。php網頁命名不支援中文 isset abc 判斷變數是否被定義 empty abc 判斷變數是否為空 unset abc 取消變數的定義 a b a 123 echo a 同 echo b 常量無 符號,pi 3.14159...