算法设计与分析书中程序(第09章)

算法设计与分析书中程序(第09章)

ID:14308313

大小:796.50 KB

页数:9页

时间:2018-07-27

算法设计与分析书中程序(第09章)_第1页
算法设计与分析书中程序(第09章)_第2页
算法设计与分析书中程序(第09章)_第3页
算法设计与分析书中程序(第09章)_第4页
算法设计与分析书中程序(第09章)_第5页
资源描述:

《算法设计与分析书中程序(第09章)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、【程序9-1】分枝限界算法templatestructNode{Tcost;Node*parent;//状态空间树采用树的双亲表示法,parent是指向其双亲的指针};templatevoidBranchBound(Node*t){//t是指向状态空间树的根结点指针LiveList*>lst(mSize);//lst为活结点表,表中元素为指针类型Node*x,*E=t;//E指向根结点tdo{//为方便起见,以下描述中不区分指针与其所指示的结点,用指针代表所指示的结点for(对结点E的每个不受限的孩子){x=

2、newNode;x->parent=E;//构造E的孩子结点xif(x是一个答案结点){输出从x到t的一条路径;return;//输出一个解后算法终止}lst.Append(x);//指向活结点的指针x进活结点表}if(lst.IsEmpty()){cout<<"没有答案结点";return;//搜索失败终止}lst.Serve(E);//从lst输出一个活结点为E-结点}while(1);}【程序9-2】基于上下界函数的FIFO分枝限界法templateNode*FIFOBB(Node*t,T&U){//t是指向状态树根指针,U的初值应大

3、于最优解值,U返回最优解值//函数返回答案结点指针ansLiveList*>lst(mSize);//lst为FIFO队列Node*ans=NULL,*x,*E=t;//ans指向答案结点,E为扩展结点do{for(对结点E的每个孩子){//所有满足约束条件的孩子x=newNode;x->parent=E;//构造E的孩子结点xif((x)

4、{U=cost(x);ans=x;}·207·elseif(u(x)+eNode*LCBB(Node*t,T&U){LiveList*>lst(mSize);//lst为优先权队列Node*

5、ans=NULL,*x,E=*t;do{for(对结点E的每个孩子){//所有满足约束函数的孩子x=newNode;x->parent=E;//构造E的孩子结点xif((x)

6、活结点Eif((E)≥U)returnans;//若(E)≥U,则算法结束}elsereturnans;//若队列为空,则算法结束}while(1);}【程序9-4】带时限的作业排序structNode{//状态空间树结点结构Node(Node*par,intk){parent=par;j=k;}Node*parent;//指向该结点的双亲结点intj;//该结点代表的解分量x[i]=j};templatestructqNode{//活结点表中的活结点结构qNode(){}qNode(Tp,Tlos,intsd,intk,Node*pt){prof=p

7、;loss=los;d=sd;ptr=pt;j=k;}Tprof,loss;//当前结点X的下界函数(X)=loss,上界函数u(X)=24-profintj,d;//当前活结点所代表的解的分量x[i]=j,d是迄今为止的时间Node*ptr;//指向状态空间树中相应的结点};templateclassJS{public:JS(T*prof,int*de,int*time,intsize);TJSFIFOBB();//求最优解值voidGenerateAns(int*x,int&k);//一维数组x为最优解向量,k中返回x的分量数·2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。