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.
Chap.1DataStructuresandAlgorithms
Thefirstpartiseasywiththehint,butthesecondpartisratherdifficulttodowithout
astack.
a)boolcheckstring(stringS){
intcount=0;
for(inti=0;iif(S[i]==’(’)count++;
if(S[i]==’)’){
if(count==0)returnFALSE;
count--;
}
}
if(count==0)returnTRUE;
elsereturnFALSE;
}
b)intcheckstring(StringStr){
StackS;
intcount=0;
for(inti=0;iif(S[i]==’(’)
(i);
if(S[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).
(b)
Thisisnotanequivalence.Tobeginwith,itisnotreflexiveforany
integer.
(c)
Thisisanequivalencethatdividesthenon-zerorationalnumbersinto
positiveandnegative.Itisreflexivesincex
˙
x>
0.Itissymmetricsince
xy˙
=yx˙.Itistransitivesinceanytwomembersofthegivenclass
satisfytherelationship.
5
Chap.2MathematicalPreliminaries
(d)
Thisisnotanequivalancerelationsinc