Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
INFORMATIKAIALGORITMUSOK I.
Elektronikus tankönyv
ELTE Informatikai Kar, Budapest, 2005
Iványi Antal
alkotó szerkeszt®
INFORMATIKAI
ALGORITMUSOK I.
ELTE Informatikai Kar, Budapest, 2005
Ez az elektronikus tankönyv az Oktatási Minisztériumtámogatásával, a Szakkönyv- és Tankönyvtámogatási
Pályázat keretében készült.
A könyv a szerzoi jogról szóló 1999. évi LXXVI. tv. 33. § (4) bekezdésében meghatározott oktatási,illetve kutatási célra használható fel. A teljes könyv (vagy annak egy része) képernyon
megjelenítheto, letöltheto, arról elektronikus adathordozón vagy papíralapon másolat készítheto,adatrögzíto rendszerben tárolható. A digitális tartalom üzletszeru felhasználása, módosítása és
átdolgozása, illetve az ilyen módon keletkezett származékos anyag további felhasználása csak a c©szimbólum után felsorolt alkotókkal kötött írásos szerzodés alapján történhet.
Alkotó szerkeszto: Iványi AntalSzerzok: Kása Zoltán (1.), Járai Antal és Kovács Attila (2.), Jörg Rothe (3. és 4.),
Gyires Tibor (5.), Iványi Antal és Claudia Leopold (6.), Eberhard Zehendner (7.), SzidarovszkyFerenc (8.), Vizvári Béla (9.), Ulrich Tamm (10.),
Balogh Ádám és Iványi Antal (11.), Demetrovics János és Sali Attila (12.),Miklós István (13.), Ingo Althöfer és Stefan Schwartz (14.), Szirmay-Kalos László (15.),
Elek István és Sidló Csaba (16.), Galántai Aurél és Jeney András (17.)
Szakmai lektorok: Recski András (1.), Ivanyos Gábor (2.), Gonda János (3.), Rónyai Lajos (4.),Lakatos László (5.), Sima Dezso (6. és 7.), Mayer János (8.), Csirik János (9.), Fridli Sándor (10.),Varga László (11.), Kiss Attila (12.), Katsányi István (13.), Szántai Tamás (14.), Vida János (15.),
Meskó Attila (16.), Szántai Tamás (17.)
Nyelvi lektor: Biró GabriellaFordítók: Láng Zsuzsa (3.), Sidló Csaba (4.), Roszik János és Sztrik János (5.), Szakács Laura (7.),
Pintér Miklós (8.), Sike Sándor (10.), Belényesi Viktor és Nikovits Tibor (14.)
A könyv címoldalán a Szépmuvészeti Múzeum engedélyével és az ELTE Informatikai Karánaktámogatásával Vasarely Victor Dirac címu festménye látható. A borítóhoz felhasznált lmet a
GOMA RT. bocsátotta rendelkezésünkre. A borítót Iványi Antal tervezte.
c© Ingo Althöfer, Balogh Ádám, Belényesi Viktor, Biró Gabriella, Csirik János, Demetrovics János,Elek István, Fridli Sándor, Galántai Aurél, Gonda János, Gyires Tibor, Iványi Anna, Iványi Antal,Ivanyos Gábor, Járai Antal, Jeney András, Katsányi István, Kása Zoltán, Kovács Attila, Lakatos
László, Láng Zsuzsa, Claudia Leopold, Locher Kornél, Mayer János, Meskó Attila, Miklós István,Nikovits Tibor, Pintér Miklós, Recski András, Roszik János, Rónyai Lajos, Jörg Rothe, Sali Attila,
Stefan Schwarz, Sidló Csaba, Sima Dezso, Sike Sándor, Szakács Laura, Szántai Tamás,Szidarovszky Ferenc, Szirmay-Kalos László, Sztrik János, Ulrich Tamm, Varga László, Vida János,
Vizvári Béla, Eberhard Zehendner, 2004ISBN 963 463 755 8
Kiadja az ELTE Informatikai Kara1117 Budapest, Pázmány Péter sétány 1/C.
Telefon: 381-2139, Fax: 381-2140
Honlap: http://www.inf.elte.hu/
Elektronikus cím: [email protected]
Felelos kiadó: Kozma László
El®szó
Az informatikai algoritmusok magyar nyelvu szakirodalma az utóbbi huszonöt évben ala-kult ki. Az elso szakkönyvet Lovász László és Gács Péter írta 1978-ban [13]. Ezt a könyvetfordítások követték: 1982-ben Aho, Hopcroft és Ullman [1] könyve, 1987-ben Knuth há-romkötetes monográája [10, 11, 12], majd 1987-ben Cormen, Leiserson és Rivest muve[2]. 1999-ben újra hazai szerzok következtek Rónyai Lajos, Ivanyos Gábor és Szabó Réka[17] majd 2002-ben megjelent Lynch Osztott algoritmusok címu monográája [15].
Ezt 2003 tavaszán Iványi Antal Párhuzamos algoritmusok címu könyve [8], majd 2003oszén Új algoritmusok címmel Cormen, Leiserson, Rivest és Stein tankönyvének [3]fordítása követte.
A magyar informatikus hallgatók és gyakorlati szakemberek nagy érdeklodéssel fogad-ták az Új algoritmusokat néhány hónap alatt a kiadott 2000 példány fele gazdára talált.Ez ösztönözte ennek a könyvnek a hazai szerzoit, hogy külföldi kollégáik segítségével további informatikai területek algoritmusait is összefoglalják.
A könyv tartalmát hat részre tagoljuk: Alapok, Hálózatok, Diszkrét optimalizálás, Foly-tonos optimalizálás, Adatbázisok és Alkalmazások.
Az elso kötetbe azok a fejezetek került, amelyek szeptemberig elkészültek. Mindenfejezet bemutat egy alkalmazási vagy elméleti szempontból lényeges területet és azokhozkapcsolódó algoritmusokat. Az algoritmusok többségét szóban és olyan pszeudokóddal ismegadjuk, amely a programozási tapasztalattal rendelkezo olvasók számára könnyen ért-heto.
Az elso kötet 247 ábrát, 157 pszeudokódot és 133 példát tartalmaz, amelyek elosegítika tárgyalt algoritmusok muködésének megértését. Az önálló tanulást az alfejezetek végénlévo gyakorlatok (összesen 269), az egyes témákban való elmélyülést pedig a fejezetek vé-gén lévo (összesen 66) feladatok segítik. A fejezetek anyagával kapcsolatos friss és kiegé-szíto ismeretekre való utalások találhatók a fejezetek végén lévo Megjegyzések a fejezethezcímu részben. Az Irodalomjegyzékben megadjuk egyrészt a felhasznált szakirodalom bibli-ográai adatait, másrészt teljességre törekedve felsoroljuk a magyar nyelvu forrásokat.Az irodalomjegyzék számos eleme felhasználható a megfelelo honlapra való ugráshoz. Kü-lön részben szerepel a könyvben használt szakkifejezések angol-magyar és magyar-angolszótára, valamint a jelölések listája. A könyvet Névmutató és Tárgymutató zárja.
Az algoritmusok bemutatása az igényelt eroforrások elsosorban futási ido és memó-ria elemzését is magában foglalja. A szakirodalomban szokásos módon felso korláto-kat adunk meg a legrosszabb esetre jellemzo eroforrásigényre, és esetenként a megoldandóprobléma eroforrásigényére jellemzo alsó korlátot is levezetünk.
6 El®szó
A könyv kéziratát HLATEX kiadványszerkeszto eszköz segítségével készítettük, amelyetaz elmúlt hat év során Belényesi Viktorral és Locher Kornéllal fejlesztettünk ki, és korábbanmár három könyv kéziratának eloállítására használtunk. Az ábrák többségét Locher Kornélrajzolta. Az irodalomjegyzéket Iványi Anna tette élové.
Garey és Johnson klasszikus muvét [5] követve mindazon algoritmusok futási idejétexponenciálisnak nevezzük, amelyekre nem adható polinomiális felso korlát.
Az Új algoritmusok példáját követve tizedespontot használunk.Mindig különös gondot fordítunk könyveink külsejére. Az adott esetben olyan megol-
dást kerestünk, amely• tükrözi a könyv tartalmi gazdagságát (az elso kötet 17 és a második kötet hasonló számú
fejezetét)
• és az alkotók szoros kötodését mind Magyarországhoz, mind pedig Európához.Úgy gondoljuk, hogy a pécsi születésu Vásárhelyi Viktor aki francia festoként Victor
Vasarely néven vált világhíruvé képeire jellemzo a formák és színek gazdagsága, életútjapedig tükrözi kultúránk európai kötodését.
A budapesti és pécsi múzeumokban összesen közel 500 Vasarely-alkotás van. Ezek amuvész ajándékai a szüloföld iránti hála és tisztelet szimbólumai. Vasarely gazdag élet-muvébol a könyv alkotói és majdani olvasói segítségével választottunk. A szavazók a Dirac,Kubtuz, Rikka, Sixa és a Tupa-fond címu képeket emelték ki. Közülük két olyan képet aDirac és a Kubtuz címu festményeket választottuk, amelyeken szakaszokból kör alakul ki szemléltetve az informatika azon alapveto tulajdonságát, hogy a folytonos valós világotdiszkrét objektumokkal (bitekkel) írja le és amelyekhez sikerült felhasználási engedélytkapnunk.
Közismert, hogy az elmúlt évszázadban nemcsak muvészeink, hanem sok kiváló tudó-sunk is külföldön ért fel a csúcsra. Nagy részükre azonban folyamatosan számíthat a hazaioktatás és tudományos élet. A hálózati szimulációs fejezet szerzoje Gyires Tibor (IllinoisEgyetem), a játékelméleti fejezetet pedig Szidarovszky Ferenc (Arizonai Muszaki Egyetem)írta. A második kötetben a megbízhatóságról szóló fejezetet Gács Péter (Bostoni Egyetem)írta, a belsopontos módszerekrol szóló fejezet egyik szerzoje pedig Terlaky Tamás (McMas-ter Egyetem). Ma mind a négy szerzo az adott terület vezeto kutatója, amerikai egyetemekprofesszora egykor magyar egyetemen tanultak, majd tanítottak.
A rekurziós fejezet szerzoje Kása Zoltán (Babes-Bolyai Tudományegyetem), a sziszto-likus rendszerekrol szóló fejezetet Szakács Laura (Babes-Bolyai Tudományegyetem) fordí-totta németrol magyarra. Részvételük a könyv megszületésében a határainkon túli magyarnyelvu oktatással való szoros kapcsolatunk része.
Könyvünk tartalmi gazdagsága jó külföldi elsosorban német kapcsolatainknakis köszönheto. Az elso kötet kriptográai és bonyolultságelméleti fejezetét Jörg Rothe(Düsseldor Egyetem), szisztolikus rendszerekkel foglalkozó fejezetét Eberhard Zehendner(Friedrich Schiller Egyetem) írta. Az adattömörítési fejezet szerzoje Ulrich Tamm (Chem-nitzi Egyetem), a párhuzamos programozásról szóló fejezet egyik szerzoje Claudia Leopold(Kasseli Egyetem), az ember-gép kapcsolatokkal foglalkozó fejezet szerzoi Ingo Althöferés Stefan Schwartz (Friedrich Schiller Egyetem).
Az alkotók (szerzok, lektorok, fordítók és segítotársaik) többsége a hazai informatikaifelsooktatás meghatározó intézményeinek Budapesti Corvinus Egyetem, Budapesti Mu-szaki és Gazdaságtudományi Egyetem, Budapesti Muszaki Foiskola, Debreceni Egyetem,
El®szó 7
Eötvös Loránd Tudományegyetem, Miskolci Egyetem, Pécsi Tudományegyetem, SzegediTudományegyetem oktatója.
Az Oktatási Minisztérium támogatásának köszönhetoen ez a tankönyv nagyon kedvezoáron juthat el az Olvasókhoz. Ugyancsak az Oktatási Minisztérium támogatásának köszön-heto, hogy 2005 tavaszától a könyv elektronikus változata is mindenki számára szabadonhozzáférheto lesz.
Az alábbi kollégáknak köszönjük, hogy a tervezett könyv mindkét formáját támogat-ták: Fazekas Gábor egyetemi docens (Debreceni Egyetem Informatikai Karának dékánhe-lyettese), Imreh Balázs egyetemi docens (Szegedi Egyetem), Kása Zoltán egyetemi tanár(BBTE Matematikai és Informatikai Karának dékánhelyettese), Kozma László egyetemidocens (ELTE Informatikai Karának dékánja), Jörg Rothe egyetemi tanár (Heinrich HeineUniversität, Düsseldorf), Sima Dezso foiskolai tanár (Budapesti Muszaki Foiskola Neu-mann János Informatikai Karának foigazgatója), Sidló Csaba PhD hallgató (ELTE Informa-tikai Doktori Iskola), Szeidl László egyetemi tanár (Pécsi Tudományegyetem Matematikaiés Informatikai Intézet igazgatója), Szidarovszky Ferenc egyetemi tanár (Arizonai MuszakiEgyetem), Szirmay-Kalos László egyetemi tanár (BME Villamosmérnöki és InformatikaiKara), Terlaky Tamás egyetemi tanár (McMaster Egyetem, Hamilton)
Ugyancsak köszönjük azoknak a kollégáinknak a segítokészségét, akiknek a lektori vé-leményét csatolni tudtuk a pályázathoz: Fekete István egyetemi docens (Rekurziók címu fe-jezet), Fridli Sándor egyetemi docens (Adattömörítés), Gonda János egyetemi docens (Krip-tográa), Hunyadvári László egyetemi docens és Katsányi István PhD hallgató (Bioinfor-matika), Kiss Attila egyetemi docens (Relációs adatbázisok tervezése), Toke Pál egyetemidocens (Hálózatok szimulációja), Vida János egyetemi docens (Graka).
Az elektronikus változat elkészültéig a
http://people.inf.elte.hu/tony/konyvek/infalg
címu honlapon találják meg olvasóink a könyv kiegészítését, amely többek között az éloirodalomjegyzéket, a névmutatót, a gyakorlatok és feladatok egy részének megoldását, mu-ködo programokat, a talált hibák jegyzékét tartalmazza. Ezen a honlapon keresztül fogjukOlvasóinkat tájékoztatni az elektronikus változat hálózati címérol.
Köszönet illeti azokat Bánsághi Anna programtervezo matematikus hallgató (ELTE),Benyó Tamás programtervezo matematikus hallgató (ELTE), Biró Gabriella (programter-vezo matematikus), Csörnyei Zoltán egyetemi docens, (ELTE), Gyires Tibor egyetemi ta-nár (Illinois Egyetem), Imrényi Katalin tanszéki eloadó (ELTE), Iványi Anna programkoordináror (CEEWEB), Iványi Antal (villamosmérnök), Kása Zoltán egyetemi tanár(BBTE), Kurucz Miklós programtervezo matematikus hallgató (ELTE), Locher Kornélprogramtervezo matematikus hallgató (ELTE), Rét Anna szerkeszto (Muszaki Könyvki-adó), Rónyai Lajos egyetemi tanár (BME), Sima Dezso foiskolai tanár (BMF), SzabadosKristóf programtervezo matematikus hallgató (ELTE), Szendrei Rudolf programtervezomatematikus hallgató (ELTE), Szidarovszky Ferenc egyetemi tanár (Arizonai MuszakiEgyetem), Szirmay-Kalos László egyetemi tanár (BME), Takács Dániel programtervezomatematikus hallgató (ELTE) akik észrevételeikkel segítettek a könyvünk alapjául szol-gáló mu, az Informatikai algoritmusok I elso kiadásának javításában.
Ugyancsak köszönet illeti az ELTE Informatikai Karának azon hallgatóit, akik egy-egyfejezet véleményezésével, hibáinak javításával hozzájárultak az elektronikus kiadás job-bításához: a fejezetek sorrendjében Szabados Kristóf (6. fejezet), Szendrei Rudolf (10.
8 El®szó
fejezet), Benyó Tamás (11. fejezet) és Bánsághy Anna (13. fejezet)A késobbiekben szeretnénk mind az elso nyomtatott kiadás, mind az elektronikus kiadás
hibáit kijavítani. Ezért kérjük a könyv Olvasóit, hogy javaslataikat, észrevételeiket küldjékel a [email protected] címre levelükben lehetoleg pontosan megjelölve a hiba elofor-dulási helyét, és megadva a javasolt szöveget.
Olvasóink javaslataikkal, kérdéseikkel megkereshetik a könyv alkotóit is (címükmegtalálható a kolofonoldalon).
Budapest, 2005. április 12.Iványi Antal
alkotó szerkeszto
I. ALAPOK
Bevezetés
Ebben az alapozó részben négy témakört tárgyalunk.Az informatikai algoritmusok elemzése során gyakran elofordul, hogy például felismerjükaz n és n + 1 méretu feladatok megoldási ideje közötti kapcsolatot és ennek az úgyne-vezett rekurzív egyenletnek a felhasználásával szeretnénk közvetlenül felírni az n méretubemenethez tartozó futási idot. Az elso fejezet a rekurzív egyenletek leggyakrabban elofor-duló típusainak megoldási módszereit mutatja be.
A mai számítógépek sebessége és tárolókapacitása, valamint az elméleti eredményekszámos olyan feladat kényelmes (mechanikus) megoldását lehetové teszik, melyeket koráb-ban nem, vagy csak nagy nehézségek árán tudtunk kezelni. Ezek egy része mint a formálisdifferenciálás és integrálás a második fejezetben tárgyalt komputeralgebrához tartozik.
Az elektronikus kommunikáció hatalmas iramú terjedésével együtt no a kommunikációbiztonságának jelentosége. Ezért a mai informatika egyik kulcsfontosságú területe a krip-tográa, mellyel a könyv harmadik fejezete foglalkozik.
Az algoritmusok elemzésének hagyományosan fontos része az eroforrásigény leg-rosszabb esetre vonatkozó felso korlátjának megadása. Az csak az utóbbi 15 évben válttermészetessé, hogy az eroforrásigényre vonatkozó a probléma és a megengedett algorit-musok tulajdonságain alapuló alsó korlátokat is megadnak.
Például Donald Knuth The Art of Computer Programming címu monográájának 1968-ban megjelent elso kötetében szerepelt az aszimptotikus felso korlátok jellemzésére használtO-jelölés (nagy ordo) deníciója ugyanakkor még nem szerepelt az alsó korlátok jellemzé-sére alkalmas Ω-jelölés, valamint a pontos nagyságrend megadására alkalmas Θ-jelölés. AzIntroduction to Algorithms 1990-ben megjelent elso kiadásában, a Distributed Algorithms1996-ban megjelent elso kiadásában, valamint Knuth könyvének 1997-ben megjelent har-madik kiadásában már az Ω-jelölés és a Θ-jelölés deníciója is szerepel.
A negyedik fejezet szerint a bonyolultságelmélet fontos feladata, hogy a problémákhozés számítási modellekhez minél pontosabb alsó korlátokat adjon meg ezzel is segítve aproblémák eroforrásigény szerinti osztályozását.
A második kötetben fog megjelenni az algebrai algoritmusok elemzése.
1. Rekurzív egyenletek (Kása Zoltán)
Közismert a Fibonacci-számok rekurzív deníciója: ha Fn jelöli az n-edik Fibonacci-számot, akkor
F0 = 0, F1 = 1 ,
Fn+2 = Fn+1 + Fn, ha n ≥ 0 .
Szeretnénk explicit formában megadni Fn értékét tetszoleges n-re. A feladat tulajdonkép-pen olyan egyenlet megoldását kéri, amelyben az ismeretlen rekurzív módon van megadva,ezért rekurzív egyenletnek hívjuk. Itt a megoldás felfogható úgy, mint természetes számo-kon értelmezett függvény, mivel Fn minden n-re értelmezett. Az ilyen rekurzív egyenletetszokás még differenciaegyenletnek is nevezni, de nevezhetnénk akár diszkrét differenciál-egyenletnek is.
1.1. deníció. A k-adrendu rekurzív egyenlet (k ≥ 1) egy
f (xn, xn+1, . . . , , xn+k) = 0, n ≥ 0 (1.1)
alakú egyenlet, ahol xn-et kell explicit formában megadnunk.
Ahhoz, hogy egyértelmuen meghatározhassuk xn-et, meg kell adnunk k kezdoértéket, ezekáltalában x0, x1, . . . , xk−1. Ezek az értékadások kezdeti feltételeknek tekinthetok.
Mivel a Fibonacci-számokat deniáló egyenlet másodrendu rekurzív egyenlet, ezért ottkét kezdeti értéket adunk meg.
Az (1.1) egyenletet és annak adott kezdeti feltételeit kielégíto xn = g(n) sorozatot azadott egyenlet partikuláris megoldásának nevezzük. Ha az xn = h(n,C1,C2, . . . ,Ck) soro-zatból a C1,C2, . . . ,Ck állandók alkalmas megválasztásával az (1.1) egyenlet mindenpartikuláris megoldása eloállítható, akkor a sorozatot az egyenlet általános megoldásánaknevezzük.
A rekurzív egyenletek megoldása általában nem egyszeru. A következokben sajátosesetekben alkalmazható módszereket ismertetünk.
Az írásmódban függvény helyett inkább sorozatot használunk (ami tulajdonképpen ter-mészetes számokon értelmezett függvény). Így a jelölés egyszerubb lesz, x(n) helyett min-denhol xn-t írunk.
A fejezet három részbol áll. Az 1.1. alfejezetben a lineáris rekurzív egyenletek meg-oldásával, a 1.2. alfejezetben a generátorfüggvények felhasználásával, az 1.3. alfejezetbenpedig lineáris rekurzív egyenletek numerikus megoldásával foglalkozunk.
1.1. Lineáris rekurzív egyenletek 13
1.1. Lineáris rekurzív egyenletekHa a rekurzív egyenlet
f0(n)xn + f1(n)xn+1 + · · · + fk(n)xn+k = f (n), n ≥ 0
alakú, ahol f , f0, f1, . . . , fk természetes számokon értelmezett függvények, f0, fk , 0, ésxn-et kell explicit módon megadnunk, akkor lineáris rekurzív egyenletrol beszélünk. Haf azonosan nulla, akkor az egyenlet homogén, és különben inhomogén. Amennyiben azf0, f1, . . . , fk függvények mindegyike állandó, akkor állandó együtthatós lineáris rekurzívegyenletrol van szó.
1.1.1. Állandó együtthatós homogén lineáris rekurzív egyenletekLegyen
a0xn + a1xn+1 + · · · + ak xn+k = 0, n ≥ k , (1.2)
ahol a0, a1, . . . , ak valós állandók, a0, ak , 0, k ≥ 1. Amennyiben adva van k kezdeti érték(leggyakrabban x0, x1, . . . , xk−1), az egyenlet megoldása egyértelmuen meghatározható.
A megoldás érdekében rendeljük hozzá az egyenlethez a karakterisztikus egyenletét:
a0 + a1r + · · · + ak−1rk−1 + akrk = 0 , (1.3)
amely valós együtthatós egyenlet. Ennek az egyenletnek k gyöke van a komplex számokkörében. Behelyettesítéssel ellenorizheto, hogy ha r0 valós megoldása a karakterisztikusegyenletnek, akkor C0rn
0 megoldása az (1.2) egyenletnek, ahol C0 tetszoleges állandó.Az (1.2) egyenlet általános megoldása
xn = C1x(1)n + C2x(2)
n + · · · + Ck x(k)n ,
ahol x(i)n (i = 1, 2, . . . , k) az (1.2) egyenlet lineárisan független megoldásai. A kezdeti felté-
telekbol mindig meghatározhatók a C1,C2, . . . ,Ck állandók egy k egyenletbol álló egyen-letrendszer megoldásával.
A lineárisan független megoldásokat a karakterisztikus egyenlet gyökei szolgáltatjáka következok szerint. Minden gyökhöz hozzárendelheto egy fundamentálisnak nevezettmegoldás.
Különbözo valós gyökökLegyenek r1, r2, . . . , rp a karakterisztikus egyenlet egymástól különbözo valós gyökei. Ek-kor
rn1, rn
2, . . . , rnp
megoldásai az (1.2) rekurzív egyenletnek, és
C1rn1 + C2rn
2 + · · · + Cprnp (1.4)
is az, tetszoleges C1, C2, . . . , Cp állandókra. Ha p = k, akkor (1.4) a rekurzív egyenletáltalános megoldása.
14 1. Rekurzív egyenletek (Kása Zoltán)
1.1. példa. Oldjuk meg azxn+2 = xn+1 + xn, x0 = 0, x1 = 1
rekurzív egyenletet. A karakterisztikus egyenlet
r2 − r − 1 = 0 ,
amelynek gyökei
r1 =1 +√
52 , r2 =
1 − √52 .
Ezek valósak és egymástól különböznek, tehát az egyenlet általános megoldása
xn = C1
1 +√
52
n
+ C2
1 − √52
n
.
A C1 és C2 meghatározhatók a kezdeti feltételekbol. Ha gyelembe vesszük, hogy x0 = 0, x1 = 1, akövetkezo egyenletrendszerhez jutunk:
C1 + C2 = 0 ,
C11 +√
52 + C2
1 − √52 = 1 .
Az egyenletrendszer megoldása C1 = 1/√
5, C2 = −1/√
5 . Így az általános megoldás
xn =1√5
1 +√
52
n
− 1√5
1 − √52
n
,
amely éppen Fn, az n-edik Fibonacci-szám.
Többszörös valós gyökökLegyen r egy p-szeres gyöke a karakterisztikus egyenletnek. Ekkor
rn, nrn, n2rn, . . . , np−1rn
megoldásai az (1.2) rekurzív egyenletnek (az r többszörös gyökhöz tartozó fundamentálismegoldások), és (C0 + C1n + C2n2 + · · · + Cp−1np−1)rn (1.5)
is megoldás, tetszoleges C0, C1, . . . , Cp−1 állandókra. Ha a karakterisztikus egyenletneknincs más gyöke, akkor (1.5) a rekurzív egyenlet általános megoldása.
1.2. példa. Oldjuk meg azxn+2 = 4xn+1 − 4xn, x0 = 1, x1 = 3
rekurzív egyenletet. A karakterisztikus egyenlet
r2 − 4r + 4 = 0 ,
amelynek r = 2 kétszeres gyöke. Ekkor
xn = (C0 + C1n)2n
megoldása az egyenletnek.
1.1. Lineáris rekurzív egyenletek 15
A kezdeti feltételekbol
C0 = 1 ,2C0 + 2C1 = 3 .
Innen C0 = 1, C1 = 1/2, azaz az általános megoldás
xn =
(1 +
12 n
)2n vagy xn = (n + 2)2n−1 .
Egyszeres komplex gyökökHa a trigonometrikus alakban felírt a(cos b + i sin b) komplex szám gyöke a karakterisztikusegyenletnek, akkor az a(cos b − i sin b) konjugált is az, mivel a karakterisztikus egyenletvalós együtthatós. Ekkor
an cos bn és an sin bn
megoldása az (1.2) rekurzív egyenletnek és
C1an cos bn + C2an sin bn (1.6)
is az, tetszoleges C1 és C2 állandókra. Ha a karakterisztikus egyenletnek nincsenek másgyökei, akkor (1.6) általános megoldás.
1.3. példa. Oldjuk meg azxn+2 = 2xn+1 − 2xn, x0 = 0, x1 = 1
rekurzív egyenletet. A karakterisztikus egyenlet
r2 − 2r + 2 = 0 ,
amelynek gyökei 1 + i és 1 − i, trigonometrikus alakban:√
2(cos(π/4) + i sin(π/4)) és√
2(cos(π/4) −i sin(π/4)). Ezért a rekurzív egyenletnek
xn = C1(√
2)n cos nπ4 + C2(
√2)n sin nπ
4
megoldása. A kezdeti feltételekbol
C1 = 0 ,C1√
2 cos π4 + C2√
2 sin π4 = 1 .
Innen azt kapjuk, hogy C1 = 0, C2 = 1. Az általános megoldás tehát
xn =(√2)n sin nπ
4 .
16 1. Rekurzív egyenletek (Kása Zoltán)
Többszörös komplex gyökökHa a trigonometrikus alakban felírt a(cos b + i sin b) komplex szám p-szeres gyöke a karak-terisztikus egyenletnek, akkor az a(cos b − i sin b) konjugált is az.
Ekkor az (1.2) rekurzív egyenletnek
an cos bn, nan cos bn, . . . , np−1an cos bn
ésan sin bn, nan sin bn, . . . , np−1an sin bn
megoldásai. Ekkor megoldás
(C0 + C1n + · · · + Cp−1np−1)an cos bn + (D0 + D1n + · · · + Dp−1np−1)an sin bn
is, ahol C0,C1, . . . ,Cp−1,D0,D1, . . . ,Dp−1 tetszoleges állandók, amelyek meghatározhatóka kezdeti feltételekbol. Ez általános megoldás, ha a karakterisztikus egyenletnek nincsenekmás gyökei.
1.4. példa. Oldjuk meg az
xn+4 + 2xn+2 + xn = 0, x0 = 0, x1 = 1, x2 = 2, x3 = 3
rekurzív egyenletet. A karakterisztikus egyenlet
r4 + 2r2 + 1 = 0 ,
amely (r2 +1)2 = 0 alakban is írható, és amelynek i és −i kétszeres gyöke. Ezek trigonometrikus alakja
i = cos π2 + i sin π2 , valamint − i = cos π2 − i sin π2 .
Ezért az általános megoldás
xn = (C0 + C1n) cos nπ2 + (D0 + D1n) sin nπ
2 .
A kezdeti feltételekbol következik:
C0 = 0 ,(C0 + C1) cos π2 + (D0 + D1) sin π2 = 1 ,
(C0 + 2C1) cos π + (D0 + 2D1) sin π = 2 ,
(C0 + 3C1) cos 3π2 + (D0 + 3D1) sin 3π
2 = 3 ,
azaz
C0 = 0 ,D0 + D1 = 1 ,−2C1 = 2 ,
−D0 − 3D1 = 3 ,
és innen C0 = 0, C1 = −1, D0 = 3 és D1 = −2. Az általános megoldás tehát
xn = (3 − 2n) sin nπ2 − n cos nπ
2 .
1.1. Lineáris rekurzív egyenletek 17
A most vizsgált négy eset segítségével bármilyen állandó együtthatós homogén egyen-letet megoldhatunk.
1.5. példa. Oldjuk meg az
xn+3 = 4xn+2 − 6xn+1 + 4xn, x0 = 0, x1 = 1, x2 = 1
rekurzív egyenletet. A karakterisztikus egyenlet
r3 − 4r2 + 6r − 4 = 0 ,
amelynek gyökei: 2, 1 + i és 1 − i. Ezért az általános megoldás
xn = C12n + C2(√2)n cos nπ
4 + C3(√2)n sin nπ
4 .
Az állandók meghatározása után
xn = −2n−1 +
(√2)n
2
(cos nπ
4 + 3 sin nπ4
).
Általános megoldásAz (1.2) k-adrendu homogén lineáris rekurzív egyenlethez rendelt karakterisztikusegyenletnek összesen k gyöke van a komplex számok között, amelyek nem feltétlenülkülönbözok. Legyenek ezek a gyökök a következok:
r1 valós, p1-szeres (p1 ≥ 1) ,r2 valós, p2-szeres, (p2 ≥ 1) ,. . .rt valós, pt-szeres, (pt ≥ 1) ,s1 = a1(cos b1 + i sin b1) komplex, q1-szeres (q1 ≥ 1) ,s2 = a2(cos b2 + i sin b2) komplex, q2-szeres (q2 ≥ 1) ,. . .sm = am(cos bm + i sin bm) komplex, qm-szeres (qm ≥ 1) .
Mivel összesen k gyök van, p1 + p2 + · · · + pt + 2(q1 + q2 + · · · + qm) = k.Ekkor az (1.2) rekurzív egyenlet általános megoldása
xn =
t∑
j=1
(C( j)
0 + C( j)1 n + · · · + C( j)
p j−1np j−1)rn
j
+
m∑
j=1
(D( j)
0 + D( j)1 n + · · · + D( j)
q j−1nq j−1)an
j cos b jn
+
m∑
j=1
(E( j)
0 + E( j)1 n + · · · + E( j)
q j−1nq j−1)an
j sin b jn , (1.7)
aholC( j)
0 , C( j)1 , . . . , C( j)
p j−1, j = 1, 2, . . . , t ,
18 1. Rekurzív egyenletek (Kása Zoltán)
D(l)0 , E(l)
0 , D(l)1 , E(l)
1 , . . . , D(l)pl−1, E(l)
pl−1, l = 1, 2, . . . ,m állandók, melyek a kezdetifeltételekbol meghatározhatók.
Az eddigiek a következo tételben foglalhatók össze.
1.2. tétel. Legyen k ≥ 1 egész, a0, a1, . . . , ak valós számok, a0, ak , 0. Az (1.2) lineárisrekurzív egyenlet általános megoldása eloállítható az (1.3) karakterisztikus egyenlet ri gyö-keibol képezett n jrn
i alakú tagok lineáris kombinációjaként, ahol a pi-szeres ri gyök esetében0 ≤ j < p és a lineáris kombináció együtthatói a kezdeti feltételektol függnek.
A tétel bizonyítását az Olvasóra hagyjuk (lásd 1.1-5. gyakorlat).A megoldás lépéseit a következoképpen foglalhatjuk össze. Feltesszük, hogy az egyen-
let együtthatóit az A tömb, a megoldás állandóit pedig a C tömb tartalmazza.H-
1 írjuk fel a rekurzív egyenlet karakterisztikus egyenletét2 keressük meg a karakterisztikus egyenlet összes gyökét, multiplicitásukkal együtt3 írjuk fel az (1.7) általános megoldást a gyökök alapján4 a kezdeti feltételekbol, ha léteznek, határozzuk meg az (1.7)-ben szereplo állandókat
1.1.2. Állandó együtthatós inhomogén lineáris rekurzív egyenletekAz állandó együtthatós inhomogén lineáris rekurzív egyenlet általános alakja
a0xn + a1xn+1 + · · · + ak xn+k = f (n) , (1.8)
ahol a0, a1, . . . , ak valós állandók, a0, ak , 0, k ≥ 1, és f (n) nem azonosan nulla.Az egyenlethez tartozó (1.2) homogén lineáris egyenletet az 1.2. tétel szerint meg tudjuk
oldani. Ha ismerjük az (1.8) egyenlet egy partikuláris megoldását, akkor az (1.8) egyenletáltalános megoldását is elo tudjuk állítani.
1.3. tétel. Legyen k ≥ 1 egész, a0, a1, . . . , ak valós számok, a0, ak , 0. Ha x(1)n az (1.8)
lineáris inhomogén rekurzív egyenlet egy partikuláris megoldása és x(0)n az (1.8) egyenlethez
tartozó (1.2) homogén lineáris egyenlet általános megoldása, akkor
xn = x(0)n + x(1)
n
általános megoldása az (1.8) egyenletnek.
A tétel bizonyítását meghagyjuk az Olvasónak (lásd 1.1-6. gyakorlat).
1.6. példa. Oldjuk meg az
xn+2 + xn+1 − 2xn = 2n, x0 = 0, x1 = 1
rekurzív egyenletet. Eloször megoldjuk az
xn+2 + xn+1 − 2xn = 0
homogén egyenletet, amelynek általános megoldása
x(0)n = C1(−2)n + C2 ,
1.1. Lineáris rekurzív egyenletek 19
f (n) x(1)n
npan (C0 + C1n + · · · + Cpnp)an
annp sin bn (C0 + C1n + · · · + Cpnp)an sin bn + (D0 + D1n + · · · + Dpnp)an cos bn
annp cos bn (C0 + C1n + · · · + Cpnp)an sin bn + (D0 + D1n + · · · + Dpnp)an cos bn
1.1. ábra. A partikuláris megoldás alakja.
mivel a karakterisztikus egyenlet gyökei −2 és 1. Könnyen ellenorizhetjük, hogy x(1)n = 2n−2 megoldása
az eredeti, inhomogén egyenletnek. Az inhomogén egyenlet általános megoldása tehát
xn = C1(−2)n + C2 + 2n−2 .
A C1 és C2 állandókat meghatározhatjuk a kezdeti feltételekbol. Ennek alapján az általános megoldás
xn = −14 (−2)n + 2n−2 vagy xn =
2n − (−2)n
4 ,
azazxn =
0, ha n páros ,2n−1, ha n páratlan .
A partikuláris megoldás meghatározható a konstansok variálásának módszerével. Lé-teznek azonban olyan esetek, amikor a partikuláris megoldást könnyebben is megkaphatjuk.Az 1.1. ábrán olyan f (n) függvényeket adunk meg, amelyek esetében az x(1)
n partikulárismegoldás a táblázatban megadott alakban keresheto. Az állandókat az egyenletbe való be-helyettesítéssel kaphatjuk meg.
Elozo példánk esetében f (n) = 2n, tehát az elso esetet alkalmazzuk, amikor a = 2, p =
0, ezért a C02n-nel próbálkozunk. Behelyettesítés után azt kapjuk, hogy C0 = 1/4, tehát apartikuláris megoldás
x(1)n = 2n−2 .
Gyakorlatok1.1-1. Oldjuk meg az alábbi inhomogén lineáris rekurzív egyenletet:
Hn = 2Hn−1 + 1, ha n ≥ 1, és H0 = 0 .
(Hn itt a Hanoi-tornyai nevu feladat megoldásához szükséges és egyben elégséges lépé-sek számát jelenti.)1.1-2. Elemezzük a Hanoi-tornyaira vonatkozó feladatot abban az esetben, amikor úgy kelln korongot átrakni az A rúdról a C rúdra, hogy közben az A rúdról a C rúdra nem szabad
20 1. Rekurzív egyenletek (Kása Zoltán)
korongot átrakni.Útmutatás. Mutassuk meg, hogy ha az optimális algoritmus lépéseinek száma Mn és
n ≥ 1, akkor Mn = 3Mn−1 + 2.1.1-3. Oldjuk meg a következo rekurzív egyenletet:
(n + 1)Rn = 2(2n − 1)Rn−1, ha n ≥ 1, és R0 = 1.
1.1-4. Oldjuk meg alábbi inhomogén lineáris rekurzív egyenletet:
xn = 2n − 2 + 2xn−1, ha n ≥ 2, és x1 = 0.
Útmutatás. Keressük a partikuláris megoldást C1n2n + C2 alakban.1.1-5.? Bizonyítsuk be az 1.2. tételt.1.1-6.? Bizonyítsuk be az 1.3. tételt.
1.2. Generátorfüggvények és rekurzív egyenletekA generátorfüggvényeket, többek között, felhasználhatjuk rekurzív egyenletek megoldá-sára, bizonyos objektumok (például bináris fák) megszámolására, azonosságok bizonyítá-sára, partíciós problémák megoldására. Az objektumok megszámolása rekurzív egyenletekfelállításával és megoldásával történik. Ezek a rekurzív egyenletek általában nem lineárisak,megoldásukban segíthetnek a generátorfüggvények.
1.2.1. Értelmezés és m¶veletekEgy (an)n≥0 = 〈a0, a1, a2, . . . , an, . . .〉 végtelen számsorozathoz hozzárendelhetünk egy hat-ványsort a következoképpen:
A(z) = a0 + a1z + a2z2 + · · · + anzn + · · · =∑
n≥0anzn ,
amelyet az (an)n≥0 számsorozat generátorfüggvényének nevezünk.Például a Fibonacci-számok esetében a generátorfüggvény a következo:
F(z) =∑
n≥0Fnzn = z + z2 + 2z3 + 3z4 + 5z5 + 8z6 + 13z7 + · · · .
Ha mindkét oldalt megszorozzuk z-vel, majd z2-tel, a következoket kapjuk:
F(z) = F0 + F1z + F2z2 + F3z3 + · · · + Fnzn + · · · ,zF(z) = F0z + F1z2 + F2z3 + · · · + Fn−1zn + · · · ,
z2F(z) = F0z2 + F1z3 + · · · + Fn−2zn + · · · .
Ha kivonjuk tagonként az elso képletbol a másodikat, majd a harmadikat, és gyelembevesszük a Fibonacci-számokat deniáló képletet, a következot kapjuk:
F(z)(1 − z − z2) = z ,
1.2. Generátorfüggvények és rekurzív egyenletek 21
ahonnanF(z) =
z1 − z − z2 . (1.9)
A fenti számítások helyességét matematikailag igazolni lehet, de nem térünk ki erre. Agenerátorfüggvények segítségével, formális muveletek során kapott eredményeket a legtöbbesetben más módszerekkel is lehet igazolni.
Tekintsük azA(z) =
∑
n≥0anzn és B(z) =
∑
n≥0bnzn
generátorfüggvényeket.Az A(z) és B(z) generátorfüggvényeket akkor és csakis akkor mondjuk egyenlonek, ha
an = bn bármely n természetes számra.Ezután a következo, generátorfüggvényekkel végezheto muveleteket deniáljuk: össze-
adás és valós számmal való szorzás, eltolás, szorzás, deriválás, integrálás.
Összeadás és valós számmal való szorzás
αA(z) + βB(z) =∑
n≥0(αan + βbn)zn .
EltolásA
zkA(z) =∑
n≥0anzn+k =
∑
n≥kan−kzn
generátorfüggvény a < 0, 0, . . . , 0︸ ︷︷ ︸k
, a0, a1, . . . > számsorozatot jelképezi, míg az
1zk (A(z) − a0 − a1z − a2z2 − · · · − ak−1zk−1) =
∑
n≥kanzn−k =
∑
n≥0ak+nzn
generátorfüggvény az < ak, ak+1, ak+2, . . . > sorozatot.
1.7. példa. Legyen A(z) = 1 + z + z2 + · · · . Ekkor1z(A(z) − 1
)= A(z) és A(z) =
11 − z .
SzorzásHa A(z) és B(z) generátorfüggvények, akkor
A(z)B(z) = (a0 + a1z + · · · + anzn + · · · )(b0 + b1z + · · · + bnzn + · · · )= a0b0 + (a0b1 + a1b0)z + (a0b2 + a1b1 + a2b0)z2 + · · ·=
∑
n≥0snzn,
ahol sn =
n∑
k=0akbn−k.
22 1. Rekurzív egyenletek (Kása Zoltán)
Sajátos eset. Ha bn = 1 bármely n természetes számra, akkor
A(z) 11 − z =
∑
n≥0
n∑
k=0ak
zn . (1.10)
Ha még ezenkívül an = 1 is igaz bármely n természetes számra, akkor
1(1 − z)2 =
∑
n≥0(n + 1)zn . (1.11)
Deriválás
A′(z) = a1 + 2a2z + 3a3z2 + · · · =∑
n≥0(n + 1)an+1zn .
1.8. példa. AzA(z) =
∑
n≥0zn =
11 − z
generátorfüggvény mindkét oldalát deriválva azt kapjuk, hogy
A′(z) =∑
n≥1nzn−1 =
1(1 − z)2 .
Integrálás∫ z
0A(t)dt = a0z +
12a1z2 +
13a2z3 + · · · =
∑
n≥1
1nan−1zn .
1.9. példa. Legyen1
1 − z = 1 + z + z2 + z3 + · · ·Mindkét oldalát integrálva azt kapjuk, hogy
ln 11 − z = z +
12 z2 +
13 z3 + · · · =
∑
n≥1
1n zn .
Ha a két fenti generátorfüggvényt összeszorozzuk, akkor
11 − z ln 1
1 − z =∑
n≥1Hnzn ,
ahol Hn = 1 +12 +
13 + · · · + 1
n (H0 = 0, H1 = 1) az ún. harmonikus számok.
1.2. Generátorfüggvények és rekurzív egyenletek 23
Argumentum cseréjeLegyen A(z) =
∑n≥0 anzn, amely az < a0, a1, a2, . . . > sorozatot jelképezi, akkor A(cz) =∑
n≥0 cnanzn pedig az < a0, ca1, c2a2, . . . cnan, . . . > sorozatot. Igazak még a következok is:
12(A(z) + A(−z)
)= a0 + a2z2 + · · · + a2nz2n + · · · ,
12(A(z) − A(−z)
)= a1z + a3z3 + · · · + a2n−1z2n−1 + · · · .
1.10. példa. Legyen A(z) = 1 + z + z2 + z3 + · · · = 11 − z . Ekkor
1 + z2 + z4 + · · · = 12(A(z) + A(−z)) =
12
(1
1 − z +1
1 + z
)=
11 − z2 ,
amely megkapható úgyis, hogy z-t z2-tel helyettesítjük A(z)-ben.Hasonlóképpen, megkaphatjuk a páratlan kitevoju tagok összegét:
z + z3 + z5 + · · · = 12(A(z) − A(−z)) =
12
(1
1 − z −1
1 + z
)=
z1 − z2 .
A generátorfüggvények segítségével érdekes képleteket kaphatunk. Legyen példáulA(z) = 1/(1 − z) = 1 + z + z2 + z3 + · · · . Ekkor zA(z(1 + z)) = F(z), vagyis éppen aFibonacci-számok generátorfüggvénye. A fenti képletbol
zA(z(1 + z)) = z + z2(1 + z) + z3(1 + z)2 + z4(1 + z)3 + · · · .A zn+1 együtthatója a bal oldalon éppen Fn+1, vagyis az (n + 1)-edik Fibonacci-szám, míg azn+1 jobb oldali együtthatója, a binomiális képlet alkalmazása után minden tagban
∑
k≥0
(n − k
k
).
Innen
Fn+1 =∑
k≥0
(n − k
k
)=
b n+12 c∑
k=0
(n − k
k
). (1.12)
Emlékeztetünk, hogy a binomiális képlet általánosítható tetszoleges valós r-re is, vagyis
(1 + z)r =∑
n≥0
(rn
)zn ,
amely a binomiális együtthatók generátorfüggvénye. Itt(rn
)a kombináció általánosítása va-
lós r-re, vagyis
(rn
)=
r(r − 1)(r − 2) . . . (r − n + 1)n(n − 1) . . . 1 , ha n > 0 ,
1, ha n = 0 ,0, ha n < 0 .
24 1. Rekurzív egyenletek (Kása Zoltán)
A binomiális képlet fenti általánosításával (negatív r-re) egy, sok esetben hasznos képletetkapunk. Legyen
1(1 − z)m = (1 − z)−m =
∑
k≥0
(−mk
)(−z)k .
Mivel egyszeru számítással igazolható, hogy(−m
k
)= (−1)k
(m + k − 1
k
),
a következo képletet kapjuk:
1(1 − z)m+1 =
∑
k≥0
(m + k
k
)zk .
Ekkorzm
(1 − z)m+1 =∑
k≥0
(m + k
k
)zm+k =
∑
k≥0
(m + k
m
)zm+k =
∑
k≥0
(km
)zk .
Innen pedig ∑
k≥0
(km
)zk =
zm
(1 − z)m+1 , (1.13)
ahol m természetes szám.
1.2.2. Rekurzív egyenletek megoldása generátorfüggvényekkelHa a megoldandó rekurzív egyenlet olyan, hogy a megoldás generátorfüggvénye sorba fejt-heto úgy, hogy az együtthatók zárt alakban felírhatók, akkor ez a módszer eredményre vezet.Legyen adott a következo rekurzív egyenlet:
F(xn, xn−1, . . . , xn−k) = 0 . (1.14)
A megoldáshoz tekintsük azX(z) =
∑
n≥0xnzn
generátorfüggvényt. Ha (1.14) felírható G(X(z)) = 0 egyenletként, amelyet meg tudunkoldani X(z)-re, majd X(z)-t sorba lehet fejteni úgy, hogy xn zárt alakban felírható, akkor az(1.14) egyenletet sikerrel oldottuk meg.
A következokben általános módszert adunk az inhomogén lineáris egyenletek megol-dására. Ezután három nemlineáris feladatra mutatunk példát. Két esetben bináris fák vala-milyen halmazának az elemeit számoljuk meg, a harmadikban pedig a bináris fák leveleit.A három nemlineáris rekurzív egyenlet az (1.15), (1.17) és (1.18), amelyeket a generátor-függvények segítségével oldunk meg.
Állandó együtthatós inhomogén lineáris rekurzív egyenletSzorozzuk be zn-nel az (1.8) egyenlet mindkét oldalát. Ekkor
a0xnzn + a1xn+1zn + · · · + ak xn+kzn = f (n)zn .
1.2. Generátorfüggvények és rekurzív egyenletek 25
Összegezzük tagonként a fenti egyenlet mindkét oldalát:
a0∑
n≥0xnzn + a1
∑
n≥0xn+1zn + · · · + ak
∑
n≥0xn+kzn =
∑
n≥0f (n)zn .
Innen átalakításokkal kapjuk, hogy
a0∑
n≥0xnzn +
a1z
∑
n≥0xn+1zn+1 + · · · + ak
zk
∑
n≥0xn+kzn+k =
∑
n≥0f (n)zn .
LegyenX(z) =
∑
n≥0xnzn és F(z) =
∑
n≥0f (n)zn .
Ekkor az egyenletünk így alakul:
a0X(z) +a1z
(X(z) − x0
)+ · · · + ak
zk
(X(z) − x0 − x1z − · · · − xk−1zk−1
)= F(z) .
Ezt az egyenletet meg lehet oldani X(z)-ben. Az X(z) kifejezésében a jobb oldali racionálistörtet fel lehet bontani elemi (parciális) törtekre, majd azokat sorba fejtve meghatározhatjukaz eredeti egyenlet xn általános megoldását, gyelembe véve a kezdeti feltételeket.
1.11. példa. Oldjuk meg a fenti módszerrel a következo egyenletet:
xn+1 − 2xn = 2n+1 − 2, ha n ≥ 0 és x0 = 0 .
Beszorzás és összegezés után
1z∑
n≥0xn+1zn+1 − 2
∑
n≥0xnzn = 2
∑
n≥02nzn − 2
∑
n≥0zn ,
innen pedig1z(X(z) − x0
)− 2X(z) =
21 − 2z −
21 − z .
Mivel x0 = 0, az egyenlet megoldása a következo, miután a jobb oldalt elemi törtekre bontottuk:1
X(z) =2z
(1 − 2z)2 −2
1 − z −2
1 − 2z .
Az 11 − 2z =
∑
n≥02nzn
generátorfüggvény tagonkénti deriválásával a következot kapjuk:
2(1 − 2z)2 =
∑
n≥1n2nzn−1 .
EzértX(z) =
∑
n≥0n2nzn + 2
∑
n≥0zn − 2
∑
n≥02nzn =
∑
n≥0
((n − 2)2n + 2
)zn ,
1Az elemi törtekre való bontást a határozatlan együtthatók módszerével végeztük.
26 1. Rekurzív egyenletek (Kása Zoltán)
1.2. ábra. Két- és háromcsúcsú bináris fák.
ahonnanxn = (n − 2)2n + 2 .
Bináris fák számaJelöljük bn-nel az n csúcsú bináris fák számát. Ekkor b1 = 1, b2 = 2, b3 = 5 (lásd az 1.2.ábrát). Legyen b0 = 1. (Késobb látni fogjuk, hogy ez jó választás.)
Ha rögzítjük egy n csúcsú bináris fa gyökerét, akkor még n − 1 csúcs marad a bal ésjobb részfában összesen. Ha k csúcs van a bal oldali, n− 1− k pedig a jobb oldali részfában,akkor összesen bkbn−1−k ilyen bináris fa létezik. Összegezve k = 0, 1, . . . , n − 1 értékekre,pontosan bn-t kapjuk. Tehát tetszoleges n ≥ 1 természetes számra a bn-ben megoldandórekurzív egyenlet a következo:
bn = b0bn−1 + b1bn−2 + · · · + bn−1b0 . (1.15)
Ez még így is írható:
bn =
n−1∑
k=0bkbn−1−k .
A fenti rekurzív egyenlet mindkét oldalát zn-nel szorozva, majd n szerint összegezve, akövetkezot kapjuk:
∑
n≥1bnzn =
∑
n≥1
n−1∑
k=0bkbn−1−k
zn . (1.16)
Legyen B(z) =∑
n≥0bnzn a bn számok generátorfüggvénye. Az (1.15) összefüggés bal ol-
dala éppen B(z) − 1 (mivel b0 = 1). A jobb oldal nagyon hasonlít két generátorfüggvényszorzatához. Hogy észrevegyük, melyik két függvényrol van szó, használjuk a következojelölést:
A(z) = zB(z) =∑
n≥0bnzn+1 =
∑
n≥1bn−1zn .
1.2. Generátorfüggvények és rekurzív egyenletek 27
Ekkor az (1.16) jobb oldala éppen A(z)B(z), ami egyenlo zB2(z)-vel. Innen
B(z) − 1 = zB2(z), B(0) = 1 .
Oldjuk meg ezt az egyenletet B(z)-re. Ekkor
B(z) =1 ± √1 − 4z
2z .
Mivel B(0) = 1, csak a negatív jel megfelelo. Tehát
B(z) =12z
(1 − √1 − 4z
)=
12z
(1 − (1 − 4z)1/2
)
=12z
1 −∑
n≥0
(1/2n
)(−4z)n
=12z
1 −∑
n≥0
(1/2n
)(−1)n22nzn
=12z −
(1/20
)20z0
2z +
(1/21
)22z2z − · · · −
(1/2n
)(−1)n 22nzn
2z + · · ·
=
(1/21
)2 −
(1/22
)23z + · · · −
(1/2n
)(−1)n22n−1zn−1 + · · ·
=∑
n≥0
(1/2
n + 1
)(−1)n22n+1zn =
∑
n≥0
1n + 1
(2nn
)zn .
Innen bn =1
n + 1
(2nn
).
Megjegyzés. Az utolsó átalakításnál felhasználtuk a következo, könnyen bizonyíthatóösszefüggést: (
1/2n + 1
)=
(−1)n
22n+1(n + 1)
(2nn
).
Levelek száma n csúcsú bináris fák halmazábanSzámítsuk ki az n csúcsú bináris fák halmazában a levelek (azaz elso fokú csúcsok) számát.Jelöljük ezt a számot fn-nel. Megjegyezzük, hogy a gyökeret akkor sem tekintjük levélnek,ha a fokszáma 1. Könnyu belátni, hogy f2 = 2, f3 = 6. Legyen f0 = 0 és f1 = 1 konvencióalapján.
Ahogy a bináris fák megszámolásánál, tekintsük most is az olyan n csúcsú bináris fákat,amelyeknek bal oldala k csúcsot, a jobb oldala pedig n−k−1 csúcsot tartalmaz. Bal oldalonbk ilyen részfa van, jobb oldalon pedig bn−1−k. Ha rögzítünk egy ilyen bal oldali részfát,akkor az összes jobb oldali részfát gyelembe véve, ott fn−1−k levél van. Könnyen beláthatótehát, hogy adott k-ra bn−1−k fk + bk fn−1−k levél van. Ekkor, összegzés után
fn =
n−1∑
k=0( fkbn−1−k + bk fn−1−k) .
Egyszeru számítással azt kapjuk, hogy
fn = 2( f0bn−1 + f1bn−2 + · · · + fn−1b0), n ≥ 2 . (1.17)
28 1. Rekurzív egyenletek (Kása Zoltán)
Ez a megoldandó rekurzív egyenlet, amelynek megoldása fn. Legyen
F(z) =∑
n≥0fnzn és B(z) =
∑
n≥0bnzn .
Az (1.17) összefüggés mindkét oldalát zn-nel szorozva, majd n szerint összeadva∑
n≥2fnzn = 2
∑
n≥2
n−1∑
k=0fkbn−1−k
zn .
De, mivel f0 = 0 és f1 = 1,F(z) − z = 2zF(z)B(z) .
InnenF(z) =
z1 − 2zB(z) ,
de mivelB(z) =
12z
(1 − √1 − 4z
),
következik, hogy
F(z) =z√
1 − 4z= z(1 − 4z)−1/2 = z
∑
n≥0
(−1/2n
)(−4z)n .
A számítások elvégzése után
F(z) =∑
n≥0
(2nn
)zn+1 =
∑
n≥1
(2n − 2n − 1
)zn ,
innen pedigfn =
(2n − 2n − 1
)vagy fn+1 =
(2nn
)= (n + 1)bn .
A kombináció általánosítása alapján f0 és f1 a konvenció alapján megadott értékekkel lesz-nek egyenlok.
n csúcsú, k level u bináris fák számaEgy kicsit nehezebb feladat: hány n csúcsú k levelu bináris fa létezik? Jelöljük ezek számátb(k)
n -val. Könnyu belátni, hogy b(k)n = 0, ha k > b(n + 1)/2c. Egyszeru okoskodással ki
lehet számítani a k = 1 esetet, vagyis b(1)n = 2n−1 tetszoleges n ≥ 1 természetes számra.
Legyen b(0)0 = 1 konvenció alapján. Akárcsak az elozo feladatoknál, itt is a bal és jobb
oldali részfákat vizsgáljuk meg. Ha a bal oldali részfában i csúcs és j levél van, akkor a jobboldaliban n − i − 1 csúcs és k − j levél van. A b( j)
i b(k− j)n−i−1 szorzat éppen ezeknek a fáknak a
száma. Összegezve k és j szerint, a következo rekurzív képletet kapjuk:
b(k)n = 2b(k)
n−1 +
n−2∑
i=1
k−1∑
j=1b( j)
i b(k− j)n−i−1 . (1.18)
Ennek a rekurzív egyenletnek a megoldására használjuk a következo generátorfüggvényt:
B(k)(z) =∑
n≥0b(k)
n zn, ahol k ≥ 1 .
1.2. Generátorfüggvények és rekurzív egyenletek 29
Az (1.18) egyenlet mindkét oldalát zn-nel megszorozva, majd összeadva az n = 0, 1,2, . . . értékekre, a következot kapjuk:
∑
n≥1b(k)
n zn = 2∑
n≥1b(k)
n−1zn +∑
n≥1
n−2∑
i=1
k−1∑
j=1b( j)
i b(k− j)n−i−1
zn .
Az összegezés sorrendjét felcserélve
∑
n≥1b(k)
n zn = 2∑
n≥1b(k)
n−1zn +
k−1∑
j=1
∑
n≥1
n−2∑
i=1b( j)
i b(k− j)n−i−1
zn .
Innen
B(k)(z) = 2zB(k)(z) + z
k−1∑
j=1B( j)(z)B(k− j)(z)
vagy
B(k)(z) =z
1 − 2z
k−1∑
j=1B( j)(z)B(k− j)(z)
. (1.19)
Lépésrol lépésre haladva, felírhatjuk a következoket.
B(2)(z) =z
1 − 2z(B(1)(z)
)2,
B(3)(z) =2z2
(1 − 2z)2
(B(1)(z)
)3,
B(4)(z) =5z3
(1 − 2z)3
(B(1)(z)
)4.
Az általános megoldást megpróbáljuk a következo alakban keresni:
B(k)(z) =ckzk−1
(1 − 2z)k−1
(B(1)(z)
)k,
ahol, amint láttuk, c2 = 1, c3 = 2, c4 = 5. Az (1.19) képletbe behelyettesítve, a ck számokraegy rekurzív összefüggést kapunk:
ck =
k−1∑
i=1cick−i .
Ezt szintén a generátorfüggvények segítségével oldjuk meg. Ha k = 2, akkor c2 = c1c1, ésinnen c1 = 1. Legyen c0 = 1. Ha C(z) =
∑n≥0 cnzn a cn számok generátorfüggvénye, akkor
gyelembe véve a generátorfüggvények szorzási képletét
C(z) − 1 − z = (C(z) − 1)2 vagy C2(z) − 3C(z) + z + 2 = 0 ,
amelyet C(z)-re nézve megoldunk, és a
C(z) =3 − √1 − 4z
2
30 1. Rekurzív egyenletek (Kása Zoltán)
képletet kapjuk, mivel C(0) = 1 miatt csak a negatív elojel jó. Sorba fejtés után
C(z) =32 −
12(1 − 4z)1/2 =
32 −
12
∑
n≥0
−12n − 1
(2nn
)zn
=32 +
∑
n≥0
12(2n − 1)
(2nn
)zn = 1 +
∑
n≥1
12(2n − 1)
(2nn
)zn .
Innencn =
12(2n − 1)
(2nn
), n ≥ 1 .
Mivel b(1)n = 2n−1, ha n ≥ 1, könnyen ellenorizheto, hogy B(1) = z/(1 − 2z). Tehát
B(k)(z) =1
2(2k − 1)
(2kk
)z2k−1
(1 − 2z)2k−1 .
Mivel azonban1
(1 − z)m =∑
n≥0
(n + m − 1
n
)zn ,
a következo eredményhez jutunk:
B(k)(z) =1
2(2k − 1)
(2kk
)∑
n≥0
(2k + n − 2
n
)2nz2k+n−1
=1
2(2k − 1)
(2kk
) ∑
n≥2k−1
(n − 1
n − 2k + 1
)2n−2k+1zn .
Innen pedig
b(k)n =
12k − 1
(2kk
)(n − 12k − 2
)2n−2k
vagy
b(k)n =
1n
(2kk
)(n
2k − 1
)2n−2k .
1.2.3. A Z-transzformáció módszereHa generátorfüggvényekkel oldunk meg egy inhomogén lineáris rekurzív egyenletet, ak-kor, amint láttuk, mindig egy racionális törtfüggvény sorba fejtése adja meg a megoldást. AZ-transzformáció módszerével ezt a sorba fejtést könnyebben elvégezhetjük. Legyen a raci-onális törtfüggvény P(z)/Q(z), ahol P(z) kisebb fokszámú, mint Q(z). Ha ismerjük a nevezogyökeit, a törtfüggvényt elemi (vagy parciális) törtfüggvények összegére bonthatjuk a hatá-rozatlan együtthatók módszerével. Nézzük meg eloször azt az esetet, amikor a nevezonekcsak egyszeres (azaz egymástól különbözo) gyökei vannak, és legyenek ezek α1, α2, . . . , αk.Ekkor felírhatjuk, hogy
P(z)Q(z) =
A1z − α1
+ · · · + Aiz − αi
+ · · · + Akz − αk
.
1.2. Generátorfüggvények és rekurzív egyenletek 31
Könnyen belátható, hogy
Ai = limz→αi
(z − αi)P(z)Q(z) , i = 1, 2, . . . , k .
MásfelolAi
z − αi=
Ai
−αi
(1 − 1
αiz) =
−Aiβi1 − βiz
,
ahol βi = 1/αi. Ha most ezt az elemi törtet sorba fejtjük, akkor a következot kapjuk:
−Aiβi1 − βiz
= −Aiβi(1 + βiz + · · · + βn
i zn + · · · ) .
Innen a zn együtthatója −Aiβn+1i , és jelöljük ezt Ci(n)-nel. Ekkor
Ci(n) = −Aiβn+1i = −βi lim
z→αi(z − αi)
P(z)Q(z) ,
vagyCi(n) = −βn+1
i limz→αi
(z − αi)P(z)Q(z) .
Ha most elvégezzük a z→ 1/z átalakítást, és gyelembe vesszük, hogy βi = 1/αi, akkor
Ci(n) = limz→βi
((z − βi)zn−1 p(z)
q(z)
),
aholp(z)q(z) =
P(1/z)Q(1/z) .
Ekkor az X(z) kifejtésében a zn együtthatója éppen
C1(n) + C2(n) + · · · + Ck(n) .
Könnyen belátható, hogy ha α gyöke a Q(z) polinomnak, akkor β = 1/α gyöke a q(z)polinomnak. Például, ha
P(z)Q(z) =
2zz
(1 − z)(1 − 2z) , akkor p(z)q(z) =
2(z − 1)(z − 2) .
Amennyiben egy gyök többszörös, például βi p-szeres, akkor a neki megfelelo részered-mény
Ci(n) =1
(p − 1)! limz→βi
dp−1
dzp−1
((z − βi)pzn−1 p(z)
q(z)
).
Itt dp
dzp f (z) az f (z) függvény p-edrendu deriváltját jelenti.Az eddigiek a következo algoritmusban összegezhetok. Feltesszük, hogy az egyenlet
együtthatóit a A, a megoldás állandóit pedig a C tömb tartalmazza.
32 1. Rekurzív egyenletek (Kása Zoltán)
L-(A, k, f )1 legyen az egyenlet a0xn + a1xn+1 + · · · + ak xn+k = f (n);
szorozzuk be az egyenlet mindkét oldalát zn-nel és összegezzünk n szerint2 hozzuk az egyenletet X(z) = P(z)/Q(z) alakra, ahol X(z) =
∑n≥0 xnzn,
P(z) és Q(z) pedig polinomok3 végezzük el a z→ 1/z átalakítást, legyen az eredmény
p(z)/q(z), ahol p(z) és q(z) polinomok4 legyenek q(z) gyökei:
β1 p1-szeres, p1 ≥ 1,β2 p2-szeres, p2 ≥ 1,. . .βk pk-szeres, pk ≥ 1;
ekkor az eredeti egyenlet általános megoldásaxn = C1(n) + C2(n) + · · · + Ck(n), aholCi(n) = 1/((pi − 1)!) limz→βi
dpi−1
dzpi−1
((z − βi)pi zn−1(p(z)/q(z))
), i = 1, 2, . . . , k.
5 return C
A módszer neve onnan ered, hogy ha egy generátorfüggvényben z helyébe 1/z-t helyet-tesítünk, akkor megkapjuk a Z-transzformáltját, amelyre hasonló muveletek léteznek, minta generátorfüggvényekre, és amelyre alkalmazva a reziduum-tételt, a fenti eredményhezjutunk.
1.12. példa. Oldjuk meg az
xn+1 − 2xn = 2n+1 − 2, ha n ≥ 0, x0 = 0
rekurzív egyenletet.
zn-nel beszorozva és összegezve∑
n≥0xn+1zn − 2
∑
n≥0xnzn =
∑
n≥02n+1zn −
∑
n≥02zn ,
azaz1z X(z) − 2X(z) =
21 − 2z −
21 − z , ahol X(z) =
∑
n≥0xnzn .
InnenX(z) =
2z2
(1 − z)(1 − 2z)2 .
A z→ 1/z helyettesítést elvégezve
p(z)q(z) =
2z(z − 1)(z − 2)2 ,
ahol a nevezo gyökei: 1 egyszeres, 2 kétszeres gyök. Ezért
C1 = limz→1
2zn
(z − 2)2 = 2 és
1.2. Generátorfüggvények és rekurzív egyenletek 33
C2 = limz→2
ddz
(2zn
z − 1
)= 2 lim
z→2
nzn−1(z − 1) − zn
(z − 1)2 = 2n(n − 2) .
Az általános megoldás tehátxn = 2n(n − 2) + 2, n ≥ 0 .
1.13. példa. Oldjuk meg az
xn+2 = 2xn+1 − 2xn, ha n ≥ 0, x0 = 1, x1 = 1
rekurzív egyenletet.
zn-nel beszorozva és összegezve
1z2
∑
n≥0xn+2zn+2 =
2z∑
n≥0xn+1zn+1 − 2
∑
n≥0xnzn ,
innen 1z2
(F(z) − z
)=
2z F(z) − 2F(z) ,
azazF(z)
(1z2 −
2z + 2
)= −1
z .
EkkorF(1/z) =
−zz2 − 2z + 2 .
A nevezo gyökei 1 + i és 1 − i. Kiszámítjuk C1(n)-t és C2(n)-t:
C1(n) = limz→1+i
−zn+1
z − (1 − i) =i(1 + i)n
2 és
C2(n) = limz→1−i
−zn+1
z − (1 + i) =−i(1 − i)n
2 .
Mivel1 + i =
√2(cos π4 + i sin π4
), 1 − i =
√2(cos π4 − i sin π4
),
hatványozás után
(1 + i)n =(√2)n
(cos nπ
4 + i sin nπ4
), (1 − i)n =
(√2)n(cos nπ
4 − i sin nπ4
),
xn = C1(n) + C2(n) =(√
2)n
sin nπ4 .
Gyakorlatok1.2-1. Számítsuk ki, hány olyan n csúcsú bináris fa van, amelynek sem a bal, sem pedig ajobb oldali részfája nem üres.1.2-2. Számítsuk ki, hány olyan n csúcsú bináris fa van, amelyben minden levéltol külön-bözo csúcsnak pontosan két gyereke van.1.2-3. Oldjuk meg generátorfüggvény segítségével az alábbi rekurzív egyenletet.
Hn = 2Hn−1 + 1, H0 = 0 .
34 1. Rekurzív egyenletek (Kása Zoltán)
(Hn itt a Hanoi-tornyai nevu feladat lépésszámát jelenti.)1.2-4. Oldjuk meg Z-transzformáció segítségével az alábbi rekurzív egyenletet:
Fn+2 = Fn+1 + Fn + 1, ha n ≥ 0, és F0 = 0, F1 = 1 .
1.2-5. Oldjuk meg a következo egyenletrendszert:
un = vn−1 + un−2 ,
vn = un + un−1 ,
ahol u0 = 1, u1 = 2, v0 = 1.
1.3. Numerikus megoldásLeírunk egy függvényeljárást, amellyel lineáris rekurzív egyenleteket oldhatunk meg nume-rikusan. Az egyenletet a szokásos módon, a következo formában adjuk meg:
a0xn + a1xn+1 + · · · + ak xn+k = f (n) .
Az a0, a1, . . . , ak együtthatókat az A, míg az x0, x1, . . . , xk−1 kezdoértékeket az X vektortartalmazza. Hogy kiszámítsuk xn értékét, sorra kiszámítjuk az xk, xk+1, . . . , xn értékeket,minden alkalommal az X vektor elso k elemében (azaz a 0, 1, . . . , k − 1 indexu elemekben)orizve meg a sorozat elozo k értékét.
R(A, X, k, n, f )1 for j← k to n2 do v← A[0] · X[0]3 for i← 1 to k − 14 do v← v + A[i] · X[i]5 v← ( f ( j − k) − v)/A[k]6 if j , n7 then for i← 0 to k − 28 do X[i]← X[i + 1]9 X[k − 1]← v
10 return v
A 25. sorokban kiszámítjuk a következo x j ( j = k, k+1, . . . , n) értékét (az elozo k értékfelhasználásával), ezt az értéket az algoritmusban v jelöli. A 79. sorokban, amennyibenmég nem értük el az n-et, átmásoljuk az utolsó k értéket az X vektor elso k elemébe. A 10.sor visszaadja az xn értékét. Könnyen belátható, hogy az algoritmus futási ideje Θ(kn).
Gyakorlatok1.3-1. Hány összeadást, kivonást, szorzást, osztást és értékadást végez a R algorit-mus, ha az 1.4. példában szereplo adatokkal kiszámítja x1000 értékét?
1. fejezet feladatai 35
Feladatok
1-1. Homogén egyenlet megoldhatósága generátorfüggvénnyelBizonyítsuk be, hogy tetszoleges homogén lineáris rekurzív egyenlet generátorfüggvénnyelvaló megoldáskor csak akkor fordulhat elo olyan eset, hogy nem tudjuk alkalmazni a meg-adott módszert, mivel az X(z) = 0 egyenlethez jutunk, ha az egyenlet megoldása xn = 0minden n-re.1-2. Komplex gyökök Z-transzformáláskorVizsgáljuk meg, mi történik, ha a Z-transzformáció módszere alkalmazásakor a nevezogyökei komplex számok. A rekurzív egyenlet megoldásának mindig valósnak kell lennie.Biztosítja-e ezt a módszer?
Megjegyzések a fejezethezElaydi [4], Flajolet és Sedgewick [18], Greene és Knuth [7], valamint Mickens [16] könyverészletesen tárgyalja a rekurzív egyenletek megoldását.
Vannak a generátorfüggvényekkel foglalkozó, magyar nyelvu könyvek is példáulKnuth [10], valamint Graham, Knuth és Patashnik [6]. Vilenkin muve [19] egyszeru módontárgyal sok-sok feladatot a könyv utolsó két fejezete rekurzív egyenletekkel és generátor-függvényekkel foglalkozik.
Lovász [14] kombinatorikai problémákat és feladatokat tartalmazó könyvében is van-nak generátorfüggvényekre vonatkozó feladatok.
A bináris fák megszámolása Knuth [10] könyvébol, a levelek megszámolása a binárisfák halmazában, valamint az n csúcsú k levelu bináris fák megszámolása Kása Zoltán [9]könyvébol valók.
Irodalomjegyzék
[1] A. V. Aho, J. E. Hopcroft, J. D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley,1974 (magyarul: Számítógép-algoritmusok tervezése és analízise. Muszaki Könyvkiadó, 1982. 5
[2] T. H. Cormen, C. E. Leiserson, R. L. Rivest. Introduction to Algorithms. The MIT Press/McGraw-Hill, 1990(Magyarul: Algoritmusok. Muszaki Kiadó, 2003, negyedik kiadás). 5
[3] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduction to Algorithms. The MIT Press/McGraw-Hill, 2004 (Második kiadás ötödik, javított utánnyomása. Magyarul: Új algoritmusok. Scolar Kiadó, 2003).5
[4] S. N. Elaydi. An Introduction to Difference Equations. Springer-Verlag, 1999 (2. kiadás). 35[5] M. R. Garey, D. S. Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. W.
H. Freeman, 1979. 6[6] R. L. Graham, D. E. Knuth, O. Patashnik. Concrete Mathematics. Addison-Wesley, 1994 (2. kiadás. Magya-
rul: Konkrét matematika, Muszaki Könyvkiadó, 1998). 35[7] D. H. Greene, D. E. Knuth. Mathematics for the Analysis of Algorithms. Birkhäuser, 3. kiadás, 1990. 35[8] A. Iványi. Párhuzamos algoritmusok (Parallel Algorithms). ELTE Eötvös Kiadó, 2003. 5[9] Z. Kása. Combinatorica cu aplicatii (Combinatorics with Applications). Presa Universitara Clujeana, 2003.
35[10] D. E. Knuth. Fundamental Algorithms, The Art of Computer Programming 1. kötete. Addison-Wesley, 1968
(3., javított kiadás 1997. Magyarul: A számítógép-programozás muvészete. 1. kötet. Alapveto algoritmusok,Muszaki Könyvkiadó, 1993, 2. kiadás.). 5, 35
[11] D. E. Knuth. Seminumerical Algorithms, The Art of Computer Programming 2. kötete. Addison-Wesley,1969 (3. javított kiadás 1998. Magyarul: A számítógép-programozás muvészete. 2. kötet. Szeminumerikusalgoritmusok, Muszaki Könyvkiadó, 1993, 2. kiadás.). 5
[12] D. E. Knuth. Sorting and Searching, The Art of Computer Programming 3. kötete. Addison-Wesley, 1973 (3.,javított kiadás 1997. Magyarul: A számítógép-programozás muvészete. 3. kötet. Keresés és rendezés, MuszakiKönyvkiadó, 1994, 2. kiadás.). 5
[13] L. Lovász, P. Gács. Algoritmusok (Algorithms). Muszaki Könyvkiadó és Tankönyvkiadó, 1978 és 1987. 5[14] L. Lovász. Combinatorial Problems and Exercises. Akadémiai Kiadó, 1979 (Magyarul: Kombinatorikai
problémák és feladatok, Typotex, 1999). 35
[15] N. A. Lynch. Distributed Algorithms. Morgan Kaufman Publisher, 2001 (Ötödik kiadás. Magyarul: Osztottalgoritmusok. Kiskapu Kiadó, 2002). 5
[16] R. E. Mickens. Difference Equations. Theory and Applications. Van Nostrand Reinhold, 1990. 35[17] L. Rónyai, G. Ivanyos, R. Szabó. Algoritmusok (Algorithms). Typotex, 1999. 5[18] R. Sedgewick, P. Flajolet. An Introduction to the Analysis of Algorithms. Addison-Wesley, 1996. 35[19] N. J. Vilenkin. Kombinatorika (oroszul). Mir, 1969 (Angolul: Combinatorial Mathematics, Mir, 1972; ma-
gyarul: Kombinatorika, Muszaki Könyvkiadó, 1987, 2. kiadás). 35
Tárgymutató
A, Ááltalános megoldás, 12
Bbináris fák
megszámolása, 26binomiális képlet általánosítása, 24
FFibonacci-számok, 20fundamentális megoldás, 13
Ggenerátorfüggvény, 20
bináris fák megszámolása, 26muveletek, 21
HHanoi-tornyai, 19gyharmonikus számok, 22H-, 18
Kkarakterisztikus egyenlet, 13kezdeti feltétel, 12konstansok variálásának módszere, 19
LL-, 32
O, ÓOktatási Minisztérium, 4
Ppartikuláris megoldás, 12
RR, 34rekurzív egyenlet, 12
állandó együtthatós lineáris, 13homogén lineáris, 13, 18inhomogén lineáris, 18, 30, 31lineáris, 13, 18, 24, 30megoldása generátorfüggvénnyel, 24
rekurzív egyenletek, 11reziduum-tétel, 32
SZSzakkönyv- és Tankönyvtámogatási Pályázat, 4
ZZ-transzformáció, 30
Névmutató
A, ÁAho, Alfred V., 36
BBalogh Ádám, 4Belényesi Viktor, 4Biró Gabriella, 4
CClaudia Leopold, 4Cormen, Thomas H., 36
CSCsirik János, 4
DDemetrovics János, 4
E, ÉEberhard Zehendner, 4Elaydi, Saber N., 35, 36Elek István, 4
FFibonacci, Leonardo Pisano (11701250), 12, 14,
20, 23Flajolet, Philippe, 35, 36Fridli Sándor, 4
GGalántai Aurél, 4Garey, Michael R., 6, 36Gonda János, 4Graham, Ronald Lewis, 35, 36Greene, Daniel H., 35, 36
GYGyires Tibor, 4
I, Í
Ingo Althöfer, 4Iványi Anna, 4Iványi Antal, 4, 36Ivanyos Gábor, 36
JJárai Antal, 4Jeney András, 4Johnson, David S., 6Jörg Rothe, 4
KKása Zoltán, 4, 35, 36Katsányi István, 4Kiss Attila, 4Knuth, Donald Erwin, 35, 36Kovács Attila, 4Kozma László, 4
LLáng Zsuzsa, 4Laskatos László, 4Leiserson, Charles E., 36Locher Kornél, 4Lovász László, 35, 36Lynch, Nancy Ann, 36
MMayer János, 4Meskó Attila, 4Mickens, Ronald Elbert, 35, 36Miklós István, 4
NNikovits Tibor, 4
PPatashnik, Oren, 35, 36Pintér Miklós, 4
RRecski András, 4Rivest, Ronald Lewis, 36
Névmutató 39
Rónyai Lajos, 4, 36Roszik János, 4
SSali Attila, 4Sedgewick, Robert, 35, 36Sidló Csaba, 4Sike Sándor, 4Sima Dezso, 4Stefan Schwartz, 4Stein, Clifford, 36
SZSzabó Réka, 36
Szakács Laura, 4Szántai Tamás, 4Szidarovszky Ferenc, 4Szirmay-Kalos László, 4Sztrik János, 4
U, ÚUlrich Tamm, 4
VVarga László, 4Vida János, 4Vilenkin, Naum Jakovlevics (19201992), 35, 36Vizvári Béla, 4
Megoldások
1.1-1. megoldása. A homogénHn − 2Hn−1 = 0
egyenlet karakterisztikus egyenleter − 2 = 0 ,
ezért általános megoldása az 1.2. tétel szerint H(0)n = C12n. Az inhomogén egyenlet szabad
tagja 1, ezért a partikuláris megoldás C2 alakú. Ezt az inhomogén egyenletbe helyettesítveC2 = −1 adódik, tehát H(1)
n = −1.Az általános megoldás ezért Hn = C12n − 1 alakú. Mivel H0 = 0, C1 = 1 következik, innenpedig Hn = 2n − 1.1.1-2. megoldása. Egy korongot csak a B rúd segítségével tudunk a helyére rakni, ezértM1 ≥ 2. Mivel a korongot két lépésben a helyére tudjuk tenni, ezért M1 = 2.
Ha n + 1 korongunk van, akkor a legnagyobbhoz csak úgy férünk hozzá, hogy elozolegMn lépésben a többi korongot átraktuk a C rúdra. Most egy lépés kell a legnagyobb korong-nak a B rúdra rakásához, újabb Mn lépés a többi korongnak C-rol A-ra való átrakásához.Ezután még legalább egy lépés kell a legnagyobb korong, és Mn lépés a többi korong C-revaló átrakásához. Így azt kapjuk, hogy Mn+1 = 3Mn + 2, ha n ≥ 1.
A megfelelo karakterisztikus egyenlet alakja r − 3 = 0, tehát a homogén egyenlet ál-talános megoldása M(0)
n = C13n−1. Mivel az inhomogén egyenlet szabad tagja 2, ezért azinhomogén egyenlet egy partikuláris megoldása az 1.1. ábra szerint M(1)
n = C2. Behe-lyettesítéssel azt kapjuk, hogy C2 = −1, tehát az inhomogén egyenlet általános megoldásaMn = C13n−1 − 1. Az M1 = 2 kezdeti feltétel alapján a feladat megoldása Mn = 3n−1 − 1.1.1-3. megoldása. Az egyenlet nem állandó együtthatós, tehát nem alkalmazhatjuk a mód-szerünket. De ha felírjuk
Cn =2(2n − 1)
n + 1 Cn−1
alakban, majd behelyettesítjük Cn−1-et és így tovább, azt kapjuk, hogy
Cn =2n(2n − 1)(2n − 3) . . . 1
(n + 1)n . . . 2 =2n(2n)!
2n(n + 1)!n! =1
n + 1
(2nn
).
1.1-4. megoldása. A homogén egyenlet általános megoldása x(0)n = C12n. Keressük az in-
homogén egyenlet partikuláris megoldását x(1)n = C2n2n + C3 alakban. Behelyettesítve azt
kapjuk, hogy 2 − C3 = (1 − C2)2n, amely minden n-re igaz, ha x(1)n = C2n2n + C3 gyök.
Megoldások 41
Tehát C2 = 1 és C3 = 2. Így az általános megoldás xn = C12n + n2n + 2, de mivel x1 = 0, amegoldás xn = (n − 2)2n + 2.1.2-1. megoldása. Legyen ez a szám an. Ekkor a0 = 1, a1 = 1, a2 = 0 és
an = b1bn−2 + b2bn−3 + · · · + bn−2b1
ahol bk a k csúcsú bináris fák számát jelenti.Innen
A(z) − 1 − z = z(B(z) − 1)2,
ahonnanan =
2(n − 2)n(n + 1)
(2n − 2n − 1
).
De megkaphatjuk egyszerubben is: an = bn − 2bn−1, hiszen ha hiányzik egy fából a baloldali részfa, akkor a gyökeret elhagyva egy n − 1 pontú bináris fát kapunk. Mivel minda bal, mind a jobb részfa hiányozhat, kétszer kell levonni ezek számát az összes bináris faszámából.1.2-2. megoldása. Legyen ez a szám cn és C(z) a megfelelo generátorfüggvény. Ekkor
cn = c1cn−2 + c2cn−3 + · · · + cn−2c1 .
InnenC(z) − 1 − z = z
(C(z) − 1
)2,
ahonnanC(z) =
1 + 2z − √1 − 4z2
2z .
Ezt sorba fejtve azt kapjuk, hogy
C(z) = 1 +∑
n≥0
1n + 1
(2nn
)z2n+1,
ahonnanc2n = 0, ha n ≥ 1
c2n+1 =1
n + 1
(2nn
), ha n ≥ 0 .
1.2-3. megoldása. Legyen H(z) =∑
n≥0 Hnzn. Beszorozzuk zn-nel az egyenlet mindkét ol-dalát, és összegezzük 1-tol.
∑
n≥1Hnzn = 2
∑
n≥1Hn−1zn +
∑
n≥1zn .
InnenH(z) = 2zH(z) +
(1
1 − z − 1).
AhonnanH(z) =
11 − 2z −
11 − z =
∑
n≥02nzn −
∑
n≥0zn .
42 Megoldások
Innen pedigHn = 2n − 1 .
1.2-4. megoldása. Beszorozzuk zn-nel az egyenlet mindkét oldalát, majd összegezzük.
1z2
∑
n≥0Fn+2zn+2 =
1z∑
n≥0Fn+1zn+1 +
∑
n≥0Fnzn +
∑
n≥0zn .
Ha ∑n≥0 Fnzn = F(z), akkor
1z2
(F(z) − z
)=
1z F(z) + F(z) +
11 − z .
Innen behelyettesítés és számítások után
F(1/z) =z2
(z − 1)(z2 − z − 1) =z2
(z − 1)(z − α)(z − β) ,
aholα =
1 +√
52 , β =
1 − √52 .
EkkorC1(n) = lim
z→1
zn+1
(z − α)(z − β) =1−1 = −1,
C2(n) = limz→α
zn+1
(z − 1)(z − β) =αn+1
(α − 1)(α − β) ,
C3(n) = limz→β
zn+1
(z − 1)(z − α) =βn+1
(β − 1)(β − α) .
A számítások elvégzése után
Fn = C1(n) + C2(n) + C3(n) = −1 +
1 +√
52
n 5 + 3
√5
10 +
1 − √52
n 5 − 3
√5
10 .
1.2-5. megoldása. Legyen U(z) =∑
n≥0 unzn és V(z) =∑
n≥0 vnzn. Mindkét egyenletet zn-nelszorozva, majd összegezve, a következoket kapjuk:
(1 − z2)U(z) − zV(z) = 1 + z ,
V(z) = (1 + z)U(z).Innen
U(z) =1
1 − 2z ,
V(z) = (1 + z)U(z) =1 = z1 − 2z = −1
2 +32 ·
11 − 2z .
Az elsobol un = 2n adódik. A másodikból sorba fejtés után azt kapjuk, hogy v0 = 1 ésvn = 3 · 2n−1, ha n ≥ 1.1.3-1. megoldása. Ha csak az algoritmusban ténylegesen jelen levo muveleteket vesszük
Megoldások 43
gyelembe (tehát eltekintünk a ciklusváltozó és a függvényérték kiszámításától), akkor amuveletek száma a következo:+ (n − k + 1)(k − 1)− n − k + 1∗ (n − k + 1)k/ n − k + 1← (2n − 2k + 1)kEsetünkben n = 1000, k = 4, ezért 2991 összeadást, 997 kivonást, 3988 szorzást, 997osztást és 7972 értékadást kapunk eredményül.
1-1. megoldása. Az (1.2) egyenletbol, az 1.2.2. pontban alkalmazott eljárással eljutunk akövetkezohöz:
a0X(z) +a1z
(X(z) − x0
)+ · · · + ak
zk
(X(z) − x0 − x1z − · · · − xk−1zk−1
)= 0 .
Majd átrendezés után azt kapjuk, hogy
X(z)(a0 +
a1z + · · · + ak
zk
)=
a1z x0 + · · · + ak
zk(x0 + x1z + · · · + xk−1zk−1) .
Erre csak akkor nem alkalmazható a módszer, ha a jobb oldal azonosan nulla. A jobb oldaltzk-nal szorozva, majd átalakítva, a következot kapjuk:
zk−1(a1x0 + a2x1 + · · · + ak xk−1) + zk−2(a2x0 + a3x1 + · · · + ak xk−3)
+ · · · + z2(ak−2x0 + ak−1x1 + ak x2) + z(ak−1x0 + ak x1) + ak x0 .
Az ak sohasem lehet egyenlo nullával. Ezért a kifejezés csak akkor lehet azonosan nulla, hax0 = 0, x1 = 0, . . . , xk−1 = 0, ebbol pedig azonnal következik, hogy ekkor xn = 0 mindenn-re.
1-2. megoldása. Az egyenlet megoldását ugyanúgy végezzük, mint a valós számok eseté-ben. Az a kérdés, hogy a megoldás valós lesz-e vagy komplex. Mivel a komplex gyökökmindig párosával jelennek meg (egy komplex szám és a konjugáltja), a Ci-k is párosávalfognak megjelenni, mindegyik komplex számnak meglesz a konjugált párja, ezért összeg-zéskor a tisztán képzetes részek kiesnek, tehát az eredmény mindig valós lesz.
Tartalomjegyzék
Tartalomjegyzék . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Eloszó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
I. ALAPOK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111. Rekurzív egyenletek (Kása Zoltán) . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1. Lineáris rekurzív egyenletek . . . . . . . . . . . . . . . . . . . . . . . . . 131.1.1. Állandó együtthatós homogén lineáris rekurzív egyenletek . . . . . 131.1.2. Állandó együtthatós inhomogén lineáris rekurzív egyenletek . . . . 18
1.2. Generátorfüggvények és rekurzív egyenletek . . . . . . . . . . . . . . . . . 201.2.1. Értelmezés és muveletek . . . . . . . . . . . . . . . . . . . . . . . 201.2.2. Rekurzív egyenletek megoldása generátorfüggvényekkel . . . . . . 24
Állandó együtthatós inhomogén lineáris rekurzív egyenlet . . . . . 24Bináris fák száma . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Levelek száma n csúcsú bináris fák halmazában . . . . . . . . . . . 27n csúcsú, k levelu bináris fák száma . . . . . . . . . . . . . . . . . 28
1.2.3. A Z-transzformáció módszere . . . . . . . . . . . . . . . . . . . . 301.3. Numerikus megoldás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Irodalomjegyzék . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Tárgymutató . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Névmutató . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Megoldások . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40