算法分析与设计考试样卷.docx
- 文档编号:8138360
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:16
- 大小:472.33KB
算法分析与设计考试样卷.docx
《算法分析与设计考试样卷.docx》由会员分享,可在线阅读,更多相关《算法分析与设计考试样卷.docx(16页珍藏版)》请在冰豆网上搜索。
算法分析与设计考试样卷
算法分析与设计复习题
1.Basedonwhatwehavediscussedinclass,statethebestasymptoticrunningtimeforeachoftheproblemsbelow,usingthe”bigOh”notation.ItisassumedthatT
(1)=dforsomeconstantdinalltherecurrences.IfyouthinktheproblemisNP-complete,stateso(norunningtimeshouldbegiveninthiscase).Juststatetheanswers-youdonotneedtojustifythem.
2.Describethemainideasofthefollowingstrategies,andbrieflydescribethedifferencesbetweenthem.
(1)divide-and–conquer;
(2)dynamicprogramming;
(3)branchandbound
3.Duringthecoursewehavestudiedsomeimportantclassesofalgorithms.ThreeoftheseareDivideandConquerAlgorithms,GreedyAlgorithmsandDynamicProgrammingAlgorithms.Givenon-trivialexamplesofeachofthesethreetypesofalgorithmsanddescribethemindetai.Foreachexample,explainwhatmakesitsuchanalgorithm.(Thatis,foryourexampleofagreedyalgorithmyoushouldexplainexactlywhatmakesitagreedyalgorithm,andsoon.)
Solution:
Therearelotofpossiblesolutions.Naturalexampleswouldbe:
DivideandConquer:
MergesortGreedy:
Kruskal’salgorithm.DynamicProgramming:
Dijkstra’salgorithmorBellman-Ford’salgorithm.
4.(30points)ChooseTorFforeachofthefollowingstatements.
1)ThebestcaserunningtimeforquicksorttosortanelementarrayisO(nlogn).
2)Bythemastertheorem,thesolutiontotherecurrenceT(n)=3T(n/3)+3nisT(n)=O(nlogn).
3)EverybinarysearchtreeonnnodeshasheightO(logn).
4)Byusingpathcompression(Union-Find)techniquetoanalyzeKruskalalgorithm,thealgorithm’srunningtimeisO(mlog*n+nlog*n).
5)Depth-firstsearchofagraphisasymptoticallyfasterthanbreadth-firstsearch.
6)Kruskal’salgorithmforfindingaminimumspanningtreeemploysdynamicprogramming.
7)Thebacktracktechniqueusestheideaofbreathfirstsearchtogettheoptimalvalue.
8)n!
=O(2n).
9)Intheworstcase,mergesortrunsinO(n2)time.
10)Incomputerscience,alltheproblemsareeitherinPorNP.
11)Kruskal’salgorithmisfasterPrim’salgorithm.
12)Divide-and-Conquerisabottom-upalgorithmandDynamicProgrammingisatop-downalgorithm.
13)ForanunweightedgraphG,Depth-firstsearchalgorithmcanbeusedtofindtheshortestpathsfromagivenvertextoothervertices.
14)FortwodecisionproblemsQ1andQ2,ifQ1ispolynomialtimereducibletoQ2,thenQ1andQ2havethesamedifficulty.
15)TheproblemssolvablebyDynamicProgrammingcanalsobesolvedbyDivide-and-Conqueralgorithm.
16)A(n2)algorithmalwaystakeslongertorunthana(logn)algorithm.
16)BFSisalineartimealgorithm.
17)Givennnumbersa1,...,an,themedianofthesmallesttennumbersandthelargesttennumbersamongthemcanbecomputedinO(n)time.T
18)Everyundirectedconnectedgraphonnverticeshasexactlyn−1edges.F
19)Givennnumbersa1,...,an,whereforevery1≤i≤n,ai∈{−5,9,100};theirsortedbordercanbeoutputinO(n)time.TRUE
20)IfaproblemisNP-complete,itmustalsobeinNP.T
21)faproblemisnotinP,itmustbeNP-complete.F
22)GivenanundirectedunweightedgraphGinnverticesandmedgesandtwodistinctverticesst,theshortests−tpathcanbecomputedinO(m+n)time.TRUE
23)IfanalgorithmrunsintimeO(2logn)itactuallyrunsinpolynomialtime.T
24)Ifwehavea3-SATformulawith5clauses,wecandecideinpolynomialtimeifitissatisfiable.T
25)Everydirectedacyclicgraphhasexactlyonetopologicalordering.
26)GivenagraphG=(V;E)withpositiveedgeweights,theBellman-Fordalgo-rithmandDijkstra’salgorithmcanproducedifferentshortest-pathtreesdespitealwaysproducingthesameshortest-pathweights.
Solution:
True.Bothalgorithmsareguaranteedtoproducethesameshortest-pathweight,butiftherearemultipleshortestpaths,Dijkstra’swillchoosetheshortestpathaccordingtothegreedystrategy,andBellman-Fordwillchoosetheshortestpathdependingontheorderofrelaxations,andthetwoshortestpathtreesmaybedifferent.
27)Forallpositivef(n),g(n)andh(n),iff(n)=O(g(n))andf(n)=(h(n)),theng(n)+h(n)=(f(n)).
Solution:
True.Thisfollowsfromf(n)=O(g(n)))g(n)=(f(n)).
5.AlgorithmDesign
(1)GivenagraphG=(V,E),useDepth-First-SearchtocountthenumberofconnectedcomponentsinG.
(2)AmaximumspanningtreeinaweightedgraphGisaspanningtreeinGwiththelargestweightoverallspanningtrees.GiveanefficientalgorithmthatconstructsamaximumspanningtreeforaweightedgraphG=(V,E),andanalyzetherunningtimeofyouralgorithm.
(3)BasedonQuickSorting,pleasewriteanalgorithmtofindthek-thsmallestelementinalist.
6.FindtheminimalnumberofmultiplicationsneededtocomputetheproductoffourmatricesA1A2A3A4.MatrixA1hasthesize32,matrixA2hasthesize25,
matrixA3hasthesisze54,matrixA4hasthesize43.
7.
a.
f(n)=logn.Letε=0.5,f(n)isO(n0.5),thatis,f(n)is
Thus,weareincase1.Thismeans
is
bythemastermethod.
b.
f(n)=n2.Let
is
thatis,f(n)is
.
Thus,weareincase1.Thismeans
is
bythemastermethod.
c.
.F(n)=(nlogn)4.Let
is
thatis,
.Thusweareincase2.
Thismeans
is
d.
f(n)=n.Let
then
is
thatis,f(n)is
.Thus,weareincase1.
Thismeans
is
e.
f(n)=n3logn.let
then,
is
thatisf(n)is
let
d=1,then,
foralln>=d.Thus,weareincase3.
Thismeans
is
8.Youhaveanalgorithmthattakesasinputintegersa1;….an.TherunningtimeofyouralgorithmisO(a1+a2+…+an).Isthisapolynomialtimealgorithm?
Explainyouranswer
NOEXPONTENTIALALGORITHM
9.YouaregivenanundirectedgraphG=(V,E).
a.ShowhowtomodifytheBFSalgorithmsothatitdecideswhetherGcontainsacycle.
b.Whatistherunningtimeofyouralgorithm?
Solution
a.WerunBFS,andwheneverweencounteranalreadyseenvertexvfromanodeu,westopandstatethatthereexistsacycleinthegraph(infact,theedge(u,v)closesthiscycle).Ifwedonotencounteranalreadyseenvertex,weterminatetheexecutionofBFSandreportthatGdoesnotcontainacycle.
b.TherunningtimeisO(n).Indeed,ifthegraphdoesnotcontainacyclethenitisatree,andthen|E|=|V|−1,whichimpliesthattherunningtimeofBFSinthiscaseisO(|V|+|E|)=O(|V|).IfthereisacycleinG,thenwetraverseonlyO(|V|)edgesofG.Inthiscaseeachvertex,exceptforthelastonev,isbeingtraversedatmostonce.Wecanthusuniquelychargeeachedgethatwetraversetoanunseenvertex,exceptthelastvertexv,whichischargedtwice.Thustheoverallnumberofchargesisatmost|V|+1=O(|V|),whichisalsotheboundontherunningtime
10.Quickselecthasverypoorworst-caseperformance.Whatcanwedoaboutthis?
Quickselecthaslinear-timeaverage-caseperformance,butquadratic-timeworst-caseperformance.Thestandardsolutionistokeeptrackoftherecursiondepth,andswitchtoalinear-timeworst-caseselectionalgorithmifthisdepthexceedssomelimit.
11.FollowLCSalgorithmtofindthelongestcommonsubsequenceoftwowordsABGKMR,BCGHM.Theinitialmatrixisgivenbelow:
Yj
A
B
G
K
M
R
Xi
0
0
0
0
0
0
0
B
0
C
0
G
0
H
0
M
0
12.IstheKnapsackproblem,withintegercapacityWandintegerweightsandvalues,fixed-parametertractableintheparameterW?
Yes,alreadybecauseofthetimeboundO(nW).
13.Fora0/1knapsackproblem,givennitems,whereeachitemhasweightWandvalueV,findasetofitemsthatcouldbeputintotheknapsackwithoutoverthecapacityWoftheknapsack.Assumethatn=4,W={10,8,6,4},V={5,4,3,2},W=12。
(1)givetherecursiverelationusedintheDynamicProgrammingprocess(5points)
(2)givethespecificprocessofobtainingoptimalvalueusingDynamicProgramming,andgivetheoptimalvalue.(10points)
(3)givethespecificprocessofobtainingoptimalvalueusingbranch-and-bound.Note:
upperboundfunctionub=V+(W-w)(vi+1/wi+1)(10points)
14.GiveanexampleofagraphsuchthatrunningDijkstraonitwouldgiveincorrectdistances.
15.Todesignanalgorithmtodeterminewhetherasimplepolygonisconvexornot.Alsoanalyzetherunningtimeofyouralgorithm.(noticethattheinputisasequenceofverticesalongthepolygoninacounter-clockwisefashion.Apolygonissimpleifitsedgesdonotintersect.Apolygoniscalledconvexifitisthecasethattakingarbitrarytwopointspandqinside(oralongtheboundaryof)thepolygon,thesegmentp-qisentirelycontainedinthepolygon.
递归算法时间复杂度的计算方程式一个递归方程:
在引入递归树之前可以考虑一个例子:
T(n)=2T(n/2)+n2
迭代2次可以得:
T(n)=n2 +2(2T(n/4)+(n/2) 2)
还可以继续迭代,将其完全展开可得:
T(n)=n2 +2((n/2) 2 +2((n/22)2 +2((n/23) 2 +2((n/24) 2 +…+2((n/2i) 2 +2T(n/2i+1)))…)))) ……
(1)
而当n/2i+1 ==1时,迭代结束。
将
(1)式小括号展开,可得:
T(n)=n2 +2(n/2)2 +22(n/22) 2 +…+2i(n/2i)2 +2i+1T(n/2i+1)
这恰好是一个树形结构,由此可引出递归树法。
图中的(a)(b)(c)(d)分别是递归树生成的第1,2,3,n步。
每一节点中都将当前的自由项n2留在其中,而将两个递归项T(n/2)+T(n/2)分别摊给了他的两个子节点,如此循环。
图中所有节点之和为:
[1+1/2+(1/2)2 +(1/2)3 +…+(1/2)i]n2 =2n2
可知其时间复杂度为O(n2)
可以得到递归树的规则为:
(1)每层的节点为T(n)=kT(n/m)+f(n)中的f(n)在当前的n/m下的值;
(2)每个节点的分支数为k;
(3)每层的右侧标出当前层中所有节点的和。
再举个例子:
T(n)=T(n/3)+T(2n/3)+n
其递归树如下图所示:
可见每层的值都为n,从根到叶节点的最长路径是:
因为最后递归的停止是在(2/3)kn==1.则
于是
即T(n)=O(nlogn)
总结,利用此方法解递归算法复杂度:
f(n)=af(n/b)+d(n)
1.当d(n)为常数时:
2.当d(n)=cn时:
3.当d(n)为其他情况时可用递归树进行分析。
由第二种情况知,若采用分治法对原算法进行改进,则着重点是采用新的计算方法缩小a值。
一般方法
用递归树猜复杂度表达式并用数学归纳法证明
在算法设计中经常需要通过递归方程估计算法的时间复杂度T(n),本文针对形如T(n)=aT(n/b)+f(n)的递归方程进行讨论
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 试样