- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                9_分支限界法.ppt
                    考虑一类问题: 分支限界 1  分支搜索 分支搜索法是一种在问题解空间上进行搜索尝试的算法。 所谓“分支”是采用广度优先的策略,依次生成E-结点所有分支,也就是所有的儿子结点。 和回溯法一样,可以在生成的结点中,抛弃那些不满足约束条件的结点,其余结点加入活结点表。然后从表中选择一个结点作为下一个E-结点。 选择下一个E-结点方式的不同导致几种分支搜索方式: 1 分支搜索-FIFO搜索 一开始,根结点是唯一的活结点,根结点入队。 从活结点队中取出根结点后,作为当前扩展结点。 对当前扩展结点,先从左到右地产生它的所有儿子,用约束条件检查,把所有满足约束函数的儿子加入活结点队列中。 再从活结点表中取出队首结点(队中最先进来的结点)为当前扩展结点,……,直到找到一个解或活结点队列为空为止。 1 分支搜索-LIFO搜索 一开始,根结点入栈。 从栈中弹出一个结点为当前扩展结点。 对当前扩展结点,先从左到右地产生它的所有儿子,用约束条件检查,把所有满足约束函数的儿子入栈; 再从栈中弹出一个结点(栈中最后进来的结点)为当前扩展结点,……,直到找到一个解或栈为空为止。 1 分支搜索-优先队列式搜索 为了加速搜索的进程,可以采用有效的方式选择E-结点进行扩展。 2  实例-例9.1 装载问题 例9.1 有两艘船,n个货箱。第一艘船的载重量是c1,第二艘船的载重量是c2,wi 是货箱i 的重量,且 	 w1+w2+……+wn≤c1+c2。 	确定是否有一种可将所有n 个货箱全部装船的方法。若有的话,找出该方法。 2 例9.1 装载问题 2 例9.1-算法1 FIFO分支搜索 搜索顺序同广度优先搜索; 辅助数据结构:队列。 2 例9.1-算法1 FIFO分支搜索 float bestw,w[100]; int n; Queue Q; main( )  { float c1,c2;int i,n,s=0;    input(c1,c2,n);    for(i=1;i=n;i++)          { input(w[i]); s=s+w[i]; }    if (s=c1 or s=c2)           { print(“need only one ship”);  return; }     if (sc1+c2)  { print(“no solution”);  return; }    MaxLoading(c1);    if (s-bestw=c2);        { print(“The first ship loading”, bestw);          print(“The second ship loading”, s-bestw);}    else print(“no solution”); } 2 例9.1-算法1 FIFO分支搜索 AddLiveNode(float wt;int i)  { if (i=n)        //是叶子         { if (wtbestw)               bestw=wt;}     else             //不是叶子         Add(Q,wt); } 2 例9.1-算法1 改进? 2 例9.1-限界 W={50,10,10},C1=60。 在此例中,结点3所在分支的所有子树中,装载货物的最大可能是多少? 2 例9.1-算法2 FIFO分支限界 搜索顺序仍采用FIFO的分支搜索,但当遇到: 若当前分支的“装载上界”,比现有的最大装载小,则该分支就无需继续搜索。 2 例9.1-算法2 FIFO分支限界-数据结构 float  bestw,w[100],bestx[100]; int n; Queue Q; struct QNode   { float weight;    QNode *parent;    QNode LChild;}  main( ) { int c1,c2,n, s=0,i;   input(c1,c2,n);   for(i=1;i=n;i++)          { input(w[i]); s=s+w[i];}   if (s=c1 or s=c2) {print(“need only one ship”); return;}    if (sc1+c2)  {print(“no solution”);  return;}   MaxLoading(c1);   if (s-bestw =c2);     { print(“The first ship loading”, bestw,“chose:”);        for(i=1;i=n;i++)           if (bestx[i]=1)  p
                您可能关注的文档
最近下载
- 职业技能竞赛数控车工、数控铣工、加工中心实操训练试题-1.doc VIP
- 低压并网柜技术规范书.doc VIP
- 2025年法官入额考试真题及答案.docx VIP
- 《工程勘察设计收费管理规定》计价格【2002】10号.doc VIP
- 2025年法官入额考试真题及答案.docx VIP
- 《GJ B798-1990-伪装涂料漆膜颜色》.pdf VIP
- 美国纽约摄影学院摄影教材【上下册无密码全版】PDF版.docx VIP
- 职业生涯规划书.docx VIP
- 截屏-节能与新能源汽车技术路线图3.0-2025-10-新能源.pptx
- 2022年二级造价师《建设工程计量与计价实务》(水利)考试题库.pdf VIP
 原创力文档
原创力文档 
                        

文档评论(0)