最优比例生成树问题

1.问题定义

   我们设一个顶点数为n,边数为m的无环连通图G,其中ci表示是花费的代价,bi表示表示获取的利润,计算

[转载]最优比率生成树-分数规划的应用

,T为G的一个生成树。这个问题就是解决最优比例生成树的问题。在实际问题当中,我们会经常遇到如修建道路要考虑收益和开销,使得代价比最小的问题。


2.理论基础

    原问题本质是一个分数规划问题,设矩阵X在集合{0,1}中取值,当边i在生成树中时xi=1,于是我们可以转化为求下式的最小值

[转载]最优比率生成树-分数规划的应用

在解决该问题前我们按照分数规划的思想提出一个子问题,设

[转载]最优比率生成树-分数规划的应用

 我们定义z(l)可以表示为(c-l*bi)为边i的权值的图所生成的最小生成树的权值和。我们可以证明z(l)为单调递减函数,同时当z(l)=0时,l值的值最小,即我们可求的r(x)的最小值。


3.二分求解

(1)给出比率的上下限,high和low;

(2)求出mid = (high+low)/2;

(3)通过求最小生成树的算法求出z(mid),如果z(mid)=0,则mid为最后的结果;如果z(mid)<0,则(mid,high)区间不存在答案,调整high=mid,转向(2);如果z(mid)>0,则(low,mid)区间不存在答案,调整low=mid,转向(2);

其中上界的确定我们可以设一个无法达到的最大值使high为下式:

[转载]最优比率生成树-分数规划的应用

 

4.实例

[转载]最优比率生成树-分数规划的应用

               [转载]最优比率生成树-分数规划的应用

                [转载]最优比率生成树-分数规划的应用
               [转载]最优比率生成树-分数规划的应用
                [转载]最优比率生成树-分数规划的应用

最后答案为

[转载]最优比率生成树-分数规划的应用


展开阅读全文

生成树问题

10-28

这个是一个树,但是运行的时候总是出问题,对于 //$mysql .= "WHERE UPCODE = $upcode AND PRODUCTDWGCODE = $productdwgcode";总是提示不能解析,也许是因为变量无从取值的原因,如果是这样的话,我是不是需要在前面定义一个变量才可以呢? rnrn还有现在下面提示出来的错误是没有用上述语句时提示出来的错误,不知道我哪里出现了问题。我现在用的是php4+oracle9进行的开发,如果可以请赐教! rnrn如果错误 请指名思路那里的问题! rn还有想问一下这样的一个思路对不对?能否实现这样的功能?rnrn"; rn $upcode = $v["DCODE"]; rn echo $code; rn getNode($upcode,$node_level+1); rn rn rn rn rnrninclude 'include/pdmdblogon.php'; rnrnif(!$conn) rn echo "注意:当前无法连接PDM数据库。";//连接错误提示 rn exit; rnrn$mysql = "SELECT UPCODE,UPNAME,DITEM,DCODE,DNAME,PRODUCTDWGCODE FROM XTDETAMSALL_DETAIL"; rn//$mysql .= "WHERE UPCODE = $upcode AND PRODUCTDWGCODE = $productdwgcode"; rn$mysql .= "WHERE UPCODE = PRODUCTDWGCODE"; rn$smyql .= "ORDER BY DITEM"; rn$stmt = ociparse($conn,$mysql); rn if(!$stmt) rn rn echo "ERROR - Could not parse SQL statement."; rn exit; rn rnociexecute($stmt); rn$result[] = ocifetchinto($stmt,$row,OCI_ASSOC); rnif($result["UPCODE"]=$result["PRODUCDWGCODE"]) rn rn getNode($result["UPCODE"],$node_level); rn rnWarning: ociexecute(): OCIStmtExecute: ORA-00933: SQL 命令未正确结束 in d:\myweb\a\dinge\tree.php on line 140 rnrnWarning: ocifetchinto(): OCIFetchInto: ORA-24374: 在读取或执行并读取之前没有完成定义 in d:\myweb\a\dinge\tree.php on line 141 rn 论坛

没有更多推荐了,返回首页