Hatékony-e a rekurzió? FÉLEGYHÁZI TAMÁS GÁBOR 1 Kovács Magda-díj pályázat 2015/16.
A pályamű használati értéke Cél: Bemutatni hagyományos algoritmusok nem hagyományos megvalósításait. Rekurzióval kapcsolatos előítéletek meg- vizsgálása, igazolása vagy cáfolása. Fejlett programozás-technikai eszközök felhasználásával. Kovács Magda-díj pályázat 2015/16. 2
Tartalomjegyzék Feladatspecifikáció Programozási tételek Rekurzió meghatározása Tervezés Felhasznált eszközök Implementáció Tesztelés Kapott eredmények Következtetések Hivatkozások Kovács Magda-díj pályázat 2015/16. 3
Feladatspecifikáció Elemi és összetett programozási tételek iteratív és rekurzív változatainak összehasonlítása hatékonyság szempontjából. Algoritmus működése. Beépített nyelvi elemek működése. Futási idők mérése nanoszekundumban. Kovács Magda-díj pályázat 2015/16. 4
Programozási tételek Elemi: Sorozatszámítás Eldöntés Kiválasztás (Lineáris) keresés Megszámolás Szélsőérték kiválasztás Összetett: Másolás Kiválogatás Szétválogatás Metszet Egyesítés Összefésülés Kovács Magda-díj pályázat 2015/16. 5
Rekurzió meghatározása „A rekurzió a ciklusnál bonyolultabb programszerkezet, s mindketten ugyanarra a célra szolgálnak: valamilyen tevékenység ismételt végrehajtására.” „A rekurzió megvalósítása igen nagy központi tárigénnyel járhat.” „A rekurzív megoldás sokszor „rettenetes” futási időnövekedést okoz.” „Az, hogy a matematikusok bevett eszközei és módszerei épülnek e fogalomra, még nem indokolja, hogy a számítástechnikában is használjuk.” „A rekurzió valami nagyon bonyolult dolog, inkább ne foglalkozzunk vele!” [1] Kovács Magda-díj pályázat 2015/16. 6
Model Adatok beolvasása adatbázisból a memóriába. Adatok előkészítése a feldolgozásra. Controller Vezérli a programot, kapcsolatot teremt a nézet és az adatszerkezet között. View Kovács Magda-díj pályázat 2015/16. 7 Tervezés
Felhasznált eszközök Oracle HR schema adatbázis Java 1.8.0_65-b17 NetBeans Kovács Magda-díj pályázat 2015/16. 8
Implementáció Log file Grafikon generálása Grafikon megjelenítése Tesztelés Kovács Magda-díj pályázat 2015/16. 9
Tesztelés Kovács Magda-díj pályázat 2015/16. 10
Kapott eredmények Programozási tételGyorsulás Sorozatszámítás – ciklus 0, Eldöntés – rekurzív 0, Kiválasztás – rekurzív 0, (Lineáris) Keresés – rekurzív 0, Megszámolás – ciklus 0, Szélsőérték kiválasztás – ciklus 0, Programozási tételGyorsulás Másolás – rekurzív 0, Kiválogatás – rekurzív 0, Szétválogatás – rekurzív 0, Metszet – ciklus 0, Egyesítés – rekurzív 0, Összefésülés – rekurzív 0, Programozási tételCiklusokkalRekurzív Sorozatszámítás Eldöntés Kiválasztás (Lineáris) Keresés Megszámolás Szélsőérték kiválasztás Másolás Kiválogatás Szétválogatás Metszet Egyesítés Összefésülés Kovács Magda-díj pályázat 2015/16. 11
Kovács Magda-díj pályázat 2015/ Program működése
Kovács Magda-díj pályázat 2015/ Program működése
Következtetések Meglepő: egyes tételeknél a rekurzív megvalósítás gyorsabb az iteratívnál. „Kritikus tömegre” „megéri” a rekurzivitást alkalmazni. Ugyanakkor a call stack erősen korlátozza a rekurzió mélységét, így a sorozat(ok) maximális hosszát. Kovács Magda-díj pályázat 2015/16. 14
Hivatkozások 1. Szlávi P., Zsakó L.: Módszeres programozás: Rekurzió, Mikrológia 4., ELTE TTK Informatikai Tanszékcsoport, 4. kiadás, Angster E.: Programozás tankönyv II., 4KÖR Bt., 5., javított kiadás, 1999, ISBN II.K. 3. Angster E.: Objektumorientált tervezés és programozás, Java, 2. kötet, 4KÖR Bt., 2., átdolgozott kiadás, 2004, ISBN Kaczur S.: Programozási alapok, 1. kiadás, 2009, ISBN Szlávi P., Zsakó L.: Módszeres programozás: Programozási tételek, Mikrológia 19., ELTE TTK Informatikai Tanszékcsoport, 4. javított kiadás, Recursive factorial | Recursive Algorithms | Khan Academy, link, október 30.link 7. Iványi A.: Informatikai algoritmusok I., ELTE Eötvös Kiadó, Budapest, 2004, ISBN Pap Gné., Szlávi P., Zsakó L.: Módszeres programozás: Rekurzív típusok, Mikrológia 27., ELTE TTK Informatikai Tanszékcsoport, 3. javított kiadás, Pintér L.: Programozási tételek rekurzív megvalósítása, Mikrológia 10., ELTE TTK Informatikai Tanszékcsoport, 4. kiadás, 1995 Kovács Magda-díj pályázat 2015/16. 15
Hivatkozások 12. Kaczur S.: A rekurzió tanításához használható mintaprogramok Java nyelven, A Dunaújvárosi Főiskola Közleményei, Dunaújváros, XXXI., 2009, ISSN , p. 1-6 (magyar nyelvű szakcikk) 13. h.c., link, november 3.link 14. Gábor Dénes Főiskola mérnök-informatikus szak tanterve, link, november 19.link 15. Oracle HR séma, link, október 2.link 16. Kaczur S.: Programozási technológia, 1. kiadás, 2010, ISBN Java SE Development Kit 8 | Downloads, link, október 5.link 18. NetBeans IDE Download, link, október 5.link 19. GitHub – Where software is built, link, október 5.link 20. Enterprise Architect Trial – Sparx System, link,,2015. október 5.link 21. Defining Multithreading Terms, link, október 18.link 22. J. Ponge: Fork and Join: Java Can Excel at Painless Parallel Programming Too!, link, október 18.link 23. Elkészült szoftver forráskódja, link, június 15.link Kovács Magda-díj pályázat 2015/16. 16
Hatékony-e a rekurzió? FÉLEGYHÁZI TAMÁS GÁBOR 17 Kovács Magda-díj pályázat 2015/16.