第 五 章 减治法
- 格式:ppt
- 大小:601.00 KB
- 文档页数:22
第三章 蛮力法1.选择排序SelectionSort(A[0..n-1])for i=0 to n-2 domin=ifor j=i+1 to n-1 doif A[j]<A[min]min=jswap A[i] and A[min]2.冒泡排序BubbleSort(A[0..n-1])// 输入:数组A,数组中的元素属于某偏序集// 输出:按升序排列的数组Afor i=0 to n-2 dofor j=0 to n-2-i doif A[j+1]<A[j] swap A[j] and A[j+1]3.改进的冒泡算法ALGORITHM BubbleSortImproved( A[0,…,n –1] )// 冒泡排序算法的改进// 输入:数组A,数组中的元素属于某偏序集// 输出:按升序排列的数组Afor i ← 0 to n – 2 doflag ← Truefor j ← 0 to n – 2 – i doif A[j+1] < A[j]swap(A[j], A[j+1])flag ← False// 如果在某一轮的比较中没有交换,则flag为True,算法结束returnif flag = True4. 顺序查找算法算法 SwquentialSearch2(A[0...n],k)//顺序查找算法的实现,它用了查找键来作限位器//输入:一个n个元素的数组A和一个查找键K//输出:第一个值等于K的元素的位置,如果找不到这样的元素就返回 -1A[n]<--ki<--0while A[i]!=K doi<--i+1if i<n return iElse return -15. 蛮力字符串匹配算法 BruteForceStringMatch(T[0...n-1],P[0...m-1])//该算法实现了蛮力字符串匹配代表一段文本//输入:一个n个字符的数组T[0...n-1]// 一个m个字符的数组P[0..m-1]代表一个模式//输出:如果查找成功的话,返回文本的第一个匹配字串中第一个字符的位置, // 否则返回-1For i<--0 to n-m doj<--0While j<m and P[j]=T[i+j]doj<--i+1If j=m return ireturn -1合并排序最差Θ(nlog2n)快速排序最优Θ(nlog2n)最差Θ(n2)平均Θ(1.38nlog2n)选择排序 Θ(n2)冒泡排序 Θ(n2)插入排序最差Θ(n2)最优 Θ(n)平均 Θ(n2)第四章 分治法合并排序算法 MergeSort(A[0..n-1] )排序 // 递归调用mergesort来对数组 A[0...n-1]// 输入:一个可排序数组A[0..n-1]// 输出:非降序排列的数组A[0..n-1]if n > 1n/2 -1]copy A[0.. n/2 -1] to B[0..n/2 -1]copy A[ n/2 ..n-1] to C[0..MergeSort( B )MergeSort( C )Merge( B,C,A )两个数组合并的算法算法 Merge(B[0..p-1],C[0..q-1],A[0..p+q-1])//将两个有序数组合并成一个有序的数组和C[0...q-1]//输入:两个有序数组B[0...p-1]//输出:A[0..p+q-1]中已经有序存放了B和C中的元素 i=0,j=0,k=0;while i<p and j<q do≤C[j]if B[i]A[k]=B[i], i=i+1elseA[k]=C[j], j=j+1k=k+1if i=pcopy C[j..q-1] to A[k..p+q-1]elsecopy B[i..p-1] to A[0..p+q-1]快速排序算法QuickSort(A[l..r])// 使用快速排序法对序列或者子序列排序或者序列本身A[0..n-1]// 输入:子序列A[l..r]// 输出:非递减序列Aif l < rs ← Partition( A[l..r] )QuickSort( A[l..s-1] )QuickSort( A[s+1..r] )//s是中轴元素/基准点,是数组分区位置的标志实现分区的算法Partition( A[l..r] )// 输入:子数组A[l..r]// 输出:分裂点/基准点pivot的位置p ← A[l]i ← l; j ← r+1repeat≥ prepeat i ←i + 1until A[i]≤ prepeat j ← j – 1 until A[j]swap( A[i], A[j] )≥ juntil iswap( A[i], A[j] )swap( A[l], A[j] )return j折半查找BinarySearch( A[0..n-1], k )// 输入:已排序大小为n的序列A,待搜索对象k// 输出:如果搜索成功,则返回k的位置,否则返回-1 l=0,r=n-1;While l≤rmid= (l+r)/2if k = A[mid] return midelse if k < A[mid] r=m-1else l=m+1return -1Strassen矩阵Strassen方法M1=A11(B12-B22)M2=(A11+A12)B22M3=(A21+A22)B11M4=A22(B21-B11)M5=(A11+A22)(B11+B22)M6=(A12-A22)(B21+B22)M7=(A11-A21)(B11+B12)第五章 减治法插入排序ALGORITHM InsertionSort( A[0..n-1] )// 对给定序列进行直接插入排序// 输入:大小为n的无序序列A// 输出:按非递减排列的序列Afor i ← 1 to n-1 dotemp ← A[i]j ← i-1while j ≥ 0 and A[j] > temp doA[j+1] ← A[j]j ← j –1A[j+1] ←temp深度优先查找算法 BFS(G)//实现给定图的深度优先查找遍历//输入:图G=<V,E>//输出:图G的顶点,按照被DFS遍历第一次访问到的先后次序,用连续的整数标记,将V中的每个顶点标记为0,表示还“未访问”count =0//记录这是第几个访问的节点标记为 unvisitedmark each vertex with 0//∈ V dofor each vertex vif v is marked with 0dfs(v)dfs(v)//递归访问所有和v相连接的未访问顶点,然后按照全局变量count的值//根据遇到它们的先后顺序,给它们附上相应的数字count = count + 1mark v with countv dofor each vertexw adjacent toif w is marked with 0dfs(w)广度优先BFS(G)/实现给定图的深度优先查找遍历//输入:图G=<V,E>//输出:图G的顶点,按照被BFS遍历第一次访问到的先后次序,用连续的整数标记,将V中的每个顶点标记为0,表示还“未访问”count =0mark each vertex with 0for each vertex v∈ V dobfs(v)bfs(v)//递归访问所有和v相连接的未访问顶点,然后按照全局变量count的值//根据遇到它们的先后顺序,给它们附上相应的数字count = count + 1mark v with countinitialize queue with vwhile queue is not empty doa = front of queuefor each vertex w adjacent to a doif w is marked with 0count = count + 1mark w with countadd w to the end of the queueremove a from the front of the queue拓扑排序第六章 变治法Gauss消去法GaussElimination(A[1..n], b[1..n])// 输入:系数矩阵A及常数项 b// 输出:方程组的增广矩阵等价的上三角矩阵for i=1 to n doA[i][n+1] =b[i]for j= i+1 to n dofor k = i to n+1 do– A[i][k]*A[j][i]/A[i][i]A[j][k] = A[j][k]堆排序堆排序主要包括两个步骤:对于给定的数组构造相应的堆。
2010年11月20日深圳聘任制公务员行政执法单项选择题1、以下关于行政许可实施主体的标书中,正确的有〔〕。
A、可由法律、法规授权的具有治理公共事务职能的组织在法定授权范围内以自己的名义实施B、只能由具有行政许可权的行政机关以自己的名义实施C、能够托付一般公民和社会团体实施D、受托付的行政机关能够转托付解析:此题答案为A。
此题考查行政许可法知识。
?行政许可法?第二十三条规定“法律、法规授权的具有治理公共事务职能的组织,在法定授权范围内,以自己的名义实施行政许可。
被授权的组织适用本法有关行政机关的规定。
〞,另外依据第二十四条的规定,行政机关能够托付其他行政机关实施行政许可,受托付行政机关在托付范围内,以托付行政机关名义实施行政许可;不得再托付其他组织或者个人实施行政许可。
由此可知A为正确答案。
2、某县人民法院以受贿罪判处陈某有期徒刑7年,陈某不服提出上诉,市中级人民法院经审理认为原判事实不清、证据缺乏,发回原审人民法院重新审判,原审人民法院经审理退回县人民检察院补充侦查。
县人民检察院经补充侦查认定陈某构成犯罪证据缺乏,遂作出不起诉决定。
陈某提起国家赔偿请求,本案的赔偿义务时机应为〔〕。
A、县人民检察院和县人民法院B、县人民法院和市中级人民法院C、市中级人民法院D、县人民法院解析:此题答案为D。
此题考查国家赔偿法知识。
?国家赔偿法?第二十一条第四款规定“再审改判无罪的,作出原生效判决的人民法院为赔偿义务机关。
二审改判无罪,以及二审发回重审后作无罪处理的,作出一审有罪判决的人民法院为赔偿义务机关。
〞由此可知D为正确答案。
3、国务院或者经国务院授权的省、自治区、直辖市人民政府能够决定一个行政机关行使有关行政机关的行政处分权,但〔〕的行政处分权只能由公安机关行使。
A、限制人身自由B、较大数额的罚款C、撤消企业营业执照D、责令停产停业解析:此题答案为A。
此题考查行政处分法知识。
?行政处分法?第十六条规定“国务院或者经国务院授权的省、自治区、直辖市人民政府能够决定一个行政机关行使有关行政机关的行政处分权,但限制人身自由的行政处分权只能由公安机关行使。
第一章测试1.解决一个问题通常有多种方法。
若说一个算法“有效”是指( )A:这个算法能在人的反应时间内将问题解决B:(这个算法能在一定的时间和空间资源限制内将问题解决)和(这个算法比其他已知算法都更快地将问题解决)C:这个算法能在一定的时间和空间资源限制内将问题解决D:这个算法比其他已知算法都更快地将问题解决答案:B2.农夫带着狼、羊、白菜从河的左岸到河的右岸,农夫每次只能带一样东西过河,而且,没有农夫看管,狼会吃羊,羊会吃白菜。
请问农夫能不能过去?()A:不一定B:不能过去C:能过去答案:C3.下述()不是是算法的描述方式。
A:自然语言B:程序设计语言C:E-R图D:伪代码答案:C4.有一个国家只有6元和7元两种纸币,如果你是央行行长,你会设置()为自动取款机的取款最低限额。
A:40B:42C:29D:30答案:D5.算法是一系列解决问题的明确指令。
()A:对B:错答案:A6.程序=数据结构+算法()A:错B:对答案:B7.同一个问题可以用不同的算法解决,同一个算法也可以解决不同的问题。
()A:错答案:B8.算法中的每一条指令不需有确切的含义,对于相同的输入不一定得到相同的输出。
( )A:错B:对答案:A9.可以用同样的方法证明算法的正确性与错误性 ( )A:对B:错答案:B10.求解2个数的最大公约数至少有3种方法。
( )A:错B:对答案:A11.没有好的算法,就编不出好的程序。
()A:对B:错答案:A12.算法与程序没有关系。
( )A:错B:对答案:A13.我将来不进行软件开发,所以学习算法没什么用。
( )A:对B:错答案:B14.gcd(m,n)=gcd(n,m m od n)并不是对每一对正整数(m,n)都成立。
( )A:错B:对答案:A15.既然程序设计语言可以描述算法,所以算法就是程序。
( )A:错B:对答案:A第二章测试1.并不是所有的算法,规模更大的输入需要更长的运行时间。
( )A:对答案:B2.算法效率分析框架主要关心一个算法的基本操作次数的增长次数,并把它作为算法效率的主要指标。
冀州市林业局行政处罚裁量权基准制度1、盗伐森林或其他林木法律依据:(1)《中华人民共和国森林法》第三十九条:“盗伐森林或者其他林木的,依法赔偿损失;由林业主管部门责令补种盗伐株数十倍的树木,没收盗伐的林木或者变卖所得,并处盗伐林木价值三倍以上十倍以下的罚款。
滥伐森林或者其他林木,由林业主管部门责令补种滥伐株数五倍的树木,并处滥伐林木价值二倍以上五倍以下的罚款。
拒不补种树木或者补种不符合国家有关规定的,由林业主管部门代为补种,所需费用由违法者支付。
盗伐、滥伐森林或者其他林木,构成犯罪的,依法追究刑事责任。
”(2)《中华人民共和国森林法实施条例》第三十八条:“盗伐森林或者其他林木,以立木材积计算不足0.5立方米或者幼树不足20株的,由县级以上人民政府林业主管部门责令补种盗伐株数10倍的树木,没收盗伐的林木或者变卖所得,并处盗伐林木价值3倍至5倍的罚款。
盗伐森林或者其他林木,以立木材积计算0.5立方米以上或者幼树20株以上的,由县级以上人民政府林业主管部门责令补种盗伐株数10倍的树木,没收盗伐的林木或者变卖所得,并处盗伐林木价值5倍至10倍的罚款。
”细化标准:责令补种盗伐株数十倍的树木,没收盗伐的林木或者变卖所得,并按下列标准处罚:1.盗伐森林或者其他林木,以立木材积计算,0.5立方米以下或者幼树不足20株的,处以盗伐林木价值3至5倍的罚款。
2.盗伐森林或者其他林木的,以立木材积计算,0.5至1.5立方米或者幼树20株至50株的,处以盗伐林木价值5至8倍的罚款。
3.盗伐森林或者其他林木的,以立木材积计算,1.5立方米以上或者幼树50株以上的,处以盗伐林木价值8至10倍的罚款。
2、滥伐森林或其他林木法律依据:(1)《中华人民共和国森林法》第三十九条:“盗伐森林或者其他林木的,依法赔偿损失;由林业主管部门责令补种盗伐株数十倍的树木,没收盗伐的林木或者变卖所得,并处盗伐林木价值三倍以上十倍以下的罚款。
滥伐森林或者其他林木,由林业主管部门责令补种滥伐株数五倍的树木,并处滥伐林木价值二倍以上五倍以下的罚款。
第一章测试1【判断题】(10分)一个问题的同一实例可以有不同的表示形式A.错B.对2【判断题】(10分)同一数学模型使用不同的数据结构会有不同的算法,有效性有很大差别。
A.错B.对3【判断题】(10分)问题的两个要素是输入和实例。
A.对B.错4【单选题】(10分)算法与程序的区别是()A.有穷性B.确定性C.输出D.输入5【单选题】(10分)解决问题的基本步骤是()。
(1)算法设计(2)算法实现(3)数学建模(4)算法分析(5)正确性证明A.(3)(1)(5)(4)(2)B.(3)(4)(1)(5)(2)C.(1)(2)(3)(4)(5)D.(3)(1)(4)(5)(2)6【单选题】(10分)下面说法关于算法与问题的说法的是()。
A.算法是一种计算方法,对问题的每个实例计算都能得到正确答案。
B.证明算法不正确,需要证明对任意实例算法都不能正确处理。
C.如果一个算法能应用于问题的任意实例,并保证得到正确解答,称这个算法解答了该问题。
D.同一问题可能有几种不同的算法,解题思路和解题速度也会显著不同。
7【多选题】(10分)下面关于程序和算法的说法正确的是()。
A.算法的每一步骤必须要有确切的含义,必须是清楚的、无二义的。
B.程序总是在有穷步的运算后终止。
C.程序是算法用某种程序设计语言的具体实现。
D.算法是一个过程,计算机每次求解是针对问题的一个实例求解。
8【多选题】(10分)最大独立集问题和()问题等价。
A.最大团B.稳定匹配问题C.区间调度问题D.最小顶点覆盖9【多选题】(10分)给定两张喜欢列表,稳定匹配问题的输出是()。
A.完美匹配B.最大匹配C.稳定匹配D.没有不稳定配对10【单选题】(10分)问题变换的目的有()。
(1)复杂变简单(2)未知变已知(3)隐式变显式(4)难解变易解(5)以上都是。
A.(5)B.(1)C.(2)D.(3)E.(4)11【单选题】(10分)按照霍纳法则,计算p(x)=a n x n+a n-1x n-1+…+a1x1+a0的数量级为____。
减治法(⼀)这篇⽂章将讨论:1) 减治法的思想和策略2) ⼏个数据结构⾥⾯经典的使⽤减治策略的算法:插⼊排序,深度和⼴度优先查找,拓扑排序(都是减⼀治的)通过 1) 2)明⽩减治策略的基本思想和⽅法,也对经典数据结构做⼀番新的审视,从减治策略的⾓度来重新看待这些算法。
⽽在后⾯,将继续花⼏篇⽂章讨论减治策略的其他问题:排列问题,⼦集问题,减常因⼦算法,减可变规模算法。
----------------------------------------------------------------------------------------------------------------------------------------------------减治技术利⽤了⼀个问题给定实例的解和同样问题较⼩实例的解之间的某种关系。
⼀旦建⽴了这种关系,就可以从顶⾄下递归的来⽤该关系,也可以从底⾄上⾮递归的来运⽤该关系:1)减去⼀个常量2)减去⼀个常量因⼦3)减去的规模是可变的1) ⼀般来说减去的⼀个常量是1,即如果不断地解决n-1规模的问题就能解决n规模的问题,(偶⽽也有减2的,⽐较少)⽐如求a^n的值,既可以递归的从上到下求解,也可以⾮递归的从下往上构造(连续乘法,注意⽅法和蛮⼒⼀样,但思考问题的⾓度不⼀样)2) ⼀般来说减去的⼀个常数因⼦是2(即将原问题规模分为2),其实减常因⼦的减治法可以看做是分治的变种,只不过它只对划分⼦规模后的⼀个部分求解。
例如仍然是求a^n,我们可以这样来思考:3)对于减可变规模的例⼦,那就更少了,因为效率越⾼的算法显然越难找到。
⼀个例⼦是欧⼏⾥得算法,前⾯也写过了:总之,减治的3种⽅法,以及⼀个简单的例⼦就像上⾯所述。
-------------------------------------------------------------------------------------------------------------------------------------------------1,插⼊排序1) 最简单的排序⽅法,写过,也很简单。