algoritmusok tk ekf
DESCRIPTION
Adatrendszerek és algoritmusokTRANSCRIPT
-
Eszterhzy Kroly Fiskola
Matematikai s Informatikai Intzet
Algoritmusok
Geda Gbor
Eger, 2012
-
Tartalomjegyzk
1. Elsz 4
2. Bevezets 6
2.1. Adatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2. Tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3. Az adatszerkezetek osztlyozsa . . . . . . . . . . . . . . . . . 12
2.4. A vezrls lehetsgei . . . . . . . . . . . . . . . . . . . . . . . 14
2.5. Fogalmak, jellsek . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.1. Hatkonysg . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.2. Folyamatbra . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.3. Lernyelv . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.4. Vezrlsi szerkezetek . . . . . . . . . . . . . . . . . . . 19
2.5.5. Szekvencia . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.6. Szelekci . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.7. Iterci . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3. Alapalgoritmusok 32
3.1. Sorozatszmts . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.1. sszegzs . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.2. Megszmlls . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.3. Kivlogats . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.4. Minimum- s maximumkivlaszts . . . . . . . . . . . 34
3.2. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4. Keress, rendezs 46
4.1. Sorozat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2. Keress sorozatokban . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.1. Eldnts . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.2. Lineris keress . . . . . . . . . . . . . . . . . . . . . . 51
4.2.3. Kivlaszts . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.4. Strzss keress . . . . . . . . . . . . . . . . . . . . . . 52
1
-
4.2.5. Lineris keress rendezett sorozatban . . . . . . . . . . 53
4.2.6. Binris keress . . . . . . . . . . . . . . . . . . . . . . 54
4.3. Rendezs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.3.1. Beszr rendezs . . . . . . . . . . . . . . . . . . . . . 68
4.3.2. Shell rendezs . . . . . . . . . . . . . . . . . . . . . . . 71
4.3.3. sszefuttats . . . . . . . . . . . . . . . . . . . . . . . 75
4.4. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5. Halmaz 81
5.1. Feladat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6. A verem s a sor 84
6.1. A verem alkalmazsai . . . . . . . . . . . . . . . . . . . . . . 84
6.1.1. Posztxes kifejezs kirtkelse . . . . . . . . . . . . . 84
6.1.2. Inxes kifejezs ellenrzse . . . . . . . . . . . . . . . . 87
6.2. A verem megvalstsa . . . . . . . . . . . . . . . . . . . . . . 88
6.3. Sor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.3.1. Lptel sor . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3.2. Ciklikus sor . . . . . . . . . . . . . . . . . . . . . . . . 94
6.4. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Irodalomjegyzk 99
2
-
1. Elsz
Az informatika tudomnynak ezt, a tbbihez kpest viszonylag llandnak
mondhat terlett sokan, sokfle mdon kzeltettk mr meg. Szmtalan
igen rtkes munka szletett. Az jabbak klnsen a hasonl, bevezet
jellegek rst elssorban nem is az ismeretanyag tartalmi vltozsa teszi
szksgess, sokkal inkbb a clkznsg ignyel ms, jabb megkzeltst.
Maga az algoritmus kifejezs a bagdadi arab tuds, al-Hvrizmi (Abu
Dzsafar Muhammad bin Msza al-Hvrizmi, lt kb. 780-tl kb. 845-ig, Al-
Khvorizmi, Al-Khorizmi stb.) nevnek eltorztott, rosszul latinra fordtott
vltozatbl ered. A idszmts utn 700-1200 kztt eltelt idszak az arab
birodalmakban a kultra, a tudomny virgzsnak ideje volt. Ennek rsz-
ben a mongol, rszben a keresztny hdtsok vetettek vget. Az arabok
legnagyobbrszt a hinduktl, Eurpa pedig al-Hvrizmitl s utdaitl vette
t nemcsak a helyirtkes, tzes rendszer szmrst
1
, hanem az alapfok
algebrai s trigonometriai ismereteket is (szveges egyenletek felrsa, meg-
oldsa).
Az akkori idk egyik legnagyobb hats mve a trsgben, taln rgtn a
Korn utn, minden bizonnyal az al-Hvrizmi ltal rt Algebra (Al-kitab al-
muktaszr -hiszb al-dzsabr val-mukabala = Rvid knyv a helyreraksrl
(al-dzsabr) s az sszevonsrl) volt. Az al-dzsabr szbl ered mai algebra
szavunk. De al-Hvrizmi rt egy aritmetikai jelleg, a hindu tzes szmrend-
szert ismertet knyvet is, ez csak latin fordtsban maradt meg, cme gy
kezddik: Dixit Algorithmi (Ezt mondja al-Hvrizmi:). Innen eredt a latin
sz, ami aztn sztterjedt a tbbi eurpai nyelvben is. A 820 krl rt knyv
eredetije eltnt, a cm teljes latin fordtsa a kvetkez: Liber Algorithmi
de numero Indorum (azaz Algorithmus knyve az indiai szmokrl). A
hindu szmrst ismertet knyvt az Al-Mamn kalifa (Harun ar-Rasid a,
lsd: Ezeregyjszaka...) ltal ptett bagdadi Blcsessg Hz-ban rta. A
knyvet Adelard bathi angol szerzetes fordtotta a XII. szzadban, ebbl a
fordtsbl s egyb arab eredet forrsbl ismerte meg Eurpa az j szm-
rst. Az arab forrsok miatt terjedt el az arab szmok kifejezs, amely
1
addig rmai szmokkal illetve abakusszal, az kor szmolgpvel szmoltak.
3
-
elfedi a hindu eredetet.
Az algoritmus a matematika s az informatika fontos fogalma. Az elmleti
informatika egyes rszterletei foglalkoznak velk, gy az algoritmuselmlet,
a bonyolultsgelmlet s a kiszmthatsgelmlet. Szmtgpes programok
is gy vezrlik a szmtgpeket.
Egy problma megoldsra irnyul, adott szinten elemi lpsek sorozata
akkor tekinthet algoritmusnak, ha van egy vele ekvivalens Turing-gp, ami
minden megoldhat bemenetre megll.
4
-
2. Bevezets
Az let klnbz terletein felmerl feladatok megoldsra mr a szm-
tgpek megjelense eltt is meg tudtk adni olyan lpsek sorozatt, amely
elvezet az adott problma megoldshoz. Gondoljunk csak bele, hogy az
Euklideszi algoritmus utastsait kvetve meg tudjuk hatrozni kt egsz
szm legnagyobb kzs osztjt, vagy mr a kisiskolsok is ismerik, hogyan
tudjk papron sszeadni, kivonni, szorozni vagy osztani egymssal azokat
a szmokat, amelyekkel ezeket a mveleteket fejben nem kpesek elvgez-
ni. Geometria rn szintn megtanuljk, hogy milyen lpsek sorozata vezet
el egy szakasz felez-merlegeshez vagy egy szg szgfelezjhez. Ilyen s
ehhez hasonl tevkenysgsorozatok elsajtttatsa hossz id ta clja az
oktatsnak. Teht az oktats egyik f clja a problmamegoldsra val fl-
kszts. sszetettebb problmk megoldsra is ezek rvn a mintk rvn
vagyunk kpesek.
Teht akkor, amikor a szmtgpet a problmamegoldsban hvjuk se-
gtsgl, akkor csupn kt dogot kell tenni.
1. Az adott feladat jellemzit, a problma lerst meg kell jelentennk
a szmtgpben.
2. A feladat megoldshoz vezet lpseket szintn a szmtgppel kell
vgrehajtatnunk.
Lnyegben ezt nevezzk programksztsnek. Ezt a folyamatot s annak bi-
zonyos sszefggseit szemllteti a 2.1 bra. Az brn jl elklntve lthat
a folyamat trgyalsunk szempontjbl fontos t szakasza s azok kztti
kapcsolatrendszer.
1. Specikci:
A feladat clkitzseit fogalmazza meg. Itt hatrozzuk meg pontosan,
hogy milyen adatok llnak rendelkezsre s azokkal kapcsolatban mi-
lyen elvrsaink lehetnek (elfelttel). Itt kell rgzteni azt is, hogy az
adatok feldolgozstl mit vrunk, azaz milyen tulajdonsgokkal ren-
5
-
delkez (utfelttel) kimenetet szeretnnk
2
, azaz lerjuk a bemenet s
a kimenet kztti sszefggst.
2. Tervezs:
Ennek a fzisnak a sikerhez elengedhetetlen a pontos specikci. Itt
hatrozzuk meg az algoritmusok tervezsvel a bemenettl a kimenetig
vezet utat s az adatszerkezetek kialaktsval azokat az eszkz-
ket, amelyekkel ezen az ton vgig kvnunk menni. Adatszerkezetek
s az algoritmusok tervezsnek klcsns kapcsolatt jelzi a 2.1 brn
a kzttk lv nyl, ugyanis az adatszerkezet megvlasztsa meghat-
rozza a vele vgezhet mveleteket s viszont, ha eldntjk, hogy mi-
lyen algoritmust szeretnnk flhasznlni, gyakorlatilag leszktettk az
adatszerkezetek krt is, ahonnan vlaszthatunk az adataink brzo-
lsra. Termszetesen a feladat jellege mr jelentsen befolysolja azt
is, hogy milyen programozsi nyelvet vlaszthatunk. Ha azonban dn-
tttnk az algoritmusok s az adatszerkezetek vonatkozsban, akkor
ezzel tovbb szklhet a vlaszhat programozsi nyelvek kre.
Az elzekben szerettk volna rzkeltetni, hogy a tervezsi szakasz-
ban hozott dntseink mennyire meghatrozak lesznek a program s
nem utols sorban munkavgzs minsge szempontjbl is. A prob-
lmhoz rosszul illeszked adatstruktra nagyon megbonyolthatja az
algoritmusainkat, de a valban jl flptett adatmodell lnyegesen le-
egyszerstheti azt, ezzel hatkonyabb tve a fejlesztk munkjt, de
a ksbbi program mkdst is. Teht a tervezs fzisban az adat-
szerkezetek, a velk vgezhet mveletek ltal meghatrozott algorit-
musok s az elz kett implementlsra szolgl programozsi nyelv
sszehangolt megvlasztsa dnt fontossg a tovbbi munka sikere
szempontjbl.
3. Kdols:
Ebben a szakaszban valstjuk meg a korbbiakban megtervezett al-
2
Termszetesen fontos krds az is, hogy az rendelkezsre ll adatok birtokban,
azok feldolgozsval egyltaln a kvnt eredmny elrhet-e?
6
-
goritmust s adatszerkezetet a vlasztott programozsi nyelven. (Ha
az elzekben elg krltekinten jrtunk el, akkor ez a nagyon fontos
munka szinte mechanikusan is trtnhet.)
4. Tesztels, hibajavts:
A munknak ebben a szakaszban ellenrizzk, hogy a program megfe-
lel-e e a specikciban foglaltaknak. A program sszetettsgtl fg-
gen tbb-kevesebb hibra mindig kell szmtanunk, de kellen alapos
tervezssel elkerlhetk azok a slyos hibk, amelyek a tervezsi sza-
kaszban gykereznek s javtsukhoz pldul az adatmodell mdost-
sa, vagy az algoritmusok jra gondolsa szksges.
5. Dokumentls:
Idelis esetben ez a tevkenysg vgig ksri a fejleszts teljes folya-
matt. Br sok esetben, a munka sorn nem ltjuk t a fontossgt,
klnsen a program utlete vonatkozsban fontos lelkiismeretesen
vgeznnk.
A korbbiakban kt nagyon fontos, jellegkben is eltr kategrirl volt
sz. Mindkettvel kapcsolatban lehetnek elkpzelseink akr a htkznapi
tapasztalataink alapjn is, hiszen az adatok mr a szhasznlat rvn is
szinte htkznapi fogalomnak szmtanak, az algoritmusoknak pedig az a
leegyszerstett megfogalmazsa, miszerint valamely problma megoldsra
irnyul elemi lpsek sorozataknt adhat meg, szintn kzrthet, ennl
fogva szintn megfelel alapokat biztost a tovbbi trgyalshoz.
Mindezek megvalstsra az vek sorn szmtalan ltalnosan hasznl-
hat, vagy ppen specilis eszkzt hoztak ltre.
A mindennapi let, vagy akr a tudomny klnbz terletein gyakran
ptoljuk az eredetit valami hasonmssal. Leegyszerstve s ltalnost-
va a kett kztt csupn az a klnbsg, hogy nem minden paramterk
azonos. Pontosabban, a hasonms csak a szmunkra fontos paramtere-
iben egyezik meg az eredeti paramtereivel (vagy csak kzelti meg azt),
gy csak bizonyos szempontbl alkalmas az eredeti helyettestsre. Pldul
ltalban a kirakatban sem l emberekre aggatjk a ruhkat, holott nekik
7
-
2.1. bra. A programkszts lpsei.
szeretnk eladni. Mindenesetre a kirakati bbok mretket s alakjukat te-
kintve hasonlak az emberhez, gy a clnak megfelelnek. Bevett gyakorlat
volt, hogy az embereknek sznt gygyszereket llatksrletekkel teszteltk
mieltt a gygyszat gyakorlatba bevezettk volna az alkalmazsukat. Eb-
ben az esetben termszetesen a formai klnbzsg az elhanyagolhat, s
sokkal fontosabb a kt szervezet (emberi s llati) mkdsbeli hasonls-
ga. Korbban, a klnbz jrmvek tervezse sorn, pldul autk, hajk,
replgpek ramlstani vizsglataihoz elksztettk azok ltalban kicsiny-
tett vltozatt. Ezek csak formjukat tekintve egyeztek meg az eredetivel,
de mretbeli klnbsgen tl ltalban funkcionlisan is klnbznek attl
(pldul nincsen bennk motor). Ilyen esetekben azt mondjuk, hogy model-
leket ksztnk s alkalmazunk. ltalban vve modellnek nevezzk teht
azokat a dolgokat, amelyek csak a szmunkra fontos paramtereikben egyez-
nek meg a modellezni kvnt objektummal, jelensggel.
8
-
A minket krlvev vilg legklnbzbb dolgairl jegyznk meg illetve
rgztnk klnfle szmunkra fontos informcikat, ugyanakkor msokat,
amelyek nem szksgesek a szmunkra holott az adott dolog pontos jel-
lemzshez azok is szksgesek egyszeren elhanyagolunk. Az ilyen mdon
sszetartoz adatok sszessgt, amely adatok kztti logikai kapcsolatot
pontosan az jelenti, hogy ugyanazt a dolgot jellemzik, adatmodellnek ne-
vezzk. Az adott dolog adatmodellje teht nem fogja tartalmazni az adott
feladat szempontjbl lnyegtelen jellemzkre vonatkoz adatokat.
A modell teht a vals vilg illetve annak egy rsznek absztrakcija r-
vn jn ltre. Az ilyen adatmodell megalkotsa nagyon hasonlt a szveges
matematikai feladatok
3
esetben a megolds els lpseihez, amikor az ada-
tok rgztse, jellsek bevezetse, s az egyes adatok kztti sszefggsek
keresse trtnik. Lnyegben teht itt is adatmodellt ptnk s az adatmo-
dellnkkel klnbz mveleteket vgznk, hogy eljussunk a megoldshoz.
Az elvonatkoztatsok sorn begyakorolt sablonok alkalmazsa a ksbbiek-
ben segt minket olyan feladatok megoldsban, amilyenekkel korbban nem
is tallkoztunk. Valjban az algoritmizls sorn is hasonl szveges fel-
adatokat kell megoldanunk, de a helyzet annyival bonyolultabb, hogy pro-
duklnunk kell mg az adatmodell s a megolds menetnek egy viszonylag
kttt eszkzrendszer segtsgvel trtn lerst is a szmtgphez kzeli
formban.
2.1. Adatok
A legklnflbb dolgok s jelensgek rendszerknt val megkzeltse egy
a tudomnyterletektl fggetlen szemlletmd, amelynek kialaktsra az
informatika oktatsa ezen bell az algoritmizls s a programozs tantsa
sorn klnsen j lehetsgek knlkoznak. Ez a ltsmd a legklnflbb
terleteken kamatoztathat a problmamegolds sorn.
Egy rendszernek tekintjk a vals dolgok azon rszt, amely fontos a
vizsglt problma szempontjbl, az egyes rszek kztti kapcsolatok miatt.
3
Termszetesen ez igaz ms tudomnyterletek szmtsi feladataira is, hiszen egy
szmtsi feladat mondjuk a kmia terletrl flfoghat gy, mint egy szveges
matematikafeladat (pl.: keversi feladatok).
9
-
Br a rendszer behatrolsval a valsg jelents rszt eleve kizrjuk, a
rendelkezsnkre ll erforrsok vgessge miatt ltalban mg az ezeket
jellemz adatokat s sszefggseket sem tudjuk maradktalanul lerni. A
modellalkots az az eszkz, amely a vals rendszer absztrakcija rvn a l-
nyegtelen jellemzket elhagyva a rendelkezsre ll ismereteket kezelhetv
teszi. A vals rendszer flptst a rszei kztti kapcsolatok alapjn ad-
hatjuk meg. Ezeknek a kapcsolatoknak kell visszatkrzdnik a rendszer
adatmodelljben is.
2.2. Tpusok
Az adatmodell hatkonyabb implementlsa rdekben az egyes programo-
zsi nyelvek a tapasztalatok alapjn tbb-kevsb hasonl adattpusok hasz-
nlatt teszik lehetv.
Bizonyos adatok esetben nincs rtelme valamely rszket elklnteni
s azzal mveletet vgezni. Mivel az ilyen adatoknak nincsenek nll jelen-
tssel br rszei, gy nincs rtelme beszlni a rszek kapcsolatrl sem, teht
a szerkezetktl sem. Az ilyen adatokra azt mondjuk, hogy elemi tpusak.
Az algoritmusok tervezse vonatkozsban ezek elssorban elvi kategrit
kpviselnek, s a jobb tlthatsg rdekben clszernek tnik viszonylag
kevs szm elemi tpus bevezetse, termszetesen annak szem eltt tart-
sval, hogy a fejleszts ksbbi fzist jelent kdols sorn ez ne jelentsen
problmt.
A fentieknek megfelelen a ksbbiekben az adatok jellege miatt a k-
vetkezket tekintjk elemi tpusoknak:
egsz,
vals,
logikai,
szveg.
Az elemi tpusok kz szoktk sorolni a karaktereket is. Br a szveg valban
karakterekbl ll s valban lehet rtelme vizsglni az egyes karaktereket is
10
-
csak gy, ahogyan egy egsz szm egyes helyirtkein ll szmjegyeket
(pldul oszthatsg szempontjbl, vagy az egy bjton brzolt egsz leg-
alacsonyabb helyirtk bitjt hasonl cllal). Az esetek tbbsgben azon-
ban az egyes karakterek a feladat szempontjbl nem rtelmezhetek, vagy
az algoritmizls sorn nincs szksg arra. A tlsgosan szigor besorols a
ksbbiek sorn mr csak azrt is elveszti a jelentsgt, mert az adatmodell
tervezsekor mg nem a memriban val trols mikntje, sokkal inkbb az
dominl, hogy milyen rtkeket vehet fl az adat, s vele milyen mveleteket
vgezhetnk.
2.3. Az adatszerkezetek osztlyozsa
Az sszetettebb problmk adatmodelljben a rendelkezsre ll jellemzk
adatok formjban trtn trolsn tl a kzttk lv logikai kapcsola-
tokat is meg kell tudnunk jelenteni. Ennek megvalstsra olyan sszetett
adatszerkezeteket kell kialaktanunk, amelyekkel a ksbbiek folyamn ha-
tkonyan tudunk majd mveleteket vgezni, amibe az is beletartozik, hogy
a vlasztott programozsi nyelv kellen tmogatja azt.
A sszetett adatszerkezeteket az albbi szempontok szerint csoportost-
hatjuk:
1. Az elemek tpusa szerint az adatszerkezet lehet
homogn. ha minden eleme azonos tpus, vagy
heterogn. ha az elemek nem azonos tpusak.
2. Az adatszerkezeten rtelmezett mvelet szerint
struktra nlkli. adatszerkezet esetben az adatelemek kztt sem-
mifle kapcsolat nincs (pl.: halmaz)
asszociatv. adatszerkezetek elemei kztt nincs lnyegi kapcsolat, az
elemei egyedileg cmezhetek (pl.: tmb).
szekvencilis. adatszerkezetben minden elem kt kitntetett elem
kivtelvel (els s utols) pontosan egy msik elemtl rhet
el, s minden elemtl pontosan egy elem rhet el. Ez all csak a
11
-
kt kitntetett elem kivtel, mert az adatszerkezetnek nincs olyan
eleme, amelybl az els elem elrhet volna, s nincs olyan eleme
sem, amely az utolsbl volna elrhet (pl.: egyszer lista).
hierarchikus. adatszerkezet esetben egy olyan kitntetett elem van
(a gykrelem), amelynek megadsa egyenrtk az adatszerkezet
megadsval. A gykrelem kivtelvel minden elem pontosan egy
msik elembl rhet el, de egy elembl tetszleges (vges) szm
tovbbi elemet lehet elrni. Ez utbbi all a csak az adatszerkezet
vgpontjai kivtelek (pl.: binris fa).
hls. adatszerkezet elemei tbb elembl is elrhetek s egy adott
elembl is tbb tovbbi elemet tudunk elrni (pl.: grf).
3. Az elemek szma szerint
statikus. adatszerkezet elemszma lland. Az ltala elfoglalt trte-
rlet nagysga nem vltozik a mveletek sorn.
dinamikus. adatszerkezetek elemszma is vges, hiszen a rendelke-
zsre ll tr nagysga behatrolja a bvts lehetsgt. Ugyan-
akkor az elemszma a mveletek sorn vltozhat. rtelmezve van
az adatszerkezet res llapota, illetve amikor elfogyott az erre
a clra fenntartott trterlet, akkor azt mondjuk, hogy megtelt
az adatszerkezet. Az ilyen adatszerkezetek sajtossga, hogy j
adatelemmel trtn bvtse sorn az elem szmra le kell fog-
lalni a memria egy megfelel terlett, illetve akkor, amikor egy
elem feleslegess vlik, akkor gondoskodni kell arrl, hogy az gy
felszabadul trterlet ksbb ismt lefoglalhat legyen.
4. Az adatelemek trolsi helye szerint
folytonos. reprezentci esetn az az egybefgg, legszkebb trter-
let, amely tartalmazza az adatszerkezet valamennyi elemt, csak
ennek az adatszerkezetnek az elemeit tartalmazza.
sztszrt. reprezentcij adatszerkezet elemei elvileg a tr tetszle-
ges rszn lehetnek, az egyes elemek elrshez szksges infor-
12
-
mcit a tbbi elem trolja.
2.4. A vezrls lehetsgei
A Neumann-elvek szerint mkd gpek az utastsokat idben egyms utn
hajtjk vgre. Ez megfelel a legtbb, korbban a matematika terletrl,
a szmtgpek megjelense eltt ismert algoritmus feldolgozsnak. Ilyen
algoritmusra vezet pldul a msodfok egyenletek megoldsra alkalmas
x1,2 =bb2 4ac
2a
megoldkplet is, hiszen elszr az egyenletet
ax2 + bx+ c = 0
alakra hozzuk, azutn az egytthatk ismeretben kiszmtjuk a diszkrimi-
nns rtkt. Ezt kveten pedig, annak rtktl fggen meghatrozhatjuk
az egyenlet gykeit.
Egy msik, szintn a matematika terletrl ismert plda az a s a b
egsz szmok
(a, b Z\{0}) legnagyobb kzs osztjnak meghatrozsraalkalmas euklideszi algoritmus. Az algoritmus els lpsben kiszmtjuk az
r1 osztsi maradkot gy, hogy az oszt nem lehet a nagyobb szm4
:
a = b q1 + r1.
(Ahol q1 az a s a b egszosztsnak hnyadosa.)
Ha a maradk nem nulla (r1 6= 0), akkor jabb osztsra van szksg, demost az elz oszts osztjt kell osztanunk a maradkkal:
b = r1 q2 + r2.
Termszetesen most is elfordulhat, hogy a maradk nulltl klnbz. Eb-
ben az esetben ismt a maradkot kell szmolnunk a fentebb vzolt szablyok
4
Knnyen belthat, hogy ha nem gy tesznk, az algoritmus akkor is helyes ered-
mnyt szolgltat, csak eggyel tbbszr kell maradkot szmtanunk.
13
-
szerint:
r1 = r2 q3 + r3r2 = r3 q4 + r4.
.
.
.
.
.
.
.
.
rn1=rn qn+1+rn+1.Abbl, hogy az ri maradkok rtke i nvekedsvel cskken azaz a k-
vetkez oszts maradka egy pozitv egsz rtkkel mindig cskken az elz
maradkhoz kpest , az kvetkezik, hogy a fenti osztsok sorozatt ism-
telve vges szm mvelet utn be fog kvetkezni, hogy a maradk nullv
vlik, azaz van olyan n, hogy az
rn+1 = 0
teljesl. (Teht n+ 1 osztst kell vgeznnk.)
Mindkt jl ismert plda lehetsget add annak szemlltetsre, hogy a
sorrendi vezrls nem azonos azzal, hogy az algoritmusaink linerisak voln-
nak. Lthattuk, hogy a msodfok egyenlet megoldsa sorn a gyk alatti
kifejezs rtke alapjn tudjuk eldnteni azt, hogyan is szmoljunk tovbb.
(Ezrt is szksges azt elbb kiszmtani.) Teht a diszkriminns rtke meg-
hatrozza a tovbbi lehetsgeket, lpseket. Annak rtkrl csupn csak az
egyenlet ismeretben nem tudunk semmit sem mondani a legtbb esetben,
teht kiszmtsa rsze az algoritmusnak.
Az euklideszi algoritmus esetben br szintn a korbbi szmtsok
eredmnye hatrozza meg a tovbbi lpseket mgis ms a helyzet. Ha
az els oszts maradka nem nulla, akkor trivilis esetektl eltekintve
nem tudhatjuk, hogy hny tovbbi maradkra lesz mg szksg
5
. Csak az
adott oszts maradknak ismeretben tudjuk megmondani, hogy van-e mg
szksg tovbbiakra, de azt nem, hogy vajon mg hnyra? Ez termszetesen
azt jelenti, hogy ez az algoritmus sem lesz lineris, azaz a konkrt eset (a s
b rtke) hatrozza meg a megoldshoz vezet lpsek sorozatt.
5
Szemben a msodfok egyenlet megoldsval, ahol a diszkriminns kiszmtsa
utn, annak ismeretben mr meg tudjuk mondani a tovbbi lpseket.
14
-
Az algoritmusok lersra hasznlt eszkzk s a klnbz programoz-
si nyelvek termszetesen tartalmaznak olyan elemeket, amelyekkel a hasonl
esetek megfelel mdon lerhatk a szmtgp szmra. Gyakran elfor-
dul, hogy az algoritmizlssal, programozssal ismerkedk szmra gondot
okoz a kt eset megklnbztetse, br a gyakorlatban kpesek alkalmazni
a megoldkpletet, illetve meg tudjk hatrozni a kt szm legnagyobb k-
zs osztjt az ismertetett mdon. Ennek ltalban az lehet az oka, hogy
a lpsek alkalmazsa mechanikusan trtnik s nem flttlen tudatosult
azok lpsenknti jelentsge. Az algoritmizls oktatsakor azt kell elr-
nnk, hogy kialakulhasson a problma megoldshoz vezet tevkenysg
adott eszkzre jellemz elemi lpsekre val bontsnak kpessge.
Az algoritmus szekvencialitsnak megvltoztatsra az elgazsok szol-
glnak, amelyek lehetv teszik, hogy a korbbi mveletek eredmnytl
fggen ms-ms lpsek hajtdjanak vgre. Pldul, ha az euklideszi al-
goritmus lersban az szerepel, hogy az a s a b szm osztsi marad-
kt kell szmtani, ugyanakkor a nagyobb szmmal nem oszthatunk, akkor
gondoskodnunk kell arrl, hogy a maradk szmtsakor a > b teljesljn.Ez azt jelenti, hogy az a s a b szimblumok rtkt fl kell cserlnnk.
.
.
.
HA b > a
x aa bb xHVge
.
.
.
A tovbbi problmkat az ismtelt osztsok lersa okozhatja. Fontos an-
nak flismerse, hogy nem clszer adott esetben nem is lehetsges az
egyes lpseket annyiszor lerni, ahnyszor vgre kell majd hajtani. Ha azon-
ban kvetkezetesen ragaszkodunk ahhoz, hogy az a az osztand a b pedig
az oszt, s elfogadjuk, hogy egy korbbi oszts osztandjra a ksbbiek
folyamn mr nincs szksgnk a tovbbi szmtsokhoz, akkor belthat,
hogy az a s a b rtket minden oszts utn aktualizlnunk kell a fentebb
15
-
emltett funkcijuknak megfelelen.
.
.
.
Ciklus
r a Div ba bb rCVge Amikor (r = 0)
Ki: (a).
.
.
2.5. Fogalmak, jellsek
2.5.1. Hatkonysg
Induljunk ki abbl a kt nyilvnval dologbl, hogy a szmtgp szm-
ra minden mvelet elvgzshez idre van szksg, valamint minden trolt
adat helyet foglal. Kzenfekv, hogy ha egy feladat megoldshoz klnbz
mveletsorozatok vgrehajtsval is eljuthatunk, akkor azt az utat clszer
vlasztani, amely a problma megoldsa szempontjbl kedvezbb. Pldul
hamarabb szolgltatja ugyanazt az eredmnyt, vagy kevesebb trhelyet ig-
nyel a megolds sorn. Termszetes az is, hogy ha lehetsg van egy adat
trolsa sorn annak trignyt cskkentennk az informcitartalom csk-
kense nlkl, akkor azt meg is kell tennnk.
Vgezznk most egy nagyon pontatlan, de taln mgis tanulsgos sz-
mtst az albbi kifejezsek kirtkelshez szksges idvel kapcsolatban
6
.
ni=1
ai
an
i=1 i
6
A kifejezsek kztti egyenlsg teljesl a matematikbl jl ismert azonos alap
hatvnyok szorzsra s az els n termszetes szm sszegre vonatkoz sszefg-gsek miatt.
16
-
an(n+1)
2
Ttelezzk fl, hogy szmtgpnk esetben az sszeads, a szorzs s a
hatvnyozs mveletnek elvgzse rendre t1, t2 s t3 idt ignyel s ezek
kztt az albbi sszefggs ll fenn:
2t1 = t2, 2t2 = t3.
Ez azt jelenti, hogy egy szorzat kiszmtshoz szksges id alatt gpnk
kt sszeadst, egy hatvny ellltshoz szksges id alatt pedig kt szor-
zst kpes elvgezni.
nt2 + nt3 = n(t2 + t3) = 6nt1
nt1 + t3 = (n+ 4)t1
t1 + 2t2 + t3 = 9t1
2.5.2. Folyamatbra
A folyamatbra lnyegben az algoritmust szemlltet irnytott grf. Cso-
mpontjainak utastsokat, leinek adatokat feleltethetnk meg. Van egy
kitntetett csompontja, amelybl elindulva brmely msik csompontba
el lehet jutni ez a kiindul-csompont, tovbb egy msik specilis cso-
mpont, a vg-csompont, amelybl nem vezet t ms csompontokhoz, de
ebbe a csompontba brmely ms csompontbl el lehet jutni.
2.5.3. Lernyelv
Ennek az eszkznek a segtsgvel programozsi nyelvektl fggetlenl, mg-
is azokhoz igen hasonl formban adhatjuk meg algoritmusainkat a konkrt
programozsi nyelvek ktttsgei nlkl.
17
-
2.5.4. Vezrlsi szerkezetek
A vezrlsi szerkezetek segtsgvel oldhat meg, hogy az algoritmus utas-
tsainak vgrehajtsi sorrendjt a kvnt mdon tudjuk szervezni.
2.5.5. Szekvencia
Ez a vezrlsi szerkezet a benne megadott utastsok egyszeri, minden felt-
teltl fggetlen, a megads sorrendjben trtn vgrehajtst biztostja.
Utasts-
sorozat_1
.
.
.
Utasts-
sorozat_n
.
.
.
Utastssorozat_1;
.
.
.
Utastssorozat_n;
.
.
.
.
2.5.6. Szelekci
Egyg elgazs
Ha az elgazsban megadott b logikai kifejezs rtke igaz, akkor az Utas-tssorozat utastsait vgre kell hajtani, majd az elgazst kvet els uta-
stsra kerl a vezrls. Ellenkez esetben a b hamis rtke esetn az algoritmus vgrehajtst az elgazst kvet utastssal kell folytatni az
Utastssorozat vgrehajtsa nlkl.
18
-
b Utasts-sorozat
H
I
.
.
.
Ha akkor
Utastssorozat;
HVge;
.
.
.
Ktg elgazs
Az itt megadott Utastssorozat_1 utastsai pontosan akkor hajtdnak vg-
re, ha a b logikai kifejezs rtke igaz, mg annak hamis rtke esetn azUtastssorozat_2 hajtdik vgre. Ezt kveten a vezrls az elgazst k-
vet els utastsra kerl.
b
Utasts-
sorozat_2
Utasts-
sorozat_1
H
I
.
.
.
Ha akkor
Utastssorozat_1;
Klnben
Utastssorozat_2;
HVge;
.
.
.
19
-
2.5.7. Iterci
Az algoritmizls sorn, mr nem tl bonyolult feladatok esetben is gyak-
ran van arra szksg, hogy valamely vezrlsi szerkezet utastsainak kir-
tkelst egy vgrehajts utn esetleg jbl vgrehajtson a rendszer. Erre
a problmra az iterci knl lehetsget. Az itercis vezrlsi szerkezete-
ket alapveten kt kt nagy csoportba sorolhatjuk. A vezrlsi szerkezet els
utastsnak vgrehajtsa eltt
mg nem ismerjk
mr tudjuk
a szksges ismtlsek szmt. Ennek megfelelen a vezrlsi szerkezet meg-
valstsra ltalban az albbi utastsok llnak rendelkezsre.
Ell tesztel ciklus
A ciklusmag utastsai mindaddig vgrehajtdnak, mg a b logikai kifejezsrtke igaz. Azaz az algoritmus vgrehajtsa a H gon csak akkor folytat-
dik, ha a b logikai kifejezs rtke hamiss vlik. Ebbl az is kvetkezik,hogy
ha b hamis kzvetlenl a ciklusba val belps eltt, akkor a ciklus-mag utastsai egyszer sem hajtdnak vgre.
ha pedig vgrehajtdnak a ciklusmag utastsai, de sohasem vlik a
b logikai kifejezs rtke hamiss, akkor nem fog kilpni a ciklusbl,azaz nem kerlhet a vezrls a ciklust kvet utastsra, teht b-nekfggenie kell a ciklusmag utastsaitl.
20
-
b Utasts-sorozat
H
I
.
.
.
Ciklus _Mg
Utastssorozat;
CVge;
.
.
.
Htul tesztel ciklus
A ciklusmag utastsai mindaddig vgrehajtdnak, mg a b logikai kifejezsrtke hamis. Azaz az algoritmus vgrehajtsa az I gon csak akkor folyta-
tdik, ha a b logikai kifejezs rtke igazz vlik. Ebbl az is kvetkezik,hogy
a b belpskori rtktl fggetlenl a ciklusmag utastsai egyszerbiztosan vgre fognak hajtdni.
mivel a ciklusbl val kilps csak akkor kvetkezik be, ha a ciklus
vgn lv felttelvizsglatkor a b logikai rtke igaz, a ciklusmagutastsaitl b fggenie kell8.8
Abban az esetben, ha ciklusba val belpskor b igaz s nem fgg a ciklusmagutastsaitl, a ciklusbl val kilps termszetesen bekvetkezik az utastsok egy-
szeri vgrehajtsa utn, de ha ezt kvnja meg a problma, akkor nem indokolt a
htul tesztel ciklus alkalmazsa.
21
-
Utasts-
sorozat
bH
I
.
.
.
Ciklus
Utastssorozat;
CVge _Amikor ;
.
.
.
Elrt lpsszm ciklus
9
Az elrt lpsszm ciklus alkalmazsra akkor van lehetsgnk, ha a cik-
lusmag utastsainak vgrehajtsa eltt mr ismerjk a szksges ismtlsek
szmt. Br ez az utasts feltteles ciklus alkalmazsval kivlthat volna,
az algoritmus jobb olvashatsga, knnyebb megrtse miatt hasznlata fel-
ttlen indokolt.
9
Az itt bemutatott csompontnak nmagban nincsen rtelme, csak az itt megadott-
hoz hasonl specilis szerkezet rszgrfokban. Maga a csompont lnyegben egy
elgazs s egy gyjtcsompont sszevonsval jtt ltre, de tartalmaz olyan in-
formcikat is, amelyek a cv inicializlsra s vltozsra utalnak.
22
-
cv k..v
Utasts-
sorozat
.
.
.
Ciklus ..Utastssorozat;
CVge;
.
.
.
2.6. Feladatok
1. Adott koordintival a sk egy P (x, y) pontja s az orig kzppont
r sugar kr. Adjuk meg azt a logikai kifejezst, amely akkor igaz, ha
a P pont
a) bels pontja a krnek.
b) a krn kvl helyezkedik el.
c) illeszkedik a krvonalra.
2. Adjuk meg azokat a logikai kifejezseket, melyeknek rtke pontosan
akkor igaz, amikor a fenti felttelek nem teljeslnek.
3. rjunk algoritmust, amely beolvassa egy P (x, y) pont koordintit s
eldnti, hogy az hogyan helyezkedik el az orig kzppont r sugar
krhz kpest.
4. Adott koordintival a sk egy P (x, y) pontja s az ABCD-ngyzet
(A(1; 1), B(1;1), C(1;1), D(1; 1)). Adjuk meg azt a logikai kife-jezst, amely akkor igaz, ha a P pont
a) bels pontja a ngyzetnek.
23
-
b) a ngyzeten kvl helyezkedik el.
c) illeszkedik a ngyzet valamely oldalra.
5. Adjuk meg azokat a logikai kifejezseket, melyeknek rtke pontosan
akkor igaz, amikor a fenti felttelek nem teljeslnek.
6. rjunk algoritmust, amely beolvassa egy P (x, y) pont koordintit s
eldnti, hogy az hogyan helyezkedik el az ABCD-ngyzethez kpest.
7. Adott koordintival a sk egy P (x, y) pontja s az ABCD-ngyzet
(A(0; 1), B(1; 0), C(0;1), D(1; 0)). Adjuk meg azt a logikai kifeje-zst, amely akkor igaz, ha a P pont
a) bels pontja a ngyzetnek.
b) a ngyzeten kvl helyezkedik el.
c) illeszkedik a ngyzet valamely oldalra.
8. Adjuk meg azokat a logikai kifejezseket, melyeknek rtke pontosan
akkor igaz, amikor a fenti felttelek nem teljeslnek.
9. rjunk algoritmust, amely beolvassa egy P (x, y) pont koordintit s
eldnti, hogy az hogyan helyezkedik el az ABCD-ngyzethez kpest.
10. Legyenek a, b s c pozitv vals rtkek. Adjuk meg azt a logikai kife-
jezst, melynek rtke pontosan akkor igaz, ha
a) a, b s c lehetnek egy hromszg oldalhosszai.
b) a, b s c hosszsg szakaszokkal
) derkszg hromszg szerkeszthet.
) egyenl szr hromszg szerkeszthet.
) szablyos hromszg szerkeszthet.
11. Adjuk meg azokat a logikai kifejezseket, melyeknek rtke pontosan
akkor igaz, amikor a fenti felttelek nem teljeslnek.
24
-
12. rjunk olyan algoritmust, amely beolvassa a, b s c pozitv rtkeket s
kijelzi, hogy azokkal, mint oldalhosszakkal szerkeszthet-e hromszg,
s ha igen akkor milyen.
13. rjunk olyan algoritmust, amely beolvassa a, b s c pozitv rtkeket s
az albbi tartalm szvegek egyikt olyan mdon rja ki, hogy a benne
tallhat szavakat csak egyszer hasznlgatjuk fl.
A megadott adatokkal nem szerkeszthet hromszg.
A megadott adatokkal derkszg hromszg szerkeszthet.
A megadott adatokkal szablyos hromszg szerkeszthet.
A megadott adatokkal egyenl szr hromszg szerkeszthet.
A megadott adatokkal egyenl szr derkszg hromszg szer-
keszthet.
(Termszetesen a szavak sorrendjnek nem flttlen kell megegyeznie
a fentiekkel, de a tbbszr elfordul szvegrszek hromszg, derk-
szg, egyenl szr, stb. csak egyszer szerepelhetnek kiratsban.)
14. rjunk algoritmust, amely hrom vals rtk (a, b, c) bekrse utn ki-
jelzi, hogy az ax2+bx+c = 0 msodfok egyenletnek hny vals gyke
van.
15. rjunk algoritmust, amely hrom vals rtk (a, b, c) bekrse utn sz-
mtja az ax2 + bx+ c = 0 msodfok egyenlet a vals gykeit.
16. rjunk algoritmust, amely mindaddig beolvas egy (a, b, c) vals szm-
hrmast, amg az ax2 + bx+ c = 0 msodfok egyenletnek
legalbb 1 vals gyke van.
pontosan 2 vals gyke van.
nincs vals gyke.
17. rjunk algoritmust, amely az a s b pozitv egszek legnagyobb kzs
osztjt szmtja ki az euklideszi algoritmus alapjn. Az algoritmus
25
-
a legnagyobb kzs oszt mellett jelezze ki azt is, hogyha a szmok
relatv prmek.
18. Az A ngyzetes mtrix esetben tudjuk, hogy ftljn kvl csak 0
szerepel
10
. Teht ha a mtrixnak n sora van, akkor csupn n elem
trolsa hasznos, hiszen a tbbirl biztosan tudjuk, hogy rtkk
0. Troljuk a teljes mtrix helyett annak csupn a ftlbeli elemeit
egy n elem V vektorban. rjunk fggvnyt, amelynek paramterbe
berva a V vektort s a kvnt elem A mtrixbeli indexeit, visszaadja
a megfelel mtrixbeli elem rtkt.
19. Az A ngyzetes mtrix esetben tudjuk, hogy ftlja alatti elemek
rtke rendre 0
11
. Teht ha a mtrixnak n sora van, akkor hny hasz-
nos, 0-tl klnbz eleme van a mtrixnak? Troljuk a teljes mt-
rix helyett annak csupn azon elemeit, amelyekrl nem tudjuk bizto-
san, hogy rtkk 0 egy V vektorban sorfolytonosan. rjunk fggvnyt,
amelynek paramterbe berva a V vektort s a kvnt elem A mtrix-
beli indexeit, visszaadja a megfelel mtrixbeli elem rtkt.
20. Az A ngyzetes mtrix esetben tudjuk, hogy ftlja feletti elemek
rtke rendre 0
12
. Teht ha a mtrixnak n sora van, akkor hny hasz-
nos, 0-tl klnbz eleme van a mtrixnak? Troljuk a teljes mt-
rix helyett annak csupn azon elemeit, amelyekrl nem tudjuk bizto-
san, hogy rtkk 0 egy V vektorban sorfolytonosan. rjunk fggvnyt,
amelynek paramterbe berva a V vektort s a kvnt elem A mtrix-
beli indexeit, visszaadja a megfelel mtrixbeli elem rtkt.
10
Diagonlis mtrix
11
Fels-hromszg mtrix
12
Als-hromszg mtrix
26
-
START
a, b, c
Be:
D (b2 4ac)
D > 0x1 b+
D
2a
x2 bD
2a
x1, x2
Ki:
'Nincs vals gyk!'
Ki:
STOP
Egytthatk
bekrse
Diszkriminns
szmtsa
Van vals
gyk, ha
D > 0
Gykk
szmtsa
A szmtott
gykk
kijelzse
'Nincs vals
gyk' kijelzse
H
I
2.2. bra. A msodfok egyenlet vals megoldsait szol-
gltat algoritmus folyamatbrja
27
-
START
Vrakoz llapot:
az els 2 karakter
beolvassa
Vrakoz llapot:
kvetkez karakter
beolvassa
Kd
kirtkelse
Hibs
a kd?
Visszaszmlls
lelltsa
STOP
I
H
2.3. bra. Kd beolvas s kirtkel algoritmus
(a kdhossza 3)
28
-
Be- Ki-
Csompont Utasts fut lek szma
START
START: az algoritmus
kezdett jelli. A valdi
program grfjban csak
egyszer szerepelhet.
-
1
Tevkenysg
lersa
Tevkenysg: a program-
grf tetszleges olyan rsz-
grfja jellhet vele, amely-
hez pontosan egy bemen
s egy kimen l tartozik s
praktikusan nll funkci-
val br.
1 1
bH
I
Dnts: az algoritmus
vgrehajtsa az utas-
tsban megadott blogikai kifejezs rtktl
fggen (Igaz/Hamis),
az I-vel vagy a H-val
jelzett l mentn elrhet
csomponton folytatdik.
1 2
Gyjt csompont: ak-
kor alkalmazzuk, amikor
kett vagy tbb klnb-
z programrszlet azonos
rszprogram vgrehajts-
val folytatdik
7
.
2 1
STOP
STOP: az algoritmus v-
gt jelli. A valdi program
grfjban csak egyszer sze-
repelhet.
1
-
2.1. tblzat
Folyamatbra jellsei.
29
-
Be- Ki-
Csompont Utasts fut lek szma
va k
rtkads: hatsra a
baloldalon lv vltozhoz
tartoz memriaterlet
megvltozik a jobbolda-
lon tallhat kifejezs
rtknek megfelelen.
1 1
vlBe:
Bemenet: az utastsban
megadott vl vges sz-m vltoz rtknek meg-
vltoztatsra van lehet-
sg, valamely arra alkalmas
perifrirl beolvasott rt-
kek alapjn.
1 1
klKi:
Kimenet: az utastsban
megadott kl vges szmkifejezs rtke jelenthet
meg, valamely arra alkal-
mas perifrin.
1 1
n n
Kapcsoldsi pont: nem
jelenti valdi csompontjt
a programgrfnak, csupn
technikai szerepe van. Ak-
kor alkalmazzuk, ha a fo-
lyamatbra rsnak zikai
akadlyai vannak.
1 | - - | 1
2.2. tblzat
Folyamatbra tovbbi jellsei.
30
-
3. Alapalgoritmusok
3.1. Sorozatszmts
3.1.1. sszegzs
Adott az n elem a sorozat s a sorozat elemein rtelmezett ktoperandusos
mvelet. Ennek opertort jellje . Az algoritmus a sorozathoz az
a1 a2 . . . an
rtket rendeli.
1 Fggvny sszegzs(A:sorozat):Elemtip;
2 Vltoz
3 S: Elemtip; // S-ben keletkezik majd az sszeg
4 I: egsz; // ciklusvltoz
5 Algoritmus
6 S 0; // S kezdrtke 07 Ciklus I (1..N)8 S S + A[I]; // s = a1 + a2 + + ai9 CVge;
10 sszegzs S; // A ni=1 ai11 // visszatrsi rtk belltsa.
12 FVge;
sszegzs
3.1. algoritmus
A 3.1. algoritmus az sszegzs egy lehetsges megvalstst mutatja be,
amikor is a mvelet az aritmetikai sszeads, s az algoritmusban flhasz-
nljuk, a mveletnek zrus-eleme a 0.
31
-
3.1.2. Megszmlls
Adott az n elem a sorozat s a sorozat elemein rtelmezett T-tulajdonsg13.
A 3.2. algoritmus a sorozathoz hozzrendeli a T-tulajdonsg elemeinek a
szmt, amely 0-tl n-ig terjed egsz rtket jelenhet. Knny ltni, hogy a
fggvny visszatrsi rtke pontosan akkor 0 ha a sorozatnak nincsen egyet-
len T-tulajdonsg eleme sem, illetve n, ha minden elem T-tulajdonsg.
1 Fggvny Megszmlls(A:sorozat):egsz;
2 Vltoz
3 I: egsz;
4 DB: egsz; // DB a rszsorozat elemszma
5 Algoritmus
6 DB 0;7 Ciklus I (1..N)8 Ha T(A[I]) Akkor
9 DB DB + 1;10 HVge;
11 CVge;
12 Megszmlls DB;13 CVge;
Megszmlls
3.2. algoritmus
3.1.3. Kivlogats
Ezt az algoritmust akkor alkalmazhatjuk, ha az n elem a sorozathoz T-
tulajdonsg elemeinek rszsorozatt szeretnnk hozzrendelni. s a sorozat
elemein rtelmezett T-tulajdonsg.
13
Az, hogy a sorozat elemein rtelmezve van a T-tulajdonsg, azt jelenti, hogy annak
a halmaznak amelybl a sorozat elemit vlogatjuk vannak ilyen elemei, de az
korntsem teljesl, hogy magnak a sorozatnak is lesznek ilyen elemei
32
-
1 Fggvny Kivlogat(A,B:sorozat):egsz;
2 Vltoz:
3 I: egsz;
4 DB: egsz; // DB a rszsorozat elemszma
5 Algoritmus
6 DB 0;7 Ciklus I (1..N)8 Ha T(A[I]) akkor
9 DB DB + 1;10 B[DB] A[I];11 HVge;
12 CVge;
13 Kivlogat DB;14 FVge;
Kivlogats
3.3. algoritmus
sszevetve a kivlogats 3.3. algoritmust a megszmlls 3.2. algorit-
musval, knnyen lthat a kzttk lv szerkezeti s funkcionlis hasonl-
sg.
3.1.4. Minimum- s maximumkivlaszts
Legyen adott az n elem a sorozat, melynek rtkkszlete rendezett halmaz.
Ilyen esetekben lehet feladat a sorozat minimlis/maximlis rtk elemnek
meghatrozsa. Elfordul, hogy csupn az adott elem rtknek meghatro-
zsa a cl, de szksgnk lehet esetenknt maximlis illetve minimlis rtk
elem els vagy utols elfordulsi helynek meghatrozsra is.
33
-
1 Fggvny Minimum(A:sorozat):Elemtip;
2 Vltoz
3 Min: Elemtip; // a legkissebb elem rtke
4 I: egsz; // ciklusvltoz
5 Algoritmus
6 MinA[1]; // Min kezdrtke7 Ciklus I (2...N) // Az 1. elemet a Min kezdrtkvel8 // vettk figyelembe.
9 Ha A[I]
-
mdosul, ha az eddigi legkisebbnl kisebb rtket talltunk, biztostva van,
hogy ciklusbl kilpve MinI a minimlis rtk elem els elfordulsnak
sorszmt tartalmazza.
1 Fggvny MinimumH(A:sorozat):Egsz;
2 Vltoz
3 MinI: egsz; // a legkissebb elem indexe
4 I: egsz; // ciklusvltoz
5 Algoritmus
6 MinI 1; // MinI kezdrtke legyen 17 Ciklus I (2...N) // Az 1. elemet a MinI kezdrtkvel8 // vettk figyelembe.
9 Ha A[I]
-
a) ftljnak elemeit.
b) mellktljnak elemeit.
c) ftl feletti elemeit
) oszlop-folytonosan.
) sor-folytonosan.
d) ftl alatti elemeit
) sor-folytonosan.
) oszlop-folytonosan.
e) mellktl feletti elemeit
) oszlop-folytonosan.
) sor-folytonosan.
f) mellktl alatti elemeit
) sor-folytonosan.
) oszlop-folytonosan.
3. Az sszegzs ttelnek alkalmazsval szmtsuk az albbi kifejezsek
rtkt, felttelezve, hogy elegend csak vges sok tagot gyelembe
vennnk:
a)
pi
4= 1 1
3+
1
5 1
7+ . . .
b)
4
k=0
(1)k 12k + 1
c)
pi2
6= 1 +
1
22+
1
32+
1
42+ . . .
d) 6 k=0
1
k2
36
-
e)
pi4
90= 1 +
1
24+
1
34+
1
44+ . . .
f)
pi
2=
2
1 23 43 45 65 67 . . .
g)
2
pi=
2
22 +2
22 +
2 +2
2 . . .
h)
pi =12k=0
(3)k2k + 1
i)
pi = 4k=0
(1)k2k + 1
j)
pi = 3 +4
2 3 4 4
4 5 6 +4
6 7 8 4
8 9 10 + . . .
k)
pi =
k=0
( 48k + 1
28k + 4
18k + 5
18k + 6
)( 116
)kl)
pi =
k=0
(1 + 1
4k21)
k=01
4k21
m) GaussLegendre itercis algoritmus
a0 := 1;
b0 :=12;
t0 :=14 ;
p0 := 1;
an+1 :=an+bn
2
bn+1 :=anbn
37
-
tn+1 := tn pn(an an+1)2pn+1 := 2pn
pi (an+bn)24tnn)
e = 1 +1
1!+
1
2!+
1
3!+ . . .
o)
e = 1 +1
1
(1 +
1
2
(1 +
1
3
(1 +
1
4
(1 +
1
5(1 + ...)
))))
p)
1
e= 1 1
1!+
1
2! 1
3!+ . . .
q)
ln2 = 1 12+
1
3 1
4+ . . .
r)
2 = 1 +1
2+
1
4+
1
8+ . . .
s)
1
4=
1
1 2 3 +1
2 3 4 +1
3 4 5 + . . .
t)
k=0
1
(k 1)k(k + 1)
u)
1
(l 1)(l 1)! =1
1 2 . . . l+1
2 3 . . . (l + 1)+1
3 4 . . . (l + 2)+. . .
v)
L(x) :=
kj=0
(yj
m6=j06m6k
xi xmxj xm
)
38
-
L(x) = y0(x x1) . . . (x xk)(x0 x1) . . . (x0 xk)+y1
(x x0)(x x2) . . . (x xk)(x1 x0)(x1 x2) . . . (x1 xk)+. . .
+ yj (x x0) . . . (x xj1)(x xj+1) . . . (x xk)(xj x0) . . . (xj xj1)(xj xj+1) . . . (xj xk) + . . .
+ yk (x x0) . . . (x xk1)(xk x0) . . . (xk xk1)4. Adott az a pratlan elemszm (n = 2k + 1, ahol k N) sorozat sbiztosan tudjuk, hogy a sorozatnak legalbb 3 eleme van. Kpezzk az
albbi sszeget:
S := a1 + 2a2 + 2a3 + 2a4 + + 2an1 + an
5. Adott az a pratlan elemszm (n = 2k + 1, ahol k N) sorozat sbiztosan tudjuk, hogy a sorozatnak legalbb 5 eleme van. Kpezzk az
albbi sszeget:
S := a1 + 4a2 + 2a3 + 4a4 + 2a5 + + 4an1 + an
6.
ex =
k=0
xk
k!
7.
sinx =
k=0
(1)k x2k+1
(2k + 1)!
8.
cosx =
k=0
(1)k x2k
(2k)!
9. Koordintival adott egy n elem pontsorozat a skban. Hatrozzuk
meg, hny olyan eleme van, amely kvl esik egy adott r sugarO(x0, y0)
kzppont krn.
10. Koordintival megadott n elem, skbeli pontsorozat elemei jelentsk
39
-
egy n-oldal sokszg cscspontjait. (A megads sorrendje megfelel k-
rljrsi irnynak.) Hatrozzuk meg, hogy a sokszgnek hny adott
d-nl hosszabb oldala van.
11. Koordintival adott egy n elem pontsorozat a skban. Hatrozzuk
meg annak az O(x0, y0) kzppont krnek a sugart, amelyen kvl
nem esik egyetlen pont sem.
12. Koordintival adott egy n elem pontsorozat a skban. Hatrozzuk
meg azt az elemt, amely egy adott O(x0, y0) ponttl a legtvolabb
van.
13. Koordintival megadott n elem, skbeli pontsorozat elemei jelentsk
egy n-oldal sokszg cscspontjait. (A megads sorrendje megfelel a
krljrsi irnynak.) Hatrozzuk meg, hogy a sokszgnek hny adott
d-nl hosszabb oldala van.
14. Koordintival megadott n elem, skbeli pontsorozat elemei jelentsk
egy n-oldal sokszg cscspontjait. (A megads sorrendje megfelel a
krljrsi irnynak.) Hatrozzuk meg, hogy a sokszgnek hny adott
d-nl hosszabb oldala van.
15. Hatrozzuk meg egy sorozat msodik legnagyobb elemnek els elfor-
dulsi helyt.
16. A 3.6, a 3.7, a 3.8 s a 3.9 algoritmusok bankkrtyaszm
14
ellenr-
zst vgzik. Elemezzk a fent emltett algoritmusok hatkonysgt
vgrehajtsi id, trigny s bonyolultsg szempontjbl is.
14
A bankkrtyaszm felptsrl s ellenrzsnek mechanizmusrol tovbbi infor-
mcik a ?? alfejezetben tallhatk.
40
-
1 Fggvny Luhn1(A: kd):Logikai;
2 Vltoz
3 i: egsz;
4 SUM: elemtip;
5 Algoritmus
6 SUM 0;7 Ciklus (i 1 .. A.elemszm)8 HA (i MOD 2)=0 akkor
9 HA 2*A[i] > 9 akkor
10 SUM SUM + 2*A[i] - 9;11 Klnben
12 SUM SUM + 2*A[i];13 HVge;
14 Klnben
15 SUM SUM + A[i];16 HVge;
17 CVge;
18 Luhn1 (SUM MOD 10)=0;19 FVge;
Luhn-algoritmus egy lehetsges megvalstsa
3.6. algoritmus
41
-
1 Fggvny Luhn2( A: kd ): Logikai;
2 Vltoz
3 i: egsz;
4 SUM: elemtip;
5 Algoritmus
6 SUM 0;7 Ciklus (i 1 .. A.elemszm)8 HA (i MOD 2)=0 akkor
9 HA A[i] > 4 akkor
10 SUM SUM + 2*A[i] - 9;11 Klnben
12 SUM SUM + 2*A[i];13 HVge;
14 Klnben
15 SUM SUM + A[i];16 HVge;
17 CVge;
18 Luhn2 (SUM MOD 10)=0;19 FVge;
Luhn-algoritmus egy lehetsges megvalstsa
3.7. algoritmus
42
-
1 Fggvny Luhn3( A: kd ): Logikai;
2 Vltoz
3 i: egsz;
4 SUM: elemtip;
5 Algoritmus
6 SUM 0;7 i 1;8 Ciklus _Mg (i 6 A.elemszm)9 HA A[i] > 4 akkor
10 SUM SUM + 2*A[i] - 9;11 Klnben
12 SUM SUM + 2*A[i];13 HVge;
14 i i + 2;15 CVge;
16 i 2;17 Ciklus _Mg (i 6 A.elemszm)18 SUM SUM + A[i];19 i i + 2;20 CVge;
21 Luhn3 (SUM MOD 10)=0;22 FVge;
Luhn-algoritmus egy lehetsges megvalstsa
3.8. algoritmus
43
-
1 Fggvny Luhn4( A: kd ): Logikai;
2 Vltoz
3 i: egsz;
4 SUM: elemtip;
5 Algoritmus
6 SUM 0;7 i 1;8 Ciklus _Mg (i 6 A.elemszm)9 HA A[i] > 4 akkor
10 SUM SUM + 2*A[i] - 9 + A[i + 1];11 Klnben
12 SUM SUM + 2*A[i] + A[i + 1];13 HVge;
14 i i + 2;15 CVge;
16 Luhn4 (SUM MOD 10)=0;17 FVge;
Luhn-algoritmus egy lehetsges megvalstsa
3.9. algoritmus
44
-
4. Keress, rendezs
Az albbiakon kvl termszetesen szmtalan kapcsolat van a matematika s
az informatika tudomnya kztt, hiszen az informatika minden rszterle-
tnek matematikailag megalapozottnak kell lennie. A tovbbiakban nhny,
elssorban az algoritmizls szempontjbl fontos matematikai fogalmat, is-
meretet trgyalunk az informatika szempontjbl praktikus megkzelts-
ben.
4.1. Sorozat
A logikailag sszetartoz, hasonl jelleg, ltalban azonos jelentssel b-
r adatok sszessgt, mikor az egyes elemek rtkn kvl azok sokasgon
belli helye is fontos, a matematika eszkzrendszerben sorozatknt tudjuk
megadni. Az elemek egymshoz kpest elfoglalt helynek megadsa cljbl
az elemeket megsorszmozzuk. Matematikailag ez azt jelenti, hogy a term-
szetes szmokhoz (1,2, . . . , n) hozzrendeljk egy msik H halmaz elemeit.Ezt a matematikban az albbi mdon szoktk jellni:
a : N H
Ez lnyegben egy olyan fggvnykapcsolatot jelent, melyben ltrejtt ren-
dezett prok els eleme termszetes szm (a sorozat elemeinek indexe), a
msodik elem pedig a sorozat adott elem
15
. A mi szempontunkbl a vges
sorozatok a legfontosabbak, klnsen, ha azok elemeit trolnunk is kell,
illetve az elemekkel mveleteket is kell vgeznnk.
Sorozatokat alkotnak pldul valamely idszakban a naponknti deviza-
15
A kvetkez szmsorozat az Eur rfolyamnak naponknti alakulst adja meg
egy idszakban: 293,44; 291,29; 292,96; 291,21; 290,96; 291,05.
A fentieknek megfelelen ez a sorozat a kvetkez szmprokkal is megadhat,
hiszen fggvnyrl van sz: (1;293,44) (2;291,29) (3;292,96) (4;291,21) (5;290,96)
(6;291,05).
Ezzel a megadssal egyenrtk az albbi is: a1 = 293,44; a2 = 291,29; a3 == 292,96; a4 = 291,21; a5 = 290,96; a6 = 291,05.ltalban azonban az sem okoz flrertst, ha a sorozat elemeit egyszeren fel-
soroljuk.
45
-
rfolyamok. Logikailag sszetartoz rtkekrl beszlhetnk, mivel egy so-
rozat elemei egy adott deviza rfolyamnak vltozst rja le, gy az egyes
elemek jellege is azonos. Az egyes elemeket nem cserlhetjk fl, hiszen az
adott napra jellemz az rtkk. Hasonl kpen beszlhetnk egy adott v
napi kzphmrskleteinek sorozatrl is.
Legyenek a1, a2, . . . , an vals szmok, amelyek rendre bizonyos dolgok
valamely mrhet tulajdonsgt jelentik. Rendezzk el ezeket az rtkeket
gy, hogy az egyes rtkekre teljesljn, hogy ne legyenek nagyobbak az
ket kvetnl. (Termszetesen ezt nem rtelmezhetjk a sorozat utols an
elemre, hiszen annak nincsen rkvetkezje.)
Kzenfekvnek tnik, hogy nevezzk ilyenkor az ai-k sorozatt nvekv-
nek. Matematikai jellssel:
Monoton nvekvnek (nem cskkennek) nevezzk az (an) sorozatot, ha
i, j N, amikor (1 6 i < n) s (i < j) esetn ai 6 aj teljesl.
a16 a26 a36 . . .. . . .
6 ak16 ak 6 ak+16 . . .. . . .
6an26an16an
i = 1 esetn ez azt jelenti, hogy az a1 kisebb vagy egyenl az t kvet sszes
n i, azaz n 1 elemtl.Ha pedig i = 2, akkor a kivlasztott elem az sszes t kvet n i, azaz
n 2 elemtl nem lehet nagyobb.
46
-
a16 a26 a36 . . .. . . .
6 ak16 ak 6 ak+16 . . .. . . .
6an26an16an
a16 a26 a36 . . . 6 ak16 ak 6 ak+16 . . .. . . .
6an26an16an
i = k esetn az ak-nak mr csak az t kvet n k elemmel szemben vanilyen ktelezettsge. Az utols eltti an1-nek termszetesen csak az tkvet an-tl kell kisebbnek vagy egyenlnek lennie.
Ez teht azt jelenti, hogy a nvekven rendezett sorozatban egyetlen
elem sem lehet nagyobb az t kvettl. gy is megfogalmazhatnnk, hogy
nagyobb sorszm elem rtke nem lehet kisebb egy kisebb sorszm elem
rtknl.
Ezzel ekvivalens az a megfogalmazs is, hogy az ilyen sorozatokban br-
mely elem rtke kisebb vagy egyenl az t kvet elem rtknl, azaz
i N, amikor (1 6 i < n), ai 6 ai+1 teljesl.
a16 a26 a36 . . .. . . .
6 ak16 ak 6 ak+16 . . .. . . .
6an26an16an
Br az egyik megfogalmazsbl kvetkezik a msik, s fordtva, azaz
matematikai rtelemben ekvivalensek. Ennek megfelelen, ha egy sorozat
eleget tesz az egyiknek, akkor a msiknak is megfelel. Ennek ellenre mgis
rdemes elgondolkodni azon, hogy az algoritmizls sorn melyiket clszer
alkalmaznunk.
Legyen most feladatunk annak eldntse, hogy egy sorozat vajon nvek-
ven rendezett-e?
47
-
1. Az els esetben ennek eldntshez a sorozat minden elemt (az utols
kivtelvel) ssze kell hasonltanunk a nla nagyobb sorszmakkal. Ez
sszesen
n1i=1
i =n(n 1)
2
sszehasonltst jelent, hiszen sszehasonltsok szmnak megads-
hoz a termszetes szmokat kell sszegeznnk 1-tl (n 1)-ig.
2. A msodik esetben csupn azt kell megvizsglnunk, hogy az egyes
elemek az utnuk kvetkezvel milyen viszonyban vannak. Mivel az
utolsnak nincs rkvetkezje, ez csak
n 1
sszehasonltst jelent.
Felttelezhetjk, hogy a szmtgp szmra az egyes sszehasonltsokat
jelent logikai kifejezsek kirtkelshez t idre van szksge. A fentiekbl
knnyen lthat, hogy az els esetben a teljes kirtkelshez szksges id,
n(n 1)2
t,
ami n2-tel arnyos, mg a msik esetben ez az id csupn
(n 1)t,
ami lineris fggvnye a sorozat elemszmnak.
16
Szigoran monoton nvekvnek akkor neveznk egy sorozatot, amikor
az elemek kztt les egyenltlensg teljesl (ai < ai+1 illetve ai < aj).
16
Termszetesen ez az id lehet lnyegesen kevesebb is abban az esetben, ha a sorozat
nem rendezett, hiszen ha pldul mr az els kt elem sorrendje nem megfelel,
akkor nincs is szksg tovbbi sszehasonltsokra.
48
-
4.2. Keress sorozatokban
Ltni fogjuk majd, hogy ha bizonyos dolgokat valamely mrhet tulajdons-
guk szerint sorba rakunk, akkor a velk val bizonyos mvelet egyszerbben
vgezhetek el. Mskor azonban ezt nem tehetjk meg, mert az elemek sor-
rendjnek megvltoztatsval rtkes informcikat vesztennk. A fentiek
miatt fontos foglalkoznunk a rendezett s a rendezetlen sorozatok mvelete-
ivel is.
4.2.1. Eldnts
Adott az n elem a sorozat s a sorozat elemein rtelmezett T tulajdonsg.
Az algoritmus aszerint rendel a sorozathoz Igaz vagy Hamis logikai rtket,
hogy a sorozatnak van vagy nincs T tulajdonsg eleme.
1 Fggvny Eldnts(A:sorozat):logikai;
2 Vltoz
3 I: egsz;
4 Algoritmus
5 I 1;6 Ciklus _Mg (I 6 N) (Nem T(A[I]))7 I I + 1;8 CVge;
9 Eldnts(I 6 N);10 FVge;
Eldnts
4.1. algoritmus
A 4.1. algoritmus mindaddig vizsglja a sorozat elemeit az elsvel kezdve,
mg a sorozat elemei el nem fogynak, vagy nem tall egy T-tulajdonsgt.
Mivel a 6. sorban egy ell tesztel feltteles ciklus tallhat, a ciklusmag
mindaddig vgrehajtdik, amg a ciklusfelttel rtke Igaz. A kifejezs ele-
mei kztti mvelet miatt ez akkor kvetkezhet be, ha mr tlhaladtunk
49
-
a sorozat vgn (I>N), vagy ha az aktulis pozcin T-tulajdonsg elemet
talltunk. Ha teht a ciklusbl kilpve I>N teljesl, akkor az csak azt je-
lentheti, hogy a sorozatnak nincs T-tulajdonsg eleme, mert klnben mr
hamarabb kilpett volna a ciklusbl.
4.2.2. Lineris keress
A 4.1. algoritmus rtelmezsvel knnyen belthat, hogy nem hasznltunk
ki minden informcit, amely az algoritmus vgrehajtsa sorn keletkezett.
Gondoljuk csak el, hogy ha a ciklusbl azrt lptnk ki mert T-tulajdonsg
elemet talltunk, az I rtke rzi annak elfordulsi helyt. Ennek rtkt
adja vissza a lineris keress algoritmusa (a 4.2).
1 Fggvny LinKer(A:sorozat , Hely:egsz):logikai;
2 Vltoz
3 I: egsz;
4 Algoritmus
5 I 1;6 Ciklus _Mg (I 6 N) (Nem T(A[I]))7 I I + 1;8 CVge;
9 HelyI;10 LinKer(I 6 N);11 FVge;
Lineris keress
4.2. algoritmus
4.2.3. Kivlaszts
Adott az n elem a sorozat s a sorozat elemein rtelmezett T tulajdonsg.
Biztosan tudjuk, hogy a sorozatnak van T tulajdonsg eleme. Az algoritmus
50
-
kimenete a T tulajdonsg elem helye
17
.
1 Eljrs KiVlaszts(A:sorozat , Hely:egsz);
2 Vltoz
3 I: egsz;
4 Algoritmus
5 I 1;6 Ciklus _Mg (Nem T(A[I]))
7 I I + 1;8 CVge;
9 HelyI;10 EVge;
Kivlaszts
4.3. algoritmus
Lthat hasonlsgokon tl a 4.3 algoritmus jelents eltrssel is ren-
delkezik a 4.1 s a 4.2 algoritmusokhoz kpest. Mivel a sorozatnak van T-
tulajdonsg eleme, gy biztosan tallunk egyet, mieltt az I>N teljeslne,
ezrt annak vizsglata, hogy I rtkvel sorozatbeli elemre hivatkozunk-e,
szksgtelen.
4.2.4. Strzss keress
A kivlaszts ttelnek (4.3. algoritmus) tapasztalatait flhasznlva a line-
ris keresst (4.2. algoritmus) hatkonyabb tehetjk. Ha felttelezzk, hogy
lineris keress ciklusfelttelnek kirtkelshez 2, a ciklusmag utastsnak
vgrehajtshoz 1 idegysgre van szksg, akkor belthat, hogy a kivlasz-
ts ttelnek vgrehajtsi ideje kevesebb a lineris keressnl. Ez azt jelen-
ti, hogy ha a sorozatrl biztosan tudnnk, hogy tartalmaz T-tulajdonsg
elemet, akkor azt gyorsabban lennnk kpesek megtallni azt. Ilyen infor-
mcival ltalban nem rendelkeznk, de az adatszerkezet megfelel kiala-
17
Amennyiben a sorozatban tbb T tulajdonsg elem is tallhat, akkor ezek kzl
az els elfordulsi helyet adja vissza.
51
-
ktsval ltalban lehetsgnk van a sorozat elemein kvl mg egy elem
szmra helyet biztostani. Troljunk az adatszerkezet (n + 1). pozcijn
egy T-tulajdonsg elemet (4.4. algoritmus 6. sor). gy ha az eredeti soro-
zat nem is, de az gynevezett strzsaelemmel kibvtett sorozat biztosan
tartalmazza a keresett elemet. Ami a strzss keress hatkonysgt illeti,
a tapasztalat valban azt mutatja, hogy a futsi ideje megkzeltleg
23 -a a
lineris keressnek.
1 Fggvny StrzssKer(A:sorozat , Hely:egsz): logikai;
2 Vltoz
3 I: Egsz;
4 Algoritmus
5 I 1;6 A[N + 1] KeresettTulajdonsgElem;7 Ciklus _Mg (Nem T(A[I]))
8 I I + 1;9 CVge;
10 StrzssKer (I 6 N);11 HelyI;12 FVge;
Strzss keress
4.4. algoritmus
4.2.5. Lineris keress rendezett sorozatban
A keres algoritmusok lellsi felttelt gy is megfogalmazhatnnk, hogy
nincs rtelme tovbb keresni, ha megtalltuk a sorozat keresett elemt, illet-
ve biztosan tudjuk azt mondani az eddig megvizsglt elemek alapjn, hogy
a sorozat nem tartalmazza azt. Ezt az utbbi kijelentst az elz algoritmu-
sainkban csak akkor tehetjk, a sorozat minden elemt megvizsgltunk.
Ms a helyzet rendezett sorozat esetben (ha a keress kulcsa megegyezik
a rendezs kulcsval). Ttelezzk fl, hogy egy nvekven rendezett sorozat
52
-
nem tartalmazza a keresett elemet, de van a keresettnl kisebb s nagyobb
eleme is. Ha sorozat elemeit az elstl kezdve vizsgljuk, elbb-utbb megta-
lljuk a keresett elemnl nagyobb elemek kzl a legkisebbet. Itt a keresst
be is fejezhetjk, hiszen az ezt kvet elemek az aktulisnl mg nagyobbak.
A rendezett sorozaton val lineris keress 4.5. algoritmusa teht akkor fog
megllni, ha az albbiak kzl egyik teljesl:
1. megtallta a keresett elemet,
2. a keresett elemnl mr nagyobb az aktulis elem,
3. elfogytak a sorozat elemei, azaz I>N teljesl.
(Jegyezzk meg, hogy I>N csak akkor kvetkezhet be, ha keresett elemet a
sorozat nem tartalmazza s az nagyobb a sorozat utols elemnl is.)
1 Fggvny LinKerRend(A:sorozat , Adat:elemtip , Hely:
egsz):logikai;
2 Vltoz
3 I: egsz;
4 Algoritmus
5 I 1;6 Ciklus _Mg ((I 6 N) (Adat >A[I]))7 I I + 1;8 CVge;
9 HelyI;10 LinKerRend ((I 6 N) (Adat=A[I]));11 FVge;
Lineris keress rendezett sorozatban
4.5. algoritmus
4.2.6. Binris keress
A kvetkez keres algoritmusnak szintn a sorozat rendezettsge az elfelt-
tele. Mkdst taln azzal a gyakorlati pldval lehetne szemlltetni, aho-
53
-
e 6 uA C D E F G H N P R
e = 1u = 10
k = 5 adat < ak
e 6 uA C D E F G H N P R
e = 1u = 4
k = 2 adat > ak
e 6 uA C D E F G H N P R
e = 3u = 4
k = 3 adat = ak
4.1. bra. A keresett adat =D
gyan egy lexikonban megkeresnk egy szcikket. A lexikonban val keress
nem lenne tlsgosan hatkony, ha lineris keress algoritmust kvetnnk.
Helyette ltalban inkbb gy jrunk el, hogy ha az aktulis szcikk nem
egyezik meg a keresettel, akkor megprbljuk megbecslni, hogy a keresett
mennyivel lehet az aktulis eltt vagy utn.
Ttelezzk fl teht, hogy a sorozat nvekven rendezett. Vlasszuk ki
a sorozat kzps elemt. Amennyiben az nem a keresett elem, akkor ssze-
hasonltva a keresett elemmel, el tudjuk dnteni, hogy a keresst a kzps
elemet kvet, vagy az azt megelz elemek rszsorozatn van rtelme to-
vbb folytatni, ahogyan ezt a 4.1. bra is szemllteti.
Az els vizsglatot kveten vagy megtalltuk az elemet, vagy teljes biz-
tonsggal kizrhatjuk a tovbbi keressbl megkzeltleg az elemek felt.
Hasonl mdon eljrva a maradk, mg ki nem zrt elemek rszsorozat-
val, ha nem talltuk meg a keresett elemet az adott rsz kzepn, most az
eredeti sorozat megkzeltleg negyedt zrhatjuk ki a tovbbi keressbl.
A 4.1. s a 4.2. brkon jl lthat, hogy a tovbbi keresst mindig egyre
cskken megkzeltleg felezd elemszm sorozaton folytatjuk tovbb
54
-
e 6 uA C D E F G H N P R
e = 1u = 10
k = 5 adat > ak
e 6 uA C D E F G H N P R
e = 6u = 10
k = 8 adat < ak
e 6 uA C D E F G H N P R
e = 6u = 7
k = 6 adat > ak
e 6 uA C D E F G H N P R
e = 7u = 7
k = 7 adat > ak
e > uA C D E F G H N P R
e = 8u = 7
4.2. bra. A keresett adat =J
mindaddig, amg vagy meg nem talljuk a keresett elemet, vagy a vizsglat-
ra kijellt rszsorozat elemszma nullv nem vlik. Ezt az E s U vltozk
E>U relcija jelzi.
55
-
1 Fggvny BinKer(A:sorozat , Adat:elemtip , Hely: egsz):
logikai;
2 Vltoz
3 E, U, K: egsz;
4 Algoritmus
5 E 1;6 U N;7 K (E + U) div 2;8 Ciklus _Mg (E 6 U A[K] 6= Adat)9 Ha Adat
-
1 Vltoz
2 I: egsz; // ciklusvltoz
3 J: egsz; // j. helyre kerl majd a legkisebb elem
4 C: elemtip; // segdvltoz kt elem cserjhez
5 Algoritmus
6 J 1; // j kezd rtke legyen 1.7 // Innen szmtva
8 // dolgozzuk fl a sorozatot.
9 Ciklus I(J + 1..N) // Vesszk a rkvetkez elemeket...10 Ha A[I]
-
1 Vltoz
2 I: egsz; // ciklusvltoz
3 J: egsz; // j. helyre kerl majd a msodik legkisebb
4 C: elemtip; // segdvltoz kt elem cserjhez
5 Algoritmus
6 J 2; // j kezd rtke legyen 2.7 // Innen szmtott rszt dolgozzuk fl
8 // a sorozatnak, teht az els elemet mr nem.
9 Ciklus I(J + 1..N) // Vesszk a rkvetkez elemeket...10 Ha A[I]
-
1 Eljrs RendKzv(A: sorozat);
2 Vltoz
3 I: egsz; // ciklusvltoz
4 J: egsz; // j. helyre kerl majd a legkisebb elem
5 C: elemtip; // segdvltoz kt elem cserjhez
6 Algoritmus
7 Ciklus J (1..N-1) // a j. a rszsorozat 1. eleme8 // Innen szmtva dolgozzuk fl a sorozatot.
9 Ciklus I(J + 1..N) // Vegyk a rkvetkez10 Ha A[I]
-
Amikor a legkisebb elemet juttatjuk az els helyre (J=1), akkor az a1-et
ssze kell hasonltanunk az ssze rkvetkez n1 darab elemmel. A J utol-s rtke n1 lesz, ami azt jelenti, hogy ahhoz, hogy a msodik legnagyobbelem a helyre kerljn, csak 1 sszehasonltst kell vgeznnk. Az sszes
sszehasonltsok szmt teht
nic=1
c
alakban adhatjuk meg.
Arra val tekintettel, hogy a nem minden sszehasonlts eredmnyezi
az sszehasonltott elemek cserjt s a kt elem cserje hrom rtkadssal
oldhat meg, az rtkadsok szma legfeljebb
3nic=1
c.
Eleve rendezett sorozat esetn termszetesen nem trtnik egyetlen rtk-
ads sem.
A rendezs sorn a sorozat elemein trolsn kvl szksg van mg egy
elem tpus trhelyre, teht az algoritmus trignye
n+ 1.
Knny ltni, hogy ha a 4.9. algoritmus a sorozat j. pozcijra eljuttat
egy elemet, ha a ksbbiekben ennl kisebbet tall, akkor azt ezzel ismt
megcserli. Ez azt jelenti, mire a megfelel elemet sikerl a helyre juttat-
ni, addig esetlegesen tbb flsleges csert is vgre fogunk hajtani. Mindez
kikszblhet volna gy, ha megrizve a rendez algoritmus alapkoncep-
cijt elszr kivlasztannk az aktulis rszsorozat legkisebb elemt s
ezt kveten mr legfeljebb csak egy csert kellene vgezni. gy teht a 4.10.
minimumkivlasztssal trtn rendezsre tekinthetnk a 4.9. algoritmus ha-
tkonyabb vltozataknt is.
60
-
1 Eljrs RendMin(A: sorozat);
2 Vltoz
3 MinI: egsz; // a mindenkori legkisebb elem sorszma
4 I: egsz; // ciklusvltoz a minimum kivlasztshoz
5 J: egsz; // j. helyre kerl majd a legkisebb elem
6 C: elemtip; // segdvltoz kt elem cserjhez
7 Algoritmus
8 Ciklus J (1..N-1) // A j. a rszsorozat 1. eleme9 // A j. elemtl a sorozat vgig terjed
10 // rszre valsul meg a minimum kivlasztsa.
11 MinIJ;12 Ciklus I(J + 1..N) // Vegyk a rkvetkezket...13 Ha A[I]
-
A minimumkivlasztssal trtn rendezs sorn az alapkoncepci miatt
ez jl lthat a 4.9. s efalg:rendmin. algoritmus szerkezetnek sszeha-
sonltsakor is ugyanannyi sszehasonltst kell vgezni, mint a kzvetlen
kivlasztssal trtn rendezs sorn.
Az adatmozgatsok tekintetben mr lnyegesen kedvezbb lehet a hely-
zet, hiszen a 4.10. algoritmus bels ciklusa a mdszer nevhez hven l-
nyegben egy minimumkivlaszts. Valjban teht az algoritmus meghat-
rozza minden egyes rszsorozat legkisebb elemnek helyt, s azt megcserli
az adott rszsorozat els, azaz a j. rszsorozat esetben a teljes sorozat j.
elemvel. Ez azonban azt jelenti, hogy az rtkadsok maximlis szma
3(n 1)
lehet.
A trigny tekintetben szintn nincs klnbsg az elzhz kpest, az
elemek trolsn tl, a csere elvgzshez szintn szksges egy tovbbi elem
tpus segdvltoz. Teht az algoritmus trignye
n+ 1.
Korbban lttuk, hogy a sorozatok rendezettsge ellenrizhet a szom-
szdos elemek sszehasonltsval. Nevezetesen, ha brmely kt szomszdos
elem sorrendje megfelel, akkor a sorozat is rendezett. Erre pt a bubork-
rendezs 4.11. algoritmusa.
Az algoritmus elszr a sorozat elejtl kezdve minden elemet sszeha-
sonlt a rkvetkezjvel, s ha a sorrendjk nem megfelel, akkor meg is
cserli azokat. Ez a mveletsor n1 sszehasonlts s legfeljebb ugyanennyicsere rn biztostja, hogy a sorozat legnagyobb eleme a sorozat vgre ke-
rljn. Ezt kveten mr csak az utols elem gyelmen kvl hagysval
az els n 1 elemmel kell megismtelnnk a mveletsort, mikzben n 2 sszehasonltst s legfeljebb ugyanennyi csert vgznk el. Ekkorra asorozat msodik legnagyobb eleme kerlt a vgleges helyre.
Hasonl mdon a sorozat tbbi eleme is vgleges helyre buborkoltat-
62
-
hat. Utolsknt a sorozat els kt elembl ll rszsorozatban vgezve a
mveletsort a msodik s az els elem is helyre kerl.
1 Eljrs RendBubork(A: sorozat);
2 Vltoz
3 I: egsz; // ciklusvltoz
4 J: egsz; // a feldolgozand rszsorozat sorszma
5 C: elemtip; // segdvltoz kt elem cserjhez
6 Algoritmus
7 Ciklus J (1..N-1) // a j. rszsorozat feldolgozsa8 // Az elejtl az n j. jrjuk be a sorozatot.9 Ciklus I (1..N-J)10 Ha A[I]>A[I + 1] akkor
11 C A[I]; // Ha a szomszdok sorrendje...12 A[I]A[I + 1]; // ...nem megfelel, az elemek13 A[I + 1] C; // (i. s i+ 1.) cserje szksges14 HVge;
15 CVge;
16 // A j. rszsorozat legnagyobb eleme
17 // biztosan az n j + 1. helyre,18 // a rszsorozat vgre kerlt.
19 CVge;
20 EVge;
Buborkrendezs
4.11. algoritmus
A fentiek alapjn s a 4.11. algoritmus rtelmezse alapjn az olvas-
ra bzzuk annak beltst, hogy a buborkrendezs hatkonysgt tekintve
megegyezik a kzvetlen kivlasztssal trtn rendezs (4.9.) algoritmus ha-
tkonysgval.
63
-
1 Eljrs RendBubork_J1(A: sorozat);
2 Vltoz
3 I: egsz; // ciklusvltoz
4 J: egsz; // a feldolgozand rszsorozat sorszma
5 C: elemtip; // segdvltoz kt elem cserjhez
6 VoltCsere: logikai;
7 //
8 Algoritmus
9 J 1;10 VoltCsere Igaz;11 Ciklus _Mg (J 6 N-1) VoltCsere12 VoltCsere Hamis;13 // a j. rszsorozat feldolgozsa
14 // Az elejtl az n j. jrjuk be a sorozatot.15 Ciklus I (1..N-J)16 Ha A[I]>A[I + 1] akkor
17 C A[I]; // Ha a szomszdok sorrendje...18 A[I]A[I + 1]; // ...nem megfelel, az elemek19 A[I + 1] C; // (i. s i+ 1.) cserje szksges20 VoltCsere Igaz; // Folytatni kell a rendezst21 HVge;
22 CVge;
23 // A j. rszsorozat legnagyobb eleme
24 // biztosan az n j + 1. helyre,25 // a rszsorozat vgre kerlt.
26 J J + 1;27 CVge;
28 EVge;
A buborkrendezs hatkonyabb tehet, ha az
algoritmus flismeri, hogy a sorozat rendezetlen rsze
is rendezett vlt mr
4.12. algoritmus
64
-
Ugyanakkor vegyk szre, hogy a buborkrendezs sorn azon tl, hogy
a nagyobb rtk elemek sorozat vge fel gyorsan vndorolnak, a kisebbek
a sorozat eleje fel mozdulnak el egy hellyel. Ez azt jelenti, hogy mikzben a
sorozat vgn a rendezett rsz elemszma eggyel ntt, addig az ettl jobbra
lv elemek rendezettsge is megvltozik, esetleg rendezett is vlhat. A 4.11.
mdostsval elrhet, hogy az algoritmus felismerje azt, ha a rendezettsg
a kisebb index elemek krben is bekvetkezett. Ekkor ugyanis a teljes
sorozat rendezett vlt. Ezt a mdostst tartalmazza a 4.12. algoritmus.
A 4.12. javtott bubork-rendezs csak azt kpes flismerni, hogy a so-
rozat baloldali, rendezsre vr rsze teljesen rendezett vlt. Ezt az jelzi,
hogy bels ciklus lefutsa sorn nem volt szksg cserre. Ugyanakkor elfor-
dulhat, hogy bels ciklusban jval a ciklusvltoz vgrtknek elrse eltt
trtnt az utols csere, azaz a sorozat az utols csere helytl mr rendezett.
Ezt kpes flismerni a buborkrendezs 2. javtott 4.13. algoritmusa.
65
-
1 Eljrs RendBubork_J2(A: sorozat);
2 Vltoz
3 I: egsz; // ciklusvltoz
4 J: egsz; // a feldolgozand rszsorozat sorszma
5 C: elemtip; // segdvltoz kt elem cserjhez
6 UtolsCsereH: egsz;
7 // az utols csere hlyt jelzi majd
8 Algoritmus
9 J 1;10 Ciklus _Mg (J 6 N-1)11 UtolsCsereH 0;12 // a j. rszsorozat feldolgozsa
13 // Az elejtl az n j. jrjuk be a sorozatot.14 Ciklus I (1..N-J)15 Ha A[I]>A[I + 1] akkor
16 C A[I]; // Ha a szomszdok sorrendje...17 A[I]A[I + 1]; // ...nem megfelel, az elemek18 A[I + 1] C; // (i. s i+ 1.) cserje szksges19 UtolsCsereHI; // Folytatni kell a rendezst20 HVge;
21 CVge;
22 // A j. rszsorozat legnagyobb eleme
23 // biztosan az n j + 1. helyre,24 // a rszsorozat vgre kerlt.
25 JN-UtolsCsereH;26 CVge;
27 EVge;
A buborkrendezs algoritmusban lehetsg van az
utols csere helynek trolsra, gy egynl tbb elem
is csatolhat a rendezett rszsorozathoz
4.13. algoritmus
66
-
4.3.1. Beszr rendezs
A beszr rendezs elve szerint mindig a kvetkez elem helyt kell megke-
resnnk egy mr rendezett rszsorozatban. Ezt egy n elem sorozat esetben
n 1-szer kell megtennnk, hiszen az a1-et, mint egy egy elem rszsoroza-tot rendezettnek tekinthetjk, s az a2-tl a sorozat vgig sszesen ennyi
elem van, amelyeket be kell illesztennk a rendezs sorn az egyre bvl
rendezett rszbe.
P C E R A D N H F G
j = 1C P E R A D N H F G
j = 2C E P R A D N H F G
j = 3C E P R A D N H F G
j = 4A C E P R D N H F G
j = 5A C D E P R N H F G
j = 6A C D E N P R H F G
j = 7A C D E H N P R F G
j = 8A C D E F H N P R G
j = 9A C D E F G H N P R
4.3. bra. Egy 10 elem sorozat rendezse beszr ren-
dezssel
67
-
Ezt szemllteti a 4.3. bra egy 10 elem sorozat pldjn. Piros sznnel
a rendezsre vr elemeket, zlddel a teljesen rendezett sorozatot jelltk.
Srga a sorozat egyre bvl rendezett rszt jelli, amelybe ha bele is kerl
egy elem, kornt sem biztos, hogy az lesz a vgleges helye. Nyllal jelltk,
hogy a rendezetlen rsz els elemt a rendezettek kz hov is illesztettk
be. Az brn meggyelhet, hogy a beillesztetett elemtl balra tallhat
srgval jelzett elemek mindegyike az elz sorban elfoglalt helykhz kpest
egy pozcival balra helyezkednek el. gy trtnhet meg pldul az, hogy az
eredetileg a 4. helyen tallhat R br viszonylag gyorsan a rendezett
rszbe kerl a rendezs bejezsekor mr a sorozat vgre vndorolt.
A j-edik lpsben teht a sorozat j+1-edik elemt szeretnnk a rendezett
rszsorozatban elhelyezni. Hogy ezt megtehessk, valjban kt problmt
kell megoldanunk.
1. Meg kell keresnnk azt a helyet, ahov beillik az aj+1. Itt jegyezzk
meg, hogy valsznleg clszer lesz majd gyelembe vennnk, hogy
ezt a keresst egy rendezett sorozatban kell vgeznnk, s tudjuk, hogy
erre vannak hatkonyabb algoritmusaink.
2. Ugyanakkor problmt jelent, hogy nem elg megtallnunk azt a he-
lyet, ahol a beillesztend elemnek lennie kellene, hiszen az a hely mr
egszen biztosan foglalt, hanem helyet is kell biztostanunk a szmra
anlkl, hogy a sorozat elemei kzl brmelyiket elvesztennk.
Ttelezzk fel, hogy ismerjk annak az elemnek a sorszmt, amely el
be kell illesztennk az aj+1-et. Ha most kivennnk (pontosabban msolatot
ksztnk) a sorozatnak az aj+1, azaz a beillesztend elemrl (4.14 algorit-
mus 9. sora),
a1 . . . ai1 ai ai+1 ai+2 . . . aj2 aj1 aj aj+1 aj+2 . . . anx
akkor ezt kveten az t megelz (aj) elemmel kezdve, a sorozat eleje fel
haladva, az ai-vel bezrlag az elemeket egy hellyel jobbra kell mozgatni
68
-
(4.14 algoritmus 12. sor). Ha az aj az els ilyen elem az ai pedig az utols,
akkor ez sszesen (j i+ 1) adatmozgatssal valsthat meg.
a1 . . . ai1 ai ai+1 ai+2 . . . aj2 aj1 aj aj+1 aj+2 . . . anx
1.2.3.(ji).(ji+1).
A kt szls esetet gyelembe vve:
1. ha aj 6 aj+1, akkor nem kell az aj-t fntebb cssztatni mert a meg-felel helyen van.
2. ha aj+1 < a1, akkor pedig j szm elem mindegyikt egy-egy hellyel
jobbra kell lptetni.
Ilyen mdon flszabadul a hely a beillesztend elem szmra a megfelel
helyen, s ekkor helyre kerlhet az x-ben tmenetileg trolt elem (4.14
algoritmus 15. sor).
a1 . . . ai1 ai ai+1 ai+2 . . . aj2 aj1 aj aj+1 aj+2 . . . anx
69
-
1 Eljrs RendBeszr(A: sorozat);
2 Vltoz
3 I: egsz; // ciklusvltoz
4 J: egsz; // a feldolgozand rszsorozat sorszma
5 X: elemtip; // segdvltoz elem tmeneti trolsra
6 Algoritmus
7 Ciklus J (1..N-1)// n 1 elemet kell beilleszteni8 I J;9 X A[J + 1]; // a j + 1-edik elem helyt keressk10 // a j-ediktl visszafel a rendezett rszben
11 Ciklus _Mg (I > 1) (A[I]>X)12 A[I + 1] A[I];// az i-edik mozgatsa eggyel fntebb13 II-1; // a sorozat eleje fel haladva keresnk14 CVge;
15 A[I + 1] X; // X beillesztse a rendezett rszbe16 CVge;
17 EVge;
Beszr rendezs
4.14. algoritmus
4.3.2. Shell rendezs
Tekintsk az albbi rendezetlen sorozatot.
P C E R A D N H F G
Vlasszunk a sorozat elemszmtl fgg d egsz rtket, s bontsuk fl a
sorozatot d szm rszsorozatokra az albbi szempontok szerint:
egy sorozatba az eredeti sorozat egymstl d tvolsgra lv elemei
tartozzanak.
az eredeti sorozat k-adik elemei (ahol 1 6 k 6 d) rendre legyenek ak-adik sorozat els elemei.
70
-
A fenti kt felttel biztostja, hogy az eredeti sorozat minden eleme pontosan
egy rszsorozatba tartozhat. Pldnkban kezdetben legyen d = 3.
k = 1 P R N G
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
k = 2 C A H
k = 3 E D F
Vgezzk el az gy kapott rszsorozatok rendezst valamely rendez algo-
ritmussal kln-kln.
k = 1 G N P R
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
k = 2 A C H
k = 3 D E F
Ezt kveten ha egy sorozatknt tekintjk az elemeket, nem flttlen kapunk
rendezett sorozatot.
G A D N C E P H F R
Cskkentsk most a d rtkt s legyen d = 2.
k = 1 G D C P F
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
k = 2 A N E H R
71
-
Vgezzk el az gy nyert rszsorozatok rendezst is az elzekhez hasonl
mdon.
k = 1 C D F G P
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
k = 2 A E H N R
Ezt kveten ha ismt egy sorozatknt tekintnk az elemekre, azt gyel-
hetjk meg, hogy, az egyes elemek meglehetsen kzel kerltek a vgleges
helykhz. Esetnkben ez azt jelenti, hogy csupn nhny szomszdos elem
cserje is elegend volna a rendezettsg elrshez.
C A D E F H G N P R
Vgezzk teht el a rendezst d = 1 esetre is.
Az alapgondolat szerint teht kezdetben egymstl tvolabbi elemeket
hasonltunk s mozgatunk, ami ltalban azt eredmnyezi, hogy az elemek
gyorsabban kzeltenek a vgleges helykhz.
72
-
1 Eljrs RendShellMin(A: sorozat);
2 Vltoz
3 I, J, MinH: egsz; // vltozk az alap rendezshez
4 D: egsz; // elemek kztti tvolsg
5 K: egsz; // az aktulis, rendezend sorozat sorszma
6 C: elemtip; // segdvltoz elem tmeneti trolsra
7 Algoritmus
8 D N;9 Ciklus
10 D D div 3 + 1;11 Ciklus K 1..D12 J K; az "alap"-algoritmus KEZDETE 13 Ciklus _Mg J 6 N-D14 MinHJ; I J + D;15 Ciklus _Mg I 6 N16 Ha A[I]
-
4.3.3. sszefuttats
A rendezett sorozatok feldolgozsa sorn szksgess vlhat kt (azonos m-
don) rendezett sorozat elemeinek egy rendezett sorozatban val egyestse.
Kzenfekv megoldsnak tnne a sorozat elemeit egy adatszerkezetben egy-
szeren egyms utn msolni, majd az gy kapott, most mr rendezetlen
sorozatot az egyik korbban megismert rendez algoritmussal rendezni.
Az sszefuttats ttele egy ennl jval hatkonyabb megoldst knl. T-
telezzk fel, hogy mindkt sorozat nvekven rendezett, s nem flttlen
azonos elemszmak. Az ilyen elrendezsbl az kvetkezik, hogy a sorozatok
els elemei (a1 s b1) egyben a sorozaton bell a legkisebbek is. Az is nyilvn-
val, ha az egyestett sorozatnak szintn nvekven rendezettnek kell lennie,
akkor annak els eleme csak a Min(a1, b1) lehet. A kvetkez lpsben mr
az egyik sorozat els s msik sorozat msodik elemnek sszehasonltsval
dnthetjk el, hogy melyik elem kerljn az j sorozatban.
ltalnosan megfogalmazva: vezessk be mindkt sorozat esetben az
aktulis elem fogalmt. Kezdetben a sorozatok els elemei legyenek az ak-
tulisak.
Vgezzk el a kt aktulis elem sszehasonltst, s a kisebbiket rjuk
bele az egyestett sorozat elemeit tartalmaz adatszerkezet kvetkez
pozcijba.
Ezutn abban a sorozatban, amelynek elemt az j sorozatba rtuk, a
kvetkez elemet tekintsk aktulisnak.
A fenti lpsek sorozatt vgezzk mindaddig, amg az egyik sorozat vgre
nem rnk. Ezt kveten a msik sorozat maradk elemeit az egyests vgre
rhatjuk, hiszen azok az eddig feldolgozott sszes elemnl nagyobbak. A fenti
elvek alapjn vgzi kt rendezett sorozat egyestst a 4.16. algoritmus.
74
-
1 Eljrs sszefuttats(A, B, C: sorozat);
2 Vltoz AI, BI, CI: egsz;
3 Algoritmus
4 AI 1; BI 1; CI 0;5 Ciklus _Mg (AI 6 A.elemszm) (BI 6 B.elemszm)6 CI CI + 1;7 Ha A[AI]B[BI] Akkor
11 C[CI] B[BI]; BI BI + 1;12 Klnben
13 C[CI] A[AI]; AI AI + 1;14 CI CI + 1;15 C[CI] B[BI]; BI BI + 1;16 HVge;
17 HVge;
18 CVge;
19 // A vagy B maradk elemeit C vgre rjuk
20 Ciklus _Mg (AI 6 A.elemszm)21 CI CI + 1; C[CI]A[AI];22 AI AI + 1;23 CVge;
24 Ciklus _Mg (BI 6 B.elemszm)25 CI CI + 1; C[CI]B[BI];26 BI BI + 1;27 CVge;
28 EVge;
sszefuttats
4.16. algoritmus
75
-
4.4. Feladatok
1. Adjuk meg a fejezet lernyelv algoritmusait blokkdiagram formj-
ban.
2. Dntsk el a sorozatrl, hogy
a) nvekven,
b) cskkenen
rendezett-e?
3. rjunk algoritmust, amely Igaz illetve Hamis rtket rendel az an
sorozathoz attl fggen, hogy az nvekven rendezett vagy sem.
4. Koordintival adott egy n elem pontsorozat a skban. Hatrozzuk
meg, van-e olyan eleme, amely kvl esik egy adott r sugar O(x0, y0)
kzppont krn.
5. Koordintival megadott n elem, skbeli pontsorozat elemei jelent-
sk egy n-oldal sokszg cscspontjait. (A megads sorrendje megfelel
krljrsi irnynak.) Hatrozzuk meg, hogy van-e a sokszgnek egy
adott d-nl hosszabb oldala.
6. Mdostsa a lineris keress algoritmust gy, hogy a keresst a sorozat
utols elemnl kezdjk.
7. Mdostsa a strzss keress algoritmust gy, hogy a keresst a soro-
zat utols elemnl kezdjk.
8. Mdostsa a rendezett sorozatra rtelmezett lineris keress algoritmu-
st gy, hogy a keresst a sorozat utols elemnl kezdjk.
9. Mdostsa a rendezett sorozaton val lineris keress algoritmust gy,
hogy ha tudjuk, hogy a sorozat monoton cskken.
10. Mdostsa a binris keress algoritmust gy, hogy ha tudjuk, hogy a
sorozat monoton cskken.
76
-
11. Egsztse ki a tanult rendez algoritmusok programkdjt a megfelel
utastsokkal, hogy az alkalmas legyen az aktulis rendezend sorozat
esetben a felttelvizsglatok s az adatmozgatsok szmnak megha-
trozsra.
12. A megismert rendez algoritmusokat mdostsa gy, hogy a sorozatok
rendezettsge nem nvekv legyen.
13. A minimumkivlasztssal val rendezs algoritmusa alapjn ksztse el
azt az algoritmust amely a maximumkivlasztsra pl s a rendezs
vgrehajtsa utn sorozat elemei
monoton nvekv
monoton cskken
sorozatot alkotnak.
14. A fentebb bemutatott buborkrendezs algoritmusnak (4.11) nagy
htrnya, hogy a sorozat vghez kzel tallhat kis rtk elemek
(teknsk) nagyon lassan talljk meg helyket a sorozat elejn, mg
a sorozat elejn lv nagy rtk nyulak jval gyorsabban a vgle-
ges helykre kerlnek. A 4.11 algoritmus alapjn rjuk meg a Koktl
rendezs algoritmust, amely flvltva buborkoltatja a nagy rtk
elemeket a sorozat vgre, majd a kicsiket az elejre.
15. A Koktl rendezs elvi alapja teht fentebb bemutatott buborkren-
dezs (4.11). Ebbl az is kvetkezik, hogy ennek az algoritmusnak is
elvgezhet a javtsa, ahogyan a buborkrendezs.
A 4.12 algoritmus elve alapjn mdostsa a Koktl rendezs al-
goritmust gy, hogy lljon le az algoritmus, ha a sorozat kzps,
rendezetlen rsze is rendezett vlt.
A 4.13 algoritmus elve alapjn mdostsa a Koktl rendezs
algoritmust gy, hogy ha lehetsges, akkor esetleg tbb elemet
is a rendezett rszhez csatol azltal, hogy gyeljk benne az utols
csere helyt.
77
-
16. rjunk algoritmust s programot, amely egy hossz szvegben megta-
llja a papa sz elfordulsait.
17. rjunk algoritmust s programot, amely a 4.4 brn lthat grf-modell
alapjn mkdik s egy hossz szvegben megtallja a papa sz el-
fordulsait.
START
p
pap
pa
illesszkeds
kijelzse
ms
p
ms
p
ms
p
ms
p
a
a
4.4. bra. Egy szvegben a papa sz elfordulsait ke-res llapot-gp grfmodellje
18. Knny ltni, hogy egy nvekven rendezett sorozatban az i-edik ele-
met (i1) nla kisebb elem elz meg. Ha teht egy rendezetlen sorozatvalamely elemrl tudjuk, hogy a sorozatnak van (i 1) eleme, ame-lyek nla kisebbek, akkor azt is tudjuk, hogy a rendezett sorozatban
ennek az elemnek az i-edik helyre kell kerlnie.
rjunk eljrst a fenti elvek alapjn, amely az n elem a rende-
zetlen sorozat elemeit egy vektor paramterben kapja meg s egy
msik vektorban rendezetten adja vissza.
Vgezzk el az algoritmus hatkonysgnak vizsglatt.
78
-
19. A 4.3 bra egy 10 elem sorozat llapotait szemllteti annak beszr
rendezssel trtn rendezse sorn. Hatrozza meg, hogy a rendezs
sorn hny sszehasonltst s rtkadst kellett elvgezni, ha az brn
megadott sorozatbl indultunk ki.
20. Adott az na s az nb elem a s b nvekven rendezett sorozat. N-
vekven rendezett sorozatokrl lvn sz teljesl, hogy az egyes so-
rozatok utols elemei a legnagyobbak. Az elemek trolsra szolgl
adatszerkezetek lehetv teszik azok egy-egy elemmel val bvtst az
na + 1-edik s az nb + 1-edik pozcin. Troljunk ezeken a pozcikon
max(ana , bnb)-nl nagyobb tetszleges elemet.
79
-
5. Halmaz
A halmaz a matematika egyik alapfogalma, melyet leginkbb gy tudunk
krlrni, mint bizonyos egymstl klnbz dolgok sszessgt. Ez a fo-
galom szmtalan problma matematikai modellezst teszi egyszerbb, s
a megoldst jelent hatkony algoritmus ellltshoz flttlen szksges
egy alkalmas modell. Ilyen esetekben segthetik munknkat egy jl felptett
adatszerkezet s a hozz kthet mveletek algoritmusai. Termszetesen az
albbiakban bemutatni kvnt adatszerkezet csak vges, n elem halmazok
reprezentlsra alkalmas, lvn a szmtgp memrija is vges. Ugyanak-
kor ms szempontbl trekedni fogunk a szoksos halmazelmletben ismert
mveletek, fogalmak megvalstsra.
halmaz
komplementere: A := {x|x / A}kt halmaz
unija: A B := {x|x A x B}kt halmaz
metszete: A B := {x|x A x B}kt halmaz
klnbsge: A \B := {x|x A x / B}
rszhalmaz: A B, ha x A esetn x Bhalmaz
elemszma: |A|
res halmaz: , || = 0 (res halmaz elemszma nulla)diszjunkt
halmazok: A B = (metszetk az res halmaz).Jellje U a problma szempontjbl fontos elemek sszessgt. Azt a hal-
mazt, amely tartalmaz minden elemet, amely a feladat kapcsn egyltaln
szba jhet, univerzumnak is szoks nevezni. Br a halmaz jellegbl ad-
80
-
dan annak elemei kztt semmifle k