最優比率生成樹

2021-09-30 03:55:08 字數 1544 閱讀 9212

最優比率生成樹:

已知乙個完全圖,每條邊有兩個引數(dis和c),求一棵生成樹,使(∑xi×ci)/(∑xi×disi)最小,其中xi當第i條邊包含在生成樹中時為1,否則為0。

迭代法:

假設rate為當前比率,以ci-rate×disi作為各邊的權重,使用prim演算法構造最小生成樹,再對該最小生成樹求(∑xi×ci)/(∑xi×disi)更新rate,可證明rate可收斂且收斂值即為所求。

二分法:

在乙個精度範圍內(以1e-6為例),二分查詢[0,maxrate]之間的值rate,使(z=∑xi×ci-rate×∑xi×disi)==0,可證明該值即為所求。其中xi為以ci-rate×disi作為各邊權重時,使用prim演算法所構造的最小生成樹。在二分搜尋過程中若z>0,則將區間上移(low=mid+1),否則將區間下移(high=mid-1)。

使用迭代法,以0作為初始迭代比率:188ms

使用二分法,固定查詢範圍為[0,31],精度為1e-6:1422ms(不知二分法大家都有什麼優化,分享一下吧^_^)

下面介紹一下該題目的解題思路及相關證明:

1、問題轉化:

給定乙個rate,z(rate)=∑xi×ci-rate*∑xi×disi,xi為一棵生成樹使(∑xi×ci-rate*∑xi×disi)的值最小(下面會介紹求此生成樹的方

法),則rate=(∑xi×ci-z(rate))/( ∑xi×disi),令ratenex=(∑xi×ci)/( ∑xi×disi)。

若z(rate)>0,則肯定不存在一棵生成樹使rate=(∑yi×ci)/( ∑yi×disi),即rate值無效,且有ratenex >rate;

若z(rate)<0,則我們可得到乙個有效比率ratenex,且ratenex0

因此,z(rate)為單調遞減函式。從而也就證明了滿足z(rate)==0的比率rate的唯一性。

由上面的分析,我們就將問題轉化為求解比率rate使z(rate)==0。

2、求解:有兩種方法對該問題進行求解:迭代法和二分法。

a、迭代法:由上面的分析可知:

當 z(rate)>0時,rate值無效,而ratenex有效且z(ratenex)<=0;

當z(rate)<0時,ratenex=z(ratenex)>z(rate)。

故迭代過程向z(rate)==0收斂,又由有限節點的完全圖其生成樹只有有限個可知迭代次數必為有限值。

b、二分法:在定出乙個搜尋範圍和精度之後(以[0,maxrate]為例),我們就可以使用二分法進行搜尋:對於當前的搜尋區間[low,high],mid=(low+high)/2,根據z(mid)的值及z(rate)的增減性,對搜尋區間進行更新:

若z(mid)>0,上調區間,使low=mid+1;

若z(mid)<0,下調區間,使high=mid-1;

從而在經過有限次搜尋之後便能找到所求比率。

3、求解生成樹xi使(∑xi×ci-rate*∑xi×disi)的值最小的方法:

∑xi×ci-rate*∑xi×disi=∑xi(ci+rate×disi),從而問題轉化為以ci+rate×disi為邊的權重,求解最小生成樹,對於完全圖,可使用

最優比率生成樹

最優比率生成樹 已知乙個完全圖,每條邊有兩個引數 dis和c 求一棵生成樹,使 xi ci xi disi 最小,其中xi當第i條邊包含在生成樹中時為1,否則為0。迭代法 假設rate為當前比率,以ci rate disi作為各邊的權重,使用prim演算法構造最小生成樹,再對該最小生成樹求 xi c...

最優比率生成樹 最優比例生成樹

2005年的acm地區賽賽場上,樓爺高速過了乙個求最優比率生成樹的問題,從而打亂了全場的陣腳,順利奪冠.有帶權圖g,對於圖中每條邊e i 都有benifit i 收入 和cost i 花費 我們要求的是一棵生成樹t,它使得 benifit i cost i i t 最大 或最小 這顯然是乙個具有現實...

最優比率生成樹 最優比例生成樹

有帶權圖g,對於圖中每條邊e i 都有benifit i 收入 和cost i 花費 我們要求的是一棵生成樹t,它使得 benifit i cost i i t最大 或最小 這顯然是乙個具有現實意義的問題.設x i 等於1或0,表示邊e i 是否屬於生成樹.則我們所求的比率r benifit i x...