algoritmusok tk ekf

99

Upload: adasd

Post on 15-Sep-2015

61 views

Category:

Documents


12 download

DESCRIPTION

Adatrendszerek és algoritmusok

TRANSCRIPT

  • 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