68
Az algoritmusok szerepe a számításokban Kósa Márk Pánovics János Szathmáry László Halász Gábor Algoritmusok Algoritmusok fogalma Algoritmusok megadása Algoritmusok épít ˝ oelemei Példa: rendezési feladat Algoritmusok mint technológia Hatékonyság Technológia Algoritmusok elemzése Algoritmusok helyessége Ciklusinvariáns Hatékonyság elemzés A RAM modell A bemenet mérete A futási id ˝ o A beszúró rendezés hatékonysága Oszd meg és uralkodj 1.1 1. el ˝ oadás Az algoritmusok szerepe a számításokban Algoritmusok mint technológia Adatszerkezetek és algoritmusok el˝ oadás 2019. február 12. Kósa Márk, Pánovics János, Szathmáry László és Halász Gábor Debreceni Egyetem Informatikai Kar

Szathmáry László Halász Gábor Az algoritmusok szerepe a ...halasz/Adatszerk-PTI-2017/eloadas/01... · Az algoritmusok szerepe a számításokban Kósa Márk Pánovics János

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.1

1. eloadásAz algoritmusok szerepe aszámításokbanAlgoritmusok mint technológia

Adatszerkezetek és algoritmusok eloadás2019. február 12.

Kósa Márk, Pánovics János,Szathmáry László és Halász Gábor

Debreceni EgyetemInformatikai Kar

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.2

Általános tudnivalókAjánlott irodalom:

• Thomas H. Cormen, Charles E. Leiserson, Ronald L.Rivest, Clifford Stein:Új algoritmusok, Scolar Informatika, 2003.

• Donald E. Knuth: A számítógépprogramozás muvészete1. (Alapveto algoritmusok), Muszaki Könyvkiadó, 1994.

• Donald E. Knuth: A számítógépprogramozás muvészete3. (Keresés és rendezés), Muszaki Könyvkiadó, 1994.

• Seymour Lipschutz: Adatszerkezetek,Panem-McGraw-Hill, Budapest, 1993.

• Rónyai Lajos, Ivanyos Gábor, Szabó Réka: Algoritmusok,Typotex, Budapest, 2008.

Félév teljesítésének feltételei:

• Gyakorlati aláírás• 2 ZH

• Írásbeli vizsga, aminek az értékelésébe ...

További részletek:http://hallg.inf.unideb.hu/~halasz

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.3

Algoritmusok

• Informálisan algoritmusnak nevezünk bármilyen jóldefiniált számítási eljárást (elemi lépések sorozatát),amely

• bemenetként bizonyos értéket vagy értékeket kap és• kimenetként bizonyos értéket vagy értékeket állít elo.

• Eszerint az algoritmus olyan számítási lépések sorozata,amelyek a bemenetet átalakítják kimenetté.

• Az algoritmusokat tekinthetjük olyan eszköznek is,amelynek segítségével pontosan meghatározott számításifeladatokat oldunk meg.

• Ezeknek a feladatoknak a megfogalmazása általában abemenet és a kimenet közötti kívánt kapcsolat leírása.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.4

AlgoritmusokKicsit általánosabban

Olyan eljárás (elemi lépések sorozata), melynek során akövetkezok teljesülnek:

• jól meghatározott objektumokon jól meghatározottmuveleteket végzünk

• minden lépés elvégzése után egyértelmuen definiálthelyzet áll elo

• véges sok lépés után véget ér• nem csak egy feladatra, hanem egy feladatosztály tagjaira

érvényes

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.5

Algoritmusok megadásának módjaiAlgoritmusokat a következo módokon lehet megadni:

• természetes (beszélt) emberi nyelven• pontokba szedett természetes nyelvi „utasításokkal”• folyamatábrával• pszeudonyelvvel (lásd gyakorlaton)• valamilyen programozási nyelven

Az egyetlen követelmény az, hogy a leírás pontosan, azazfélreérthetetlen módon adja meg a követendo (számítási)eljárást.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.5

Algoritmusok megadásának módjaiAlgoritmusokat a következo módokon lehet megadni:

• természetes (beszélt) emberi nyelven• pontokba szedett természetes nyelvi „utasításokkal”• folyamatábrával• pszeudonyelvvel (lásd gyakorlaton)• valamilyen programozási nyelven

Az egyetlen követelmény az, hogy a leírás pontosan, azazfélreérthetetlen módon adja meg a követendo (számítási)eljárást.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.6

Példa elefánttal és zsiráffal

Hogyan tegyünk be egy elefántot a hutoszekrénybe?

1 Nyissuk ki a hutoszekrény ajtaját.2 Tegyük be az elefántot a hutoszekrénybe.3 Zárjuk be a hutoszekrény ajtaját.

Hogyan tegyünk be egy zsiráfot a hutoszekrénybe?

1 Nyissuk ki a hutoszekrény ajtaját.2 Vegyük ki az elefántot a hutoszekrénybol.3 Tegyük be a zsiráfot a hutoszekrénybe.4 Zárjuk be a hutoszekrény ajtaját.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.6

Példa elefánttal és zsiráffal

Hogyan tegyünk be egy elefántot a hutoszekrénybe?

1 Nyissuk ki a hutoszekrény ajtaját.2 Tegyük be az elefántot a hutoszekrénybe.3 Zárjuk be a hutoszekrény ajtaját.

Hogyan tegyünk be egy zsiráfot a hutoszekrénybe?

1 Nyissuk ki a hutoszekrény ajtaját.2 Vegyük ki az elefántot a hutoszekrénybol.3 Tegyük be a zsiráfot a hutoszekrénybe.4 Zárjuk be a hutoszekrény ajtaját.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.7

Példa folyamatábrával

START

be: N

összeg← 0i← 1

i ≤ Nösszeg← összeg + i

i← i+ 1

igenki: összeg

nemSTOP

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.8

Algoritmusok építoelemei

Vezérlési szerkezetek

1 szekvencia(utasítások végrehajtása a felírás sorrendjében)

2 szelekció(elágazások)

3 iteráció(ciklusok)

4 alprogramok hívása(„kész” algoritmusok bevonása a részfeladatokmegoldásába)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.9

Példa: rendezési feladat

Bemenet: n számot tartalmazó 〈a1,a2, ...,an〉 sorozat.Kimenet: a bemenet sorozat olyan 〈a′1,a′2, ...,a′n〉 permutációja(újrarendezése), hogy a′1 ≤ a′2 ≤ ... ≤ a′n.

• Ha például a bemenet 31, 41, 59, 26, 41, 58, akkor egyrendezo algoritmus

• kimenetként a 26, 31, 41, 41, 58, 59 sorozatot adja meg.

• Egy ilyen bemenet a rendezési feladat egy esete.• Általában egy feladat (probléma) egy esete az a bemenet,

(a feladat megfogalmazásában szereplo feltételeknekeleget tevo bemenet,)amely a feladat megoldásának kiszámításához szükséges.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.9

Példa: rendezési feladat

Bemenet: n számot tartalmazó 〈a1,a2, ...,an〉 sorozat.Kimenet: a bemenet sorozat olyan 〈a′1,a′2, ...,a′n〉 permutációja(újrarendezése), hogy a′1 ≤ a′2 ≤ ... ≤ a′n.

• Ha például a bemenet 31, 41, 59, 26, 41, 58, akkor egyrendezo algoritmus

• kimenetként a 26, 31, 41, 41, 58, 59 sorozatot adja meg.

• Egy ilyen bemenet a rendezési feladat egy esete.• Általában egy feladat (probléma) egy esete az a bemenet,

(a feladat megfogalmazásában szereplo feltételeknekeleget tevo bemenet,)amely a feladat megoldásának kiszámításához szükséges.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.9

Példa: rendezési feladat

Bemenet: n számot tartalmazó 〈a1,a2, ...,an〉 sorozat.Kimenet: a bemenet sorozat olyan 〈a′1,a′2, ...,a′n〉 permutációja(újrarendezése), hogy a′1 ≤ a′2 ≤ ... ≤ a′n.

• Ha például a bemenet 31, 41, 59, 26, 41, 58, akkor egyrendezo algoritmus

• kimenetként a 26, 31, 41, 41, 58, 59 sorozatot adja meg.

• Egy ilyen bemenet a rendezési feladat egy esete.• Általában egy feladat (probléma) egy esete az a bemenet,

(a feladat megfogalmazásában szereplo feltételeknekeleget tevo bemenet,)amely a feladat megoldásának kiszámításához szükséges.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.10

Példa: rendezési feladat

A rendezés az informatikában alapveto muvelet(számos program alkalmazza közbeeso lépésként),ezért nagyszámú jó rendezo algoritmust dolgoztak ki.Az, hogy adott alkalmazás esetén melyikrendezo algoritmus a „legjobb” – más tényezok mellett – függ

• a rendezendo elemek számától,• rendezettségétol,• a rájuk vonatkozó lehetséges korlátoktól,• a felhasználandó tároló fajtájától

• központi memória,• lemezek,• szalagok

• · · ·

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.11

Algoritmusok mint technológia

Tegyük fel, hogy

• a számítógépek sebessége végtelen• és a memória ingyenes.

Van értelme ekkor az algoritmusokat tanulmányozni?A válasz igen;ha másért nem is, például azért, hogy megmutassuk, hogy

• algoritmusunk futása befejezodik,• és helyes eredményt ad.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.11

Algoritmusok mint technológia

Tegyük fel, hogy

• a számítógépek sebessége végtelen• és a memória ingyenes.

Van értelme ekkor az algoritmusokat tanulmányozni?A válasz igen;ha másért nem is, például azért, hogy megmutassuk, hogy

• algoritmusunk futása befejezodik,• és helyes eredményt ad.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.12

Algoritmusok mint technológia

Ha a számítógépek végtelen gyorsak lennének, akkor bármelyhelyes megoldási módszer megfelelo lenne. Valószínuleg aztkívánnánk, hogy a megvalósítás megfeleljen a jószoftvermérnöki gyakorlatnak (azaz jól tervezett ésdokumentált legyen), és azt a módszert alkalmaznánk, amelyeta legkönnyebb megvalósítani.

Természetesen a számítógépek lehetnek gyorsak, de nemvégtelenül gyorsak.A memória pedig lehet olcsó, de nem ingyenes.A számítási ido ezért korlátos eroforrás, és ugyanez vonatkozika tárolási kapacitásra is.Ezeket az eroforrásokat okosan kell felhasználni, és ebbensegítenek a futási idot és/vagy memóriafelhasználást tekintvehatékony algoritmusok.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.12

Algoritmusok mint technológia

Ha a számítógépek végtelen gyorsak lennének, akkor bármelyhelyes megoldási módszer megfelelo lenne. Valószínuleg aztkívánnánk, hogy a megvalósítás megfeleljen a jószoftvermérnöki gyakorlatnak (azaz jól tervezett ésdokumentált legyen), és azt a módszert alkalmaznánk, amelyeta legkönnyebb megvalósítani.

Természetesen a számítógépek lehetnek gyorsak, de nemvégtelenül gyorsak.A memória pedig lehet olcsó, de nem ingyenes.A számítási ido ezért korlátos eroforrás, és ugyanez vonatkozika tárolási kapacitásra is.Ezeket az eroforrásokat okosan kell felhasználni, és ebbensegítenek a futási idot és/vagy memóriafelhasználást tekintvehatékony algoritmusok.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.13

Hatékonyság

Az ugyanannak a feladatnak a megoldására tervezettalgoritmusok gyakran drámai módon különbözo hatékonyságotmutatnak.Ezek a különbségek jóval nagyobbak lehetnek, mint ami ahardver és a szoftver különbözoségébol adódhat.Ennek demonstrálására két rendezo algoritmus hatékonyságátfogjuk összevetni.Látni fogjuk, hogy egy véletlenszeru sorrendet mutató n elemubemenet esetén

• a beszúró rendezésnek c1n2-el arányos idore, míg• az összefésülo rendezésnek c2n log2 n-el arányos idore

van szüksége a helyes kimenet meghatározásához.(Tipikusan c1 < c2.)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.14

Hatékonyság: numerikus példa

Tegyük fel, hogy van két eltéro hardverünk:

• A-gép: másodpercenként 109 (egymilliárd) muveletetképes elvégezni

• B-gép: másodpercenként 107 (tízmillió) muveletet képeselvégezni

Ezen túlmenoen tegyük fel, hogy

• a beszúró rendezést a világ legjobb programozója kódoljaaz A gép gépi kódjában, és ennek eredményeként c1 = 2,

• ezzel szemben az összefésülo rendezést rábízzuk egytapasztalatlan kezdo programozóra, és végül c2 értéke 50lesz.

Végezetül futtatjuk az elkészült –egyébként helyes muködésu–algoritmusokat a fenti két gépen, az alábbi módon:

• Beszúró rendezést az A gépen(c1n2

)• Összefésülo rendezést a B gépen (c2n log2 n)

Melyik gép fogja rövidebb ido alatt elvégezni a rendezést?

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.14

Hatékonyság: numerikus példa

Tegyük fel, hogy van két eltéro hardverünk:

• A-gép: másodpercenként 109 (egymilliárd) muveletetképes elvégezni

• B-gép: másodpercenként 107 (tízmillió) muveletet képeselvégezni

Ezen túlmenoen tegyük fel, hogy

• a beszúró rendezést a világ legjobb programozója kódoljaaz A gép gépi kódjában, és ennek eredményeként c1 = 2,

• ezzel szemben az összefésülo rendezést rábízzuk egytapasztalatlan kezdo programozóra, és végül c2 értéke 50lesz.

Végezetül futtatjuk az elkészült –egyébként helyes muködésu–algoritmusokat a fenti két gépen, az alábbi módon:

• Beszúró rendezést az A gépen(c1n2

)• Összefésülo rendezést a B gépen (c2n log2 n)

Melyik gép fogja rövidebb ido alatt elvégezni a rendezést?

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.15

Hatékonyság: numerikus példa

A válasz függ a bemenettol, ezen belül leginkább annakméretétol, vagyis n értékétol.

Legyen n = 1000 (ezer). Ekkor a futási idok:

• Beszúró rendezés:2·(103)2muvelet

109muvelet/s = 2ms (= 1s/500)

• Összefésülo rend.: 50·103·log2 103muvelet107muvelet/s . 50ms (= 1s/20)

Legyen n = 1000000 (egymillió). Ekkor a futási idok:

• Beszúró rendezés:2·(106)2muvelet

109muvelet/s = 2000s & 33perc

• Összefésülo rendezés: 50·106·log2 106muvelet107muvelet/s . 100s

Legyen n = 10000000 (tízmillió). Ekkor a futási idok:

• Beszúró rendezés:2·(107)2muvelet

109muvelet/s = 200000s ≈ 2.3nap

• Összefésülo rend.: 50·107·log2 107muvelet107muvelet/s ≈ 1160s . 20perc

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.15

Hatékonyság: numerikus példa

A válasz függ a bemenettol, ezen belül leginkább annakméretétol, vagyis n értékétol.

Legyen n = 1000 (ezer). Ekkor a futási idok:

• Beszúró rendezés:2·(103)2muvelet

109muvelet/s = 2ms (= 1s/500)

• Összefésülo rend.: 50·103·log2 103muvelet107muvelet/s . 50ms (= 1s/20)

Legyen n = 1000000 (egymillió). Ekkor a futási idok:

• Beszúró rendezés:2·(106)2muvelet

109muvelet/s = 2000s & 33perc

• Összefésülo rendezés: 50·106·log2 106muvelet107muvelet/s . 100s

Legyen n = 10000000 (tízmillió). Ekkor a futási idok:

• Beszúró rendezés:2·(107)2muvelet

109muvelet/s = 200000s ≈ 2.3nap

• Összefésülo rend.: 50·107·log2 107muvelet107muvelet/s ≈ 1160s . 20perc

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.15

Hatékonyság: numerikus példa

A válasz függ a bemenettol, ezen belül leginkább annakméretétol, vagyis n értékétol.

Legyen n = 1000 (ezer). Ekkor a futási idok:

• Beszúró rendezés:2·(103)2muvelet

109muvelet/s = 2ms (= 1s/500)

• Összefésülo rend.: 50·103·log2 103muvelet107muvelet/s . 50ms (= 1s/20)

Legyen n = 1000000 (egymillió). Ekkor a futási idok:

• Beszúró rendezés:2·(106)2muvelet

109muvelet/s = 2000s & 33perc

• Összefésülo rendezés: 50·106·log2 106muvelet107muvelet/s . 100s

Legyen n = 10000000 (tízmillió). Ekkor a futási idok:

• Beszúró rendezés:2·(107)2muvelet

109muvelet/s = 200000s ≈ 2.3nap

• Összefésülo rend.: 50·107·log2 107muvelet107muvelet/s ≈ 1160s . 20perc

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.15

Hatékonyság: numerikus példa

A válasz függ a bemenettol, ezen belül leginkább annakméretétol, vagyis n értékétol.

Legyen n = 1000 (ezer). Ekkor a futási idok:

• Beszúró rendezés:2·(103)2muvelet

109muvelet/s = 2ms (= 1s/500)

• Összefésülo rend.: 50·103·log2 103muvelet107muvelet/s . 50ms (= 1s/20)

Legyen n = 1000000 (egymillió). Ekkor a futási idok:

• Beszúró rendezés:2·(106)2muvelet

109muvelet/s = 2000s & 33perc

• Összefésülo rendezés: 50·106·log2 106muvelet107muvelet/s . 100s

Legyen n = 10000000 (tízmillió). Ekkor a futási idok:

• Beszúró rendezés:2·(107)2muvelet

109muvelet/s = 200000s ≈ 2.3nap

• Összefésülo rend.: 50·107·log2 107muvelet107muvelet/s ≈ 1160s . 20perc

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.16

Algoritmusok mint technológia• Az elozo példák azt mutatják, hogy az algoritmusok – a

számítógépek hardveréhez hasonlóan – technológiák.• Egy rendszer teljesítménye éppúgy függ a hatékony

algoritmusok kiválasztásától, mint a gyors hardveralkalmazásától.

• Amilyen gyors a haladás a többi számítógépestechnológiában, éppoly gyors a fejlodés azalgoritmusokkal kapcsolatban is.

• Az állandóan növekvo kapacitású számítógépeketnagyobb méretu feladatok megoldására használjuk, mintkorábban bármikor.

• Amint azt láttuk a beszúró rendezés és az összefésülorendezés összehasonlításánál, nagyobb méretu feladatokesetén az algoritmusok hatékonyságának különbségekülönösen fontossá válik.

• Az algoritmusok biztos ismerete olyan jellemzo, amelyelválasztja a jól képzett programozókat a kezdoktol.

• A modern számítógépes technológia segítségévelmegoldhatunk bizonyos feladatokat anélkül, hogy sokattudnánk az algoritmusokról, de az algoritmusokkalkapcsolatos jó alapok megléte esetén sokkal többet tudunkelérni.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.17

Algoritmusok elemzése

A rendezési feladat:

• Bemenet: n számot tartalmazó 〈a1,a2, ...,an〉 sorozat.• Kimenet: a bemenet sorozat olyan 〈a′1,a′2, ...,a′n〉

permutációja (újrarendezése), hogy a′1 ≤ a′2 ≤ ... ≤ a′n.

A rendezendo számokat kulcsoknak is szokás nevezni.A félév folyamán rendszerint egy olyan pszeudokódban írtprogramként írjuk le az algoritmusokat, amely nagyon hasonlíta C-hez, a Pascalhoz vagy a Javához.Ha ezek közül bármelyik nyelvet ismerik, nem lesz gondjuk azalgoritmusok olvasása során.Ami az „igazi” kódot megkülönbözteti a pszeudokódtól, az az,hogy pszeudokódban bármilyen kifejezo eszköztalkalmazhatunk, amellyel világosan és tömören megadhatunkegy algoritmust.

• (Néha a legjobb eszköz a magyar nyelv.)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.17

Algoritmusok elemzése

A rendezési feladat:

• Bemenet: n számot tartalmazó 〈a1,a2, ...,an〉 sorozat.• Kimenet: a bemenet sorozat olyan 〈a′1,a′2, ...,a′n〉

permutációja (újrarendezése), hogy a′1 ≤ a′2 ≤ ... ≤ a′n.

A rendezendo számokat kulcsoknak is szokás nevezni.A félév folyamán rendszerint egy olyan pszeudokódban írtprogramként írjuk le az algoritmusokat, amely nagyon hasonlíta C-hez, a Pascalhoz vagy a Javához.Ha ezek közül bármelyik nyelvet ismerik, nem lesz gondjuk azalgoritmusok olvasása során.Ami az „igazi” kódot megkülönbözteti a pszeudokódtól, az az,hogy pszeudokódban bármilyen kifejezo eszköztalkalmazhatunk, amellyel világosan és tömören megadhatunkegy algoritmust.

• (Néha a legjobb eszköz a magyar nyelv.)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.18

Beszúró rendezés

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.19

Beszúró rendezésA pseudo kód:

procedure BESZÚRÓ-RENDEZÉS(A)1 for j← 2 to méret(A) do2 kulcs← A[j]

– – A[ j] beszúrása az A[1 . . j − 1] rendezett sorozatba.3 i← j – 14 while i ≥ 1 és A[i] > kulcs do5 A[i + 1]← A[i]6 i← i – 17 end while8 A[i + 1]← kulcs9 end for

end procedure

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.20

Algoritmusok helyessége

Egy algoritmust helyesnek mondunk,

• ha minden bemenetre megáll és helyes eredményt ad.

Azt mondjuk, hogy a helyes algoritmus megoldja az adottszámítási feladatot.Egy nem helyes algoritmus esetén elofordulhat, hogy

• nem minden bemenetre áll meg, vagy• bizonyos bemenetekre nem a kívánt választ adja.

Várakozásunkkal ellentétben egy nem-helyes algoritmus islehet hasznos, ha hibázási aránya elfogadható.Ilyen algoritmusra példát láthatunk a tankönyv1 31.fejezetben, ahol a nagy prímszámokat eloállító algoritmusokattanulmányozzák.

1Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein:Új algoritmusok, Scolar Informatika, Budapest, 2003.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.20

Algoritmusok helyessége

Egy algoritmust helyesnek mondunk,

• ha minden bemenetre megáll és helyes eredményt ad.

Azt mondjuk, hogy a helyes algoritmus megoldja az adottszámítási feladatot.Egy nem helyes algoritmus esetén elofordulhat, hogy

• nem minden bemenetre áll meg, vagy• bizonyos bemenetekre nem a kívánt választ adja.

Várakozásunkkal ellentétben egy nem-helyes algoritmus islehet hasznos, ha hibázási aránya elfogadható.Ilyen algoritmusra példát láthatunk a tankönyv1 31.fejezetben, ahol a nagy prímszámokat eloállító algoritmusokattanulmányozzák.

1Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein:Új algoritmusok, Scolar Informatika, Budapest, 2003.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.20

Algoritmusok helyessége

Egy algoritmust helyesnek mondunk,

• ha minden bemenetre megáll és helyes eredményt ad.

Azt mondjuk, hogy a helyes algoritmus megoldja az adottszámítási feladatot.Egy nem helyes algoritmus esetén elofordulhat, hogy

• nem minden bemenetre áll meg, vagy• bizonyos bemenetekre nem a kívánt választ adja.

Várakozásunkkal ellentétben egy nem-helyes algoritmus islehet hasznos, ha hibázási aránya elfogadható.Ilyen algoritmusra példát láthatunk a tankönyv1 31.fejezetben, ahol a nagy prímszámokat eloállító algoritmusokattanulmányozzák.

1Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein:Új algoritmusok, Scolar Informatika, Budapest, 2003.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.21

CiklusinvariánsA helyesség bizonyításának egyik eszköze

A ciklusinvariáns egy állítás, amelyrol három dolgot kellmegmutatni:

1 Teljesül: Igaz közvetlenül a ciklus elso iterációjánakmegkezdése elott.

2 Megmarad: Ha igaz a ciklus egy iterációjánakmegkezdése elott, akkor igaz marad a következo iterációelott is.

3 Befejezodik: Amikor a ciklus befejezodik, az invariánsolyan hasznos tulajdonságot ír le, amely segít abban, hogyaz algoritmus helyességét bebizonyítsuk.

Ha az elso két feltétel teljesül, akkor a ciklusinvariáns a ciklusminden iterációja elott teljesül.Vegyük észre a teljes indukcióhoz való hasonlóságot.

• Az invariánsnak az elso iteráció elott való teljesülése akezdoértékhez hasonlít,

• az invariánsnak lépésrol lépésre való teljesülése pedig azinduktív lépéshez.

A harmadik a tulajdonság a teljes indukciótól való eltérésreutal, itt megállítjuk az „indukciót”, amikor a ciklus véget ér.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.22

CiklusinvariánsA beszúró rendezés estére

A ciklusinvariáns:• Az 1–9. sorokbeli for ciklus minden iterációjának kezdetén

az A[1 . . j − 1] résztömb azon elemekbol áll, amelyekeredetileg is az A[1 . . j − 1] résztömbben voltak, de mostmár rendezett sorrendben.

• n + 2− j ≥ 0 és a ciklus minden végrehajtásakor csökken.

procedure BESZÚRÓ-RENDEZÉS(A)1 for j← 2 to méret(A) do2 kulcs← A[j]3 i← j – 14 while i ≥ 1 és A[i] > kulcs do5 A[i + 1]← A[i]6 i← i – 17 end while8 A[i + 1]← kulcs9 end for

end procedure

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.22

CiklusinvariánsA beszúró rendezés estére

A ciklusinvariáns:• Az 1–9. sorokbeli for ciklus minden iterációjának kezdetén

az A[1 . . j − 1] résztömb azon elemekbol áll, amelyekeredetileg is az A[1 . . j − 1] résztömbben voltak, de mostmár rendezett sorrendben.

• n + 2− j ≥ 0 és a ciklus minden végrehajtásakor csökken.

A három feltétel vizsgálata:

Teljesül: Azt látjuk be eloször, hogy a ciklusinvariáns teljesül azelso ciklusiteráció elott, amikor is j = 2.

Az A[1 . . j − 1] résztömb így pontosan az A[1] elembol áll,amely valóban az eredeti A[1] elem.

Továbbá, ez a résztömb rendezett (természetesen), azaz a cik-lusinvariáns a ciklus elso iterációja elott teljesül.

(n + 2− j ≥ 0 még n = 0 esetén is igaz)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.22

CiklusinvariánsA beszúró rendezés estére

A ciklusinvariáns:• Az 1–9. sorokbeli for ciklus minden iterációjának kezdetén

az A[1 . . j − 1] résztömb azon elemekbol áll, amelyekeredetileg is az A[1 . . j − 1] résztömbben voltak, de mostmár rendezett sorrendben.

• n + 2− j ≥ 0 és a ciklus minden végrehajtásakor csökken.

A három feltétel vizsgálata:

Megmarad: Ezután a második tulajdonsággal foglalkozunk:megmutatjuk, hogy minden iteráció fenntartja a ciklusinvariánst.Informálisan a külso for ciklus magja az A[ j − 1], A[ j − 2] stb.elemeket mozgatja jobbra mindaddig, amíg A[ j] a helyes pozí-ciót el nem éri (4–7. sorok, azaz a while ciklus), amikor is az„eredeti” A[ i] (jelenleg a kulcs-ban) elemet beszúrja (8. sor).

A második tulajdonság formálisabb tárgyalása azt igényelné,hogy fogalmazzunk meg és bizonyítsunk egy ciklusinvariánst abelso while ciklusra is. Ebbe most inkább nem bonyolódunk be-le, hanem az informális elemzésre hagyatkozunk, amely szerinta második tulajdonság teljesül a külso ciklusra nézve.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.22

CiklusinvariánsA beszúró rendezés estére

A ciklusinvariáns:• Az 1–9. sorokbeli for ciklus minden iterációjának kezdetén

az A[1 . . j − 1] résztömb azon elemekbol áll, amelyekeredetileg is az A[1 . . j − 1] résztömbben voltak, de mostmár rendezett sorrendben.

• n + 2− j ≥ 0 és a ciklus minden végrehajtásakor csökken.

A három feltétel vizsgálata:

Megmarad: Ezután a második tulajdonsággal foglalkozunk:megmutatjuk, hogy minden iteráció fenntartja a ciklusinvariánst.Informálisan a külso for ciklus magja az A[ j − 1], A[ j − 2] stb.elemeket mozgatja jobbra mindaddig, amíg A[ j] a helyes pozí-ciót el nem éri (4–7. sorok, azaz a while ciklus), amikor is az„eredeti” A[ i] (jelenleg a kulcs-ban) elemet beszúrja (8. sor).

n + 2− j nem csak továbbra is• nagyobb egyenlo, mint nulla, de• minden iterációnál csökken

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.22

CiklusinvariánsA beszúró rendezés estére

A ciklusinvariáns:• Az 1–9. sorokbeli for ciklus minden iterációjának kezdetén

az A[1 . . j − 1] résztömb azon elemekbol áll, amelyekeredetileg is az A[1 . . j − 1] résztömbben voltak, de mostmár rendezett sorrendben.

• n + 2− j ≥ 0 és a ciklus minden végrehajtásakor csökken.

A három feltétel vizsgálata:

Befejezodik: Végezetül megvizsgáljuk, hogy mi történik a cik-lus befejezodésekor. A beszúró rendezés esetén a külso forciklus akkor ér véget, amikor j meghaladja n-et, azaz, amikorj = n + 1. Ha a ciklusinvariáns megfogalmazásában (n+1)-etírunk j helyett, akkor azt kapjuk, hogy az A[1 . . n] résztömbazokból az elemekbol áll, amelyek eredetileg az A[1 . . n] ele-mek voltak, de már rendezett formában.

Az A[1 . . n] résztömb azonban az egész tömb!

Tehát az egész tömb rendezve van, vagyis az algoritmus helyes.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.22

CiklusinvariánsA beszúró rendezés estére

A ciklusinvariáns:• Az 1–9. sorokbeli for ciklus minden iterációjának kezdetén

az A[1 . . j − 1] résztömb azon elemekbol áll, amelyekeredetileg is az A[1 . . j − 1] résztömbben voltak, de mostmár rendezett sorrendben.

• n + 2− j ≥ 0 és a ciklus minden végrehajtásakor csökken.

procedure BESZÚRÓ-RENDEZÉS(A)1 for j← 2 to méret(A) do2 kulcs← A[j]3 i← j – 14 while i ≥ 1 és A[i] > kulcs do5 A[i + 1]← A[i]6 i← i – 17 end while8 A[i + 1]← kulcs9 end for

end procedure

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.23

Hatékonyság elemzés

Egy algoritmus elemzése azt is jelenti, hogy elore meg tudjukmondani, milyen eroforrásokra lesz szüksége azalgoritmusnak.Alkalmanként az olyan eroforrások, mint

• memória,• kommunikációs sávszélesség vagy• logikai kapuk,

elsodleges fontosságúak, de leggyakrabban a

• számítási ido

az, amit mérni akarunk.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.24

Hatékonyság elemzés

Mielott elemeznénk egy algoritmust, rendelkeznünk kell afelhasználandó megvalósítási technológia modelljével,beleértve a technológia eroforrásainak modelljét és azokköltségeit is.Ezen tárgy keretében nagy részében számítási modellként egyáltalános feldolgozó egységet, az ún. közvetlen hozzáférésugépet (random access machine = RAM) alkalmazzukmegvalósítási technológiaként, és algoritmusainkat úgyértelmezzük, hogy számítógépprogramként valósítjuk megoket.A RAM modellben az utasítások egymás után hajtódnak végre,egyideju muveletek nélkül.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.25

A RAM modell

A RAM modell olyan utasításokat tartalmaz, amelyekrendszerint megtalálhatók a valódi számítógépeken:

• aritmetikai• (összeadás, kivonás, szorzás, osztás, maradékképzés,

alsó egész rész, felso egész rész),• adatmozgató

• (betöltés, tárolás, másolás)• és vezérlésátadó

• (feltételes és feltétel nélküli elágazás,eljáráshívás és visszatérés)

utasítások.

Minden ilyen utasítás konstans hosszúságú idot vesz igénybe.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.26

A beszúró rendezés hatékonysága

A Beszúró-rendezés eljárás által felhasznált ido a bemenettolfügg:

• ezer szám rendezése tovább tart,• mint három számé.

Sot, a BESZÚRÓ-RENDEZÉS akár két ugyanolyan méretubemeno sorozatot is rendezhet különbözo ido alatt attólfüggoen, hogy azok mennyire vannak már eleve rendezve.Általában egy algoritmus által felhasznált ido a bemenetméretével no, így hagyományosan egy program futási idejétbemenete méretének függvényével írjuk le.Ehhez pontosabban kell definiálnunk a futási ido és a bemenetmérete kifejezéseket.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.27

A bemenet mérete

A bemenet méretének legjobb mértéke a vizsgált feladattólfügg.

• Sok feladatra, mint például a rendezés, alegtermészetesebb mérték a bemeno elemek száma.

• Sok egyéb feladatra, mint például két egész számszorzása, a bemenet méretére a legjobb mérték abemenet közönséges bináris jelölésben valóábrázolásához szükséges bitek teljes száma.

• Néha megfelelobb a bemenet méretét egy szám helyettinkább kettovel leírni.

• Például, ha az algoritmus bemenete egy gráf, a bemenetméretét leírhatjuk a gráf éleinek és csúcsainak számával.

Minden vizsgált feladatnál megadjuk, hogy a bemenetméretének melyik mértékét használjuk.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.28

A futási ido

Az algoritmusok futási ideje egy bizonyos bemenetre avégrehajtott alapmuveletek vagy lépések száma.Kényelmes úgy definiálni a lépést, hogy minél inkábbgépfüggetlen legyen.Egyelore fogadjuk el a következot: pszeudokódunk mindegyiksorának végrehajtásához állandó mennyiségu ido szükséges.Lehet, hogy az egyik sor tovább tart, mint a másik, defeltesszük, hogy az i-edik sor minden végrehajtása ci ideig tart,ahol ci állandó.Ez a nézopont megfelel a RAM modellnek, és tükrözi azt is,ahogyan a pszeudokódot végrehajtaná a legtöbb jelenlegiszámítógép.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.29

A beszúró rendezés hatékonysága

A következo elemzésben a BESZÚRÓ-RENDEZÉS futási idejét a–minden egyes utasítás ci végrehajtási idejét figyelembe vevo–bonyolult képletbol egyszerubb, tömörebb és könnyebbenkezelheto alakra hozzuk. Ez az egyszerubb alak annakeldöntését is megkönnyíti, hogy egy algoritmus hatékonyabb-eegy másiknál.A BESZÚRÓ-RENDEZÉS eljárás bemutatását az utasításokidoköltségével és az egyes utasítások végrehajtásainakszámával kezdjük.

• Minden j = 2, 3, . . . n-re, ahol n = méret[A], tj legyen az aszám, ahányszor a while ciklus 4. sorban lévo tesztjevégrehajtódik az adott j értékre.

• Ha egy for vagy while ciklusból a szokásos módon lépünkki (azaz a ciklusfejben lévo teszt eredményeképpen),akkor a teszt eggyel többször hajtódik végre, mint aciklusmag.

• Feltesszük, hogy a megjegyzések nem végrehajthatóutasítások, így nem vesznek igénybe idot.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.30

Beszúró rendezés hatékonysága

költs

ég

végr

ehaj

tási

szám

procedure BESZÚRÓ-RENDEZÉS(A)1 for j← 2 to méret(A) do −−−−−−−→ c1 n2 kulcs← A[j] −−−−−−−−−−−−−−−−−→ c2 n-13 i← j – 1 −−−−−−−−−−−−−−−−−−−→ c3 n-14 while i ≥ 1 és A[i] > kulcs do−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−→ c4

∑nj=2 tj

5 A[i + 1]← A[i] −−−−−−−−−−−→ c5∑n

j=2 (tj − 1)

6 i← i – 1 −−−−−−−−−−−−−−−→ c6∑n

j=2 (tj − 1)

7 end while8 A[i + 1]← kulcs −−−−−−−−−−−−−−→ c8 n-19 end for

end procedure

(Itt feltételeztük, hogy n=méret(A)> 0.)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.31

Beszúró rendezés hatékonysága

A BESZÚRÓ-RENDEZÉS T (n) futási ideje tehát az egyessorokhoz tartozó költségek és végrehajtási számokszorzatösszege:

T (n) = c1n + c2 (n− 1) + c3 (n− 1) + c4

n∑j=2

tj

+ c5

n∑j=2

(tj − 1) + c6

n∑j=2

(tj − 1) + c8 (n− 1)

= n · (c1 + c2 + c3 + c8)− (c2 + c3 + c8)

+

n∑j=2

tj

· (c4 + c5 + c6)− (n− 1) · (c5 + c6)

T (n) = n · (c1 + c2 + c3 − c5 − c6 + c8)− (c2 + c3 − c5 − c6 + c8)

+

n∑j=2

tj

· (c4 + c5 + c6)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.32

Beszúró rendezés hatékonysága

T (n) = n · (c1 + c2 + c3 − c5 − c6 + c8)− (c2 + c3 − c5 − c6 + c8)

+

n∑j=2

tj

· (c4 + c5 + c6)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.32

Beszúró rendezés hatékonysága

T (n) = n · (c1 + c2 + c3 − c5 − c6 + c8)− (c2 + c3 − c5 − c6 + c8)

+

n∑j=2

tj

· (c4 + c5 + c6)

„Szerencsés” esetben, azaz rendezett bemenetnél:• tj = 1 minden j-re

T (n) = n · (c1 + c2 + c3 − c5 − c6 + c8)− (c2 + c3 − c5 − c6 + c8)

+ (n− 1) · (c4 + c5 + c6)

= n · (c1 + c2 + c3 + c4 + c8)− (c2 + c3 + c4 + c8)

= a · n + b

T (n) lineáris függvénye n-nek:

T (n) ∈ Θ (n)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.32

Beszúró rendezés hatékonysága

T (n) = n · (c1 + c2 + c3 − c5 − c6 + c8)− (c2 + c3 − c5 − c6 + c8)

+

n∑j=2

tj

· (c4 + c5 + c6)

Legrosszabb esetben, „fordítottan rendezett” bemenettel:

• tj = j minden j-re(∑n

j=2 tj =∑n

j=2 j = n(n+1)2 − 1

)T (n) = n · (c1 + c2 + c3 − c5 − c6 + c8)− (c2 + c3 − c5 − c6 + c8)

+

(n (n + 1)

2− 1)· (c4 + c5 + c6)

=n2 · c4 + c5 + c6

2+ n ·

(c1 + c2 + c3 + c8 +

c4 − c5 − c6

2

)− (c2 + c3 + c4 + c8)

=a · n2 + b · n + c

T (n) négyzetes függvénye n-nek: T (n) ∈ Θ(n2)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.32

Beszúró rendezés hatékonysága

T (n) = n · (c1 + c2 + c3 − c5 − c6 + c8)− (c2 + c3 − c5 − c6 + c8)

+

n∑j=2

tj

· (c4 + c5 + c6)

„Átlagos” esetben:

• tj ' j/2 minden j-re(∑n

j=2 tj '∑n

j=2j2 '

n2

4

)T (n) = n · (c1 + c2 + c3 − c5 − c6 + c8)− (c2 + c3 − c5 − c6 + c8)

+n2

4· (c4 + c5 + c6)

=a · n2 + b · n + c

T (n) négyzetes függvénye n-nek: T (n) ∈ Θ(n2)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.33

Hatékonyság elemzés

A késobbiekben általában a legrosszabb futási ido kereséséreösszpontosítunk, azaz a leghosszabb futási idore tetszolegesn méretu bemenetre.Erre három indokot adunk.

• A legrosszabb futási ido garanciát jelent arra, hogy azalgoritmus soha nem fog tovább tartani. Nem szükségestalálgatásokba bocsátkoznunk a futási idorol, azutánreménykedni, hogy nem lesz ennél rosszabb.

• Bizonyos algoritmusokra gyakran fordul elo a legrosszabbeset. Például, ha egy bizonyos információt keresünk egyadatbázisban, a kereso-algoritmus legrosszabb esetegyakran elofordul, ha az információ nincs az adatbázisban.

• Az „átlagos eset” gyakran nagyjából ugyanolyan rossz,mint a legrosszabb eset.

• Lásd a BESZÚRÓ-RENDEZÉS fenti elemzését, ahollényegében egy 2-es faktor volt csupán az eltérés.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.34

Hatékonyság elemzés

Bizonyos esetekben az algoritmus átlagos vagy várható futásiidejére van szükségünk;Ilyenkor a valószínuségi elemzés módszerével határozhatómeg a várható futási ido.Az átlagos eset elemzésének vizsgálata során probléma lehet,hogy nem feltétlenül nyilvánvaló, mi az „átlagos” bemenet.Gyakran feltételezzük, hogy minden adott méretu bemenetugyanolyan valószínu, de ez a gyakorlatban nem mindig jogos.A valószínuségi elemzésre olyankor is szükség van, havéletlenített algoritmust alkalmazunk.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.35

Oszd meg és uralkodj

Sok hasznos algoritmus szerkezetében rekurzív:

• egy adott feladat megoldásához rekurzívan hívjákmagukat egyszer vagy többször,

• egymáshoz szorosan kötodo részfeladatok kezelésére.

Ezek az algoritmusok általában az oszd-meg-és-uralkodjmegközelítést követik:

• a feladatot több részfeladatra osztják,• amelyek hasonlóak az eredeti feladathoz,• de méretük kisebb,• rekurzív módon megoldják a részfeladatokat,• majd „összevonják” ezeket a megoldásokat,

hogy az eredeti feladatra megoldást adjanak.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.36

Oszd meg és uralkodj

Az oszd-meg-és-uralkodj paradigma a rekurzió minden szintjénhárom lépésbol áll.

Felosztja a feladatot több részfeladatra.Uralkodik a részfeladatokon rekurzív módon való

megoldásukkal.• Ha a részfeladatok mérete elég kicsi, akkor

közvetlenül megoldja a részfeladatokat.Összevonja a részfeladatok megoldásait az eredeti feladat

megoldásává.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.37

Oszd meg és uralkodj

Az összefésülo rendezés algoritmusa szorosan követi azoszd-meg-és-uralkodj paradigmát.Lényegét tekintve a következoképpen muködik.

Felosztás: Az n elemu rendezendo sorozatot felosztja kétn/2 elemu részsorozatra.

Uralkodás: A két részsorozatot összefésülo rendezésselrekurzív módon rendezi.

Összevonás: Összefésüli a két részsorozatot, létrehozva arendezett választ.

A rekurzió akkor „áll le” (nem osztja tovább a feladatot kétrészre), amikor a rendezendo sorozat hossza 1: ekkor nincsmit csinálnia, mivel minden 1 hosszúságú sorozat már elevesorba van rendezve.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.38

Oszd meg és uralkodjprocedureÖSSZEFÉSÜL(T,p,q,r)

1 n1 ← q-p+12 n2 ← r-q3 az B[1..n1+1] és az

J[1..n2+1] tömböklétrehozása

4 for i← 1 to n1 do5 B[i]← T[p+i-1]6 end for7 for j← 1 to n2 do8 J[j]← T[q+j]9 end for

10 B[n1+1]← J[n2+1]←∞11 i← j← 1

12 for k← p to r do13 if B[i] ≤ J[j] then14 T[k]← B[i]

15 i← i + 1

16 else17 T[k]← J[j]

18 j← j + 1

19 end if20 end for

end procedure

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.38

Oszd meg és uralkodjprocedureÖSSZEFÉSÜL(T,p,q,r)

1 n1 ← q-p+12 n2 ← r-q3 az B[1..n1+1] és az

J[1..n2+1] tömböklétrehozása

4 for i← 1 to n1 do5 B[i]← T[p+i-1]6 end for7 for j← 1 to n2 do8 J[j]← T[q+j]9 end for

10 B[n1+1]← J[n2+1]←∞11 i← j← 1

12 for k← p to r do13 if B[i] ≤ J[j] then14 T[k]← B[i]

15 i← i + 1

16 else17 T[k]← J[j]

18 j← j + 1

19 end if20 end for

end procedure

Ciklusinvariáns: A 12–19. sorokbeli for ciklus minden iteráció-jának kezdetén az T[p . . k−1] rész-tömb az B[1 . . n1+1] és azJ[1 . . n2+1] tömbök k−p darab legkisebb elemét tartalmazzák,rendezetten. Továbbá B[i] és J[ j] a megfelelo tömbök legkisebbolyan elemei, amelyek még nincsenek visszamásolva T-be.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.38

Oszd meg és uralkodjprocedureÖSSZEFÉSÜL(T,p,q,r)

1 n1 ← q-p+12 n2 ← r-q3 az B[1..n1+1] és az

J[1..n2+1] tömböklétrehozása

4 for i← 1 to n1 do5 B[i]← T[p+i-1]6 end for7 for j← 1 to n2 do8 J[j]← T[q+j]9 end for

10 B[n1+1]← J[n2+1]←∞11 i← j← 1

12 for k← p to r do13 if B[i] ≤ J[j] then14 T[k]← B[i]

15 i← i + 1

16 else17 T[k]← J[j]

18 j← j + 1

19 end if20 end for

end procedure

Annak belátásához, hogy ÖSSZEFÉSÜL Θ(n) ideig fut, aholn=r−p+1, figyeljük meg, hogy az 1–3. és a 10–11. sorok állan-dó idot vesznek igénybe, a 4–9. sorokban szereplo for ciklusokΘ(n1+n2 ) = Θ(n) idot, a 12–19. sorokban szereplo for ciklusnakpedig n iterációja van, és mindegyik állandó ideig tart.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.39

Oszd meg és uralkodj

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.40

Oszd meg és uralkodj

procedure ÖSSZEFÉSÜLo-RENDEZÉS(A,p,r)1 if p < r then2 q← b(p + r) /2c3 ÖSSZEFÉSÜLo-RENDEZÉS(A,p,q)4 ÖSSZEFÉSÜLo-RENDEZÉS(A,q+1,r)5 ÖSSZEFÉSÜL(A,p,q,r)6 end if

end procedure

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.40

Oszd meg és uralkodj

procedure ÖSSZEFÉSÜLo-RENDEZÉS(A,p,r)1 if p < r then2 q← b(p + r) /2c3 ÖSSZEFÉSÜLo-RENDEZÉS(A,p,q)4 ÖSSZEFÉSÜLo-RENDEZÉS(A,q+1,r)5 ÖSSZEFÉSÜL(A,p,q,r)6 end if

end procedure

Amikor egy algoritmus rekurzívan hívja magát, futási idejétgyakran rekurzív egyenloséggel vagy rekurzióval írhatjuk le,amely az n méretu feladat megoldásához szükséges teljes fu-tási idot a kisebb bemenetekhez tartozó futási idokkel fejezi ki.A rekurzió megoldására matematikai eszközöket használunk,melyekkel az algoritmusra teljesítménykorlátokat tudunk adni.

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.40

Oszd meg és uralkodj

procedure ÖSSZEFÉSÜLo-RENDEZÉS(A,p,r)1 if p < r then2 q← b(p + r) /2c3 ÖSSZEFÉSÜLo-RENDEZÉS(A,p,q)4 ÖSSZEFÉSÜLo-RENDEZÉS(A,q+1,r)5 ÖSSZEFÉSÜL(A,p,q,r)6 end if

end procedure

T (n) =

{Θ (1) ha n < c

2 · T (n/2) + D (n) + C (n) egyébként

Esetünkben könnyu belátni, hogy:

D(n) ∈ Θ (1)

és már láttuk, hogy:C(n) ∈ Θ (n)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.40

Oszd meg és uralkodj

procedure ÖSSZEFÉSÜLo-RENDEZÉS(A,p,r)1 if p < r then2 q← b(p + r) /2c3 ÖSSZEFÉSÜLo-RENDEZÉS(A,p,q)4 ÖSSZEFÉSÜLo-RENDEZÉS(A,q+1,r)5 ÖSSZEFÉSÜL(A,p,q,r)6 end if

end procedure

T (n) =

{Θ (1) ha n = 1

2 · T (n/2) + Θ (n) egyébként

Késobb látni fogjuk, hogy ebbol az iteratív feltételbol következik,hogy:

T (n) ∈ Θ (n · log2 n)

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.41

Oszd meg és uralkodjT (n) ∈ Θ (n · log2 n): „Bizonyítás” rekurziós fával

T (n) =

{c ha n = 1

2 · T (n/2) + c · n egyébként

Az algoritmusokszerepe a

számításokban

Kósa MárkPánovics János

Szathmáry LászlóHalász Gábor

AlgoritmusokAlgoritmusok fogalma

Algoritmusok megadása

Algoritmusok építoelemei

Példa: rendezési feladat

Algoritmusok minttechnológiaHatékonyság

Technológia

AlgoritmusokelemzéseAlgoritmusok helyessége

Ciklusinvariáns

Hatékonyság elemzés

A RAM modell

A bemenet mérete

A futási ido

A beszúró rendezéshatékonysága

Oszd meg és uralkodj

1.41

Oszd meg és uralkodjT (n) ∈ Θ (n · log2 n): „Bizonyítás” rekurziós fával

T (n) =

{c ha n = 1

2 · T (n/2) + c · n egyébként