版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法设计(第算法设计(第3 3章蛮力法章蛮力法)蛮力法一些问题只能采用蛮力法去求解蛮力法设计简单,用其求解一些小问题也是可接受的3.1 字符串匹配输入:两个字符串T和P输出:T中P首次出现的位置T中不包含P那么返回1T (Text), P (Pattern)3.1 字符串匹配蛮力法:从左到右扫描T,检查T中是否含有子串Pm icrosofw in d o w stsoft3.1 字符串匹配蛮力法:从左到右扫描T,检查T中是否含有子串Pm icrosofw in d o w stsoft3.1 字符串匹配蛮力法:从左到右扫描T,检查T中是否含有子串Pm icrosofw in d o w sts
2、oft3.1 字符串匹配蛮力法:从左到右扫描T,检查T中是否含有子串Pm icrosofw in d o w stsoft3.1 字符串匹配蛮力法:从左到右扫描T,检查T中是否含有子串Pm icrosofw in d o w stsoft3.1 字符串匹配蛮力法:从左到右扫描T,检查T中是否含有子串Pm icrosofw in d o w stsoft匹配成功,返回位置索引匹配成功,返回位置索引53.1 字符串匹配字符串匹配算法Algorithm Brute_Match(T, P: string)begin let i = 0, n = |T|, m = |P|; while (i nm) d
3、o let j = 0; while (j Ai) then Ai1 Ai当k = n时算法结束;否那么令 k = k+1, 转第2步 排序问题输入:任意一个长度为n的数组A输出:这组数的一个重排列A ,其满足A0A1An13.4 冒泡排序冒泡排序算法Algorithm BubbleSort(A: int)begin let n = |A|; for k = 1 to n-1 do for i = 1 to nk do if (Ai-1 Ai) then (Ai-1, Ai) (Ai, Ai-1);end时间复杂度O(n2)3.5 假设干最优化问题最优化问题:在问题的可行域F中找到一个解x,使
4、得某目标函数值f(x)最小或最大。约束条件:解x应满足某项约束c(x)=true连续优化问题:解的数量可能有无穷多组合优化问题:解的数量有限时,总是可以用蛮力法求解,但算法效率可能很低。3.5 假设干最优化问题最近点对问题0-1背包问题最优子集和问题最大独立集和最小顶点覆盖旅行商问题最近点对问题输入:二维平面上n个点的集合P输出:其中距离最近的两个点最近点对问题蛮力法:计算出P中所有顶点对之间的距离,并取其中距离最小的一对顶点。时间复杂度O(n2):存在改进可能?最近点对问题的蛮力算法Algorithm Brute_ClosetPoints(P: Point)begin let d_best
5、= +, n = |P|, a = b = -1; for i = 0 to n-2 do for j = i+1 to n-1 do let (dx, dy) = (Pi.x-Pj.x, Pi.y-Pj.y); d = dx*dx + dy*dy; if (d v_best) then v_best v; S_best S; return (v_best, S_best);end子集和问题的最优化版本输入:一组n个整数的集合S,以及一个目标数z输出:S的一个子集S*,使其元素之和不大于z的情况下尽可能地大子集和问题的最优化版本蛮力法:检查S的每个子集 S,找出其中满足约束且元素之和最大的一个
6、子集0-1背包的特殊情况最大独立集最大独立集/最小顶点覆盖图的独立集:图中两两互不相邻的顶点所组成的集合。输入:一个无向图G = 输出:G中顶点数最多的一个独立集最大独立集最大独立集/最小顶点覆盖蛮力法:穷举V的所有子集V,判断每个子集是否为独立集,并从中选出规模最大的一个时间复杂度O(mn22n)最大独立集问题的蛮力算法Algorithm Brute_IndependentSet(V: set; E: set)begin let I = ; foreach V Powerset(V) do let independent = true; foreach (u V) do foreach (v
7、 Vu) do if (u,v) E) then independent false; break; if (independent = false) then break; if (independent = true |V| |I|) then I V; return I;end最大独立集/最小顶点覆盖最小顶点覆盖图G = 顶点覆盖:V的一个子集V,它包含E中每条边的至少一个端点。输入:一个无向图G = 输出:G中顶点数最少的一个顶点覆盖最大独立集/最小顶点覆盖最小顶点覆盖蛮力法:穷举V的所有子集V,判断每个子集是否为独立集,并从中选出规模最大的一个时间复杂度O(mn2n)最小顶点覆盖问题
8、的蛮力算法Algorithm Brute_VertexCover(V: set; E: set)begin let C = V; foreach V Powerset(V) do let cover = true; foreach (u,v) E) do if (u V v V) then cover false; break; if (cover = true |V| |C|) then C V; return C;end最大独立集/最小顶点覆盖最大独立集与最小顶点覆盖的关系?给定图G = ,IV是G的一个独立集,当且仅当V I是G的一个顶点覆盖旅行商问题输入:一个加权连通图G = 输出:通过G中所有顶点且距离最短的一条回路旅行商问题蛮力法:穷举图中n!条回路,并从中选出距离最短的一条时间复杂度O(n+1)!)旅行商问题的蛮力算法Algorithm Brute_TSP(G: Graph; w: int,)begin let d_best = +, L_best = ; foreach L Per
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 动物界的“医患”现象
- 《喜看稻菽千重浪 记首届国家最高科技奖获得者袁隆平》袁隆平的农业科技创新思维课件
- 空压机工试题库及答案
- 学校突发事件处置试题及答案
- 药品不良反应监测与报告培训试题及答案
- 广东省河源市2026年中考二模英语试题附答案
- 药品监督管理法规试题及答案
- 药品批发企业冷链药品管理培训试题及答案
- 医疗废物管理知识试题及答案
- 煤矿维修工试题及答案
- 2026智慧水利一体化建设方案
- 施工现场节后复工安全教育培训
- 2026年包头轻工职业技术学院单招职业技能测试题库附参考答案详解(考试直接用)
- 2026年及未来5年中国膜材料行业发展前景预测及投资方向研究报告
- 2026年春季学期开学工作检查总结:教学准备+安全排查+后勤保障+学生返校情况报告
- 儿科学营养性vitD缺乏
- 车辆智能共享出行技术课件 第1章 绪论
- 苏教版科学六年级下册全册练习附答案
- FZ/T 10025-2022本色布技术要求规范
- 概率与统计(英文)chapter 2 probability
- 牛津上海版(深圳)英语五年级下册Unit-2《Our-new-home》公开课课件
评论
0/150
提交评论