欢迎来到天天文库
浏览记录
ID:55816029
大小:344.50 KB
页数:53页
时间:2020-06-08
《ACM国际大学生程序设计竞赛系列讲座-通用搜索算法及实现.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ACM国际大学生程序设计竞赛系列讲座--------------通用搜索算法及实现目录1.组合问题的通用搜索算法1.1状态空间树的搜索1.2状态空间的原地搜索和展开搜索1.3基于遍历器的搜索2.优化问题的通用搜索算法2.1加权状态空间树的搜索2.2加权状态空间的原地搜索和展开搜索状态空间树的搜索publicinterfaceNode{intsubnodenum();booleantarget();Nodedown(inti);voidoutput(booleancn);}publicinterfaceMonoextend
2、sNode{Nodeup();}publicclassBacktracking{Monoprob;intnum,bound,dep,level;publicBacktracking(Monop,intb,intd){prob=p;bound=b;dep=d;}publicvoiddepthfirst(){intn=prob.subnodenum();if(prob.target()){prob.output(true);++num;}for(inti=0;num3、!=null){depthfirst();prob.up();}}}N皇后问题publicclassQueens1implementsMono{intn,level;int[]board;PrintWriterout;boolean[]column,d1,d2;publicQueens1(intk,PrintWritero){n=k;board=newint[n];out=o;column=newboolean[n];d1=newboolean[2*n-1];d2=newboolean[2*n-1];}publicNode4、down(inti){Queens1ans=null;if(level5、subnodenum(){returnlevel6、intk=level-1;norm&&k>=0;--k)norm=i!=board[k]&&i+level-k!=board[k]&&i-level+k!=board[k];if(norm){board[level++]=i;ans=this;}returnans;}publicNodeup(){--level;returnthis;}publicintsubnodenum(){returnlevel7、种颜色给无向图的顶点着色,要求相邻顶点颜色不同。求符合条件的一个着色方法。publicclassColorClassimplementsMono{intm,n,level;List[]graph;int[]perm=newint[m];publicbooleantarget(){returnlevel==m;}publicintsubnodenum(){returnlevel8、ns=true;while(ans&&nodes.hasNext()){intk=((Integer)nodes.next()).intValue();ans=k>=level9、10、perm[k]!=i;}if(ans){perm[level++]=i;returnthis;}elsereturnnull
3、!=null){depthfirst();prob.up();}}}N皇后问题publicclassQueens1implementsMono{intn,level;int[]board;PrintWriterout;boolean[]column,d1,d2;publicQueens1(intk,PrintWritero){n=k;board=newint[n];out=o;column=newboolean[n];d1=newboolean[2*n-1];d2=newboolean[2*n-1];}publicNode
4、down(inti){Queens1ans=null;if(level5、subnodenum(){returnlevel6、intk=level-1;norm&&k>=0;--k)norm=i!=board[k]&&i+level-k!=board[k]&&i-level+k!=board[k];if(norm){board[level++]=i;ans=this;}returnans;}publicNodeup(){--level;returnthis;}publicintsubnodenum(){returnlevel7、种颜色给无向图的顶点着色,要求相邻顶点颜色不同。求符合条件的一个着色方法。publicclassColorClassimplementsMono{intm,n,level;List[]graph;int[]perm=newint[m];publicbooleantarget(){returnlevel==m;}publicintsubnodenum(){returnlevel8、ns=true;while(ans&&nodes.hasNext()){intk=((Integer)nodes.next()).intValue();ans=k>=level9、10、perm[k]!=i;}if(ans){perm[level++]=i;returnthis;}elsereturnnull
5、subnodenum(){returnlevel6、intk=level-1;norm&&k>=0;--k)norm=i!=board[k]&&i+level-k!=board[k]&&i-level+k!=board[k];if(norm){board[level++]=i;ans=this;}returnans;}publicNodeup(){--level;returnthis;}publicintsubnodenum(){returnlevel7、种颜色给无向图的顶点着色,要求相邻顶点颜色不同。求符合条件的一个着色方法。publicclassColorClassimplementsMono{intm,n,level;List[]graph;int[]perm=newint[m];publicbooleantarget(){returnlevel==m;}publicintsubnodenum(){returnlevel8、ns=true;while(ans&&nodes.hasNext()){intk=((Integer)nodes.next()).intValue();ans=k>=level9、10、perm[k]!=i;}if(ans){perm[level++]=i;returnthis;}elsereturnnull
6、intk=level-1;norm&&k>=0;--k)norm=i!=board[k]&&i+level-k!=board[k]&&i-level+k!=board[k];if(norm){board[level++]=i;ans=this;}returnans;}publicNodeup(){--level;returnthis;}publicintsubnodenum(){returnlevel7、种颜色给无向图的顶点着色,要求相邻顶点颜色不同。求符合条件的一个着色方法。publicclassColorClassimplementsMono{intm,n,level;List[]graph;int[]perm=newint[m];publicbooleantarget(){returnlevel==m;}publicintsubnodenum(){returnlevel8、ns=true;while(ans&&nodes.hasNext()){intk=((Integer)nodes.next()).intValue();ans=k>=level9、10、perm[k]!=i;}if(ans){perm[level++]=i;returnthis;}elsereturnnull
7、种颜色给无向图的顶点着色,要求相邻顶点颜色不同。求符合条件的一个着色方法。publicclassColorClassimplementsMono{intm,n,level;List[]graph;int[]perm=newint[m];publicbooleantarget(){returnlevel==m;}publicintsubnodenum(){returnlevel8、ns=true;while(ans&&nodes.hasNext()){intk=((Integer)nodes.next()).intValue();ans=k>=level9、10、perm[k]!=i;}if(ans){perm[level++]=i;returnthis;}elsereturnnull
8、ns=true;while(ans&&nodes.hasNext()){intk=((Integer)nodes.next()).intValue();ans=k>=level
9、
10、perm[k]!=i;}if(ans){perm[level++]=i;returnthis;}elsereturnnull
此文档下载收益归作者所有