作者:佚名
| 发表日期:2007-12-12
| 浏览:171次
| 加入收藏
一:弗罗莱(Fleury)算法
算法步骤如下:
(1):任取一起始节点VS;
(2):设路EE:=[[v1,v2],[v2,v3],....,[vn,vs]]选出,则从G\EE中选边ee,使ee与VS相连,除非没有其它选择,EE不应为G\EE的桥(即去G\EE应保持连通性);
(3):重复步骤(2),直至不能进行下去为止。
具体程序如下:
> Fleury:=proc(G)
> local V,E,ee,VD,i,j,VS,EE;
> VS:=1:EE:=[]:
> for j from 1 to nops(edges(G)) do
> VD:=neighbors(VS,G):
> for i from 1 to nops(VD) do
> ee:=edges({VS,VD[i]},G):
> delete(edges(ee,G),G):
> if connectivity(G)=0 then
> addedge({VS,VD[i]},G):
> if i=nops(VD) then
> RETURN(0):
> fi:
> else
> EE:=[op(EE),[VS,VD[i]]]:
> VS:=VD[i]:
> fi:
> od:
> od:
> RETURN(EE):
> end:
二:中国邮递员问题
解法如下:
(1):找出原图G的所有负节点和正节点;
(2):求出每对负、正节点之间的最短路的权数,并求出最佳配对与附加配对的最短路;
对添加了配对后的最短路的新图,找出一个或若干个欧拉回路,并合理地分配在规定的时间经过的路段。