分數規劃整理

2022-05-03 10:01:41 字數 1008 閱讀 2935

分數規劃問題,是指這樣一類問題:

要求f(x)/g(x)的最值,其中f(x),g(x)都是線性函式,而其中被研究的最多的是0-1分數規劃,即求這樣的乙個式子的極值

r=(∑(ci*xi))/(∑(di*xi)),其中xi∈

我們可以把這個式子變換一下

z=(∑(ci*xi))-r'*(∑(di*xi)),其中z是左邊這個式子的最大(小)值

由於di為正數,xi為非負數,所以

r'>r 時 z(r')<0

r'=r 時 z(r')=0

r'0易證z函式嚴格單調遞減,那麼我們可以二分r',直到z(r')=0,此時r'=r,問題得解

ps:z函式也是凸函式

除了二分,還有一種

演算法叫dinkelbach演算法

每次將r'代入z函式中計算以後,我們將得到一組x

讓r''=(∑(ci*xi))/(∑(di*xi))

當r''=r'時,r''就是我們需要的解

否則將r'=r'',繼續迭代

這種方法比二分法要快一點

poj 2728

大意:給定每條邊的距離和代價,求一棵生成樹使得代價和/距離和最小

這是一道最優比率生成樹的題目,是個很明顯的0-1分數規劃,設每條邊代價為ci,距離為di

則題目要求(∑(ci*xi))/(∑(di*xi))的最小值

那麼二分這個最小值,將這個式子化成xi(ci-r'*di)的形式

,每條邊的權值變成ci-r'*di

對於這些邊,求一棵最小生成樹,mst的值即為z(r')

hnoi2009 最小圈

題目大意是給定乙個無向圖,定義環的平均值為環上的邊權和/邊數,求出最小的環平均值

這道題雖然看上去不像分數規劃,但是巧妙地應用了分數規劃的思想

二分這個平均值,然後對每條邊,重新把它的權值賦為(原權值-二分值)

如果存在某乙個環,他的平均值剛好是二分的值,那麼新的邊權和是0

如果環的平均值小於二分值,那麼圖中將出現負環,上界可縮小

否則需將下界變大

分數規劃小結

給定數列 求解一組數列 x i 使得 fracna i x i nb i x i 最大化。只要有未知量相除,都是這玩意兒 主要是二分答案。設二分出的值為 mid 則應有 fracna i x i nb i x i geq mid 化化式子 sum na i x i geq mid sum nb i ...

分數規劃總結

其實這只是乙個用來轉換問題模型的乙個套路,沒有固定的模板什麼的。有一堆東西,每個東西有兩個值 a i,b i 在這些物品中選一些,使得 sum a i over sum b i 最大 設最大值為a 則 a 即 sum a i a sum b i 0 對於每乙個a,試著找乙個選擇方案 即選擇一組恰當的...

劃分數 動態規劃

題目 有n個無區別的物品,將它們劃分成不超過m組,求出劃分方法數模m的餘數。限制條件 1 m n 1000 2 m 10000 輸入 n 4 m 3m 10000 輸出 4 dp i j j的i劃分的總數 遞推關係 遞推關係的難點在於不重複。我們採用一種標準將問題化為子問題,這個標準需要用到一種新的...