10. Szimultán kiválasztások

Hasonló dokumentumok
15. A VERSENYRENDEZÉS

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Algoritmuselmélet 2. előadás

Algoritmusok és adatszerkezetek gyakorlat 07

Egészrészes feladatok

Sorozatok I. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

Programozási módszertan. Mohó algoritmusok

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Elemi matematika szakkör

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

Arany Dániel Matematikai Tanulóverseny 2016/2017-es tanév Kezdők III. kategória I. forduló

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Rendezések. Összehasonlító rendezések

Gyakorló feladatok az II. konzultáció anyagához

Függvények növekedési korlátainak jellemzése

2010. október 12. Dr. Vincze Szilvia

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

A valós számok halmaza 5. I. rész MATEMATIKAI ANALÍZIS

352 Nevezetes egyenlôtlenségek. , az átfogó hossza 81 cm

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

PROGRAMOZÁSI TÉTELEK

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

OSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.

ELEMI PROGRAMOZÁSI TÉTELEK

Az Országos Középiskolai Tanulmányi Verseny tanévi első fordulójának feladatmegoldásai

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

10. előadás Speciális többágú fák

Mohó stratégia. Feladat: Megoldás:

Gyakori elemhalmazok kinyerése

Minden x > 0 és y 0 valós számpárhoz létezik olyan n természetes szám, hogy y nx.

2. Visszalépéses stratégia

32. A Knuth-Morris-Pratt algoritmus

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

A tanévi matematika OKTV I. kategória első (iskolai) fordulójának pontozási útmutatója

Számláló rendezés. Példa

Általános algoritmustervezési módszerek

7 7, ,22 13,22 13, ,28

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

Struktúra nélküli adatszerkezetek

Magasabbfokú egyenletek

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Sorozatok. 5. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Sorozatok p. 1/2

összeadjuk 0-t kapunk. Képletben:

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

2012. október 2 és 4. Dr. Vincze Szilvia

A valós számok halmaza

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Programozási segédlet

Algoritmusok és adatszerkezetek II.

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

V. Kétszemélyes játékok

Következik, hogy B-nek minden prímosztója 4k + 1 alakú, de akkor B maga is 4k + 1 alakú, s ez ellentmondás.

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Adatszerkezetek II. 6. előadás

Arany Dániel Matematikai Tanulóverseny 2015/2016-os tanév 1. forduló Haladók III. kategória

Sorozatok és Sorozatok és / 18

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Kupacrendezés. Az s sorban lévő elemeket rendezzük a k kupac segítségével! k.empty. not s.isempty. e:=s.out k.insert(e) not k.

Számsorozatok (1) First Prev Next Last Go Back Full Screen Close Quit

Online migrációs ütemezési modellek

Mátrixjátékok tiszta nyeregponttal

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Összetett programozási tételek

2017/ Szegedi Tudományegyetem Informatikai Intézet

Algoritmuselmélet 18. előadás

Sorozatok, sorozatok konvergenciája

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Arany Dániel Matematikai Tanulóverseny 2014/2015-ös tanév első (iskolai) forduló Haladók II. kategória

Diszkrét matematika 2.C szakirány

Formális nyelvek és automaták

megtalálásának hihetetlen nehéz voltán alapszik. Az eljárás matematikai alapja a kis FERMAT-tétel egy következménye:

i=1 i+3n = n(2n+1). j=1 2 j < 4 2 i+2 16 k, azaz az algoritmus valóban konstans versenyképes.

Javítókulcs, Válogató Nov. 25.

Adatbázis rendszerek Gy: Algoritmusok C-ben

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Sorozatok II.

Diszkrét matematika 2.C szakirány

Felvételi tematika INFORMATIKA

Az Országos Középiskolai Tanulmányi Verseny tanévi első fordulójának feladatmegoldásai

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Mohó algoritmusok. Példa:

Algoritmuselmélet 1. előadás

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

Szakács Lili Kata megoldása

Egyenletek, egyenlőtlenségek VII.

Adaptív dinamikus szegmentálás idősorok indexeléséhez

Arany Dániel Matematikai Tanulóverseny 2008/2009-es tanév első (iskolai) forduló haladók II. kategória

Tartalomjegyzék. Tartalomjegyzék Valós változós valós értékű függvények... 2

Átírás:

10. Szimultán kiválasztások Ebben a fejezetben két újabb alsókorlát-elemzés következik. Mindkettőben egy szimultán algoritmus műveletigényére adunk alsó korlátot. Pontosabban, egy-egy feladat megoldásához minimálisan szükséges lépésszámot határozzuk meg. Ezek az ötletes és szép meggondolásokat hozzá tartoznak az algoritmuselmélet színes világához, egyébként is, az algoritmusok lépésszámára ritkán állapítható meg alsókorlát, így ezen a téren minden eredményt meg kell becsülni. 10.1 Szimultán minimum-maximum kiválasztás Specifikáljuk azt a feladatot, amely egy s sorozat minimális és maximális elemének a meghatározását tűzi ki célul. Feladat. Valamely s X sorozat minimális és maximális elemének megkeresése. Deklaráció: s, s X, x, y X Előfeltétel: s = s s ε Utófeltétel: s = Perm(s ) és x, y az s maximális, illetve minimális eleme Természetes ötlet, hogy válasszuk ki a sorozat maximumát, aztán a többi elem közül a minimumot. Ennek az algoritmusnak a műveleti igénye az összehasonlítások számával mérve n 1 + n = n 3. Látszólag nem lehet jobb algoritmust készíteni, hiszen a maximum kiválasztáshoz n elem esetén mindig szükséges legalább n 1 összehasonlítás, majd a maradék n 1 elem közül legalább n összehasonlítással tudjuk csak kiválasztani a minimumot. Hatékonyabb szimultán minimum-maximum kiválasztó algoritmushoz juthatunk úgy, ha bizonyos összehasonlítások eredményét (lehetőleg minél többet) a maximum és a minimum kiválasztása során egyaránt felhasználunk. Ezt a gondolatot felhasználva a következő MaxMinKiv nevű absztrakt algoritmust készíthetjük (lásd: 10.1. ábra). 10.1. ábra. A MaxMinKiv algoritmus

Párokba rendezzük s elemeit, és minden páron elvégezzük az összehasonlítást (ha n páratlan, akkor ebből egy elem kimarad). Ezek után a győztesek közül hozzávéve az esetleg kimaradó elemet kiválasztjuk a legnagyobbat, és hasonlóan járunk el a vesztesekkel is, a minimum megtalálására. Elemzés. A párok száma n, innen adódik n összehasonlítás. Az esetleg hozzájuk vett elemmel együtt a nagyok és a kicsik száma egyaránt n, amiből összesen ( n 1) összehasonlítás adódik. Könnyen beláthatjuk, hogy ezek összege 3(n 1). Ha n páros, azaz n = m esetén, az összeg 3m és 3(m 1) = 3m 3 = 3m. Ha n páratlan, vagyis n = m + 1 esetén, az összeg 3m és 3(m) = 3m. A szimultán eljárás által végrehajtott összehasonlítások száma: Ö MaxMinKiv (s) = 3(n 1). Azt kaptuk, hogy a MaxMinKiv algoritmus ¾ részére csökkenti az összehasonlítások számát. Felmerül ezek után a kérdés, hogy vajon lehet-e szükséges a lépésszámon tovább javítani. A válasz tagadó, ugyanis fennáll a következő tétel. Tétel. Legyen MaxMinKiv egy minden bemenetre jól működő összehasonlításos szimultán maximum-minimum kiválasztó algoritmus. Ekkor MÖ MaxMinKiv (n) 3(n 1). Más szóval, létezik olyan n hosszúságú s X sorozat, melyre MaxMinKiv-nek a maximum és minimum együttes megtalálásához legalább 3(n 1) összehasonlítást kell végeznie. Bizonyítás. Az s sorozatot mintegy menet közben konstruáljuk meg, a kérdező által feltett kérdések tisztázó hatásának a késleltetése céljából. A válaszoló nem rögzíti tehát előre s elemeit, hanem az előző fejezetben látott furfangos válaszoló módszerével eljárva a kérdező, vagyis algoritmus stratégiájához idomulva, próbálja a lehető legtöbb összehasonlításra késztetni a megoldó eljárást. A kérdező akkor lehet biztos a dolgában, ha talált egy olyan elemet, mely minden összehasonlításban győztes volt (ez a maximum), valamint egy olyat, amelyik mindig vesztes volt (ez a minimum); a többiek lehetnek vegyesen győztesek és vesztesek is. Az összehasonlításokból adódó győztes-vesztes információ nyilvántartására a kérdező egy n elemű táblázatot használ, amelynek i-edik elemébe bejegyzi s i sorozatelem státuszát. A táblázat folyamatosan módosul; a bejegyzések végső állapotából már kiolvasható az elemek viselkedése a kérdések (az algoritmus működése) során. Az elemek státuszai a következő lehetőségek közül kerülnek ki: N: nem volt még rá vonatkozó kérdés; L: szerepelt kérdésben és minden összehasonlításban vesztes volt; W: szerepelt kérdésben és minden összehasonlításban győztes volt; LW: vonatkoztak rá kérdések, és az összehasonlításokban volt győztes és vesztes is. Az algoritmusnak addig kell kérdeznie, amíg a táblázatban megjelenik n számú (L, W) bejegyzésű, egy L státuszú és egy W státuszú elem. Ez összesen (n 1) információdarabka. Egy kérdésre adott válaszból 0, 1 vagy információelem nyerhető ki. Egy kérdés legfeljebb egy győztest és egy vesztest eredményezhet, de ha valamelyikükre már vonatkozik hasonló bejegyzés, akkor ott új információ nem keletkezik.

A válaszoló konzisztencia táblája lényegében ugyanaz, mint a kérdező táblázata, csak ebben benne vannak számára láthatók a konstrukciónak megfelelő értékek is. A válaszoló legrosszabb esetet konstruáló stratégiája olyan, hogy csak akkor ad információt, ha feltétlenül szükséges. Ha a kérdezett pár 1. mindkét tagja (N, N) bejegyzésű, akkor mindkét elemet rögzíti, az egyik elemet kisebb értékkel L-esként, a másikat nagyobb értékkel W-vel ( információ);. egyik tagja N státuszú és a másik státusza.1. L, akkor az N-es elemet W bejegyzésével, a másiknál nagyobb értékkel rögzíti (1 információ);.. W vagy LW akkor az N-es elemet L bejegyzéssel a másiknál kisebb értékkel rögzíti (1 információ); 3. Ha a pár egyik tagja L státuszú és a másik státusza 3.1. W vagy LW, akkor az L-es elem bejegyzését megtartva, annak értékét megfelelően csökkenti (0 információ); 3.. L, akkor a rögzítésnek megfelelő választ adja, a nagyobb értékű elem bejegyzését LW-re állítva (1 információ); 4. Ha a pár egyik tagja W státuszú és a másik státusza 4.1. LW, akkor W-es elem bejegyzését megtartva, annak értékét megfelelően megnöveli (0 információ) 4.. W, akkor a rögzítésnek megfelelő választ adja, a kisebb értékű elem bejegyzését LW-re állítva (1 információ); 5. Ha a pár mindegyik tagja LW státuszú, akkor a rögzítésnek megfelelő választ adja (0 információ). Ez a stratégia nem vezethet ellentmondáshoz, hiszen az értékek rögzítésénél a válaszoló megfelelő bejegyzéseket teszi, míg egy már rögzített elem értékét csak abba az irányba változtatja, amilyen annak bejegyzése. Bármely bemenetre az a legjobb kérdező stratégia, hogy maximális számú, két információt adó kérdést tesz fel, majd amikor azok elfogytak, akkor csupa egy információt eredményező kérdést fogalmaz meg. Az így adódó kérdésszám lesz a keresett alsó korlát. A két információt adó kérdések az (N, N) alakú párokhoz tartoznak, ilyenből legfeljebb n/ -t lehet feltenni. A többi (n 1) n/ információ megszerzéséhez legalább ennyi kérdés kell. Emiatt a kérdések száma a legcélratörőbb esetben is legalább Ö(n) = n/ + (n 1) n/ = (n 1) n/. Tudjuk, hogy m pozitív egészre fennáll: m/ + m/ és m/ = (m 1)/. Innen Ö(n) = n 1 + (n 1)/ + (n 1)/ (n 1)/ = 3 (n 1)/. Ezzel a bizonyítást befejeztük. 10. Az r legnagyobb elem rendezett kiválasztása Specifikáljuk azt a feladatot, amely egy n elemű sorozatra, növekvő sorrendben rendre az (n r + 1)-edik, (n r + )-edik,.., n-edik elem megadását tűzi ki. Feladat. Valamely s X sorozat r legnagyobb elemének rendezett kiválasztása Deklaráció: s, s, u X Előfeltétel: s = s s ε 1 r s Utófeltétel: s = Perm(s ) és u az s rendezettjének r hosszú suffixe

Ez a feladat első pillantásra egyszerűen megoldható. Először kiválasztjuk a maximális elemet és kiírjuk u-ba. Ezek után a maradékból is kiválasztjuk a legnagyobbat, és kiírjuk u ba az előző maximum elé, és így tovább r-szer. Ehhez szükséges rendre n 1, n, n r összehasonlítás, melyek összege r(n r+1 ). Vajon lehet-e ennél kevesebb összehasonlítással működő algoritmust találni erre a feladatra? Látszólag nem, hiszen a maximumhoz kell legalább n 1 összehasonlítás, a második maximumhoz maradék n összehasonlítás, és így tovább. Ha azonban felhasználnánk az első maximum kiválasztásánál, a maradék n 1 elemen végzett összehasonlítások eredményét, akkor ezek számával csökkenthető a második legnagyobb elem kiválasztásához szükséges összehasonlítások száma. Ehhez meg kell jegyezni a maximum kiválasztásához elvégzett összehasonlításokat és azok eredményét. Az információ tárolásához az úgynevezett tournament (versenyfa) adatszerkezetet fogjuk használni. A tournament a nevét a kieséses sportversenyek eredménytáblázata nyomán kapta. Egy t tournament olyan teljes bináris fa, amelynek leveleiben egy n = m (ahol m a fa magassága) hosszú sorozat helyezkedik el, belső pontjaiban pedig a két gyerekcsúcs értékének maximuma található (lásd: 10.. ábra). 10.. ábra. Egy kitöltött tournament A t tournament gyökerében mindig a leveleinek maximuma áll. Nevezzük tournament váznak az olyan teljes bináris fát, melynek csak a leveleiben találhatók értékek. Egy ilyen vázat touranmentté alakító eljárás nyilván maga is maximum kiválasztó algoritmus lesz. 10.3. ábra. A KTour eljárás

Egy t fa akkor és csak akkor tournament, ha a baloldala és jobboldala eggyel kisebb magasságú tournamentek, és a gyökerében a bal és jobb oldali részfa gyökerének maximuma található. Ezt a tulajdonságot felhasználva könnyen készíthetünk olyan rekurzív eljárást, amely egy vázat átalakít tournamentté (lásd: 10.3. ábra). Elemzés. A KTour eljárás összehasonlításainak száma pontosan a fa belső pontjaninak száma. A belső pontokat könnyen számba vehetjük. A levelek fölötti szinten m 1 belső pont van, a felette lévőn m, és így tovább a gyökérig. Ezek m elemű mértani sorozatot alkotnak, melynek összege m 1, tehát n 1. Ezek szerint a KTour optimális maximum kiválasztást megvalósító algoritmus. A második legnagyobb elemet (majd pedig a továbbiakat) úgy lehet meghatározni, hogy a mindenkori maximális elemet az u sorozatba való kiírása után a lehető legkisebb elemmel, vagy egy extremális elemmel helyettesítjük. Vezessük be erre a célra a szimbólumot. A helyettesítés után ez még nem tournament, de a maximum ágának újraszámolásával könnyen azzá alakítható (lásd: 10.4. ábra). 10.4. ábra. Tournament a maximum ág újrarajzolásával A további maximumokat kiválasztó MTour eljárás is felhasználja a tournamentek rekurzív felépítését, valamint azt is, hogy csak az eddigi maximumot tartalmazó ágat kell újra számolni (hiszen a másik fele változtatás nélkül megmaradt tournamentnek). 10.5. ábra. Az MTour eljárás

Elemzés. Az első fordulós eredményt az eddigi maximum ágán már tudjuk is, hiszen a ellenfele biztos győztes. Ennek megfelelően a második (és minden további) maximum kiválasztása az MTour eljárással m 1 = log n 1 összehasonlítással történhet meg. Legyen PárhRendKiv(s, r, u) most már az az eljárás, mely KTour egyszeri, majd az MTour eljárás (r 1)-szeri alkalmazásával rendezetten kiválasztja az s sorozat r számú legnagyobb elemét. 10.6. ábra. A ParhRendKiv eljárás Elemzés. Az r számú legnagyobb elemet rendezetten kiválasztó PárhRendKiv eljárás (lásd: 10.6. ábra) összehasonlításainak számat KTour és MTour összehasonlítás száma alapján könnyen becsülhető: Ö PárhRendKiv (t) n 1 + (r 1)(lg(n) 1) Ha n nem kettő hatvány, akkor kiegészítjük a megfelelő q = lg (n) n számú ( ) extremális értékkel kettő hatvánnyá; mindet egy-egy valódi elemmel párosítjuk, amelyek így erőnyerők lesznek. Az erőnyerők összehasonlítás nélkül jutnak be a következő fordulóba és így az összehasonlítások száma q val kevesebb a ( lg (n) 1) lépésszámnál. Innen KTour összehasonlítás-száma, nem kettő hatványok esetében ( lg (n) 1) q = n 1, tehát optimális algoritmus marad. Az MTour eljárás most lg (n) 1 összehasonlítással működik. Emiatt nem kettőhatványokra a PárhRendKiv(s, r) műveletigénye az n 1 + (r 1)( lg(n) 1) kifejezéssel becsülhető felülről. Kettő hatványokra innen kiadódnak speciális esetként a rájuk vonatkozó képletek. Az r elem rendezett kiválasztásának eljárását r = n mellett alkalmazva, az outputon megjelenik a levelekben elhelyezet teljes kiinduló sorozat rendezettje. A PárhRendKiv(s, n) algoritmus tehát egyben egy rendezési módszer is, melyet tournament rendezésnek (versenyrendezésnek) nevezünk. (Erre a rendező eljárásra visszatérünk a 15. fejezetben.) A tournament rendezés műveletigénye az előzőek szerint n 1 + (n 1) lg(n). Amint azt a rendezések ismertetése során látni fogjuk, az összehasonlítások nagyságrendje szempontjából ez optimális rendező módszer. Arra a kérdésre, hogy lehet-e a RendKiv(s, r) eljárásnál jobb algoritmust találni erre a feladatra, nemleges választ ad Kiszlicin tétele, melyet bizonyítás nélkül közlünk. Tétel. Bármely olyan algoritmus, amely minden n hosszúságú bemenetre az r legnagyobb elemet rendezett sorrendben garantáltan megtalálja, mindig legalább számú összehasonlítást végez. (n r + r 1 i=1 lg(n r) )