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
68
Embed
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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
• 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.)
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
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:
• (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:
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