- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
6.1分支限界法概述;;1 defbfs(): #队列式分支限界法算法框架
2 定义一个队列qu
3 根结点进队
4 while队不空时循环:
5 出队结点e
6 for扩展结点e产生结点e1:
7 ife1满足constraint()andbound():
8 ife1是叶子结点:
9 比较得到一个更优解或者直接返回
10 else:
11 将结点e1进队;;;解;队列式分支限界法:其中每个结点存放一个进队的顶点编号。
用dist数组存放源点s出发的最短路径长度,dist[i]表示源点s到顶点i的最短路径长度,初始时所有dist[i]值为∞。
用prev数组存放最短路径,prev[i]表示源点s到顶点i的最短路径中顶点i的前驱顶点。;;0;4 defbfs(s): #求解算法
6 dist=[INF]*n #dist初始化所有元素为∞
7 prev=[-1]*n #prev初始化所有元素为-1
8 dist[s]=0
9 qu=deque() #定义一个队列qu
10 qu.append(s) #源点结点进队;11 whilequ: #队列不空循环
12 u=qu.popleft() #出队顶点u
14 foredjinA[u]:
15 v,w=edj[0],edj[1] #相邻顶点为v
16 ifdist[u]+wdist[v]: #剪支:u到v路径长度更短
17 dist[v]=dist[u]+w
18 prev[v]=u
19 qu.append(v) #顶点v进队;21 defdispapath(s,i): #输出s到i的一条最短路径
23 path=[]
24 ifs==i:return
25 ifdist[i]==INF:
26 print(源点%d到顶点%d没有路径%(s,i))
27 else:
28 path.append(i) #添加目标顶点
29 k=prev[i]
30 whilek!=s: #添加中间顶点
31 path.append(k)
32 k=prev[k]
33 path.append(s) #添加源点
34 print(源点%d到顶点%d的最短路径长度:%d,\
路径:%(s,i,dist[i]),end=)
35 forjinrange(len(path)-1,-1,-1): #反向输出
36 print(path[j],end=)
37 print();39 defsolve(A,n,s): #求源点v出发的所有最短路径
40 globalsum
41 sum=0
42 bfs(s)
43 print(求解结果)
44 foriinrange(0,n):dispapath(s,i)
45 print(sum=,sum);4;;;;;;;;;;;;;;;;;;;;;限界函数:先按单位重量价值递减排序。;;;;;;;程序验证;求解0/1背包问题的解空间是一棵高度为n+1的满二叉树。
bound()方法的时间复杂度为O(n)。
最坏时间复杂度仍然为O(n×2n)。;;;;;;解;1 classQNode: #优先队列结点类
2 def__init__(self,i,vno,length): #构造方法
3 self.i=i #结点的层次
4 self.vno=vno #顶点编号
5 self.length=length #路径长度
6 def__lt__(self,other): #按length越小越优先出队
7 returnself.lengthother.length;初始化dist数组所有元素为∞,定义元素类型为QNode的优先队列pqu。
先将根结点进队,队不空时循环,出队一个结点,对相应顶点的所有出边做松驰操作,直到队列为空,最后的dist[i]就是源点
您可能关注的文档
- 《算法设计与分析基础》(Python语言描述) 课程教学大纲(含思政).docx
- 《算法设计与分析基础》(Python语言描述) 实验教学大纲.docx
- 《算法设计与分析基础》(Python语言描述) 课件 第1章 绪论.pptx
- 《算法设计与分析基础》(Python语言描述) 课件 第2章常用的数据结构及其应用(1).pptx
- 《算法设计与分析基础》(Python语言描述) 课件 第2章常用的数据结构及其应用(2).pptx
- 《算法设计与分析基础》(Python语言描述) 课件 第3章基本算法设计方法(1).pptx
- 《算法设计与分析基础》(Python语言描述) 课件 第3章基本算法设计方法(2).pptx
- 《算法设计与分析基础》(Python语言描述) 课件 第4章分治法(1).pptx
- 《算法设计与分析基础》(Python语言描述) 课件 第4章分治法(2).pptx
- 《算法设计与分析基础》(Python语言描述) 课件 第5章回溯法(1).pptx
- 2026年及未来5年蓝信流量统计日志系统项目市场数据调查、监测研究报告.docx
- 2026年及未来5年多功能烟气分析仪项目市场数据调查、监测研究报告.docx
- 2026年及未来5年热熔焊制45°弯头项目市场数据调查、监测研究报告.docx
- 2025年学历类自考中国文化概论-中国当代文学作品选参考题库含答案解析.docx
- 2026年及未来5年微控双温区锑扩散系统项目市场数据调查、监测研究报告.docx
- 2026年及未来5年变频电机转子项目市场数据调查、监测研究报告.docx
- 2026年及未来5年数显压力机项目市场数据调查、监测研究报告.docx
- 2026年及未来5年电话十台灯十时钟项目市场数据调查、监测研究报告.docx
- 2026年及未来5年移动空调控制板项目市场数据调查、监测研究报告.docx
- 2026年及未来5年大豆纤维服饰项目市场数据调查、监测研究报告.docx
原创力文档


文档评论(0)