算法之分支限界法实现

算法之分支限界法实现

ID:39528134

大小:92.24 KB

页数:17页

时间:2019-07-05

算法之分支限界法实现_第1页
算法之分支限界法实现_第2页
算法之分支限界法实现_第3页
算法之分支限界法实现_第4页
算法之分支限界法实现_第5页
资源描述:

《算法之分支限界法实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验5分支限界法实现一、实验目标:1. 熟悉分支限界法应用场景及实现的基本方法步骤;2. 学会分支限界法的实现方法和分析方法: 二、实验内容1.n后问题:编程计算当n=1到8时解的个数,分别利用回溯法和分支限界法实现,比较并分析你的算法效率。回溯法:代码:#include#includeusingnamespacestd;//法一:迭代回溯classQueen{friendintnQueen(int);private:boolPlace(intk);voidBacktrack(intt

2、);intn;//皇后个数int*x;//当前解intsum;//当前已找到的可行方案数};boolQueen::Place(intk){for(intj=1;j

3、

4、(x[j]==x[k]))returnfalse;}returntrue;}voidQueen::Backtrack(intt){if(t>n)sum++;elsefor(inti=1;i<=n;i++){x[t]=i;if(Place(t))Backtrack(t+1);}}int

5、nQueen(intn){QueenX;//初始化XX.n=n;X.sum=0;int*p=newint[n+1];for(inti=0;i<=n;i++)p[i]=0;X.x=p;X.Backtrack(1);delete[]p;returnX.sum;}intmain(){cout<<"共有"<#includeusingnamespacestd;cl

6、assQueen{friendintnQueen(int);private:boolPlace(intk);voidredu(intt);intn;//皇后个数int*x;//当前解intsum;//当前已找到的可行方案数};//剪枝函数//判断当前状态是否合理,即皇后会不会互相攻击boolQueen::Place(intk){for(intj=1;j

7、

8、(x[j]==x[k]))returnfalse;}//所有皇后都不会互相攻击returnt

9、rue;}intnQueen(intn){QueenX;//初始化XX.n=n;X.sum=0;int*p=newint[n+1];for(inti=0;i<=n;i++)p[i]=0;X.x=p;X.redu(1);delete[]p;returnX.sum;}voidswap(int&a,int&b){intt=a;a=b;b=t;}voidQueen::redu(intt){if(t>n)sum++;elsefor(inti=1;i<=n;i++){x[t]=i;if(Place(t))redu(t+1);}}i

10、ntmain(){cout<<"共有"<usingnamespacestd;#definemaxint10000//n为节点个数,v为源节点,dist为源节点到其他节点距离数组,//prev为源节点到顶点i的最短路径上的前一个节点,c为个节点之间的距离数组voidDij

11、kstra(intn,intv,intdist[],intprev[],int**c){//顶点集合Sbools[maxint];for(inti=1;i<=n;i++){//源节点到各节点的距离记录dist[i]=c[v][i];//S初始化为空s[i]=false;if(dist[i]==maxint)//不可达prev[i]=0;elseprev[i]=v;}//源节点初始化dist[v]=0;s[v]=true;//核心算法for(inti=1;i

12、r(intj=1;j<=n;j++){//寻找距离最小而且不在S中的节点if(!s[j]&&(dist[j]

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

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

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