informatikai algoritmusok i. -...

816

Upload: others

Post on 05-Oct-2019

13 views

Category:

Documents


1 download

TRANSCRIPT

  • INFORMATIKAIALGORITMUSOK I.

  • Iványi Antal

    alkotó szerkeszt®

    INFORMATIKAI

    ALGORITMUSOK I.

    ELTE Eötvös Kiadó, Budapest, 2004

  • A könyv az Oktatási Minisztérium támogatásával, aFels�ooktatási Pályázatok Irodája által lebonyolított

    fels�ooktatási tankönyvtámogatási program keretébenjelent meg.

    Alkotó szerkeszt�o: Iványi AntalSzerz�ok: 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.),

    Szidarovszky Ferenc (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: Fekete István (1.), Rónyai Lajos (2.), Gonda János (3.), Ivanyos Gábor (4.),T�oke Pál (5.), Sima Dezs�o (6. és 7.), Mayer János (8.), Csirik János (9.), Fridli Sándor (10.),

    Varga László (11.), Kiss Attila (12.), Hunyadvári László és 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épm�uvészeti Múzeum engedélyével és az ELTE Informatikai Karánaktámogatásával Vasarely Victor Dirac cím�u 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, Fekete István, Fridli Sándor, Galántai Aurél, Gonda János, Gyires Tibor, Hunyadvári

    László, Iványi Anna, Iványi Antal, Ivanyos Gábor, Járai Antal, Jeney András, Katsányi István, KásaZoltán, Kovács Attila, Láng Zsuzsa, Claudia Leopold, Locher Kornél, Lukács András, Mayer János,Meskó Attila, Miklós István, Nikovits Tibor, Pintér Miklós, Roszik János, Rónyai Lajos, Jörg Rothe,Sali Attila, Stefan Schwarz, Sidló Csaba, Sima Dezs�o, Sike Sándor, Szakács Laura, Szántai Tamás,Szidarovszky Ferenc, Szirmay-Kalos László, Sztrik János, Ulrich Tamm, T�oke Pál, Varga László,

    Vida János, Vizvári Béla, Eberhard Zehendner, 2004c© Hungarian printed edition ELTE Eötvös Kiadó, 2004

    ISBN: 963 463 664 0Kiadja az ELTE Eötvös Kiadó1051 Budapest, Szerb utca 21.

    Telefon: 411-6740, Fax: 485-52-26

    Honlap: http://www.elte.hu/szervezet/eotvos_kiado.htmlElektronikus cím: [email protected]

    Felel�os kiadó: Pándi András

    Nyomás és kötés: Debreceni Kinizsi NyomdaFelel�os vezet�o: Börd�os János

    http://www.minet.uni-jena.de/www/fakultaet/iam/l_althoefer.html�mailto:[email protected]�http://people.inf.elte.hu/bvic/�http://www.karinthy.hu/~SAMU/samu.htm�http://www.inf.u-szeged.hu/~csirik/�http://www.sztaki.hu/sztaki/afe/infodep/demetrovics.jhtml�http://lazarus.elte.hu/hun/dolgozo/elek.htm�http://people.inf.elte.hu/tony/�http://numanal.inf.elte.hu/~fridli/main.html�mailto:[email protected]�mailto:[email protected]�http://www.itk.ilstu.edu/faculty/tbgyires/tbgyires.htm�http://aszt.inf.elte.hu/~hunlaci/�mailto:[email protected]�http://people.inf.elte.hu/tony/�http://www.sztaki.hu/~ivanyos/�http://compalg.inf.elte.hu/~ajarai/�mailto:[email protected]�http://ludens.elte.hu/~kacsa/publ/index.html�http://www.cs.ubbcluj.ro/~kasa/�http://www.compalg.inf.elte.hu�mailto:[email protected]�http://www.se.e-technik.uni-kassel.de/pm/leopoldE.html�mailto:[email protected]�http://www.sztaki.hu/~alukacs/�http://www.unizh.ch/ior/Pages/Deutsch/Mitglieder/Mayer/Mayer.php�http://www.mta.hu/felepites/portrek/mesko_attila.php�http://www.stats.ox.ac.uk/~miklos/�mailto:[email protected]�http://www.bke.hu/~pmiklos/�http://irh.inf.unideb.hu/user/jroszik�http://www.sztaki.hu/~ronyai/�http://www.cs.uni-duesseldorf.de/~rothe/�http://www.renyi.hu/~sali/�http://www.minet.uni-jena.de/www/fakultaet/iam/personen/stefan.html�http://scs.web.elte.hu/�http://www.nik.hu/felepit.htm�http://people.inf.elte.hu/sike/�http://www.cs.ubbcluj.ro/catedre/32r.htm�http://www.math.bme.hu/~szantai/�http://www.sie.arizona.edu/faculty/szidar.html�http://www.iit.bme.hu/~szirmay/szirmay.html�http://it.math.klte.hu/user/jsztrik/�http://www.tu-chemnitz.de/informatik/HomePages/ThIS/Tamm/�http://people.inf.elte.hu/toke/�mailto:[email protected]�http://aszt.inf.elte.hu/~jvida/�http://www.cs.elte.hu/vizvari�http://www2.informatik.uni-jena.de/~nez/�http://www.elte.hu/szervezet/eotvos_kiado.html�mailto:[email protected]�http://www.elte.hu/szervezet/eotvos_kiado.html�

  • Tartalomjegyzék

    Tartalomjegyzék . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5El�oszó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    I. ALAPOK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131. Rekurzív egyenletek (Kása Zoltán) . . . . . . . . . . . . . . . . . . . . . . . . 14

    1.1. Lineáris rekurzív egyenletek . . . . . . . . . . . . . . . . . . . . . . . . . 151.2. Generátorfüggvények és rekurzív egyenletek . . . . . . . . . . . . . . . . . 221.3. Numerikus megoldás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    2. Komputeralgebra (Járai Antal és Kovács Attila) . . . . . . . . . . . . . . . . 382.1. Adatábrázolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.2. Polinomok közös gyökei . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.3. Gröbner-bázis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632.4. Szimbolikus integrálás . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.5. Elmélet és gyakorlat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    3. Kriptográ�a (Jörg Rothe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943.1. Alapok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953.2. Kulcscsere Diffie és Hellman szerint . . . . . . . . . . . . . . . . . . . . . 1073.3. RSA és faktorizálás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103.4. Rivest, Rabi és Sherman protokolljai . . . . . . . . . . . . . . . . . . . . . 1163.5. Interaktív bizonyítási rendszerek és zéró ismeret . . . . . . . . . . . . . . . 116

    4. Bonyolultságelmélet (Jörg Rothe) . . . . . . . . . . . . . . . . . . . . . . . . . 1254.1. Alapok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264.2. NP-teljesség . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1334.3. Az ítéletlogika kielégíthet�oség-problémája . . . . . . . . . . . . . . . . . . 1394.4. Grá�zomor�zmus és alsóság . . . . . . . . . . . . . . . . . . . . . . . . . 144

  • 6 Tartalomjegyzék

    II. HÁLÓZATOK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1635. Hálózatok szimulációja (Gyires Tibor) . . . . . . . . . . . . . . . . . . . . . . 164

    5.1. A szimuláció típusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1645.2. A telekommunikációs hálózatok modellezésének és szimulációjának szük-

    ségessége . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655.3. A telekommunikációs hálózatok típusai . . . . . . . . . . . . . . . . . . . 1675.4. Teljesítményjellemz�ok szimulációhoz . . . . . . . . . . . . . . . . . . . . 1695.5. A forgalom jellemzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725.6. Szimulációs modellez�o rendszerek . . . . . . . . . . . . . . . . . . . . . . 1785.7. Modellfejlesztési életciklus . . . . . . . . . . . . . . . . . . . . . . . . . . 1895.8. A forgalom ingadozásának hatása nagy sebesség�u hálózatokra . . . . . . . 1955.9. Mérési adatok bemutatása . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

    6. Párhuzamos számítások (Iványi Antal és Claudia Leopold) . . . . . . . . . . 2226.1. Párhuzamos architektúrák . . . . . . . . . . . . . . . . . . . . . . . . . . . 2246.2. Hatékonysági mértékek és optimalizálás . . . . . . . . . . . . . . . . . . . 2276.3. Párhuzamos programozás . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.4. Számítási modellek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2426.5. PRAM algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

    7. Szisztolikus rendszerek (Eberhard Zehendner) . . . . . . . . . . . . . . . . . 2687.1. A szisztolika alapfogalmai . . . . . . . . . . . . . . . . . . . . . . . . . . 2687.2. Tér-id�o-leképezés és szisztolikus rács . . . . . . . . . . . . . . . . . . . . 2787.3. A be/kiviteli séma levezetése . . . . . . . . . . . . . . . . . . . . . . . . . 2877.4. Vezérlési szempontok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2957.5. Lineáris szisztolikus rácsok . . . . . . . . . . . . . . . . . . . . . . . . . . 306

    III. FOLYTONOS OPTIMALIZÁCIÓ . . . . . . . . . . . . . . . . . . . . . . . 312El�oszó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3138. Játékelmélet (Szidarovszky Ferenc) . . . . . . . . . . . . . . . . . . . . . . . 314

    8.1. Véges játékok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3158.2. Folytonos játékok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3208.3. Az oligopol feladat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

    IV. DISZKRÉT OPTIMALIZÁCIÓ . . . . . . . . . . . . . . . . . . . . . . . . . 362Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3639. Ütemezéselmélet (Vizvári Béla) . . . . . . . . . . . . . . . . . . . . . . . . . . 364

    9.1. Formális rendszer ütemezési feladatok osztályozására . . . . . . . . . . . . 3659.2. A Gantt-diagramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3689.3. Ütemezési problémák egyetlen gépen . . . . . . . . . . . . . . . . . . . . 3709.4. Ütemezési problémák párhuzamos berendezéseken . . . . . . . . . . . . . 3789.5. Az egyutas ütemezési probléma . . . . . . . . . . . . . . . . . . . . . . . 3899.6. A többutas ütemezési probléma . . . . . . . . . . . . . . . . . . . . . . . . 397

  • Tartalomjegyzék 7

    V. ADATBÁZISKEZELÉS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41710. Adattömörítés (Ulrich Tamm) . . . . . . . . . . . . . . . . . . . . . . . . . . 418

    10.1. Információelméleti eredmények . . . . . . . . . . . . . . . . . . . . . . . 41910.2. Aritmetikai kódolás és modellezés . . . . . . . . . . . . . . . . . . . . . . 42910.3. ZivLempel tömörítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44010.4. BurrowsWheeler-transzformáció . . . . . . . . . . . . . . . . . . . . . . 44310.5. Képtömörítés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

    11. Memóriagazdálkodás (Balogh Ádám és Iványi Antal) . . . . . . . . . . . . . 45611.1. Partícionálás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45611.2. Lapcserélési algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . 47011.3. Anomáliák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48011.4. Állományok optimális elhelyezése . . . . . . . . . . . . . . . . . . . . . . 491

    12. Relációs adatmodell tervezés (Demetrovics János és Sali Attila) . . . . . . . . 50312.1. Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50312.2. Funkcionális függ�oségek . . . . . . . . . . . . . . . . . . . . . . . . . . . 50412.3. Relációs sémák szétvágása . . . . . . . . . . . . . . . . . . . . . . . . . . 51112.4. Általános függ�oségek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530

    VI. ALKALMAZÁSOK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536Bevezetés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53713. Bioinformatika (Miklós István) . . . . . . . . . . . . . . . . . . . . . . . . . . 538

    13.1. Algoritmusok szekvenciákon . . . . . . . . . . . . . . . . . . . . . . . . . 53813.2. Algoritmusok fákon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55213.3. Algoritmusok sztochasztikus nyelvtanokon . . . . . . . . . . . . . . . . . 55413.4. Szerkezetek összehasonlítása . . . . . . . . . . . . . . . . . . . . . . . . . 56013.5. Törzsfakészítés távolságon alapuló algoritmusokkal . . . . . . . . . . . . . 56213.6. Válogatott témák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572

    14. Ember-gép kölcsönhatás (Ingo Althöfer és Stefan Schwarz) . . . . . . . . . . 58014.1. Több választási lehet�oséget kínáló rendszerek . . . . . . . . . . . . . . . . 58014.2. Több lehetséges megoldás el�oállítása . . . . . . . . . . . . . . . . . . . . . 58414.3. További interaktív problémamegoldó algoritmusok . . . . . . . . . . . . . 600

    15. Számítógépes gra�ka (Szirmay-Kalos László) . . . . . . . . . . . . . . . . . . 60515.1. Analitikus geometriai alapok . . . . . . . . . . . . . . . . . . . . . . . . . 60515.2. Ponthalmazok leírása egyenletekkel . . . . . . . . . . . . . . . . . . . . . 60615.3. Geometriai feldolgozó és tesszellációs algoritmusok . . . . . . . . . . . . . 61815.4. Tartalmazási algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . 62815.5. Mozgatás, torzítás, geometriai transzformációk . . . . . . . . . . . . . . . 63715.6. Megjelenítés sugárkövetéssel . . . . . . . . . . . . . . . . . . . . . . . . . 64515.7. Az inkrementális képszintézis algoritmusai . . . . . . . . . . . . . . . . . 662

  • 8 Tartalomjegyzék

    16. Térinformatika (Elek István és Sidló Csaba) . . . . . . . . . . . . . . . . . . 68516.1. A térinformatika adatmodelljei . . . . . . . . . . . . . . . . . . . . . . . . 68516.2. Térbeli indexelés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68716.3. Digitális sz�urési eljárások . . . . . . . . . . . . . . . . . . . . . . . . . . . 69416.4. Mintavételezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710

    17. Tudományos számítások (Galántai Aurél és Jeney András) . . . . . . . . . . 71717.1. Lebeg�opontos aritmetika és hibaelemzés . . . . . . . . . . . . . . . . . . . 71717.2. Lineáris egyenletrendszerek . . . . . . . . . . . . . . . . . . . . . . . . . 72717.3. Sajátértékszámítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74817.4. Numerikus programkönyvtárak és szoftvereszközök . . . . . . . . . . . . . 758

    Irodalomjegyzék . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769Tárgymutató . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787Színes ábrák és ismertet�ok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799

  • El®szó

    Az informatikai algoritmusok magyar nyelv�u szakirodalma az utóbbi huszonöt évben ala-kult ki. Az els�o szakkönyvet Lovász László és Gács Péter írta 1978-ban [295]. Ezt a köny-vet fordítások követték: 1982-ben Aho, Hopcroft és Ullman [6] könyve, 1987-ben Knuthháromkötetes monográ�ája [258, 259, 260], majd 1987-ben Cormen, Leiserson és Rivestm�uve [89]. 1999-ben újra hazai szerz�ok következtek Rónyai Lajos, Ivanyos Gábor ésSzabó Réka [392] majd 2002-ben megjelent Lynch Osztott algoritmusok cím�u monográ-�ája [301].

    Ezt 2003 tavaszán Iványi Antal Párhuzamos algoritmusok cím�u könyve [221], majd2003 �oszén Új algoritmusok címmel Cormen, Leiserson, Rivest és Stein tankönyvének[90] fordítása követte.

    A magyar informatikus hallgatók és gyakorlati szakemberek nagy érdekl�odé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 szerz�oit, 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 els�o 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 rendelkez�o olvasók számára könnyen ért-het�o.

    Az els�o kötet 247 ábrát, 157 pszeudokódot és 133 példát tartalmaz, amelyek el�ose-gítik a tárgyalt algoritmusok m�uködésének megértését. Az önálló tanulást az alfejezetekvégén lév�o gyakorlatok (összesen 269), az egyes témákban való elmélyülést pedig a feje-zetek végén lév�o (összesen 66) feladatok segítik. A fejezetek anyagával kapcsolatos frissés kiegészít�o ismeretekre való utalások találhatók a fejezetek végén lév�o Megjegyzések afejezethez cím�u részben. Az irodalomjegyzékben megadjuk egyrészt a felhasznált szakiro-dalom bibliográ�ai adatait, másrészt teljességre törekedve felsoroljuk a magyar nyelv�uforrásokat.

    Az algoritmusok bemutatása az igényelt er�oforrások els�osorban futási id�o és memó-ria elemzését is magában foglalja. A szakirodalomban szokásos módon fels�o korláto-kat adunk meg a legrosszabb esetre jellemz�o er�oforrásigényre, és esetenként a megoldandóprobléma er�oforrásigényére jellemz�o alsó korlátot is levezetünk.

    A könyv kéziratát HLATEX kiadványszerkeszt�o eszköz segítségével készítettük, amelyet

  • 10 El�oszó

    az 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 el�oállítására használtunk. Az ábrák többségét Locher Kornélrajzolta. Az irodalomjegyzéket Iványi Anna tette él�ové.

    Garey és Johnson klasszikus m�uvét [149] követve mindazon algoritmusok futási idejétexponenciálisnak nevezzük, amelyekre nem adható polinomiális fels�o 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 els�o kötet 17 és a második kötet hasonló számú

    fejezetét)

    • és az alkotók szoros köt�odését mind Magyarországhoz, mind pedig Európához.Úgy gondoljuk, hogy a pécsi születés�u Vásárhelyi Viktor aki francia fest�oként Victor

    Vasarely néven vált világhír�uvé képeire jellemz�o a formák és színek gazdagsága, életútjapedig tükrözi kultúránk európai köt�odését.

    A budapesti és pécsi múzeumokban összesen közel 500 Vasarely-alkotás van. Ezek am�uvész ajándékai a szül�oföld iránti hála és tisztelet szimbólumai. Vasarely gazdag élet-m�uvéb�ol 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ím�u képeket emelték ki. Közülük két olyan képet aDirac és a Kubtuz cím�u festményeket választottuk, amelyeken szakaszokból kör alakul ki szemléltetve az informatika azon alapvet�o 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 m�uvé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 szerz�oje Gyires Tibor (IllinoisEgyetem), a játékelméleti fejezetet pedig Szidarovszky Ferenc (Arizonai M�uszaki Egyetem)írta. A második kötetben a megbízhatóságról szóló fejezetet Gács Péter (Bostoni Egyetem)írta, a bels�opontos módszerekr�ol szóló fejezet egyik szerz�oje pedig Terlaky Tamás (McMas-ter Egyetem). Ma mind a négy szerz�o az adott terület vezet�o kutatója, amerikai egyetemekprofesszora egykor magyar egyetemen tanultak, majd tanítottak.

    A rekurziós fejezet szerz�oje Kása Zoltán (Babeş-Bolyai Tudományegyetem), a sziszto-likus rendszerekr�ol szóló fejezetet Szakács Laura (Babeş-Bolyai Tudományegyetem) fordí-totta németr�ol magyarra. Részvételük a könyv megszületésében a határainkon túli magyarnyelv�u oktatással való szoros kapcsolatunk része.

    Könyvünk tartalmi gazdagsága jó külföldi els�osorban német kapcsolatainknakis köszönhet�o. Az els�o 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 szerz�oje Ulrich Tamm (Chem-nitzi Egyetem), a párhuzamos programozásról szóló fejezet egyik szerz�oje Claudia Leopold(Kasseli Egyetem), az ember-gép kapcsolatokkal foglalkozó fejezet szerz�oi Ingo Althöferés Stefan Schwartz (Friedrich Schiller Egyetem).

    Az alkotók (szerz�ok, lektorok, fordítók és segít�otársaik) többsége a hazai informatikaifels�ooktatás meghatározó intézményeinek Budapesti Corvinus Egyetem, Budapesti M�u-szaki és Gazdaságtudományi Egyetem, Budapesti M�uszaki F�oiskola, Debreceni Egyetem,Eötvös Loránd Tudományegyetem, Miskolci Egyetem, Pécsi Tudományegyetem, Szegedi

  • El�oszó 11

    Tudományegyetem oktatója.Az Oktatási Minisztérium támogatásának köszönhet�oen ez a tankönyv nagyon kedvez�o

    áron juthat el az Olvasókhoz. Ugyancsak az Oktatási Minisztérium támogatásának köszön-het�o, hogy 2005 tavaszától a könyv elektronikus változata is mindenki számára szabadonhozzáférhet�o 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 Dezs�o f�oiskolai tanár (Budapesti M�uszaki F�oiskola Neu-mann János Informatikai Karának f�oigazgató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 M�uszakiEgyetem), 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ít�okészségét, akiknek a lektori vé-leményét csatolni tudtuk a pályázathoz: Fekete István egyetemi docens (Rekurziók cím�u 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), T�oke Pál egyetemidocens (Hálózatok szimulációja), Vida János egyetemi docens (Gra�ka).

    Az elektronikus változat elkészültéig ahttp://people.inf.elte.hu/tony/konyvek/infalg

    cím�u honlapon találják meg olvasóink a könyv kiegészítését, amely többek között az él�oirodalomjegyzéket, a névmutatót, a gyakorlatok és feladatok egy részének megoldását, m�u-köd�o 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ér�ol.

    Köszönet illeti azokat Belényesi Viktor, Thomas H. Cormen, Érsek Nándor, PavelFabian, Johan Gade, Iványi Anna, Kimo Johnson, Shamir Kuller, L�orentey Károly, StefanSchumann, Joel Seiferas, Beau Skinner, Ofer Springer, George Stephanides, Sekar Sundar-raj, Szántai Tamás, Szeidl László, Ronald Tungl, Veszprémi Anna, David Wagner akikészrevételeikkel segítettek a könyvünk alapjául szolgáló m�u, az Új algoritmusok els�o kia-dásának javításában.

    Az el�ozetes érdekl�odés alapján arra számítunk, hogy rövidesen újabb kiadásra leszszükség. Ebben szeretnénk az els�o kiadás hibáit kijavítani. Ezért kérjük a könyv Olvasóit,hogy javaslataikat, észrevételeiket küldjék el a [email protected] címre levelükben le-het�oleg pontosan megjelölve a hiba el�ofordulási helyét, és megadva a javasolt szöveget.

    A könyv honlapján megtalálható a szerz�ok és lektorok elektronikus címeit tartalmazókolofonoldal. Olvasóink javaslataikkal, kérdéseikkel megkereshetik a könyv alkotóit.

    Budapest, 2004. szeptember 22.Iványi Antal

    alkotó szerkeszt�o

    http://people.inf.elte.hu/tony/konyvek/ujalg�mailto:[email protected]

  • I. ALAPOK

  • Bevezetés

    Ebben az alapozó részben négy témakört tárgyalunk.Az informatikai algoritmusok elemzése során gyakran el�ofordul, hogy például felismer-

    jük az n és n + 1 méret�u feladatok megoldási ideje közötti kapcsolatot és ennek az úgy-nevezett rekurzív egyenletnek a felhasználásával szeretnénk közvetlenül felírni az n méret�ubemenethez tartozó futási id�ot. Az els�o fejezet a rekurzív egyenletek leggyakrabban el�ofor-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 lehet�ové 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 n�o a kommunikációbiztonságának jelent�osé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 er�oforrásigény leg-rosszabb esetre vonatkozó fels�o korlátjának megadása. Az csak az utóbbi 15 évben válttermészetessé, hogy az er�oforrá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ím�u monográ�ájának 1968-ban megjelent els�o kötetében szerepelt az aszimptotikus fels�o korlátok jellemzésére használtO-jelölés (nagy ordo) de�ní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 els�o kiadásában, a Distributed Algorithms1996-ban megjelent els�o 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 de�ní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 er�oforrásigény szerinti osztályozását.

    A második kötetben fog megjelenni az algebrai algoritmusok elemzése.

  • 1. Rekurzív egyenletek

    Közismert a Fibonacci-számok rekurzív de�ní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 tetsz�oleges 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. de�níció. A k-adrend�u 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értelm�uen meghatározhassuk xn-et, meg kell adnunk k kezd�oértéket, ezekáltalában x0, x1, . . . , xk−1. Ezek az értékadások kezdeti feltételeknek tekinthet�ok.

    Mivel a Fibonacci-számokat de�niáló egyenlet másodrend�u rekurzív egyenlet, ezért ottkét kezdeti értéket adunk meg.

    Az (1.1) egyenletet és annak adott kezdeti feltételeit kielégít�o 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 el�oállítható, akkor a sorozatot az egyenlet általános megoldásánaknevezzük.

    A rekurzív egyenletek megoldása általában nem egyszer�u. A következ�okben 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 egyszer�ubb lesz, x(n) helyett min-denhol xn-t írunk.

    A fejezet három részb�ol á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 15

    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 egyenletr�ol 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ívegyenletr�ol 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értelm�uen 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 ellen�orizhet�o, hogy ha r0 valós megoldása a karakterisztikusegyenletnek, akkor C0rn0 megoldása az (1.2) egyenletnek, ahol C0 tetsz�oleges á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é-telekb�ol mindig meghatározhatók a C1,C2, . . . ,Ck állandók egy k egyenletb�ol álló egyen-letrendszer megoldásával.

    A lineárisan független megoldásokat a karakterisztikus egyenlet gyökei szolgáltatjáka következ�ok szerint. Minden gyökhöz hozzárendelhet�o egy fundamentálisnak nevezettmegoldás.

    Különböz�o valós gyökökLegyenek r1, r2, . . . , rp a karakterisztikus egyenlet egymástól különböz�o valós gyökei. Ek-kor

    rn1, rn2, . . . , rnpmegoldásai az (1.2) rekurzív egyenletnek, és

    C1rn1 + C2rn2 + · · · + Cprnp (1.4)

    is az, tetsz�oleges C1, C2, . . . , Cp állandókra. Ha p = k, akkor (1.4) a rekurzív egyenletáltalános megoldása.

  • 16 1. Rekurzív egyenletek

    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 = C11 +

    √5

    2

    n

    + C21 −

    √5

    2

    n

    .

    A C1 és C2 meghatározhatók a kezdeti feltételekb�ol. Ha �gyelembe vesszük, hogy x0 = 0, x1 = 1, akövetkez�o 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, tetsz�oleges 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 17

    A kezdeti feltételekb�ol

    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, tetsz�oleges 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ételekb�ol

    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 .

  • 18 1. Rekurzív egyenletek

    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 tetsz�oleges állandók, amelyek meghatározhatóka kezdeti feltételekb�ol. 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) cosnπ2 + (D0 + D1n) sin

    nπ2 .

    A kezdeti feltételekb�ol következik:

    C0 = 0 ,(C0 + C1) cos

    π

    2 + (D0 + D1) sinπ

    2 = 1 ,(C0 + 2C1) cos π + (D0 + 2D1) sin π = 2 ,

    (C0 + 3C1) cos3π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 cosnπ2 .

  • 1.1. Lineáris rekurzív egyenletek 19

    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 = 1rekurzí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-adrend�u 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öz�ok. Legyenek ezek a gyökök a következ�ok:

    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−1n

    p j−1)rnj

    +

    m∑

    j=1

    (D( j)0 + D

    ( j)1 n + · · · + D( j)q j−1n

    q j−1)anj cos b jn

    +

    m∑

    j=1

    (E( j)0 + E

    ( j)1 n + · · · + E( j)q j−1n

    q j−1)anj sin b jn , (1.7)

    aholC( j)0 , C

    ( j)1 , . . . , C

    ( j)p j−1, j = 1, 2, . . . , t ,

  • 20 1. Rekurzív egyenletek

    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 kezdeti

    feltételekb�ol meghatározhatók.Az eddigiek a következ�o 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á-ris rekurzív egyenlet általános megoldása el�oállítható az (17.39) karakterisztikus egyenletri gyökeib�ol képezett n jrni alakú tagok lineáris kombinációjaként, ahol a pi-szeres ri gyökesetében 0 ≤ j < p és a lineáris kombináció együtthatói a kezdeti feltételekt�ol 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övetkez�oké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ételekb�ol, ha léteznek, határozzuk meg az (1.7)-ben szerepl�o á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 el�o 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) egyenletheztartozó (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. El�oször megoldjuk az

    xn+2 + xn+1 − 2xn = 0

  • 1.1. Lineáris rekurzív egyenletek 21

    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.

    homogén egyenletet, amelynek általános megoldása

    x(0)n = C1(−2)n + C2 ,

    mivel a karakterisztikus egyenlet gyökei −2 és 1. Könnyen ellen�orizhetjük, hogy x(1)n = 2n−2 megoldásaaz 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ételekb�ol. Ennek alapján az általános megoldás

    xn = −14 (−2)n + 2n−2 vagy xn =

    2n − (−2)n4 ,

    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 kereshet�o. Az állandókat az egyenletbe való be-helyettesítéssel kaphatjuk meg.

    El�oz�o példánk esetében f (n) = 2n, tehát az els�o 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 .

  • 22 1. Rekurzív egyenletek

    (Hn itt a Hanoi-tornyai nev�u 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 szabadkorongot átrakni.

    Útmutatás. Mutassuk meg, hogy ha az optimális algoritmus lépéseinek száma Mn ésn ≥ 1, akkor Mn = 3Mn−1 + 2.1.1-3. Oldjuk meg a következ�o 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 (pl. 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 egyenletek fel-á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övetkez�oké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övetkez�o:

    F(z) =∑

    n≥0Fnzn = z + z2 + 2z3 + 3z4 + 5z5 + 8z6 + 13z7 + · · · .

    Ha mindkét oldalt megszorozzuk z-vel, majd z2-tel, a következ�oket 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 els�o képletb�ol a másodikat, majd a harmadikat, és �gyelembe

  • 1.2. Generátorfüggvények és rekurzív egyenletek 23

    vesszük a Fibonacci-számokat de�niáló képletet, a következ�ot kapjuk:

    F(z)(1 − z − z2) = z ,ahonnan

    F(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 m�uveletek 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 egyenl�onek, ha

    an = bn bármely n természetes számra.Ezután a következ�o, generátorfüggvényekkel végezhet�o m�uveleteket de�niá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 − a2z

    2 − · · · − 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,

  • 24 1. Rekurzív egyenletek

    ahol sn =n∑

    k=0akbn−k.

    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 +

    12a1z

    2 +13a2z

    3 + · · · =∑

    n≥1

    1nan−1z

    n .

    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 z

    2 +13 z

    3 + · · · =∑

    n≥1

    1n z

    n .

    Ha a két fenti generátorfüggvényt összeszorozzuk, akkor

    11 − z ln

    11 − z =

    n≥1Hnzn ,

    ahol Hn = 1 +12 +

    13 + · · · +

    1n (H0 = 0, H1 = 1) az ún. harmonikus számok.

  • 1.2. Generátorfüggvények és rekurzív egyenletek 25

    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övetkez�ok 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 kitev�oj�u 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épletb�ol

    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ó tetsz�oleges 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 .

  • 26 1. Rekurzív egyenletek

    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 egyszer�u számítással igazolható, hogy(−m

    k

    )= (−1)k

    (m + k − 1

    k

    ),

    a következ�o 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 = z

    m

    (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-het�o úgy, hogy az együtthatók zárt alakban felírhatók, akkor ez a módszer eredményre vezet.Legyen adott a következ�o 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övetkez�okben á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 27

    Ö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 + · · · + akzk

    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

    )+ · · · + akzk

    (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övetkez�o 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övetkez�o, 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övetkez�ot 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.

  • 28 1. Rekurzív egyenletek

    n = 2 n = 3

    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és�obb 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 tetsz�oleges n ≥ 1 természetes számra a bn-ben megoldandórekurzív egyenlet a következ�o:

    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övetkez�ot 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ényr�ol van szó, használjuk a következ�ojelölést:

    A(z) = zB(z) =∑

    n≥0bnzn+1 =

    n≥1bn−1zn .

    Ekkor az (1.16) jobb oldala éppen A(z)B(z), ami egyenl�o zB2(z)-vel. Innen

    B(z) − 1 = zB2(z), B(0) = 1 .

  • 1.2. Generátorfüggvények és rekurzív egyenletek 29

    Oldjuk meg ezt az egyenletet B(z)-re. Ekkor

    B(z) = 1 ±√

    1 − 4z2z .

    Mivel B(0) = 1, csak a negatív jel megfelel�o. 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

    )20z02z +

    (1/21

    )22z2z − · · · −

    (1/2n

    )(−1)n 2

    2nzn2z + · · ·

    =

    (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övetkez�o, könnyen bizonyíthatóösszefüggést: (

    1/2n + 1

    )=

    (−1)n22n+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 els�o 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önny�u 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) .

    Egyszer�u számítással azt kapjuk, hogy

    fn = 2( f0bn−1 + f1bn−2 + · · · + fn−1b0), n ≥ 2 . (1.17)

    Ez a megoldandó rekurzív egyenlet, amelynek megoldása fn. Legyen

    F(z) =∑

    n≥0fnzn és B(z) =

    n≥0bnzn .

  • 30 1. Rekurzív egyenletek

    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 pedig

    fn =(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 egyenl�ok.

    n csúcsú, k level �u bináris fák számaEgy kicsit nehezebb feladat: hány n csúcsú k level�u bináris fa létezik? Jelöljük ezek számátb(k)n -val. Könny�u belátni, hogy b(k)n = 0, ha k > b(n + 1)/2c. Egyszer�u okoskodással kilehet számítani a k = 1 esetet, vagyis b(1)n = 2n−1 tetsz�oleges n ≥ 1 természetes számra.Legyen b(0)0 = 1 konvenció alapján. Akárcsak az el�oz�o feladatoknál, itt is a bal és jobboldali 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 aszáma. Összegezve k és j szerint, a következ�o 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övetkez�o 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 31

    Az (1.18) egyenlet mindkét oldalát zn-nel megszorozva, majd összeadva az n = 0, 1,2, . . . értékekre, a következ�ot kapjuk:

    n≥1b(k)n zn = 2

    n≥1b(k)n−1z

    n +∑

    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−1z

    n +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) = z1 − 2z

    k−1∑

    j=1B( j)(z)B(k− j)(z)

    . (1.19)

    Lépésr�ol lépésre haladva, felírhatjuk a következ�oket.

    B(2)(z) = z1 − 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övetkez�o 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 − 4z2

  • 32 1. Rekurzív egyenletek

    képletet kapjuk, mivel C(0) = 1 miatt csak a negatív el�ojel 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 ellen�orizhet�o, hogy B(1) = z/(1 − 2z). Tehát

    B(k)(z) = 12(2k − 1)(2kk

    )z2k−1

    (1 − 2z)2k−1 .

    Mivel azonban1

    (1 − z)m =∑

    n≥0

    (n + m − 1

    n

    )zn ,

    a következ�o eredményhez jutunk:

    B(k)(z) = 12(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 =1

    2k − 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 nevez�ogyö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 el�oször azt az esetet, amikor a nevez�onekcsak egyszeres (azaz egymástól különböz�o) 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 33

    Könnyen belátható, hogy

    Ai = limz→αi(z − αi)P(z)Q(z) , i = 1, 2, . . . , k .

    Másfel�olAi

    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övetkez�ot kapjuk:

    −Aiβi1 − βiz = −Aiβi

    (1 + βiz + · · · + βni 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 limz→αi(z − αi)P(z)Q(z) ,

    vagyCi(n) = −βn+1i 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 megfelel�o részered-mény

    Ci(n) =1

    (p − 1)! limz→βidp−1dzp−1

    ((z − βi)pzn−1 p(z)q(z)

    ).

    Itt dp

    dzp f (z) az f (z) függvény p-edrend�u deriváltját jelenti.Az eddigiek a következ�o algoritmusban összegezhet�ok. Feltesszük, hogy az egyenlet

    együtthatóit a A, a megoldás állandóit pedig a C tömb tartalmazza.

  • 34 1. Rekurzív egyenletek

    Ĺ-́(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 d

    pi−1dzpi−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ó m�uveletek 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 ,

    azaz 1z X(z) − 2X(z) =

    21 − 2z −

    21 − z , ahol X(z) =

    n≥0xnzn .

    InnenX(z) = 2z

    2

    (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 nevez�o gyökei: 1 egyszeres, 2 kétszeres gyök. Ezért

    C1 = limz→12zn

    (z − 2)2 = 2 és

    C2 = limz→2ddz

    (2zn

    z − 1)

    = 2 limz→2

    nzn−1(z − 1) − zn(z − 1)2 = 2

    n(n − 2) .

  • 1.2. Generátorfüggvények és rekurzív egyenletek 35

    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

    )= −1z .

    EkkorF(1/z) = −zz2 − 2z + 2 .

    A nevez�o 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élt�ol külön-böz�o 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 .

    (Hn itt a Hanoi-tornyai nev�u feladat lépésszámát jelenti.)

  • 36 1. Rekurzív egyenletek

    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övetkez�o 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övetkez�o 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 kezd�oé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 els�o k elemében (azaz a 0, 1, . . . , k − 1 index�u elemekben)�orizve meg a sorozat el�oz�o k értékét.

    Ŕ(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övetkez�o x j ( j = k, k+1, . . . , n) értékét (az el�oz�o 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 els�o 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 Ŕ algorit-mus, ha az 1.4. példában szerepl�o adatokkal kiszámítja x1000 értékét?

  • 1. Feladatok 37

    Feladatok

    1-1. Homogén egyenlet megoldhatósága generátorfüggvénnyelBizonyítsuk be, hogy tetsz�oleges homogén lineáris rekurzív egyenlet generátorfüggvénnyelvaló megoldáskor csak akkor fordulhat el�o 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 nevez�ogyö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 [119], Flajolet és Sedgewick [421], Greene és Knuth [175], valamint Mickens [327]könyve részletesen tárgyalja a rekurzív egyenletek megoldását.

    Vannak a generátorfüggvényekkel foglalkozó, magyar nyelv�u könyvek is példáulKnuth [258], valamint Graham, Knuth és Patashnik [171]. Vilenkin m�uve [478] egyszer�umódon tárgyal sok-sok feladatot a könyv utolsó két fejezete rekurzív egyenletekkel ésgenerátorfüggvényekkel foglalkozik.

    Lovász [296] 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 [258] könyvéb�ol, a levelek megszámolása a binárisfák halmazában, valamint az n csúcsú k level�u bináris fák megszámolása Kása Zoltán [243]könyvéb�ol valók.

  • 2. Komputeralgebra

    A különféle matematikai számítások elvégzésére képes informatikai eszközök nélkülöz-hetetlenek a modern tudományban és ipari technológiában. Képesek vagyunk kiszámolnibolygók, csillagok pályáját, vezérelni atomer�om�uveket, egyenletekkel leírni, modellezni atermészet számos törvényét. Ezek a számítások alapvet�oen kétfélék lehetnek: numerikusakés szimbolikusak.

    Ámbár a numerikus számítások nemcsak elemi aritmetikai m�uveleteket foglalnak ma-gukban, hanem olyan m�uveleteket is, mint matematikai függvények numerikus értékének,polinomok gyökeinek vagy mátrixok sajátértékének meghatározása, ezek a m�uveletek alap-vet�oen számokon értelmezettek, és ezek a számok a legtöbb esetben nem pontosak, pontos-ságuk az adott számítógépes architektúra lebeg�opontos ábrázolási módjától függ. A szim-bolikus számításokat matematikai vagy informatikai objektumokat jelent�o szimbólumokonértelmezzük. Ezek az objektumok lehetnek számok (egészek, racionális számok, valós éskomplex számok, algebrai számok), de lehetnek polinomok, racionális és trigonometrikusfüggvények, egyenletek, egyenletrendszerek, algebrai struktúrák elemei, vagy éppen halma-zok, listák, táblázatok.

    A szimbolikus számítások elvégzésére alkalmas számítógépes rendszereket (amelyeklegtöbbször numerikus számításokra és az eredmények gra�kus megjelenítésére egyarántképesek) komputeralgebra-rendszereknek vagy szimbolikus-algebrai rendszereknek nevez-zük. Az algebra szó a szimbolikus objektumokkal végzett m�uveletek algebrai eredetéreutal.

    A komputeralgebra-rendszerek mint számítógépes programok alapfeladata: (1) mate-matikai objektumok szimbolikus ábrázolása, (2) aritmetika ezekkel az objektumokkal. Akomputeralgebra, mint tudományterület feladata pedig erre az aritmetikára épül�o hatékonyalgoritmusok keresése, elemzése és megvalósítása tudományos kutatásokhoz és alkalmazá-sokhoz.

    Mivel a komputeralgebra-rendszerek szimbolikusan, (lényegében) tetsz�oleges pontos-sággal és hibamentesen képesek számolni, el�oször tisztázni kell, milyen adatszerkezeteketlehet hozzárendelni a különféle objektumokhoz. A 2.1. alfejezet a matematikai objektumokábrázolásának problémakörét taglalja. A továbbiakban a szimbolikus algoritmusok közülismertetjük azokat, melyek az id�ok folyamán a mindennapi tudomány és technika elenged-hetetlen részévé váltak.

    A természettudományok többsége jelenségeit, gondolatait matematikai egyenletekkelírja le. A lineáris egyenletek, egyenletrendszerek szimbolikus megoldásainak vizsgálata ajól ismert eliminációs módszereken alapul. A nemlineáris egyenletrendszerek megoldásai-

  • 2.1. Adatábrázolás 39

    nak megkeresésére el�oször megvizsgáljuk az euklideszi algoritmus különféle változatait ésa rezultánsmódszert. A hatvanas évek közepén Buchberger doktori dolgozatában egy ha-tékony módszert dolgozott ki többváltozós polinomegyenletek szimbolikus megoldásainakmeghatározására, amit ma Gröbner-bázis elmélet néven ismerünk. Buchberger munkájáracsak évekkel kés�obb kezdtek fel�gyelni, azóta a terület a komputeralgebra egyik legnépsze-r�ubb ága. Ezekr�ol lesz szó a 2.2. és a 2.3. alfejezetekben.

    A következ�o bemutatandó terület a szimbolikus integrálás. Habár a probléma formálistermészete már több, mint 100 éve ismert (Liouville-elmélet), csak 1969-ben tudott Rischhatékony algoritmust adni annak eldöntésére, hogy ha adott egy valós elemi f függvény,akkor az

    ∫f (x)dx integrál is elemi-e és ha igen, az algoritmus meg is adja az integrál értékét.

    A módszerrel a 2.4. alfejezetben foglalkozunk.A fejezet végén áttekintjük a szimbolikus algoritmusok elméleti és gyakorlati vonatko-

    zásait (2.5. alfejezet), külön részt szánva napjaink komputeralgebra-rendszereinek.

    2.1. AdatábrázolásA komputeralgebrában a legkülönfélébb matematikai objektumok fordulnak el�o. Ahhoz,hogy ezekkel az objektumokkal számolni lehessen, ábrázolni és tárolni kell �oket a számí-tógép memóriájában. Ez elméleti és gyakorlati problémák egész sorát veti fel. Ebben azalfejezetben ezekr�ol a kérdésekr�ol lesz szó.

    Tekintsük az egészeket. Egyrészt matematikai tanulmányainkból tudjuk, hogy halmazukmegszámlálható számosságú, viszont informatikai szemszögb�ol azzal is tisztában vagyunk,hogy számítógépünk csak véges sok egész tárolására képes. Az, hogy mekkora a legnagyobbegész, amit minden további er�ofeszítés nélkül ábrázolni tudunk, attól függ, hogy számító-gépes architektúránkban mekkora a gépi szó mérete. Ez tipikusan 16, 32, 48 vagy 64 bit. Azegy gépi szóban ábrázolható egészeket egyszeres pontosságú egészeknek nevezzük. Nembiztos, hogy egy tetsz�oleges egész szám elfér egy gépi szóban, vagyis olyan adatstruktúráravan szükség, ami több gépi szó felhasználásával tetsz�olegesen nagy egész ábrázolására ké-pes. Természetesen a tetsz�olegesen nagy nem jelent végtelen nagyot, hiszen valamilyentervezési igény vagy a memória mérete mindenképpen korlátot szab. Emellett olyan adatáb-rázolást kell megvalósítani, amelyre hatékony m�uveletek építhet�ok. Az egészek reprezentá-ciójának alapvet�oen két útja van:

    • helyiértékes (a hagyományos decimális számrendszerbeli ábrázolás általánosítása),amelyben egy n egészet ∑k−1i=0 diBi alakban írunk fel, ahol a B alapszám akármilyen,egynél nagyobb egész lehet. A hatékonyság növelése miatt B-t úgy érdemes választani,hogy B − 1 beleférjen egy gépi szóba. A di jegyek (0 ≤ i ≤ k − 1) vagy a kanonikus{0 ≤ di ≤ B − 1} vagy a szimmetrikus {−bB/2c < di ≤ bB/2c} jegyhalmazból valóegyszeres pontosságú egészek. Az így leírható többszörös pontosságú egészek lineárislistás [d0, d1, . . . , dk−1] ábrázolásának számítógépes megvalósítása történhet dinamiku-san vagy statikusan, attól függ�oen, hogy a lineáris listát láncolt listaként vagy tömbkéntimplementáljuk.

    • moduláris, amelyben az n egész megfelel�o számú, egyszeres pontosságú, páronkéntrelatív prím modulusokkal vett moduláris képeinek lineáris listájaként adható meg. Amoduláris képekb�ol n a kínai maradéktétel segítségével rekonstruálható.

  • 40 2. Komputeralgebra

    A moduláris alak gyorsabb az összeadás, kivonás és szorzás m�uveleteket tekintve, de lénye-gesen lassabb például oszthatósági vizsgálatoknál (amelyek sok esetben elkerülhetetlenek).Nyilvánvaló, hogy az adatstruktúra megválasztása er�osen befolyásolja algoritmusaink se-bességét.

    2.1. példa. Az alábbi példában az egyszer�uség kedvéért természetes számokkal dolgozunk. Tegyükfel, hogy olyan számítógép architektúránk van, ahol a gépi szó 32 bites, vagyis számítógépünk azI1 = [0, 232 − 1] = [0, 4 294 967 295] intervallum egészeivel képes egész aritmetikát végezni. Erreaz aritmetikára építve az architektúránkon valósítsunk meg olyan egész aritmetikát, amellyel az I2 =[0, 1050] intervallumban is számolni tudunk.

    A helyiértékes ábrázoláshoz legyen B = 104, továbbá

    n1 = 123456789098765432101234567890 ,n2 = 2110 .

    Ekkor

    n1 = [7890, 3456, 1012, 5432, 9876, 7890, 3456, 12] ,n2 = [2110] ,

    n1 + n2 = [0, 3457, 1012, 5432, 9876, 7890, 3456, 12] ,n1 ∗ n2 = [7900, 3824, 6049, 1733, 9506, 9983, 3824, 6049, 2] ,

    ahol az összeadást és a szorzást helyiértékesen számoltuk.A moduláris ábrázoláshoz válasszunk páronként relatív prím számokat az I1 intervallumból úgy,

    hogy szorzatuk nagyobb legyen 1050-nél. Legyenek például

    m1 = 4294967291, m2 = 4294967279, m3 = 4294967231 ,m4 = 4294967197, m5 = 4294967189, m6 = 4294967161

    prímek, ahol ∏6i=1 mi > 1050. Egy I2 intervallumbeli egészet tehát az I1 intervallumból vett számha-tossal ábrázolunk.

    Ekkor

    n1 ≡ 2009436698 (mod m1), n1 ≡ 961831343 (mod m2) ,n1 ≡ 4253639097 (mod m3), n1 ≡ 1549708 (mod m4) ,n1 ≡ 2459482973 (mod m5), n1 ≡ 3373507250 (mod m6) ,

    valamint n2 ≡ 2110 (mod mi), (1 ≤ i ≤ 6), vagyisn1 + n2 = [2009438808, 961833453, 4253641207, 1551818, 2459485083, 3373509360] ,n1 ∗ n2 = [778716563, 2239578042, 2991949111, 3269883880, 1188708718, 1339711723] ,

    ahol az összeadás és a szorzás koordinátánként modulárisan elvégezve értend�o.

    Általánosabban, a matematikai objektumok ábrázolásának három absztrakciós szintjétérdemes megkülönböztetni:1. Az objektumok szintje. Ezen a szinten az objektumok formális matematikai objektumok-

    nak tekinthet�ok. Például 2 + 2, 3∗3−5 és 4 ugyanazt az objektumot jelölik. Hasonlóan,az (x + 1)2(x − 1) és x3 + x2 − x − 1 polinomok az objektumok szintjén azonosnaktekinthet�ok.

  • 2.1. Adatábrázolás 41

    2. A forma szintje. Itt már megkülönböztetjük az objektumok eltér�o ábrázolásait. Példáulaz (x + 1)2(x − 1) és x3 + x2 − x − 1 polinomok ugyanannak a polinomnak különböz�oreprezentációi, hiszen az el�obbi egy szorzat, utóbbi egy összeg.

    3. Az adatstruktúra szintje. Itt a számítógép memóriájában eltér�o ábrázolásokat tekintjükkülönböz�oknek. Az x3 + x2 − x − 1 polinomnak ezen a szinten többféle reprezentációjais lehet, a polinomot leírhatja például

    • egy együtthatókból álló tömb: [−1,−1, 1, 1] ,• egy láncolt lista: [−1, 0]→ [−1, 1]→ [1, 2]→ [1, 3] .A különböz�o matematikai objektumok számítógépes ábrázolásához a komputeralgebra-

    rendszerek tervez�oinek dönteniük kell mind a forma, mind az adatstruktúra szintjén. A dön-tést olyan kérdések nehezítik, mint a reprezentáció memóriaigénye, olvashatósága, vagy azábrázolás számítási ideje. Például az

    f (x) = (x − 1)2(x + 1)3(2x + 3)4= 16x9 − 80x8 + 88x7 + 160x6 − 359x5 + x4 + 390x3 − 162x2 − 135x + 81

    polinom szorzat alakja kifejez�obb, mint az összeg alakja, de utóbbi el�onyösebb, ha mond-juk az x5-es tag együtthatójára vagyunk kíváncsiak. A forma szintjére vonatkozó döntésinehézségeket szemlélteti az alábbi példa:• x1000 − 1 és (x − 1)(x999 + x998 + · · · + x + 1) ,• (x + 1)1000 és x1000 + 1000x999 + · · · + 1000x + 1 .

    A matematikai objektumok minden igényt kielégít�o ábrázolására tökéletes módszertnem ismerünk. A gyakorlatban az objektumoknak különböz�o reprezentációi is megengedet-tek. Ez azt a problémát veti fel, hogy ugyanazon objektum eltér�o ábrázolása esetén meg kelltudnunk állapítani azok egyenl�oségét, konvertálni kell tudnunk egyik alakból a másikba ésaz egyértelm�u ábrázoláshoz egyszer�usítéseket kell tudnunk azokon végrehajtani. A formaszintjén például minden egész számot felírhatunk valamely B alapú számrendszerben, mígaz adatstruktúra szintjén a forma szintjén kapott lineáris listát láncolt listaként vagy tömb-ként reprezentálhatjuk.

    A racionális számok egészek párjaiból, a számlálóból és a nevez�ob�ol állnak. Memóriatakarékosság érdekében, valamint két racionális szám könny�u összehasonlíthatósága miattcélszer�u a számláló és a nevez�o legnagyobb közös osztójával egyszer�usített alakot ábrázolni.Mivel az egészek euklideszi gy�ur�ut alkotnak, a legnagyobb közös osztó euklideszi algorit-mussal gyorsan számolható. Az ábrázolás egyértelm�uségéhez a nevez�ot érdemes pozitívnakválasztani, a racionális szám el�ojele így a számláló el�ojele lesz.

    A többváltozós polinomok (az R[x1, x2, . . . , xn] n-változós polinomgy�ur�u elemei, aholR gy�ur�u) a1xe1 + a2xe2 + · · ·+ anxen alakúak, ahol ai ∈ R \ {0}, ei = (ei1 , . . . , ein ) és xei -t írtunkxei11 x

    ei22 . . . x

    einn helyett. A forma szintjén az alábbi reprezentációs lehet�oségek adódnak.

    1. Kiterjesztett vagy faktorizált ábrázolás, ahol a polinom összegként vagy szorzatkéntjelenik meg:

    • x2y − x2 + y − 1 ,•

    (x2 + 1

    )(y − 1) .

  • 42 2. Komputeralgebra

    2. Rekurzív vagy disztributív ábrázolás (csak többváltozós esetben). Például kétváltozóspolinomgy�ur�uben f (x, y) tekinthet�o R[x, y]-belinek, (R[x])[y]-belinek vagy (R[y])[x]-belinek:

    • x2y2 + x2 + xy2 − 1 ,• (x2 + x)y2 + x2 − 1 ,• (y2 + 1)x2 + y2x − 1 .

    Az adatstruktúra szintjén ritka vagy teljes reprezentáció lehetséges, például a ritka x4 − 1polinom teljes ábrázolása x4 + 0x3 + 0x2 + 0x−1. A gyakorlatban a többváltozós polinomokritka ábrázolása a célravezet�o.

    A ∑∞i=0 aixi alakú hatványsorok legegyszer�ubb ábrázolása az, ha valamilyen véges ren-dig adjuk csak meg az együtthatók sorozatát, így lényegében egyváltozós polinomoknaktekintjük �oket. Ezzel a megközelítéssel az a probléma, hogy különböz�o hatványsorokhoztartozhat ugyanaz a reprezentáció. Ezt elkerülend�o, a hatványsort az együtthatói sorozatátgeneráló függvénnyel szokás leírni. A generáló függvény egy olyan kiszámítható f függ-vény, amire f (i) = ai. A hatványsorokkal végzett m�uveletekhez ekkor elegend�o azt ismerni,hogy hogyan kell az operandusok együtthatóiból el�oállítani a m�uvelet eredményét repre-zentáló sorozat együtthatóit. Például az f és g hatványsorok szorzatát jelöl�o h hatványsoregyütthatóit a hi =

    ∑ik=0 fkgi−k függvény segítségével származtathatjuk. Ekkor a hi együtt-

    hatókat csak akkor kell ténylegesen kiszámolni, ha szükség van az értékükre. Ezt a kompu-teralgebrában is gyakran használt technikát késleltetett kiértékelésnek nevezzük.

    Mivel a komputeralgebra-rendszerek szimbolikusan számolnak, az algoritmusok m�uve-letigényének vizsgálatán kívül mindig szükség van memóriaigényük vizsgálatára is, hiszena memóriaigény befolyásolja a tényleges futási id�ot.1 Tekintsünk egyszer�u példaként egy nismeretlenes, n egyenletb�ol álló lineáris egyenletrendszert, ahol minden egyes egész együtt-ható elfér a számítógép ω hosszúságú rekeszében. Kizárólag egész aritmetikát és Gauss-eliminációt alkalmazva a redukció eredményeként kapott együtthatók egyenként 2n−1ω tár-helyet igényelhetnek. Ha az együtthatók polinomok lennének és polinomaritmetikát hasz-nálnánk, az eredmény polinomok együtthatóinak mérete, csakúgy mint a fokszámuk, ex-ponenciális növekedést mutatna. A meg�gyelt exponenciális növekedés ellenére a kapottvégeredmény mégis normális méret�u, hiszen a Cramer-szabály miatt a megoldások de-terminánsok hányadosaiként is megkaphatók, amelyek pedig közelít�oleg csak nω tárhelyetigényelnek. Ezt a jelenséget nevezzük köztes számítási tárrobbanásnak. El�ofordulása gya-kori a komputeralgebra algoritmusokban.

    2.2. példa. Egész aritmetikát használva oldjuk meg az alábbi lineáris egyenletrendszert.

    37x + 22y + 22z = 1 ,31x − 14y − 25z = 97 ,−11x + 13y + 15z = −86 .