数据结构与算法分析c++版答案文档格式.docx
《数据结构与算法分析c++版答案文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构与算法分析c++版答案文档格式.docx(48页珍藏版)》请在冰豆网上搜索。
Preface
ContainedhereinarethesolutionstoallexercisesfromthetextbookAPractical
IntroductiontoDataStructuresandAlgorithmAnalysis,2ndedition.
FormostoftheproblemsrequiringanalgorithmIhavegivenactualcode.In
afewcasesIhavepresentedpseudocode.Pleasebeawarethatthecodepresented
inthismanualhasnotactuallybeencompiledandtested.WhileIbelievethealgorithms
tobeessentiallycorrect,theremaybeerrorsinsyntaxaswellassemantics.
Mostimportantly,thesesolutionsprovideaguidetotheinstructorastotheintended
answer,ratherthanusableprograms.
1
DataStructuresandAlgorithms
Instructor’snote:
Unliketheotherchapters,manyofthequestionsinthischapter
arenotreallysuitableforgradedwork.Thequestionsaremainlyintendedtoget
studentsthinkingaboutdatastructuresissues.
Thisquestiondoesnothaveaspecificrightanswer,providedthestudent
keepstothespiritofthequestion.Studentsmayhavetroublewiththeconcept
of“operations.”
Thisexerciseasksthestudenttoexpandontheirconceptofanintegerrepresentation.
AgoodanswerisdescribedbyProject,whereasingly-linked
listissuggested.Themoststraightforwardimplementationstoreseachdigit
initsownlistnode,withdigitsstoredinreverseorder.Additionandmultiplication
areimplementedbywhatamountstograde-schoolarithmetic.For
addition,simplymarchdowninparallelthroughthetwolistsrepresenting
theoperands,ateachdigitappendingtoanewlisttheappropriatepartial
sumandbringingforwardacarrybitasnecessary.Formultiplication,combine
theadditionfunctionwithanewfunctionthatmultipliesasingledigit
byaninteger.Exponentiationcanbedoneeitherbyrepeatedmultiplication
(notreallypractical)orbythetraditionalΘ(logn)-timealgorithmbasedon
thebinaryrepresentationoftheexponent.Discoveringthisfasteralgorithm
willbebeyondthereachofmoststudents,soshouldnotberequired.
AsampleADTforcharacterstringsmightlookasfollows(withthenormal
interpretationofthefunctionnamesassumed).
Chap.1DataStructuresandAlgorithms
Some
InC++,thisis1
fors1<
s2;
0fors1=s2;
intstrcmp(Strings1,Strings2)
One’scomplimentstoresthebinaryrepresentationofpositivenumbers,and
storesthebinaryrepresentationofanegativenumberwiththebitsinverted.
Two’scomplimentisthesame,exceptthatanegativenumberhasitsbits
invertedandthenoneisadded(forreasonsofefficiencyinhardwareimplementation).
ThisrepresentationisthephysicalimplementationofanADT
definedbythenormalarithmeticoperations,declarations,andothersupport
givenbytheprogramminglanguageforintegers.
AnADTfortwo-dimensionalarraysmightlookasfollows.
Matrixadd(MatrixM1,MatrixM2);
Matrixmultiply(MatrixM1,MatrixM2);
Matrixtranspose(MatrixM1);
voidsetvalue(MatrixM1,introw,intcol,intval);
intgetvalue(MatrixM1,introw,intcol);
Listgetrow(MatrixM1,introw);
OneimplementationforthesparsematrixisdescribedinSectionAnotherimplementation
isahashtablewhosesearchkeyisaconcatenationofthematrixcoordinates.
Everyproblemcertainlydoesnothaveanalgorithm.AsdiscussedinChapter15,
thereareanumberofreasonswhythismightbethecase.Someproblemsdon’t
haveasufficientlycleardefinition.Someproblems,suchasthehaltingproblem,
arenon-computable.Forsomeproblems,suchasonetypicallystudiedbyartificial
intelligenceresearchers,wesimplydon’tknowasolution.
Wemustassumethatby“algorithm”wemeansomethingcomposedofstepsare
ofanaturethattheycanbeperformedbyacomputer.Ifso,thananyalgorithm
canbeexpressedinC++.Inparticular,ifanalgorithmcanbeexpressedinany
othercomputerprogramminglanguage,thenitcanbeexpressedinC++,sinceall
(sufficientlygeneral)computerprogramminglanguagescomputethesamesetof
functions.
Theprimitiveoperationsare
(1)addingnewwordstothedictionaryand
(2)searching
thedictionaryforagivenword.Typically,dictionaryaccessinvolvessomesort
ofpre-processingofthewordtoarriveatthe“root”oftheword.
Atwentypagedocument(singlespaced)islikelytocontainabout20,000words.A
usermaybewillingtowaitafewsecondsbetweenindividual“hits”ofmis-spelled
words,orperhapsuptoaminuteforthewholedocumenttobeprocessed.This
meansthatacheckforanindividualwordcantakeabout10-20ms.Userswill
typicallyinsertindividualwordsintothedictionaryinteractively,sothisprocesscan
takeacoupleofseconds.Thus,searchmustbemuchmoreefficientthaninsertion.
Theusershouldbeabletofindacitybasedonavarietyofattributes(name,location,
perhapscharacteristicssuchaspopulationsize).Theusershouldalsobeabletoinsert
anddeletecities.Thesearethefundamentaloperationsofanydatabasesystem:
search,insertionanddeletion.
Areasonabledatabasehasatimeconstraintthatwillsatisfythepatienceofatypical
user.Foraninsert,delete,orexactmatchquery,afewsecondsissatisfactory.Ifthe
databaseismeanttosupportrangequeriesandmassdeletions,theentireoperation
maybeallowedtotakelonger,perhapsontheorderofaminute.However,thetime
spenttoprocessindividualcitieswithintherangemustbeappropriatelyreduced.In
practice,thedatarepresentationwillneedtobesuchthatitaccommodatesefficient
processingtomeetthesetimeconstraints.Inparticular,itmaybenecessarytosupport
operationsthatprocessrangequeriesefficientlybyprocessingallcitiesinthe
rangeasabatch,ratherthanasaseriesofoperationsonindividualcities.
Studentsatthislevelarelikelyalreadyfamiliarwithbinarysearch.Thus,they
shouldtypicallyrespondwithsequentialsearchandbinarysearch.Binarysearch
shouldbedescribedasbettersinceittypicallyneedstomakefewercomparisons
(andthusislikelytobemuchfaster).
TheanswertothisquestionisdiscussedinChapter8.Typicalmeasuresofcost
willbenumberofcomparisonsandnumberofswaps.Testsshouldincluderunning
timingsonsorted,reversesorted,andrandomlistsofvarioussizes.
Thefirstpartiseasywiththehint,butthesecondpartisratherdifficulttodowithout
astack.
a)boolcheckstring(stringS){
intcount=0;
for(inti=0;
i<
length(S);
i++)
if(S[i]==’(’)count++;
if(S[i]==’)’){
if(count==0)returnFALSE;
count--;
}
if(count==0)returnTRUE;
elsereturnFALSE;
b)intcheckstring(StringStr){
StackS;
if(S[i]==’(’)
(i);
if())returni;
();
if())return-1;
elsereturn();
AnswerstothisquestionarediscussedinSection.
Thisissomewhatdifferentfromwritingsortingalgorithmsforacomputer,since
person’s“workingspace”istypicallylimited,asistheirabilitytophysicallymanipulate
thepiecesofpaper.Nonetheless,manyofthecommonsortingalgorithmshave
theiranalogstosolutionsforthisproblem.Mosttypicalanswerswillbeinsertion
sort,variationsonmergesort,andvariationsonbinsort.
AnswerstothisquestionarediscussedinChapter8.
2
MathematicalPreliminaries
(a)Notreflexiveifthesethasanymembers.Onecouldargueitissymmetric,
antisymmetric,andtransitive,sincenoelementviolateanyof
therules.
(b)
Notreflexive(foranyfemale).Notsymmetric(considerabrotherand
sister).Notantisymmetric(considertwobrothers).Transitive(forany
3brothers).
(c)
Notreflexive.Notsymmetric,andisantisymmetric.Nottransitive
(onlygoesonelevel).
(d)
Notreflexive(fornearlyallnumbers).Symmetricsincea
+b
=b
+a,
sonotantisymmetric.Transitive,butvacuouslyso(therecanbeno
distincta,b,andc
whereaRb
andbRc).
(e)
Reflexive.Symmetric,sonotantisymmetric.Transitive(butsortof
vacuous).
(f)
Reflexive–checkallthecases.Sinceitisonlytruewhenx
=y,it
istechnicallysymmetricandantisymmetric,butrathervacuous.Likewise,
itistechnicallytransitive,butvacuous.
Ingeneral,provethatsomethingisanequivalencerelationbyprovingthatit
isreflexive,symmetric,andtransitive.
(a)
Thisisanequivalencethateffectivelysplitstheintegersintooddand
evensets.Itisreflexive(x
+x
isevenforanyintegerx),symmetric
(sincex
+y
=y
+x)andtransitive(sinceyouarealwaysaddingtwo
oddorevennumbersforanysatisfactorya,b,andc).
Thisisnotanequivalence.Tobeginwith,itisnotreflexiveforany
integer.
Thisisanequivalencethatdividesthenon-zerorationalnumbersinto
positiveandnegative.Itisreflexivesincex
˙
x>
0.Itissymmetricsince
xy˙
=yx˙.Itistransitivesinceanytwomembersofthegivenclass
satisfytherelationship.
5
Chap.2MathematicalPreliminaries
Thisisnotane