算法设计(蛮力法)课件

上传人:无*** 文档编号:241782807 上传时间:2024-07-23 格式:PPT 页数:31 大小:1.11MB
返回 下载 相关 举报
算法设计(蛮力法)课件_第1页
第1页 / 共31页
算法设计(蛮力法)课件_第2页
第2页 / 共31页
算法设计(蛮力法)课件_第3页
第3页 / 共31页
点击查看更多>>
资源描述
第第3章章 蛮力法蛮力法3.1 字符串匹配字符串匹配3.2 矩矩阵相乘相乘3.3 子集和子集和问题3.4 冒泡排序冒泡排序3.5 若干最若干最优化化问题蛮力法一些问题只能采用蛮力法去求解蛮力法设计简单,用其求解一些小问题也是可接受的3.1 字符串匹配输入:两个字符串T和P输出:T中P首次出现的位置(T中不包含P则返回1)T(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 stsoft3.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)do let j=0;while(j Ai)then Ai1 Ai3.当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,使得某目标函数值f(x)最小或最大。约束条件:解x应满足某项约束c(x)=true连续优化问题:解的数量可能有无穷多组合优化问题:解的数量有限时,总是可以用蛮力法求解,但算法效率可能很低。3.5 若干最优化问题最近点对问题0-1背包问题最优子集和问题最大独立集和最小顶点覆盖旅行商问题3.5.1 最近点对问题输入:二维平面上n个点的集合P输出:其中距离最近的两个点3.5.1 最近点对问题蛮力法:计算出P中所有顶点对之间的距离,并取其中距离最小的一对顶点。时间复杂度O(n2):存在改进可能?最近点对问题的蛮力算法Algorithm Brute_ClosetPoints(P:Point)begin let d_best=+,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);end3.5.3 子集和问题的最优化版本输入:一组n个整数的集合S,以及一个目标数z输出:S的一个子集S*,使其元素之和不大于z的情况下尽可能地大3.5.3 子集和问题的最优化版本蛮力法:检查S的每个子集 S,找出其中满足约束且元素之和最大的一个子集0-1背包的特殊情况3.5.4 最大独立集最大独立集/最小顶点覆盖图的独立集:图中两两互不相邻的顶点所组成的集合。输入:一个无向图G=输出:G中顶点数最多的一个独立集3.5.4 最大独立集最大独立集/最小顶点覆盖蛮力法:穷举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 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;end3.5.4 最大独立集/最小顶点覆盖最小顶点覆盖图G=顶点覆盖:V的一个子集V,它包含E中每条边的至少一个端点。输入:一个无向图G=输出:G中顶点数最少的一个顶点覆盖3.5.4 最大独立集/最小顶点覆盖最小顶点覆盖蛮力法:穷举V的所有子集V,判断每个子集是否为独立集,并从中选出规模最大的一个时间复杂度O(mn2n)最小顶点覆盖问题的蛮力算法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;end3.5.4 最大独立集/最小顶点覆盖最大独立集与最小顶点覆盖的关系?给定图G=,IV是G的一个独立集,当且仅当V I是G的一个顶点覆盖3.5.5 旅行商问题输入:一个加权连通图G=输出:通过G中所有顶点且距离最短的一条回路3.5.5 旅行商问题蛮力法:穷举图中n!条回路,并从中选出距离最短的一条时间复杂度O(n+1)!)旅行商问题的蛮力算法Algorithm Brute_TSP(G:Graph;w:int,)begin let d_best=+,L_best=;foreach L Perms(G.V)do let d=0;foreach(eL)do d d+we.a,e.b;d d+wL.tail,L.head;if(d d_best)then d_best d;L_best L;return L_best;end
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!