上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 24 下一页
摘要: line void LC(tree T,float cost) {//为找一个答案结点检索T0 if(T是答案结点) {输出T;return;}1 E=T; //E-结点2 将活结点表初始化为空;3 while(1) {4 for(E的每个子结点X) {5 if(X是答案结点) {输出从X到T的路径;6 return;7 };//endif8 Add(X); //X是新的活结点9 Parent(X)=E; //指示到根的路径10 };//for11 if(不再有活结点) { print(‘no answer node’);12 stop;13 };//if14 Least(E) ;15 } / 阅读全文
posted @ 2013-11-15 12:35 技术让梦想更伟大 阅读(2588) 评论(0) 推荐(0) 编辑
摘要: 问题:检索4-皇后问题的状态空间树如下图的基本过程。(4-皇后问题解空间的树结构,结点按深度优先检索编号) 如果按序扩展这些结点,则下一个E-结点就是结点2。扩展结点2后生成结点3,8和13。利用限界函数(同行、列、对角线上只能放置1个皇后),结点3(放在第二列)立即被杀死。于是,仅将结点8和13加到活结点队列。结点18变成下一个E-结点,生成结点19(放在第一列),24(放在第三列)和29(放在第四列),限界函数杀死结点19和24,结点29被加到活结点队列。下一个E-结点是34,…。 下图显示了由FIFO分枝_限界检索生成图7.1所示的树的一部分(由FIFO分枝-限界法生成的4-皇后问题.. 阅读全文
posted @ 2013-11-15 09:45 技术让梦想更伟大 阅读(671) 评论(0) 推荐(0) 编辑
摘要: 定义:分支定界 (branch and bound) 算法是一种在问题的解空间树上搜索问题的解的方法。但与回溯算法不同,分支定界算法采用广度优先或最小耗费优先的方法搜索解空间树,并且,在分支定界算法中,每一个活结点只有一次机会成为扩展结点。利用分支定界算法对问题的解空间树进行搜索,它的搜索策略是: 1 .产生当前扩展结点的所有孩子结点; 2 .在产生的孩子结点中,抛弃那些不可能产生可行解(或最优解)的结点; 3 .将其余的孩子结点加入活结点表; 4 .从活结点表中选择下一个活结点作为新的扩展结点。如此循环,直到找到问题的可行解(最优解)或活结点表为空。分支限界法的思想是:首先确定目标值... 阅读全文
posted @ 2013-11-15 09:24 技术让梦想更伟大 阅读(729) 评论(0) 推荐(0) 编辑
摘要: 设G=(V,E)是一个n结点的连通图。一个哈密顿环是一条沿着图G的n条边环行的路径,它访问每个结点一次并且返回到它的开始位置。换言之,如果一个哈密顿环在某个结点v1∈V处开始,且G中结点按照v1,v2,…,Vn+l的次序被访问,则边(Vi,Vi+1),1≤i≤n,均在图G中,且除了v1和vn+l是同 阅读全文
posted @ 2013-11-14 22:21 技术让梦想更伟大 阅读(3052) 评论(0) 推荐(0) 编辑
摘要: 已知一个图G和m>0种颜色,在只准使用这m种颜色对G的结点着色的情况下,是否能使图中任何相邻的两个结点都具有不同的颜色呢?这个问题称为m-着色判定问题。在m-着色最优化问题中,则是求可对图G着色的最小整数m。称m为图G的色数。 4种颜色足以对任何地图着色,如图,对一平面图的4-着色判定问题(平面图是一个能画于平面上而边无任何交叉的图)。将地图的每个区域变成一个结点,若两个区域相邻,则相应的结点用一条边连接起来。 假定用图的邻接矩阵Graph(1:n,1:n)来表示一个图G,其中若(i,j)是G的一条边,则Graph(i,j)=true,否则Graph(i,j)=false。。颜色用整... 阅读全文
posted @ 2013-11-14 18:43 技术让梦想更伟大 阅读(734) 评论(0) 推荐(0) 编辑
摘要: 子集和数问题是假定有n个不同的正数(通常称为权),要求找出这些数中所有使得某和数为M的组合。子集和数问题的递归回溯算法,代码如下:void SumOfSub(s,k,r) {//找w(1:n)中和数为M的所有子集。进入此过程时x(1),…,X(k-1)的值已确定。k-1 n//s=ΣW(i)X(i)且r=ΣW(j)。W(j)按非递减排列。假定w(1)≤M,ΣW(i)≥Mj=1 j=kl int M,n;float W[n];bool X[n]; //M、W[n]、X[n]定义成全局变量2 float r,s;int k,j;//生成左子结点。注意,由于Bk-1=true,因此s + w[k.. 阅读全文
posted @ 2013-11-14 05:48 技术让梦想更伟大 阅读(1125) 评论(0) 推荐(1) 编辑
摘要: 回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时,只要搜索到问题的一个解就可以结束。这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题。 回溯法的一般流程和技术在用回溯法... 阅读全文
posted @ 2013-11-13 20:02 技术让梦想更伟大 阅读(1686) 评论(0) 推荐(0) 编辑
摘要: 假定要设计一个系统,这个系统由若干个以串联方式连接在一起的不同设备所组成(图6.1所示)。设ri是设备Di的可靠性(即ri是Di正常运转的概率),则整个系统的可靠性就是Πri。即便这些单个设备是非常可靠的(每个ri都非常接近于1),该系统的可靠性也不一定很高。 为了提高系统可靠性,最好是增加一些重复设备,并通过开关线路把数个同类设备并联在一起(见图6.2)。由开关线路来判明其中的设备的运行情况,并将能正常运行的某台投入使用. 若第i级的设备Di的台数为mi,那么这mi台设备同时出现故障的概率为(1-ri)mi。从而第i级的可靠性就变成1-(1-ri)mi。在任何实际系统中,每一级的可靠... 阅读全文
posted @ 2013-11-13 17:26 技术让梦想更伟大 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 对于0/1背包问题,可以通过作出变量x1,x2,…,xi的一个决策序列来得到它的解。而对变量x的决策就是决定它是取0值还是取1值。假定决策这些x的次序为xn,xn-1,…,x1。在对xn作出决策之后,问题处于下列两种状态之一: 背包的剩余容量是M,则没有产生任何效益; 剩余容量是M-w,则效益值增长了P。显然,对xn-l,xn-2,…,x1的决策相对于决策x所产生的问题状态应该是最优的,否则xn,xn-1,…,x1就不可能是最优决策序列。如果设fj(x)是Knap(1,j,X)最优解的值,那么fn(M)就可表示为: fn(M) = max {fn-1(M), fn-1(M-wn)+p... 阅读全文
posted @ 2013-11-13 12:29 技术让梦想更伟大 阅读(1252) 评论(0) 推荐(0) 编辑
摘要: 前面给出了二分检索树的定义,下图给出了关于保留字的一个子集的两棵二分检索树。 为了确定标识符x是否在一棵二分检索树中出现,将x先与根比较,如果X比根中标识符小,则检索在左子树中继续;如果x等于根中标识符,则检索成功地终止;否则检索在右子树中继续下去。上述步骤可以形式化为过程Search。Line void Search (BinaryTree T,elemType x,int i) {//在二分检索树T上查找x,树的每个结点有三个信息段:LChild,IDent//和RChild。如果x不在T中,则置i=0,否则将i置成使得IDent(i)=x1 i = T;2 while(i!=0) ... 阅读全文
posted @ 2013-11-12 22:11 技术让梦想更伟大 阅读(2557) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 24 下一页