44

INFORMATIKAI Elektronikus tankönyv - ELTE

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INFORMATIKAI Elektronikus tankönyv - ELTE
Page 2: INFORMATIKAI Elektronikus tankönyv - ELTE

INFORMATIKAIALGORITMUSOK I.

Elektronikus tankönyv

ELTE Informatikai Kar, Budapest, 2005

Page 3: INFORMATIKAI Elektronikus tankönyv - ELTE

Iványi Antal

alkotó szerkeszt®

INFORMATIKAI

ALGORITMUSOK I.

ELTE Informatikai Kar, Budapest, 2005

Page 4: INFORMATIKAI Elektronikus tankönyv - ELTE

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ó

Page 5: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 6: INFORMATIKAI Elektronikus tankönyv - ELTE

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,

Page 7: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 8: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 9: INFORMATIKAI Elektronikus tankönyv - ELTE
Page 10: INFORMATIKAI Elektronikus tankönyv - ELTE

I. ALAPOK

Page 11: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 12: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 13: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 14: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 15: INFORMATIKAI Elektronikus tankönyv - ELTE

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 .

Page 16: INFORMATIKAI Elektronikus tankönyv - ELTE

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 .

Page 17: INFORMATIKAI Elektronikus tankönyv - ELTE

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 ,

Page 18: INFORMATIKAI Elektronikus tankönyv - ELTE

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 ,

Page 19: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 20: INFORMATIKAI Elektronikus tankönyv - ELTE

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 ,

Page 21: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 22: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 23: INFORMATIKAI Elektronikus tankönyv - ELTE

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 .

Page 24: INFORMATIKAI Elektronikus tankönyv - ELTE

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 .

Page 25: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 26: INFORMATIKAI Elektronikus tankönyv - ELTE

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 .

Page 27: INFORMATIKAI Elektronikus tankönyv - ELTE

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)

Page 28: INFORMATIKAI Elektronikus tankönyv - ELTE

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 .

Page 29: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 30: INFORMATIKAI Elektronikus tankönyv - ELTE

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

.

Page 31: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 32: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 33: INFORMATIKAI Elektronikus tankönyv - ELTE

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 .

Page 34: INFORMATIKAI Elektronikus tankönyv - ELTE

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?

Page 35: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 36: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 37: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 38: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 39: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 40: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 41: INFORMATIKAI Elektronikus tankönyv - ELTE

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 .

Page 42: INFORMATIKAI Elektronikus tankönyv - ELTE

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

Page 43: INFORMATIKAI Elektronikus tankönyv - ELTE

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.

Page 44: INFORMATIKAI Elektronikus tankönyv - ELTE

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