• Nenhum resultado encontrado

Lovasz Laszlo Gacs Peter Algoritmusok

N/A
N/A
Protected

Academic year: 2021

Share "Lovasz Laszlo Gacs Peter Algoritmusok"

Copied!
177
0
0

Texto

(1)
(2)

Algoritmusok

(3)

A sorozat főszerkesztői: H a j n a l A n d r á s Á l l a m i - d í j a s , uz MTA levelező t a g j a Szűcs E r v i n a m ű s z a k i t u d o m á n y o k d o k t o r a © Di'. L o v á s z László —Gács P é t e r , 1978 ETO: 511.1 512.1 519.1 r S B N : 963 10 2067 :!

Felelős k i a i l ő : Soli Stiwlnr igazgat ö l'Ylelős s/.ei keszl ő: Oláli (ryulúné limár

(4)
(5)

-Tartalomjegyzék

Bevezetés 9 1. fejezet. Kombinatorikai algoritmusok 15 1.1. Szortírozás 17 1.1.1. Beszúrás 17 1.1.2. Összefésülés 18 1.1.3. Sorbarendezés 19 1.1.4. Átrendezés cserékkel 22 1.1.5. Legnagyobb és következő elemek 1.1.6. Mediánskeresés 27

1.2. A pakolási probléma 29

(6)

1.2.2. Intervallumpakolás 33 1.2.3. Párosítások 35 1.3. Útkeresés 39 1.3.1. Összefüggőség 39 1.3.2. A legrövidebb út 41 1.3.3. A leghosszabb út 44 1.4. Szuboptimális algoritmusok 41 1.4.1. A hátizsákfeladat 41 1.4.2. A fedési feladat 49 1.4.3. A kromatikus szám 53 1.5. Gráfok diagnosztikája 54 1.5.1. Összefüggőség 55

1.5.2. Kieséses verseny és egy rokon feladat 51 1.5.3. A probléma általánosítása 60

2. fejezet.

Kereső feladatok 63

2.1. A problémák problémája 64

2.1.1. Ahol egy kismadár is segíthet 64

2.1.2. A kielégíthetőség problémája — univerzális feladat 66 2.2. Nehéz kombinatorikai feladatok 10

2.2.1. Közvetlen átfogalmazás 10 2.2.2. A háromszín-probléma 11 2.2.3. A pakolási probléma 13 2.3. Áttekintés 74 3. fejezet. Algebrai algoritmusok 79

3.1. Gyorsabban is lehet szorozni 80 3.1.1. Nagy számok szorzása 80 3.1.2. Nagy mátrixok szorzása 82 3.1.3. Polinomok szorzása 85

3.1.4. A véges Fourier-transzformált 88 3.2. Osztás helyett szorzás 90

3.2.1. Számok osztása 90

3.2.2. Hatványsorok és polinomok osztása 92 3.2.3. Az euklidészi algoritmus 91

(7)

3.3. Polinomok kiértékelése 106 3.3.1. Pan alsó becslései 107 3.3.2. Prekondicionálás 113

3.3.3. Tabellázás és fordítottja, az interpoláció 117 3.4. Párhuzamos számolás 123

3.5. Moduláris algoritmusok 130 3.5.1. A kínai maradéktétel 130

3.5.2. Lineáris egyenletrendszer pontos megoldása 137 4. fejezet

A kiszámíthatóság elméletéről 145

4.1. Az algoritmikus megoldhatóság 145 4.1.1. Az algoritmus fogalma 146

4.1.2. Az univerzális gép. A megállási feladat 148 4.1.3. Egyszerű eldönthetetlen feladatok 150 4.2. A számolások terjedelméről 153 4.2.1. A terjedelem mérése 156 4.2.2. Optimális algoritmusok 158 4.2.3. Alsó becslések 160 Feladatmegoldások 163

7

(8)
(9)

Bevezetés

Az algoritmus legáltalánosabb értelemben nem más, m i n t terv-szerűség. H a egy elvégzendő cselekvéssorozatot lépésről lépésre előre átgondolunk, megtervezünk, ú g y is m o n d h a t j u k , hogy algo-r i t m u s t a d u n k egy bizonyos cél eléalgo-réséalgo-re. E g y épület tealgo-rve, v a g y egy ételrecept — ilyen legtágabb értelemben v e t t algoritmus. Algo-r i t m u s t követ a futballbíAlgo-ró, amikoAlgo-r méAlgo-rkőzést vezet — hiszen előre el v a n tervezve, méghozzá n e m is ő maga, h a n e m a j á t é k szabályai m o n d j á k meg, hogy milyen szituációban m i t kell ítélnie. Sok m i n d e n n a p i tevékenységünk szigorúan véve n e m algoritmikus. Megállhatunk közben töprengeni, vagy a k á r csak m a g u n k elé me-redni, h á t h a „ b e u g r i k " egy jó ötlet. H a azonban sokszor kell őket végrehajtani, előbb-utóbb „algoritmizál" az ember. G o n d o l j u n k például a csomagolásra valamilyen utazáshoz, v a g y egy t á r g y keresésére a lakásban. E g y tevékenységet csak akkor m o n d u n k teljesen algoritmizáltnak, ha m á r p o n t o s a n leírtuk, elterveztük,

9

(10)

hogy milyen lépéseket fogunk v é g r e h a j t a n i (esetleg a korábbi lé-pések eredményétől függően); v é g r e h a j t á s közben t o v á b b i módo-sításra vagy gondolkodásra nincs szükség.

Nemcsak fizikai tevékenységet, hanem gondolatit is lehet ter-vezni, „algoritmizálni". A bolti pénztáros, h a visszaad, egy egyszerű algoritmust követ, melynek segítségével végül is e l j u t t a t j a a vá-sárlónak a visszajáró p é n z t . E g y hivatal eljárási r e n d j e , egy zene k o t t á j a , egy bridzs-licitrendszer — algoritmusok. Persze sok ezek közül nem elégíti ki a szigorúbb kikötéseket: u g y a n a b b ó l a kottából u g y a n a z t a zenét sokféleképpen le lehet játszani, u g y a n a b b ó l a lapból ugyanazzal a licitrendszerrel lehet kis szlemmet játszani és n a g y szlemmet bukni. Mindezek a tevékenységek érdekességüket, sőt é r t e l m ü k e t vesztenék, h a teljesen algoritmizálva v o l n á n a k .

A legjobb p é l d á k a t a m i n d e n n a p i életben használatos algo-r i t m u s o k algo-r a a m a t e m a t i k a szolgáltatja. H o g y a n a d u n k (vagy szoalgo-r- szor-zunk) össze k é t s z á m o t ? M e g t a n u l t u n k r á egy mindig működő, p o n t o s a n leírt, gépiesen v é g r e h a j t h a t ó eljárást, egy algoritmust. Ugyanez a helyzet az osztással, a gyökvonással, a háromszög t e r ü -letének kiszámításával, a százalékszámítással stb. Az általános iskolai m a t e m a t i k a a n y a g , de még részben a középiskolai is, főként algoritmusokat t a n í t az ilyen gyakran felvetődő feladatok meg-oldására.

T a l á n meglepő egy „Algoritmusok" c. k ö n y v részéről, h a ezzel a gyakorlattal k a p c s o l a t b a n kételyeknek ad hangot. Véleményünk a z o n b a n az, hogy az emberi szellemi tevékenység lényege n e m algo-ritmusok v é g r e h a j t á s a , h a n e m algoalgo-ritmusok alkotása. Természetes, hogy bizonyos a l a p v e t ő algoritmusokat (összeadás, szorzás) min-denkinek ismernie kell. Azonban éppen az a l a p f e l a d a t o k a t olyan sokszor, a n n y i r a változó körülmények k ö z ö t t kell megoldanunk, hogy egy a d o t t a l g o r i t m u s t — akár a legközönségesebbet, például a szorzásét — legjobbnak, „egyedül üdvözítőnek" deklarálni n e m lehet. É p p e n a szorzással kapcsolatban látni fogjuk, hogy n a g y o n sok jegyű számok szorzására v a n gyorsabb, jobb eljárás, m i n t amit az iskolában t a n u l t u n k ! Ilyen sok jegyű számok szorzására m a t a l á n még nincsen szükség, de ahogy a számítások mennyisége növekszik — a hibák halmozódása m i a t t —, a pontosságot, t e h á t a jegyek s z á m á t is növelni kell.

K ö n y v ü n k célja sem az, hogy algoritmusok lexikonja legyen. Sok f e l a d a t r a a d u n k algoritmust, némelyekre t ö b b különbözőt is, de ezek főként p é l d a k é n t szolgálnak. F ő célunk az, hogy az olvasó arról k a p j o n képet, h o g y a n is kell algoritmust keresni, tervezni egy-egv feladat megoldására.

Az algoritmus, most m á r a szűkebb, precíz m a t e m a t i k a i érte-lemben véve, önálló m a t e m a t i k a i létező. E g y algoritmus meg-vizsgálható sokféle szempontból (gyorsaság, tárigény stb.), két

(11)

algoritmus összehasonlítható, sőt olyan kérdések is felvethetők, hogy egy f e l a d a t megoldására alkalmazható összes lehetséges algo-ritmusok közül a d o t t szempontból melyik a legjobb (vagy van-e egyáltalán legjobb). V a g y : létezik-e egyáltalán algoritmus egy-egy f e l a d a t megoldására? Az ilyen vizsgálatok még gyerekcipőben járnak, de ezek a l k o t j á k az algoritmusok elméletének legérdekesebb fejezeteit. E k ö n y v b e n igyekezni fogunk az ilyen eredményekből is legalább ízelítőt adni.

Az előbb m á r e m l í t e t t ü k a számítógépeket, de részletesebben is kell szólnunk róluk, mivel az algoritmusok elméletében és gya-k o r l a t á b a n e g y a r á n t forradalmi változást hoztagya-k.

B á r „ a l g o r i t m u s o k " (tervszerűség) mindennapi életünkben is lépten-nyomon előfordulnak, és szűkebb értelemben v e t t , mate-m a t i k a i algoritmate-musokat mate-m á r a görögök is a l k o t t a k , az algoritmate-mus fogalmának precíz megalkotására csak az 1930-as években k e r ü l t sor. E k k o r bizonyította be Church, hogy v a n olyan feladat, amely algoritmussal n e m oldható meg. Az az algoritmusfogalom, melyet ennek az időszaknak a m a t e m a t i k a i logikusai használtak, kelle-metlenül bonyolult volt és egyáltalán n e m szemléletes.

Ma m á r szinte mindenki hallott, olvasott vagy t a n u l t arról, hogy hogyan működik egy elektromos számítógép; egyre t ö b b e n írtak m á r p r o g r a m o t is. í g y egyre t ö b b olyan ember v a n , akinek számára igen szemléletessé teszi az algoritmus f o g a l m á t a követ-kező kijelentés: algoritmus az olyan eljárás, amely számítógépre programozható. E z persze nem m a t e m a t i k a i definíció, de azzá te-hető, ha a számítógép f o g a l m á t pontosan leírjuk, és ezt f o g j u k tenni k ö n y v ü n k vége felé.

A számítógépek az algoritmusok a l k a l m a z h a t ó s á g á t sokszoro-sára növelték. Olyan méretű feladatoknál, melyek a számítógépek megjelenése előtt megoldhatók voltak, a teljes gépesítés n e m okvet-lenül volt előnyös, hiszen az algoritmus „ l e f u t t a t á s á t " , a gépies számítási m u n k á t is embernek kellett végeznie, és jelentősen növel-h e t t e a növel-hatékonyságot, növel-ha ez az ember is ügyeskednövel-hetett, kinövel-hasz- kihasz-n á l h a t t a m e kihasz-n e t közbekihasz-n az előre kihasz-n e m l á t h a t ó egyszerűsítési lehető-ségeket. A gépek megjelenése m e g v á l t o z t a t t a a helyzetet: sokkal nagyobb, bonyolultabb számítási, adatfeldolgozási f e l a d a t o k a t t u d -nak megoldani, m i n t az ember m a g á b a n , de ehhez pontosan, egy-értelműen megfogalmazott programra, algoritmusra v a n szükségük. Ezek az algoritmusok a gépek nélkül gyakorlatilag h a s z n á l h a t a t -lanok, ezért k o r á b b a n a megfelelő feladatok fel sem v e t ő d t e k . A gép így a z t á n olyan m u n k á k a t is á t v á l l a l h a t o t t az embertől, melyekről az ú g y érezte, hogy intelligenciája, nemformális ítélő-képessége l e g j a v á t követelik tőle (pl. a piaci döntéseket).

Eléggé e l t e r j e d t az a vélemény, hogy n é h á n y d ö n t ő p o n t o n az e m b e r t sohasem lehet gépekkel helyettesíteni. A kérdésnek

11

(12)

természetesen csak olyan feladatok esetén v a n értelme, amelyek a gépek számára egyáltalán megfogalmazhatók. H a elfogadjuk, hogy e feladatok megoldására az emberek is algoritmust használ-nak, akkor a helyettesítésnek csak gyakorlati a k a d á l y a lehet: az, hogy mi ezeket az algoritmusokat nem i s m e r j ü k (csak h a s z n á l j u k : k ö n n y e b b megtanulni pingpongozni, mint leírni, h o g y a n kell jól pingpongozni), vagv nem rendelkezünk elvégzésükhöz szükséges megfelelő mennyiségű és s t r u k t ú r á j ú gépi számolási kapacitással. Röviden: hogy az emberi agy a gépeknél minőségileg bonyolultabb módon dolgozik. Van olvan álláspont is, hogy az igazán magas-rendű emberi tevékenységek nem algoritmizálhatok: eredendően nem formálisak. Akárhogyan vélekedünk is ezekről a kérdésekről, algoritmusokat g y á r t a n i a legkülönfélébb célokra — kétségtelenül hasznos tevékenység, és nincs izgalmasabb dolog, m i n t megfelelő algoritmusok segítségével utolérni az embert valamilyen bonyolult f u n k c i ó j á b a n (pl. az élőbeszéd áttétele írásba).

Az algoritmusok készítése iparrá lett. Altalános rendeltetésű programok, a gépekkel e g y ü t t vagy külön, piacon vásárolhatók. Vannak cégek, melyek kizárólag programkészítéssel foglalkoznak megrendelésre.

K ö n y v e k , folyóiratok folyamatosan közölnek algoritmusokat. A „Communications of t h e ACM" nevű folyóirat sok év óta egy-séges rendszer szerint számozza az általa közölt algoritmusokat: visszatér r á j u k ú j a b b számolási tapasztalatok, j a v í t o t t változatok megjelenése alkalmából. (Algoritmusgyűjteménye e f a j t á b a n egye-dülállónak számít.)

Végül n é h á n y szót a szükséges előismeretekről. Feltételezzük, hogy az olvasó t i s z t á b a n v a n az algebra és k o m b i n a t o r i k a alap-fogalmaival. E g y - k é t helyen lineáris algebrai ismeretekre is épí-tünk. N e m k í v á n u n k jártasságot a számítógép-programozásban, de feltételezzük, hogy az olvasó ismeri a következő, egy számítógép működésének és programozásának megértésénél alapvető fogal-m a k a t : központi és h á t t é r t á r (fogal-mefogal-mória), blokkdiagrafogal-m.

A felhasznált algebrai, számelméleti és k o m b i n a t o r i k a i isme-retanyag kifejtése m e g t a l á l h a t ó a következő könyvekben:

Birkhoff—Bartee: A modern algebra a s z á m í t ó g é p - t u d o m á n y b a n .

Műszaki K ö n y v k i a d ó , 1074.

Busacker—Saaty: Véges gráfok és hálózatok. Műszaki Könvvkiacló.

1969.

W. Mayeda: A l k a l m a z o t t gráfelmélet. Műszaki K ö n y v k i a d ó , 1976. Andrásfai Béla: ismerkedés a gráfelmélettel. T a n k ö n y v k i a d ó ,

1971.

Rózsa Pál: Lineáris algebra műszaki alkalmazásokkal. 2. kiadás.

(13)

Anthony Ralston: Bevezetés a numerikus analízisbe. Műszaki

K ö n y v k i a d ó , 1969.

Azok számára, akiknek érdeklődését sikerült felkeltenünk az algoritmuselemzés témaköre iránt, elsősorban

Trahtenbrot: Algoritmusok és a b s z t r a k t a u t o m a t á k (sajtó alatt),

v a l a m i n t D . K n u t h — magyarul eddig még meg nem jelent — könyvét a j á n l j u k :

Donald Knuth: The a r t of computer programing (Addison —

Wesley)

I. F u n d a m e n t a l algorithms I I . Seminumerical algorithms I I I . Sorting and searching

(14)
(15)

1. fejezet

Kombinatorikai algoritmusok

A s a k k j á t é k feltalálójának j u t a l m u l f e l a j á n l o t t a a perzsa sah, hogy azt kérhet, a m i t akar. „Szerény leszek, ó, királyok k i r á l y a " — válaszolta ó'. „Tégy a s a k k t á b l a első mezejére egy búzaszemet, a másodikra k e t t ő t , a h a r m a d i k r a négyet, a negyedikre nyolcat és így t o v á b b , minden soron következőre kétszer a n n y i t , m i n t a megelőzőre. Csak ennyi b ú z á t k é r e k ! " N a g y volt a sah meg-lepetése, amikor kiderült, hogy nemcsak a búza n e m f é r t volna el a t á b l á n , de az idők kezdetétől n e m t e r m e t t még a n n y i búza (264— 1 szem), a m e n n y i t a feltaláló k é r t !

Egyszerű k o m b i n a t o r i k a i feladatok könnyen vezetnek ilyen elképesztően nagy számokhoz. Ahhoz, hogy egyszerű k o m b i n a t o -rikai kérdésekre választ adhassunk, g y a k r a n kellene ilyen elképesz-tően sok esetet megvizsgálnunk.

Sok k o m b i n a t o r i k a i f e l a d a t t a l találkozunk r e j t v é n y f e j t é s köz-ben. P é l d á u l : jussunk á t egy labirintuson. H a minden elágazásnál

(16)

minden lehetséges i r á n y t végig a k a r u n k próbálni, nagyon-nagyon sokáig kellene próbálkoznunk.

A gyakorlott r e j t v é n y f e j t ő persze nem néz végig minden esetet. Ötletei v a n n a k (pl.: a labirintus jobb feléről a bal felére csak két helyen lehet egyáltalán á t j u t n i , t e h á t ezek valamelyikén feltét-lenül á t kell, hogy h a l a d j u n k ) , elképzelései, megérzései (erre jó lehet menni, mert sok lehetőség van a folytatásra), sőt megpróbálja kitalálni a rejtvénykészítő gondolatait. A szokásos rejtvényeknél ez a kellemes a g y m u n k a és az izzadságos, u n a l m a s ,.esetszétválasztás" a r á n y b a n v a n n a k egymással. De kezdjük csak el növelni a labirintus méreteit! A megvizsgálandó esetek száma gyorsan nő, m i n t a búza-szemeké a s a k k t á b l a mezőin; hamarosan nemcsak hogy túlságosan hosszúvá és unalmassá, h a n e m megoldhatatlanul b o n y o l u l t t á válik a feladat.

Pedig ilyen „ k o m b i n a t o r i k u s " , t e h á t véges halmazokkal, s t r u k t ú r á k k a l , „kombinálgatással" foglalkozó feladatok a gyakor-latban is igen fontosak. H o g y a n állítsuk össze a vasúti menet-rendet Milyen sorrendben j á r j a be a h á z a k a t a levélkézbesítő? Hogyan osszuk szét a termelési f e l a d a t o k a t a vállalatok között? Néhány vonat, ház, vállalat esetében a (bizonyos szempontból) optimális megoldás megkeresése a k á r érdekes r e j t v é n y f e j t é s is lehet.

De egy város vagy ország méreteiben?

Az ilyen kérdéseket a modern számítógépek t e t t é k megköze-líthetővé. E z e k k ö n n y e n végigvizsgálják az esetek millióit, így mentesíthetik az e m b e r t a gépies, unalmas m u n k á t ó l .

Persze, a gép csak azt csinálja, a m i t „ m o n d a n a k " neki. A r e j t v é n y f e j t é s h e z szükséges ötleteket az embernek kell kitalálni és a gépnek „ m e g t a n í t a n i " . A feladat megoldásában segítséget n y ú j t ó ötletek, egyértelmű és precíz utasításokként megfogal-m a z v a : ez az algoritmegfogal-mus.

K o m b i n a t o r i k u s algoritmusokat nem is nagyon vizsgáltak módszeresen a számítógépek megjelenése előtt; más szóval, senki sem v e t t e m a g á n a k a fáradságot, hogy a „ r e j t v é n y f e j t é s " közben használt ötleteket összegyűjtse és tanulmányozza. í g y a z t á n elő-állt az a helyzet, hogy még m a sem t u d j u k teljes egészében meg-válaszolni az olyan egyszerű kérdéseket, mint „ H o g y a n jó n dolgot s o r b a r e n d e z n i ? " vagy „ H o g y a n jó kiválasztani felülről a 10-ediket egy listából?" (Míg pl. az égitestek pályaszámításairól, vagy igen bonyolult, folytonos, de nem differenciálható függvények létezé-séről igen sokat t u d u n k . )

E fejezetben n é h á n y ilyen alapkérdésre keresünk választ. Sok példánk a legtöbbet vizsgált kombinatorikus s t r u k t ú r á k , az ún. gráfok köréből való. A gráfok igen általános, az elmélet és

gya-korlat m a j d n e m minden területén előforduló s t r u k t ú r á k . (Bizonyos dolgok. melyek között e g y f a j t a kapcsolat, reláció áll f e n n : gráf.)

(17)

H a az olvasó mégis túlzásba v i t t n e k t a r t a n á a gráfok szerepelte-tését, legyen elnéző az egyik szerző e személyes s z i m p á t i á j a i r á n t . K ö n y v ü n k célja, hogy az algoritmusok elméletének helyzetéről, erejéről, fejlettségéről, módszereiről k é p e t a d j o n , s így j o b b össze-hasonlítási a l a p o t k a p u n k , h a p é l d á i n k a t egy fogalom köré csopor-t o s í csopor-t j u k .

1.1.

Szortírozás

1.1.1.

Beszúrás

E l k é s z í t e t t ü n k egy listát n— 1 dologról (pl. egy névsort). E z u t á n k a p u n k egy w-ediket, és ezt a helyére a k a r j u k tenni. E z ú g y értendő, hogy a listán szereplő bármely dologgal össze-hasonlítva meg kell t u d n u n k mondani, hogy előtte vagy u t á n a következik-e. H o g y a n csináljuk ezt?

A' legegyszerűbb eljárás végigszaladni a listán, amíg az első olyan dologhoz nem érünk, amelyet a beszúrandó m á r n e m előz meg, ekkor a szóban forgó w-ediket ez elé tesszük. E z az eljárás néha lehet, hogy a legjobb, de v a n egy h á t r á n y a : n a g y o n sok (a legrosszabb esetben n, á l t a l á b a n nl2) összehasonlítást igényel. H a a helyzet olyan, hogy két dolog összehasonlításához hosszabb s z á m í t á s t vagy kísérletet kell végeznünk, érdemes m á s k é p p e n eljárni.

Egyszerűség kedvéért t e g y ü k fel, hogy n = 2k (ha n n e m ilyen alakú, akkor f i k t í v dolgokat odaképzelve a sor végére w-et ki-egészítjük 2-nek legközelebbi h a t v á n y á v á ) . Hasonlítsuk össze az ú j dolgot a középső elemmel; legyen pl. az eredmény az, hogy az ú j elem megelőzi a középsőt. E k k o r m á r csak az első 2A_1 — 1 elem közé kell beszúrni az ú j a t . I s m é t összehasonlítva ezek közül a

kö-zépsővel, sikerült 2k~2 — 1 elem közé való beszúrásra redukálni

a f e l a d a t o t . Hasonlóan t o v á b b m e n v e , ¿ — 1 összehasonlítás u t á n „egy elem közé való beszúrásra" v a n csak szükség, amihez 1 össze-hasonlítás kell. í g y a k lépésszám n-nel kifejezve: & = log2 n, vagy ha n nem volt 2-nek h a t v á n y a , a k k o r k a log2 n-re következő leg-első egész szám, melyet [log2 w|-nel jelölünk.

Az összehasonlítások s z á m a ezzel igen lecsökkent az első el-járáshoz képest, pl. 1000 dolog esetén 1000 helyett 10-re. E n n e k fejében a programozás bonyolultabbá vált. M e g m u t a t j u k most, hogy az összehasonlítások s z á m á t n e m lehet t o v á b b csökkenteni. E z a meggondolás igen egyszerű p é l d á j a lesz egy g y a k r a n hasz-n á l h a t ó módszerhasz-nek: hogyahasz-n k ö v e t h e t j ü k hasz-nyomohasz-n az egyes lépések u t á n rendelkezésünkre álló információ mennyiségét.

2 A l g o r i t m u s o k

(18)

K e z d e t b e n semmit sem t u d u n k arról, hogy hová kell beszúrni az ú j elemet. Tegyük fel, hogy elvégeztünk egy összehasonlítást

71 -f- 1

a j-edik elemmel; m o n d j u k — — . E k k o r vagy az adódik, ¿i

hogy ez előtt, vagy hogy ez u t á n van az ú j . A d ó d h a t az, hogy u t á n a ; ekkor még j elem közé kell az ú j a t beszúrni, amelynek ezen elemekhez való viszonyáról s e m m i t n e m t u d u n k , így közöttük bárhol lehet. Hasonlóan t o v á b b m e n v e l á t j u k , hogy l lépés u t á n , h a nincs szerencsénk, még mindig v a n legalább nj2'— 1 egymás u t á n i elem, amelyeknek az újhoz való viszonyáról nem t u d u n k semmit. Ez még ¿ = pog2 n\ — 1 esetén is legalább egy elem, ennél t e h á t t ö b b lépés kell. 1.1. feladat: 16 l á t s z a t r a e g y f o r m a p é n z d a r a b k ö z ö t t egyik h a m i s , k ö n n y e b b a t ö b b i n é l . E g y e g y k a r ú , skálás mérlegen k ö z ü l ü k a k á r h á n y é r m e összsúlyát m e g t u d j u k h a t á r o z n i , és ebből m e g á l l a p í t a n i , h o g y közt ü k v a n e a h a m i s . K e r e s s ü k m e g a h a m i s p é n z közt m i n i m á l i s s z á m ú m é -réssel. H a s o n l í t s u k össze f e l a d a t u n k a t a beszúrási f e l a d a t t a l . 1.2. feladat: K e r e s s ü k m e g 27 p é n z d a r a b k ö z ü l a h a m i s a t , h a egy k é t -k a r ú m é r l e g ü n -k v a n , súlyo-k n é l -k ü l !

1.1.2.

Összefésülés

Rokon probléma a következő: van két, n hosszúságú listánk; egyesítsük ő k e t ! I s m é t az a helyzet, hogy a listán szereplő dol-goknak v a n egy jól meghatározott sorrendje, és két dolgot össze tudunk

hasonlítani. Szeretnénk kevés összehasonlítással megvalósítani az

összefésülést.

Legyen a két lista (xv . . ., xn) és (yv . . ., yn). E l j á r á s u n k a kö-vetkező. Hasonlítsuk össze az yx elemet rendre cLZ «J/j j Xn y • • • ele-mekkel, míg meg n e m t a l á l j u k az első olyat, m o n d j u k x2-t, melyet megelőz; ekkor t e g y ü k be , yre t x2 elé. Hasonlítsuk össze e z u t á n

az #2, #35 • • • elemekkel, amíg egy olyat nem találunk, melyet

y2 megelőz; t e g y ü k be y2-t ez elé stb.

Megjegyezzük, hogy az eljárás kellemetlen t u l a j d o n s á g a , hogy

az xt elemeket sokszor meg kell mozgatni. Ezen segíthetünk, h a

,,plusz" t á r a t használunk. E k k o r az eljárás így írható le: Hason-lítsuk össze a két első elemet. í r j u k le azt, amelyik megelőzi a má-sikat egy külön helyre, és egyben töröljük is az eredeti helyéről. Ismételjük ezt, míg valamelyik lista el n e m fogy, a másik lista m a r a d é k á t í r j u k át az ú j lista végére. E z t az eljárást alkalmazva, minden elemet csak egyszer mozdítunk meg.

(19)

1.3. feladat: G o n d o l j u k á t , h o g y a második e l j á r á s az elsőtől csak .-íz a d a t o k m á s elhelyezésében k ü l ö n b ö z i k .

H á n y összehasonlítást végzünk így? Minden összehasonlí-t á s n á l egy elem kerül az ú j lisösszehasonlí-tára; az uösszehasonlí-tolsó, a 2w-edik elemhez m á r n e m is kell összehasonlítás. í g y legfeljebb 2n — 1 összehason-lításra volt szükség.

K ö n n y ű m e g m u t a t n i , hogy 2n — 2 összehasonlítás n e m mindig elegendő. T e g y ü k fel, hogy végső sorrendnek (xv yv x2, y2, ...

. . ., xn, yn) adódik. E k k o r i t t bármely k é t szomszédos elem összehasonlítását el kellett, hogy végezzük az eljárás során, m e r t más összehasonlításokból a s o r r e n d j ü k r e k ö v e t k e z t e t n i n e m lehet.

1.1.3.

Sorbarendezés

Gyakori feladat, hogy n a d o t t dolgot valamilyen szempont szerint sorba kell r a k n u n k . P l . n n e v e t névsorba, v a g y n a d a t o t nagyság szerint. Lehetséges, hogy a dolgoknak valamilyen „ é r t é k e " vagy „ s ú l y a " van, és pl. érték szerint növekvő sorrendbe a k a r j u k r a k n i őket. D e lehet, hogy — mint pl. a névsor esetén — ilyen érték nincsen. Azt fogjuk ezért feltételezni, hogy b á r m e l y két a d o t t dolgot t e k i n t v e , meg t u d j u k mondani, melyik előzze meg a m á -sikat a sorrendben. E z t röviden a két dolog összehasonlításának f o g j u k nevezni.

(I) Első és legtermészetesebb m ó d j a a f e l a d a t megoldásának az, hogy először a dolgokat valahogyan s o r b a r a k j u k , m a j d meg-nézzük, hogy az első és második, a második és h a r m a d i k , . . . ,

( r a - l ) - e d i k és ?i-edik elem sorrendje jó-e. H a mindez jó, akkor az elemek máris megfelelő sorrendben v a n n a k . H a t a l á l u n k két szomszédos elemet, melyek sorrendje n e m megfelelő, ezeket fel-cseréljük. Sajnos, lehet, hogy ezzel egy másik szomszédpár sor-r e n d j e elsor-romlik. Pl. h a hásor-rom egymás u t á n i helyen álló s z á m :

. . . 1 5 22 1 3 . . . ,

akkor a 22 és 13 felcserélése u t á n a 15-nek és rákövetkezőjének sorrendje fordul rosszra. De ú j r a és ú j r a kezdve az e l j á r á s t , véges számú lépés u t á n e l j u t u n k a jó sorrendhez. M e g m u t a t h a t ó ugyanis, hogy a rossz sorrendben levő párok száma minden cserével csökken, így előbb-utóbb elfogy.

1.4. feladat: K é z e n f e k v ő , h o g y az a legrosszabb eset, lia a kiindulá-sul v e t t s o r r e n d é p p e n f o r d í t o t t j a a k í v á n t n a k . P l . a s z á m o k c s ö k k e n ő sor-r e n d b e n v a n n a k , és mi n ö v e k e d ő e n a k a sor-r j u k őket sor-rendezni. E k k o sor-r a f o n t

(20)

leírt e l j á r á s j cserél igényel. B i z o n y í t a n d ó , h o g y á l t a l á b a n legfeljebb (n) (n)

2 I csere kell, és elegendő l e g f e l j e b b ^ I szomszédos p á r t ö s s z e h a s o n l í t a n i . Lehet-e j o b b eljárást találni a s o r b a r a k á s r a ?

E z sok mindentől függ. A fenti eljárás könnyen programoz-ható, nem igényel t ö b b tárhelyet, m i n t a m e n n y i az a d a t o k elhelye-zéséhez kell, és nem t ú l sok | legfeljebb | egyszerű műveletet igényel.

H o g y szükség v a n - e más eljárásra, azt az h a t á r o z z a meg, mennyire egyszerűek ezek a műveletek. K é t a d o t t „dolog" össze-hasonlítása ugyanis esetleg bonyolult kísérlet v a g y számítás el-végzését igényli. Még h a ilyenre nincs is szükség, d e az össze-hasonlítás végett a gép adatszalagjához vagy lassabb t á r á h o z kell fordulnunk, előfordulhat, hogy két dolog összehasonlítása sokkal, de sokkal d r á g á b b (időigényesebb) dolog, m i n t pl. a dolgokat át-rendezni vagy hosszabb p r o g r a m o t írni. í g y a z t á n felvetődik a kérdés: nem lehetne-e olyan eljárást adni, mely kevesebb

össze-hasonlítással (esetleg t ö b b egyéb jellegű lépés, vagy nagyobb

tár-igény árán) rendezi sorba az elemeket?

(II) K é p z e l j ü k el, hogy a dolgok közül (11— l)-et m á r sorba-rendeztünk és most k a p j u k az »-ediket (mint amikor valaki egyen-ként szedi fel a k á r t y á i t ) . Az /i-edik dolgot kell „beszúrni" vala-hová. Ez, m i n t t u d j u k , [ l o g2» ] lépésben megtehető. Az első n — 1 dolgot ugyanilyen eljárással rendeztük sorba, u t o l j á r a | log2 (n— 1)] összehasonlítás á r á n szúrva be az (n— l)-ediket az első n — 2 közé. Hasonlóan t o v á b b m e n v e l á t j u k , hogy összesen

[log2 n\-f . . . 4-Pog, 3] + [log2 2"H»|"log2 n | összehasonlításra v a n szükség.

1.5. f e l a d a t : I g a z o l j u k , h o g y

[log2 nl + . . . + floga 2] = nfloga n] - "1 + 1.

Ez az eljárás lényegesen kevesebb összehasonlítást igényel, mint az előző; pl. w = 1 0 0 0 esetén 499 500 helyett csak 9001-et. Kellemetlen t u l a j d o n s á g a viszont, hogy minden ú j a b b elem be-szúrásakor, t e h á t n-szer meg kell bolygatni a m á r elhelyezett elemek egy részét (helyet kell csinálni a beszúrt elemnek).

(III) Rendezzük s o r b a az elemek első felét és a második felét, m a j d fésüljük össze a k a p o t t két sorozatot.

1.6. f e l a d a t : I g a z o l j u k , h o g y e n n e k az e l j á r á s n a k a lépésszáma azonos •i (["n eljáráséval

(21)

Mivel összefésülést csak [log2 n]-szer kellett v é g r e h a j t a n u n k , a (II) eljárással szemben egy elemet csak [log2 n]-szer kell meg-bolygatnunk. Ezzel szemben i t t pótlólagos t á r r a v a n szükség az összefésülés elvégzéséhez.

Lehet-e ennél „ j o b b " , vagyis kevesebb összehasonlítással dol-gozó algoritmust adni ? M e g m u t a t j u k , hogy lényegesen j o b b a t nem. Tegyük fel, hogy v a n egy eljárásunk, mely m e g a d j a a sorrendet. Nézzük meg, h á n y összehasonlításra v a n szükség. E v é g e t t gon-doljuk meg, hogy m i t t u d u n k , m e n n y i információnk v a n a sor-rendről az egyes összehasonlítások u t á n . Mielőtt nekikezdenénk, az n dolognak bármely sorrendje elképzelhető s z á m u n k r a , így n\ lehetőség v a n . Az összehasonlítások sorozatával azt szeretnénk elérni, hogy egy h í j á n minden lehetőség ki legyen zárva. Az első összehasonlítás az n\ esetnek pontosan a felét z á r j a ki. A későbbi összehasonlításoknál ez m á r nem okvetlenül áll; de kedvezőtlen esetben a lehetőségeknek legfeljebb a fele z á r h a t ó ki. Az össze-hasonlításkor ugyanis az addig még szóba jövő esetek k é t osztályra bomlanak aszerint, hogy mi az összehasonlítás eredménye. N e m t u d j u k , m e k k o r a ez a két osztály, de h a az összehasonlítás u t á n a n a g y o b b i k b a tartozó sorrendek m a r a d n a k , akkor a szóba jövő esetek száma kevesebb, m i n t felével csökkent.

í g y t e h á t k összehasonlítás elvégzése u t á n előfordulhat (azaz a k á r h o g y a n is végezzük az összehasonlításokat, v a n olyan eset,

amikor előfordul), hogy még legalább n\/2k sorrend szóba jöhet,

ELZ8LZ duZ eddigi összehasonlításokkal összhangban van. H a

eljárá-sunk N összehasonlítással biztosan célba ér, azaz N összehasonlítás u t á n m á r biztosan csak egy sorrend lehetséges, akkor t e h á t f e n n kell álljon, hogy

n\/2N^l, azaz

- Z á l o g a (7i!) = l o g2í i + log2 ( n - l ) + . . . + l o g2 2.

E z azt m u t a t j a , hogy az a d o t t e l j á r á s b a n szereplő összehason-lítások száma lényegesen m á r nem volna csökkenthető. Foglaljuk össze az eddigieket:

• Tétel: Bármély algoritmus, amely n dolgot sorbarendez, legalább log2 (n\) összehasonlítást kell hogy tegyen. Van olyan logarit-mus, mely log2 (n\) + n— 1 összehasonlítással sorba tudja rakni az n dolgot.

M e g j e g y z é s e k :

1. A fenti bizonyításnak a r r a vonatkozóan, hogy minden sorbarendező algoritmusnak legalább n log2 n összehasonlítást kell

(22)

tenni, információelméleti h á t t e r e van. Az információelméletből ismeretes ugyanis, hogy N t á r g y közül egynek a kiválasztásához (ha mindegyik e g y f o r m á n szóba jöhet) log2 N „ b i t " (egység) infor-máció kell. E s e t ü n k b e n egy összehasonlítás egy ,,bit" inforinfor-mációt szolgáltat. Hasonló feladatok a „keresési p r o b l é m á k " (pl. t ö b b érme közül a hamis kiválasztása mérlegeléssel). E z e k r e i t t most nem t é r ü n k ki. Érdekes összevetni e f e l a d a t o k a t a közkedvelt barkochba j á t é k k a l is.

2. Az á l t a l u n k m e g a d o t t algoritmusok csak kicsit hosszabbak, mint a b á r m e l y algoritmusra érvényes log2 (n\) alsó becslés. A k é t algoritmus kombinációjával F o r d és J o h n s o n még egy kicsit csök-kenteni t u d t a a lépésszámot, de — n a g y n mellett — még mindig v a n egy kis különbség az alsó becslés és algoritmusuk lépésszáma között. A pontos helyzet n e m ismeretes (de ennek persze csak elmé-leti érdekessége van).

3. A fenti tétel állítása a legrosszabb esetre érvényes: m i n d e n sorbarendező algoritmushoz v a n n a k olyan bemenő adatok, hogy ezeken az algoritmusnak log2 (n\) d a r a b összehasonlítást kell tennie. K é r d e z h e t n é n k azonban, nincs-e olyan algoritmus, ami á t l a g b a n

— ha az összes sorrendet egyenlően valószínűnek t e k i n t j ü k — kevesebb összehasonlítást végez. Információelméleti gondolatme-nettel m e g m u t a t h a t ó , hogy nincs.

V a n n a k olyan algoritmusok, amelyek a legrosszabb esetben 'fyi'yy J \

— ~ r — - összehasonlítást követelnek, átlagban pedig csak c-log2 (n\)

¿i

darabot. Az átlagos lépésszám meghatározása sokszor f e j l e t t m a t e -m a t i k a i t e c h n i k á t igényel. Az 1.1.4. p o n t példája a legegyszerűbbek közé tartozik.

1.1.4.

Átrendezés cserékkel

A most következő példa elsősorban azt illusztrálja, hogy lehet egy algoritmus átlagos lépésszámát kiszámolni.

A feladat u g y a n a z , m i n t az előbb: a d o t t n különböző szám, Kx, Ko, • . •, Kn, melyeket növekvő sorrendbe kell átren-dezni.

A következő algoritmust használjuk.

1. fázis (a Kx szám a helyére kerül):

1. csere: A Kx számot összehasonlítjuk Jf^-nel. H a Kri>K1, akkor t o v á b b l é p ü n k , és jírn_rgyel hasonlítunk össze. H a

megint t o v á b b l é p ü n k stb. H a pl. akkor Kvet

(23)

le a sorozat k é t végéről azokat a részeket, amelyekkel ü ^ - e t m á r nem kell hasonlítani):

Kn-Z 1-^2^3 • • • %

2. csere: A csere u t á n 7 ^ - e t a legelső olyan számmal h a s o n l í t j u k

össze, amivel még nem h a s o n l í t o t t u k : p é l d á n k b a n A"2-vel. H a K1s~K2, akkor t o v á b b l é p ü n k és Kret Krmal h a s o n l í t j u k össze stb. H a pl. Ks>Klt akkor Kx-et kicseréljük A"s-tel. Az ú j sorozat:

Kn_2K2K3Kt|KJ^g .. . Kn_,s\KsKn_1Kn.

3. csere: Most / f1- e t megint a legutolsó olyan számmal hasonlítjuk össze, amivel még eddig n e m volt összehasonlítva és lefelé h a l a d u n k , amíg cserére nem kerül sor.

4. csere: A esere u t á n / fre t a legelső ú j számmal hasonlítjuk össze s t b .

Végül / fre t m á r a sorozat minden elemével összehasonlítottuk és a nála n a g y o b b a k m i n d mögé, a nála kisebbek pedig elé kerültek. H a pl. K1 az i-edik helyre került, a következő kép alakul k i :

LltL2, ..., L,_lt Kt, M1,M2, . . ., Mn_i, ahol

Lx < K1, . . ., Li_1<K1,

K ^ M , K^Mn_t.

Az Lx, . . ., sorozat t a g j a i a K2, . . ., Kn számok közül azok, amelyek ^rn é l kisebbek, M1, .. ., Mn_i t a g j a i pedig azok, melyek üTrnél n a g y o b b a k .

Többi fázis: Ami e z u t á n h á t r a v a n , az külön az Llt L2, . . . , L ^ , és az M1, . . ., Mn_x sorozatok rendezése ugyanezzel a módszerrel. Példa: A sorozat legyen

503, 87, 512, 61, 908, 170, 275.

1. fázis (503 helyre tétele):

1. csere: 275, 87, 512, 61, 908, 170, 897, 503 2. csere: 275, 87 1503, 61, 908, 170, 897| 512 3. csere: 275, 87, 170 ¡61, 908, 503\ 897, 512 4. csere: 275, 87, 170, 61 |503| 908, 897, 512 2.1. fázis (275 helyre tétele):

1. csere: 61] 87, 170, 275 2.2. fázis (908 helyre tétele): 1. csere: 5121 897, 908

(24)

Eredeti formájában ez az algoritmus, r e k u r z í v , azaz önmagára hivatkozást tartalmaz. Ilyen algoritmusra nem lehet blokkdiagra-m o t írni. A z ábra blokkdiagrablokkdiagra-mja a r e k u r z i ó t iterációvá oldja fel. Bemenetkor: Kv . . . , Kn k ü l ö n b ö z ő számok.

Kimenet: Kv ..., Kn: ugyanezek a számok j ó s o r r e n d b e n .

Segédváltoiók: Tlt .... Tn, 0 vagy 1 é r t é k e k e t v e h e t n e k fel. /, m egész

számok 1 és n k ö z ö t t . K a Ka, . . ., Kn számok valamelyike.

Megjegyzés: A z eljárás folyamán T, = 1, ha a K; szám már nagyság

szerint is az í-edik.

E n n e k az algoritmusnak sok előnye van, pl. hogy az egész 1. fázisban u g y a n a z t a Kt számot kellett a többivel összehasonlí-tani. E z é r t érdemes kiszámítani, hogy az algoritmus á t l a g b a n h á n y összehasonlítást igényel? T e g y ü k fel, hogy a Kx, K2, ..., Kn számok minden lehetséges nagysági sorrendje e g y f o r m á n

való-színű. Az első fázisban Kx-et az összes többi számmal össze kell

hasonlítani, ez n— 1 összehasonlítás. K ö n n y ű belátni, hogy ha pl. az első fázis u t á n az eredmény

Lx, L2, . . ., Lj_ T, K j , M-i, . . ., Mn_,,

(25)

sor-r e n d j e is egyfosor-rmán valószínű; az M1, ..., Mn_t számoké hason-lóan. Jelöljük az n száin sorbarendezéséhez szükséges összehason-lítások átlagos s z á m á t i^(w)-nel! Ekkor, feltéve, hogy Kl az i-edik helyre került, h á t r a v a n még á t l a g b a n F(i — 1) + F(n — i) össze-hasonlítás. Mivel pedig K1 egyenlő valószínűséggel kerülhet bár-melyik helyre, az összehasonlítások átlagos s z á m á r a végül a követ-kező rekurzív f o r m u l á t k a p j u k : F(0) = 0, F{ 1) = 0, F{n) = n-\+-\_F{0) + F{n-\) + F{\) + F{n-2) + F{2) + Tb + F(n - 3) + . . . + F(n - 1) + F(0)J. Egyszerűsítve: n F ( n ) = n ( n - l ) + 2[F(0) + F ( l ) + F ( 2 ) + . . . +F{n-1)]. (1) í r j u k fel u g y a n e z t az egyenlőséget n + l-re.

(n + l)F{n + 1) = {n + l ) w + 2[i^(0) + . . . + F{n)\ (2) V o n j u k ki (l)-ből (2)-t. (n + l)F(n +1) - nF(n) = 2n+ 2 F{n). Á t a l a k í t v a : (n + l)F(n+ l) = 2n+(n + 2)F(n), F(n+1) F(n) 2 n (n+2) ~~ {n + l)~ {n+l){n + 2)'

A d j u k össze a fenti egyenlőséget n = 1 , 2 , . . ., (4— l)-re:

F{k)_ 2-1 2-2 jí-3 2 ( 4 - 1 )

¿ + 1 " 1 ^ 3 +1 T 4 + ' ' ' + k(k+ 1)'

Az olvasó egy kis számolással ellenőrizheti, hogy innen

F(n) = 2(n + l ^ ^ + J ^ j ,

ahol

„ 1 1 1 .

E z é r t a következő aszimptotikus egyenlőséget k a p t u k az átlagos lépésszámra: F(n) ~ 2n In n.

(26)

Érdeken megjegyezni, hogy a szóban forgó algoritmus a leg-71/(TV —— 1) rosszal)!) esethon az összes s z á m p á r t összehasonlítja, t e h á t —• lépést dolgozik. P a r a d o x módon ilyen legrosszabb eset az, ha a Kr, K„, . . K„ számok eleve jó sorrendben v a n n a k , azaz Kx<

1.1

.5.

Legnagyobb és következő elemek

M a r a d j u n k t o v á b b r a is annál a példánál, hogy n dolog van adva, melyeknek v a n egy sorrendje, de ezt n e m ismerjük, és pá-ronként i összehasonlításokat t e h e t ü n k . H á n y összehasonlítást kell t e n n ü n k , hogy a legnagyobb elemet m e g t a l á l j u k ?

A válasz igen egyszerű. Többféle eljárás is a d h a t ó , amely n— 1 összehasonlítással célhoz ér. Tegyük fel, hogy n pingpong-versenyzőről v a n szó, és a lehető legkevesebb mérkőzés lejátszása árán szeretnénk eldönteni, melyikük a legjobb. Feltesszük, hogy a versenyzők erősorrendje egyértelmű, t e h á t két versenyző közül biztosan a jobbik győz. E k k o r k é t f a j t a verseny is rendezhető. (a) Kihívásos verseny. Valaki k i k i á l t j a m a g á t b a j n o k n a k . A b a j n o k o t bárki k i h í v h a t j a . A mérkőzés vesztese a további verse-nyekből kiesik, a győztest ismét bárki k i h í v h a t j a és így t o v á b b . Mikor m á r nincs, aki a győztest kihívja, megvan a legjobb.

(b) Kiesésen bajnokság, a közismert módon.

1.7. feladat: B i z o n y í t s u k be, h o g y m i n d k é t e s e t b e n p o n t o s a n n— 1 j á t s z m á r a v a n szükség a b a j n o k s á g l e b o n y o l í t á s á h o z .

Mármost n — 1 j á t s z m á r a feltétlenül szükség v a n ; hiszen ahhoz, hogy valakiről kijelenthessük, hogy ő a legjobb játékos, minden más játékos valakitől vereséget kell, hogy szenvedjen, ami lega-lább n — 1 j á t s z m á t jelent.

Vizsgáljuk meg most a második legnagyobb elem kiválaszt á s á n a k lehekiválasztőségékiválaszt. K é p z e l j ü k el, hogy lezajlik egy kieséses b a j -nokság. E k k o r a győztes személye nem kétséges; az a z o n b a n m á r v i t a t h a t ó , hogy a d ö n t ő másik résztvevője a második legjobb. Lehet pl. hogy m á r az első fordulóban a két legerősebb versenyzőt sorsolták össze, s így a második legjobb m á r i t t kiesett. Bárki, akit a győztes ü t ö t t el a t o v á b b j u t á s t ó l , igényt t a r t h a t a „második legjobb" címre (más m á r nyilván nem). H a az ilyenek száma

m. akkor ír-— 1 t o v á b b i mérkőzést kell j á t s z a n u n k ahhoz, hogy

kö/.iilhk a legjobbat kiv,''asszuk. í g y a szükséges mérkőzések száma

(,)

- ! ! - í /.'/ - 1 ;.

26

(27)

Mennyi m? Legfeljebb annyi, a h á n y forduló v o l t ; ez pedig, mivel a versenyben m a r a d ó játékosok száma mindig feleződik, [log2 n\ í g y a második legjobb kiválasztásához

í l + [ l o g2 7l\— 2

mérkőzésre v a n szükség. Más szóval, n t á r g y közül, e n n y i össze-hasonlítást végezve, meg t u d j u k adni a második legnagyobbat.

M e g m u t a t h a t ó , hogy ennél kevesebb összehasonlítás (a leg-rosszabb esetben) n e m elegendő; erre i t t nem t é r ü n k ki.

1.1.6.

Mediánskeresés

T e k i n t e t t e l arra, hogy a második legnagyobb kiválasztása nehezebb probléma, m i n t a legnagyobbé, és ez a nehézség a har-madik stb. legnagyobb esetén t o v á b b fokozódik, a z t v á r t á k , hogy a „közepe t á j á r ó l " választani egy elemet (pl. w = 2 m + l esetén az (m-f l)-ediket, a „ m e d i á n s t " ) , m á r nem lehet lényegesen ügyesebben, m i n t az összes elem sorbarendezésével. Meglepő volt ezért Blum, Floyd, Tarjan, Pratt és Rivest azon eredménye, hogy bármely \tr.t^kn esetén ki lehet választani a í-edik elemet w-nel arányos lépésszámú algoritmussal. E z t az algoritmust fogjuk most ismertetni. Az algoritmus maximális lépésszámát l ^ t ^ n esetén ¿(w)-nel jelöljük; ezt m a j d később fogjuk meghatározni.

Legyen £0 a t e k i n t e t t halmaz egy eleme; később £0 kiválasz-t á s á r a még visszakiválasz-térünk. Hasonlíkiválasz-tsuk össze £0-t a halmaz többi elemével; ez n — 1 összehasonlítás. Legyen Sít ill. S2 cLZ íCq" nál nagyobb, ill. kisebb elemek h a l m a z a ; legyen a i - a d i k elem, vagyis

H a k — t, akkor készen v a g y u n k . Tegyük fel, hogy ¿=>í. E k k o r az St halmazból kell a í-edik elemet kiválasztani, a m i t L(k— 1) összehasonlítás á r á n meg t u d u n k tenni. H a ¿ < í , akkor viszont az S2 halmazból kell a (í—¿)-adikat kiválasztani, amihez L(n — k) összehasonlítás elég. í g y legfeljebb

( w - l ) + m a x [ £ ( i - l ) , L(n-k)] (3) összehasonlítás á r á n meg t u d j u k h a t á r o z n i a í-edik legnagyobb

elemet.

H a i t t k vagy n — k közel v a n w-hez, akkor ez a korlát n y i l v á n nem lesz valami jó. Azt kellene ezért elérni, hogy k is, n — k is, m o n d j u k , valahol n l 2 körül legyen.

E z t a:0 alkalmas választásával szeretnénk elérni. Persze ehhez ú j a b b lépésekre lesz szükségünk, de reméljük, nem t ú l sokra.

(28)

Osszuk be az elemekei 5-ös csoportokba (ilyenből lesz; o

egyszerűség kedvéért t e g y ü k fel, hogy n 5-tel osztható), m a j d válasszuk ki m i n d e g y i k 5-ös csoport m e d i á n s á t .

1.8. feiadat: I g a z o l j u k , h o g y 5 elem meciiánsát ki lehet v á l a s z t a n i C> összehasonlítás á r á n , d e k e v e s e b b e l n e m .

6 Tt

E h h e z t e h á t — összehasonlítás kellett. Most válasszuk ki 5

e mediánsok m e d i á n s á t (tegyük fel ismét az egyszerűség kedvéért, hogy n/o p á r a t l a n ) , és legyen ez x0. E h h e z legfeljebb össze-hasonlításra van szükség.

E k k o r 2"0-nál biztosan kisebb azon 5-ös csoportok 3 — 3 alsó eleme, melyek m e d i á n s a x0-nál kisebb; t o v á b b á 2 elem a s a j á t

1 í n \ 3 c s o p o r t j á b a n . E z e k s z á m a t e h á t legalább 3-— j — -f-1 I n, és így 7 7 .-rr-nál n a g y o b b elem kevesebb, m i n t — n v a n . T e h á t k - < — n u o j 10 7

és hasonlóan, M —^ ^ " j q n- E z é r t a t o v á b b i a k b a n (3) szerint leg-feljebb

n+L\-J- n

\ 10

összehasonlítás kell. Összegezve, a szükséges összehasonlítások s z á m a :

E z az egyenlőtlenség lehetőséget ad az

L{n)^22n (4)

egyenlőtlenség teljes indukciós bizonyítására. Kis n értékre ( r e ^ 5 ) ez triviálisan igaz. M á r m o s t ha n-^N-re igaz, a k k o r (4) a l a p j á n :

fi 9 9 7

L(N) s y 4- ^ N + N + 22iAT = 22 N. 5 o 10

A 22-es e g v í i t t h a t ó leszorítható kb. ti-ru, ennek részleteire ;»>*,«mlian m á r nom tériink ki.

(29)

1.2.

A pakolási probléma

1. példa: n dolgot kellene „bepakolni" egy l á d á b a . V a n n a k

azonban olyan párok, melyek bizonyos okok m i a t t n e m férnek össze (erről teljes információnk van). Válasszunk ki maximális számú t á r g y a t úgy, hogy ezeket betehessük a ládába, vagyis közülük bármely k e t t ő összeférjen.

2. példa: Válasszuk ki n ember közül a lehető legtöbbet úgy,

hogy mindegyik ismerje a m á s i k a t !

3. példa: E g y t e h e r a u t ó A városból B városba megy. Ű t j a

m e n t é n v a n n a k az Alt ..., Ak, Blt ..., Bk helyek (nem

okvetlenül ilyen sorrendben). Minden At helyről a megfelelő

Bt helyre el kellene szállítania v a l a m i t ; egyszerre csak egy dolgot szállíthat. Mely szállításokat vállalja el, hogy a lehető legtöbb kívánságnak eleget t u d j o n t e n n i ?

4. példa: E g y bőrből v á g j u k ki a lehető legtöbb (adott alakú)

cipőfelsőrészt!

E z e k b e n a p r o b l é m á k b a n sok közös v a n : ki a k a r u n k választani maximálisan sokat egy összességből, olyan feltételek mellett, hogy bizonyos p á r o k egyszerre nem v á l a s z t h a t ó k ki. A 4. p é l d á b a n : ki a k a r u n k választani maximálisan s o k a t az a d o t t cipőfelsőrész-alak összes lehetséges helyzetei közül úgy, hogy semelyik k e t t ő se f e d j e á t egymást. (Ez a példa a b b a n különbözik a többitől, hogy benne a t e k i n t e n d ő összesség végtelen. H a a z o n b a n eljárást szeretnénk nyerni az optimális elhelyezés meghatározására, a vég-telen sok elhelyezkedés helyett úgyis csak egy elég f i n o m a n fel-osztott, de véges „ l i s t á t " veszünk figyelembe.)

A viszonyokat igen szemléletesen í r h a t j u k le a következő-képpen. Minden dolgot egy p o n t t a l ábrázolunk. H a k é t dolog összeférhetetlen, kössük össze őket egy szakasszal. Az összekötő szakaszokat éleknek fogjuk nevezni. F e l a d a t u n k az, hogy minél t ö b b p o n t o t válasszunk ki úgy, hogy közülük semelyik k e t t ő t ne kösse össze él. Az ilyen p o n t h a l m a z t röviden függetlennek h í v j u k .

A f e l a d a t b a n fellépő, pontokból és az ezeket összekötő élekből álló á b r á k a t gráfoknak nevezzük. A példa a l a p j á n világos, hogy egy gráf esetén csak az lényeges, hogy mely p o n t o k v a n n a k éllel összekötve. í g y az élek a l a k j a , hossza, egyenes vagy görbe volta stb. érdektelen.

A gráfok igen sok helyen előforduló s t r u k t ú r á k . Ú t h á l ó z a t o k , vízvezetékek, elektromos hálózatok természetes módon jellemez-hetők gráfokkal, de éppen példánkból l á t h a t ó , hogy bármilyen helyzet leírására alkalmasak, ahol bizonyos dolgok és k ö z t ü k

(30)

meglevő v a g y nem meglevő e g y f a j t a k a p c s o l a t j á t s z i k szerepet. A g r á f o k t u l a j d o n s á g a i t a k o m b i n a t o r i k a egyik ága, a gráfelmélet vizsgálja. K ö n y v ü n k b e n sok p é l d á t h o z u n k fel a g r á f o k r a v o n a t -kozó f e l a d a t o k köréből, m e r t sok á l t a l á n o s f e l a d a t t í p u s n a k , m i n t é p p e n a m o s t t á r g y a l t pakolási f e l a d a t n a k is, a g r á f o k n y e l v e szemléletes és e g y b e n jól kezelhető m e g f o g a l m a z á s á t a d j a . H a a g r á f o t s z á m í t ó g é p b e n t á r o l j u k , a k k o r persze n e m vihet-jük be a r a j z á t a gépbe. E h e l y e t t a gráf p o n t j a i t az 1, 2, . . ., 11 s z á m o k k a l m e g s z á m o z z u k és egy raXra-es fa.. . - Ö. íj A;,l m á t r i x o t ké- [==J ]=1 p e z u n k , m e l y b e n

í 1, h a az i-edik és j-edik p o n t össze v a n k ö t v e ', J | 0, h a n e m . E z t a m á t r i x o t a gráf adjacencia- (szomszédossági) m á t r i x á n a k n e v e z z ü k . A gráf m á t r i x a i l y e n f o r m á n a f ő á t l ó r a nézve s z i m m e t r i k u s (1. á b r a ) . 2. ábra

(31)

Szóba jöhet más tárolási mód is, például m e g t e h e t j ü k , hogy felsoroljuk az összes p o n t o k a t és éleket. P l . az 1, 2, 3, 4, 5 pon-t o k k a l és (1, 2), (2, 3), (1, 3), (3, 4), (4, 5) élekkel m e g a d o pon-t pon-t gráf a d j a c e n c i a m á t r i x a és r a j z a (2. á b r a ) : ~0 1 1 0 0~ 1 0 1 0 0 1 1 0 1 0 . 0 0 1 0 1 _0 0 0 1 0_

H a az élek s z á m a a pontszámhoz viszonyítva kicsi, ez u t ó b b i tárolási mód gazdaságosabb lehet. E k ö n y v b e n azonban, egy-szerűség kedvéért, csak az adjacenciamátrixos tárolással foglal-kozunk.

T é r j ü n k vissza t e h á t a pakolási problémához: Adott egy G gráf:

válasszuk ki maximális számú független pontját!

1.2.1.

Próbálgatós módszerek

Az általános pakolási f e l a d a t r a igazán jó algoritmus n e m isme-retes; a m i t i t t a d u n k , nem tesz m á s t , m i n t hogy módszeresen végigvizsgálja az összes független halmazokat.

Legyen x tetszőleges pont. A független halmazok kétfélék: vagy t a r t a l m a z z á k x-et, vagy nem. H a 8 olyan független halmaz, amely x-et t a r t a l m a z z a , akkor nyilván n e m metszi x szomszédainak

A halmazát. í g y 8— x a G— A — x g r á f n a k egy független

pont-halmaza. H a x£8, akkor 8 a G—x g r á f n a k független p o n t h a l m a z a . T e h á t h a egy maximális elemszámú független p o n t h a l m a z t a k a r u n k kiválasztani, a következőképpen j á r h a t u n k el.

1. K i v á l a s z t u n k egy x pontot, és meghatározzuk szomszédai-nak A h a l m a z á t .

2. Megkeresünk egy-egy maximális elemszámú független hal-m a z t a G—x és G—A—x g r á f o k b a n ; legyenek ezek 8V ill. S2.

A G—x, G—A—x gráfok kisebbek, m i n t G, így ezekre f e l t e h e t j ü k ,

hogy m á r meg t u d j u k oldani a pakolási f e l a d a t o t .

3. H a $rn e k t ö b b eleme van, m i n t $2nek, akkor Sí, h a u g y a n

-annyi, akkor S2 + x lesz G-nek maximális független részhalmaza.

Ez az eljárás igen sok ( ~ 2 " ) lépést igényel, ezért igen jelen-tősek az olyan fogások, egyszerű észrevételek, melyek ezt rövidítik. Hogy ezeket j o b b a n áttekinthessük, ábrázoljuk az egész eljárást egy ún. bináris fával. Algoritmusunk azzal kezdődik, hogy két ese-tet különbözese-tetünk meg aszerint, hogy x benne van-e a t e k i n t e t t

(32)

3. ábra

halmazban. E z t a kérdést egy karika ábrázolja felül. H a pl. igen a válasz, v á l a s z t u n k a G— A —x g r á f b ó l egy y p o n t o t , és ismét két esetet k ü l ö n b ö z t e t ü n k meg aszerint, hogy y benne van-e a halmaz-ban. A 3. á b r a egy 4 p o n t ú gráf p é l d á j á n m u t a t j a be ezt.

Az algoritmus nem tesz t e h á t mást, m i n t felsorolja az összes független h a l m a z o k a t . Ü g y működik, hogy először a tetején kezdve és mindig balra t a r t v a leszaladunk a szögletes blokkig; az /5-nek itt m e g a d o t t értékét tároljuk. E k k o r visszalépünk a legalsó el-ágazási pontig, és o t t j o b b r a k a n y a r o d u n k , m a j d a t o v á b b i a k b a n ismét balra t a r t v a leszaladunk a szögletes blokkig. Á l t a l á b a n minden lépésben visszamegyünk a legalsó olyan elágazásig, melyből még b e j á r a t l a n ág indul ki, és azon mindig balra t a r t v a lemegyünk a szögletes blokkig. /5-nek ebben m e g a d o t t értékét összehasonlítjuk az általunk tárolt 8 halmazzal, és ha az előbbi nagyobb, kicseréljük. Ez az egyszerű séma érezhetően nem nagyon kötődik a pako-lási problémához; bármely esetszétválasztásos eljárás hasonló szer-kezetű. Az eljárás n e v e : bináris keresés.

A bináris keresések során g y a k r a n felhasználható fontos elv a következő: ahol nincs, o t t ne keress. Más szóval, h a egy ágról valamilyen meggondolásból m á r a tetején l á t j u k , hogy a keresett maximális S h a l m a z t nem szolgáltathatja, akkor nem kell vele foglalkozni. Ilyen eset pl. az, ha az ág semmiképpen sem a d h a t a már eddig megtaláll S halmaznál nagyobb független h a l m a z t . Példánkban a ba! szélső /? = {!. 3} halmaz megtalálása után m á r

(33)

a 3 £ $ - b ő l kiinduló, nein-mel megjelölt- ágat, v a l a m i n t a 2 f :S'-ből kiinduló igen-nel és nem-mel megjelölt ágat nem kell b e j á r n u n k , mert még minden h á t r a l e v ő p o n t t a l egyiitt sem k a p h a t n á n k belőlük há-rom független p o n t o t . Az ilyen, nagyságbecsléssel kombinált biná-ris keresést angolul „ b r a n c h and b o u n d " módszernek h í v j á k . E z is

igen általános elv, az egyes feladatokból n e m sok sajátosságot használ ki.

A pakolási probléma esetében k ö n n y ű leszorítani a lépés-számot mintegy c-1,318"-re (c egy alkalmas állandót jelent). L á s s u k be ezt teljes indukcióval! Az az eset, amikor bármely p o n t foka, vagyis a hozzá illeszkedő élek száma legfeljebb 2, igen k ö n n y ű . 1.9. feladat. Milyen s z e r k e z e t ű e k az ilyen g r á f o k ? M u t a s s u k m e g , h o g y m a x i m á l i s f ü g g e t l e n p o n t h a l m a z u k c-n2 lépésben m e g k e r e s h e t ő .

Tegyük fel t e h á t , hogy a g r á f b a n v a n egy legalább 3-ad fokú

x p o n t (persze ezt is meg kell keresni, de ez n e m igényel t ö b b lépést

n2-nél, ami elhanyagolható az i t t rendszerint szükséges lépés-számok mellett). E k k o r az x-et nem t a r t a l m a z ó független halma-zok legfeljebb c-1,381"- 1, az x-et t a r t a l m a z ó k c-l,381"~4 lépésben megvizsgálhatók. E z é r t nem kell több lépés, m i n t

f l ^ l ^ + c. l,381"-4 = c 1,381" + 1,381".

1.10. feladat: I g a z o l j u k , h o g y h a S m a x i m á l i s f ü g g e t l e n p o n t h a l m a z , a k k o r b á r m e l y x p o n t r a v a g y x, v a g y ai-nek v a l a m e l y s z o m s z é d j a »S-bon v a n ! 1.11. feladat: B i z o n y í t s u k be, liogy b á r m e l y x p o n t h o z v a n o l y a n m a x i m á l i s f ü g g e t l e n p o n t h a l m a z , mely v a g y ai-et, v a g y ai-nek l e g a l á b b k é t s z o m s z é d j á t t a r t a l m a z z a !

1.12. feladat: A z 1.11. f e l a d a t a l a p j á n a r l j u n k ineg a m a x i m á l i s f ü g -getlen h a l m a z megkeresésére egy l e g f e l j e b b c-1,3" l é p é s s z á m ú a l g o r i t m u s t !

1.2.2.

Intervallumpakolás

A pakolási p r o b l é m á n a k v a n n a k olyan speciális esetei, amik lényegesen gyorsabban megoldhatók, mint az általános feladat. Ilyen eset a 3. példa, a teherautó-szállítások tervezése. A kérdést így modellezhetjük: adottak egy egyenesen az az A1B1, ..., AnBn

szakaszok (egyszerűség kedvéért t e g y ü k fel, hogy az An Bj p o n t o k mind különbözőek); válasszunk ki közülük maximális számú,

pá-ronként idegen szakaszt! Visszatérünk a z o n b a n a teherautós

meg-fogalmazásra, mert az szemléletesebb.

Az eljárás, a m i t a j á n l u n k , a következő: induljon el a teher-autó, és nézze meg, hol kell megrakodnia ahhoz, hogy a lehető leghamarabb megszabaduljon a terhétől. Pl. h a az á b r á n l á t h a t ó helyzet alakul ki, akkor az Ax p o n t b a n kell először rakodnia (4. ábra).

(34)

4. ábra

E z t a t e r h e t szállítsa el a b b a a Bh p o n t b a , a h o v a kell, m a j d

m i n d a z o n szállítások közül, melyeket még e g y á l t a l á n elvégezhet (vagyis m e l y e k n e k a k e z d ő p o n t j á t még nem h a g y t a el), válassza ki azt, a m e l y n e k a célja, Biít legközelebb v a n az ú t o n . H a s o n l ó a n ,

h a m á r n c h á n y szállítást elvégzett, és é p p e n a legutóbbi Bi p

cél-j á n á l l e r a k o d o t t , a k k o r t e k i n t s e á t a még e g y á l t a l á n szóba cél- jöhe-t ő k e jöhe-t , és a z jöhe-t végezze el, a m e l y i k n e k a célja, Bipl a legközelebb van.

Az á b r á n v a s t a g o n k i h ú z o t t szakaszok jelölik a ténylegesen el-végzett szállításokat. Végül a Blk célpont u t á n m á r nincs

elvégez-h e t ő szállítás.

E z n a g y o n egyszerű elje ás, de v a j o n a legjobb e r e d m é n y t , vagyis a l e g t ö b b di&zjimkt szakaszt a d j a - e ? M e g m u t a t j u k , hogy igen. E h h e z a z t jegyezzük meg, hogy a Btl, Bh, . . ., B,k p o n t o k

m i n d e n AlBl i n t e r v a l l u m o t „ l e s z ú r n a k " , vagyis m i n d e g y i k AiBi

i n t e r v a l l u m t a r t a l m a z z a v a l a m e l y i k e t . T e g y ü k fel, h o g y n e m lenne így, h a n e m az A j B j i n t e r v a l l u m teljes egészében beleesne pl. a B,rB,v+1 közbe (hasonlóan j u t u n k e l l e n t m o n d á s r a , h a Bh elé

vagy B,k u t á n esne AjBj). E k k o r a B,t c é l p o n t b a n az AjBj szállítás

még elvégezhető lett volna, sőt mivel B j közelebb v a n i?,—höz, m i n t B„+1, ezt kellett volna elvégezni. E z az e l l e n t m o n d á s

bizo-n y í t j a , hogy A j B t a r t a l m a z z a valamely B,v-t.

E k k o r viszont d i s z j u n k t i n t e r v a l l u m o k b á r m e l y rendszere legfeljebb k i n t e r v a l l u m b ó l állhat, hiszen m i n d e g y i k b e n n e sze-replő i n t e r v a l l u m a B„ , . . ., B,k p o n t o k v a l a m e l y i k é t t a r t a l m a z z a .

T e h á t a k i v á l a s z t o t t rendszer valóban maximális.

J e g y e z z ü k meg, hogy a f e n t i algoritmus a k ö v e t k e z ő e r e d m é n y t is n y ú j t o t t a .

• Tétel: Az egyenesen adott szakaszok közül kiválasztható diszjunkt

szakaszok maximális száma egyenlő a szakaszokat lefogó pontok minimális számával.

G y a k r a n előfordul, hogy ha gyors e l j á r á s t t u d u n k a d n i vala-milyen s z e m p o n t b ó l o p t i m á l i s elem v a g y h a l m a z k i v á l a s z t á s á r a , a k k o r ez egyben az o p t i m u m n a g y s á g á r a ilyen egyszerű, de n e m triviális f o r m u l á t is szolgáltat. (Az általános esetre v o n a t k o z ó

(35)

algo-ritmusainkból semmi hasonlót nem k a p t u n k . ) U g y a n a k k o r ez a diszjunkt intervallumok és leszúró pontok számai közti össze-függés t e t t e lehetővé, hogy algoritmusunk helyességét igazoljuk. Hasonló jelenséggel később is találkozunk még.

1.13. f e l a d a t : A t e h e r a u t ó m i n i m á l i s s z á m ú f o r d u l ó v a l s z e r e t n é vala-m e n n y i szállítási k ö t e l e z e t t s é g é t teljesíteni. A d j u n k a f e n t i h e z h a s o n l ó egyszerű a l g o r i t m u s t ú t j á n a k m e g t e r v e z é s é r e . Mi f o g j a m e g h a t á r o z n i a szükséges f o r d u l ó k m i n i m á l i s s z á m á t ?

Tegyük fel, hogy n feladatunk van, ezeket m vállalat között kell kiosztanunk. Egy-egy vállalat a feladatok közül esak bizonyo-s a k a t (mábizonyo-s vállalat mábizonyo-sokat) h a j l a n d ó elvégezni, ébizonyo-s ezek közül ibizonyo-s esak egyet. D ö n t s ü k el, lehetséges-e a feladatok szétosztása, vagy h a nem, osszunk szét belőlük, a m e n n y i t esak t u d u n k .

A helyzetet egy gráffal í r h a t j u k le: felül egy-egy p o n t t a l ábrá-zoljuk a vállalatokat, alul egy-egy p o n t t a l a feladatokat, és minden vállalatot összekötünk mindazokkal a feladatokkal, melyek el-végzésére h a j l a n d ó (5. ábra).

A r r a v a g y u n k kíváncsiak, hogy lehet-e minden feladathoz egy vele összekötött vállalatot rendelni, különböző feladatokhoz különbözőt. Azok az élek t e h á t , melyek az egyes f e l a d a t o k a t a hoz-z á j u k rendelt vállalatokkal kötik össhoz-ze, függetlenek, vagyis nincs közös p o n t j u k . F e l a d a t u n k a t is m e g f o g a l m a z h a t j u k : d ö n t s ü k el, van-e a n n y i független (azaz közös végponttal n e m rendelkező) él a g r á f b a n , a h á n y feladat van, ill. keressük meg a független élek maximális s z á m á t .

1.14. f e l a d a t : V a n - e 4 f ü g g e t l e n él az 5. á b r á n ?

Az u t ó b b i megfogalmazásból kitűnik, hogy a pakolási

prob-1.2.3.

Párosítások

vá I laíahok felcdarok 5. ábra

35

(36)

\

6. ábra

lénia egv speciális esetével állunk s z e m b e n : m a x i m á l i s a n sok f ü g -getlen élt a k a r u n k „ b e p a k o l n i " eyy p á r o s g r á f b a , vagyis olyan g r á f b a , a m e l y n e k p o n t j a i két h a l m a z r a b o n t h a t ó k úgy, hogy élek csak a k é t h a l m a z k ö z ö t t f u t n a k . E n n e k elvégzésére a z o n b a n az általános a l g o r i t m u s n á l sokkal h a t é k o n y a b b (bár az i n t e r v a l l u m -pakolásnál a z é r t b o n y o l u l t a b b ) a l g o r i t m u s áll rendelkezésünkre. E z t .,magyar módszernek" is nevezik, m e r t K ő n i g Dénes és E g e r v á r v J e n ő eredményeiből volt k i o l v a s h a t ó (ezekre még v i s s z a t é r ü n k ) .

L e g y e n a d v a egy p á r o s gráf. V á l a s s z u n k ki e g y m á s u t á n független éleket, amíg esak el n e m a k a d u n k , vagyis nines o l y a n él, amely m i n d e n k i v á l a s z t o t t éltől f ü g g e t l e n . Á l t a l á b a n n e m lesz igaz, hogy m á r i s a lehető l e g t ö b b f ü g g e t l e n élt v á l a s z t o t t u k k i ; pl. a 6. á b r á n elég ü g y e t l e n e k v o l t u n k : m i n t l á t n i f o g j u k , a m e g v a s t a -g í t o t t éleknél t ö b b e t is k i v á l a s z t h a t t u n k volna.

N e v e z z ü k a k i v á l a s z t o t t éleket fekete éleknek; m i n d a z o n pon-t o k a pon-t , a m e l y e k e pon-t n e m f e d n e k le, pon-telípon-tepon-tlen ponpon-toknak.

A g r á f b a n útnak n e v e z ü n k egy k ü l ö n b ö z ő j^ontokból álló

(x0, .... xk) s o r o z a t o t , h a a1,-bői .r,+ 1-be él m e g y ( í = 0,1, . . ., k— 1).

E g y ö n m a g á t n e m m e t s z ő u t a t alternáló ú t n a k h í v u n k , h a egy alsó telítetlen p o n t b ó l indul, és m i n d e n m á s o d i k éle f e k e t e él. A módszer lényege a k ö v e t k e z ő n y i l v á n v a l ó észrevétel: ha egy alternáló út

felső telítetlen pontban végződik, akkor a rajta fekvő fekete éleket az út többi élére kicserélve a f üggetlen élek számát növeljük (6. ábra).

M e g m u t a t j u k , h o g y h a ilyen m ó d o n nem t u d j u k növelni a f ü g -getlen élek s z á m á t , a k k o r a f e k e t e élek máris m a x i m á l i s f ü g g e t l e n él-rendszert kell h o g y a l k o s s a n a k . J e l ö l j e u g y a n i s X m i n d a z o n fenti p o n t o k h a l m a z á t , m e l y e k elérhetők alternáló ú t t a l , és t e g y ü k fel, hogy .X-ben nincsen telítetlen p o n t . J e l ö l j e X' az X - b ő l kiinduló f e k e t e élek alsó végeinek h a l m a z á t , és X" a t ö b b i alsó t e l í t e t t pont összességét. E k k o r XUX" minién élt leszúr. L e g y e n u g y a n i s (a, b) egv él és a a n n a k alsó v é g p o n t j a . H a az a t e l í t e t l e n p o n t , akkor b definíciószerűen X - b e t a r t o z i k . H a a az - V - b e n van, a k k o r v a n olvan P a l t e r n á l ó ú t , m e l y a - b a n végződik. D e ekkor olyan is v a n , a m e l y ¿-ben v é g z ő d i k : ugyanis b v a g y r a j t a v a n P - n , a k k o r P - n e k 6-ig t e r j e d ő szakasza, vagy nincs r a j t a , és a k k o r P+(a, b) ilyen a l t e r n á l ó ú t . T e h á t e k k o r b az JC-ben v a n . Vcgiil ha u az Jí"-be:i van. n i n c ; is mit bizonyítani.

(37)

H a X U X" minden élt leszúr, akkor nem is lehet t ö b b függet-len élt megadni, m i n t a h á n y eleme J Í U X " - n e k v a n . D e ez éppen a fekete élek s z á m a ; a fekete élek t e h á t máris a lehető legtöbben v a n n a k .

Bemenet: G páros gráf.

Kimenet: G egy maximális független élrendszere. Jelölés: T e l í t e t t p o n t : amibe fekete él f u t .

Most m á r esak a r r a kellene eljárást adni, hogy eldöntsük, van-e telítetlen felső p o n t b a n végződő alternáló ú t . Először is színezzük pirosra a telítetlen alsó p o n t o k a t . E z u t á n minden

Referências

Documentos relacionados

N.º de ações inicialmente planeadas para o biénio N.º de ações realizadas ou com inscrições efetuadas N.º de ações ainda sem previsão N.º de Inscrições não

O enfermeiro e a demarcação prévia do esto- ma intestinal ou urinário - Destacar os fatores de avaliação a serem utilizados ao sele- cionar o local para exteriorizar

As crianças que se apresentam de- sidratadas e/ou tiveram mais de 8 episó- dios de diarreia e/ou mais de 4 episódios de vómitos nas últimas 24 horas ou com menos de 6 meses de

Esse tipo de modelo de negócio exige que o ciclo de vida do PSS (Figura 2), seja constantemente considerado, não somente atua- lizando materiais, componentes, e aspectos

Cerca de 75% dos doentes a fazer tratamen- to com este fármaco podem desenvolver efei- tos adversos, geralmente dependentes da dose e tempo de duração do tratamento e, na maioria

Ovos 1979). Os ninhos de 14 espécies de aves foram encontrados com ovos, O tamanho da ninhada variou entre as espécies estudadas, sen- sendo observados ovos de formatos ovóides

Dentre os problemas identificados durante o pré-processamento dos dados, é importante destacar: muitos atributos estão presentes na base de dados, porém nem

E de modo específico: caracterizar o processo de instrumentação e instrumentalização dos licenciandos do 5º período de licenciatura em matemática para a realização