Rendezésen alapuló kétmenetes algoritmusok

Slides:



Advertisements
Hasonló előadás
TÖMÖRÍTÉS. Fogalma A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő. A tömörítési arány függ a fájl típusától,
Advertisements

 Alap tudnivalók Alap tudnivalók  Az If és a While folyamatábrák Az If és a While folyamatábrák  Probléma Probléma  A while ciklus (általános alak,
CÉLCÉLCSOPORT  Egészségügyi szakmai tájékoztatás és betegtájékoztatás, az egészséges életvitelhez szükséges információk szolgáltatása, publikálása, áttekint-
Vetésforgó tervezése és kivitelezése. Vetésforgó Vetésterv növényi sorrend kialakításához őszi búza250 ha őszi árpa50 ha lucerna ebből új telepítés 300.
Két nagy múltú szövegszerkesztő összehasonlítása az oktatás szempontjából.
Gazdasági jog IV. Előadás Egyes társasági formák Közkeresleti társaság, betéti társaság.
Fájlkezelés.
Dobrik-Lupták Sára szeptember 19.
Tájékoztató a munkahelyteremtő pályázati programról
Valószínűségi kísérletek
Térkép készítése adataiból
A kérdőívek, a kérdőívszerkesztés szabályai
Adatbázis normalizálás
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Becslés gyakorlat november 3.
Montázs készítése.
Scilab programozás alapjai
Egyszerű kapcsolatok tervezése
videós team Team vezetője: Tariné Péter Judit Tagok:
Adatok importálása, rendezése és szűrése
Kockázat és megbízhatóság
Egy üzemben sok gyártósoron gyártanak egy bizonyos elektronikai alkatrészt. Az alkatrészek ellenállását időnként ellenőrzik úgy, hogy egy munkás odamegy.
Háttértárak karbantartása
Észlelés és egyéni döntéshozatal, tanulás
A mesterséges intelligencia alapjai
CSOPORT - A minőségellenőrök egy megfelelő csoportja
A mozgási elektromágneses indukció
Hipotézisvizsgálat.
Kijelentéslogikai igazság (tautológia):
Tartalékolás 1.
Adatbázis-kezelés (PL/SQL)
2. Bevezetés A programozásba
Szerkezetek Dinamikája
Közigazgatási alapvizsga a Probono rendszerben
Kvantitatív módszerek
Business Mathematics
középfokú felvételi eljárás
Algoritmusok és Adatszerkezetek I.
Adatbázis alapfogalmak
Algoritmusok és Adatszerkezetek I.
Teljes visszalépéses elemzés
CONTROLLING ÉS TELJESÍTMÉNYMENEDZSMENT DEBRECENI EGYETEM
Tilk Bence Konzulens: Dr. Horváth Gábor
AVL fák.
Aritmetikai kifejezések lengyelformára hozása
A villamos installáció problémái a tűzvédelem szempontjából
Online jegyzőkönyv kitöltési segédlet
Új pályainformációs eszközök - filmek
A csoportok tanulása, mint a szervezeti tanulás alapja
Szerzője Konzulens neve
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
Algoritmusok és Adatszerkezetek I.
Lekérdezések végrehajtása
További rendező és kereső algoritmusok
I. HELYZETFELMÉRÉSI SZINT FOLYAMATA 3. FEJLESZTÉSI FÁZIS 10. előadás
Binomiális fák elmélete
SQL jogosultság-kezelés
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Munkagazdaságtani feladatok
Lorenz-görbe dr. Jeney László egyetemi adjunktus
Tájékoztató az EPER pályázati folyamatáról
TITKOSÍTÓ ALGORITMUSOK
Hogyan készítsünk előadást?
Áramlástan mérés beszámoló előadás
Informatika Oktató: Katona Péter.
Edényrendezés - RADIX „vissza” - bináris számokra
Mesterséges intelligencia
Háttértárak Merevlemezek.
Algoritmusok.
Háttértárak Merevlemezek.
Előadás másolata:

Rendezésen alapuló kétmenetes algoritmusok Wypior Joel teszt

Alapok Az operandus reláció adatait először beolvassuk a memóriába, ott valamilyen módon feldolgozzuk azokat, majd lemezre írjuk. A művelet befejezéséhez ismét beolvassuk a memóriába. Általában két menet elegendő, nagy relációk esetében is, de nem okoz nehézséget több menetre történő általánosítás sem. Reláció: pl. bemeneti lista.

1. Fázis Tegyük fel, hogy van egy nagy relációnk (R), amelyre B(R) nagyobb M-nél, tehát az R reláció nagyobb a rendelkezésre álló memóriapufferek méreténél. Ezért a blokkokat külön-külön be kell tölteni a memóriába és futtatni rajtuk az algoritmusokat, és utána külön-külön kiírjuk a blokkokat a lemezre. Ebből lesznek a rendezett részlisták.

. . . . . . 1. Lépés Beolvassuk R-nek M darab blokkját a memóriába. rendezett részlisták R . . . . . . Lemez Lemez M memóriapufferek

M darab blokkon lefutó algoritmus 2. Lépés A memóriába töltött M darab blokkot rendezzük valamilyen hatékony algoritmussal. Valószínűleg ez a lépés nem fog tovább tartani mint az előző olvasási művelet. M darab blokkon lefutó algoritmus rendezett részlisták R . . . . . . Lemez Lemez M memóriapufferek

. . . . . . 3. Lépés A rendezett listát kiírjuk M darab lemezblokkba. A blokkok tartalmára R rendezett részlistáinak egyikeként fogunk hivatkozni. M darab blokk rendezett részlisták R . . . . . . Lemez Lemez M memóriapufferek

Ismétlődések kiküszöbölése rendezés segítségével – δ(R) Vesszük az egyes blokkok első, még nem vizsgált sorát, és megkeressük közöttük a rendezés szerinti elsőt. (t) Ezt a sort egyszer kimásoljuk a kimenetbe. Az összes blokk elejéről eltávolítjuk t összes példányát. (delta)

Ismétlődések kiküszöbölése rendezés segítségével Ha egy blokk kiürül, akkor pufferébe behozzuk ugyanazon részlista következő blokkját. Ha abban a blokkban is szerepel t, akkor azt is eltávolítjuk. Bemenet 1 M-1 darab részlista . . . Bemenet 2 Kimenet . . . . Bemenet M-1 Lemez Lemez M darab blokk memória

Ismétlődések kiküszöbölése rendezés segítségével Az algoritmus által végrehajtott lemez I/O-műveletek száma, nem beleszámítva a kimenet kezelését: β(R) R minden egyes blokkjának beolvasásához, a rendezett részlisták létrehozásakor. β(R) az egyes rendezett részlisták lemezre írásához. β(R) a részlisták minden egyes blokkjának megfelelő időben való beolvasáshoz. Az egymenetes algoritmusnak csak β(R) az összköltsége.

Ismétlődések kiküszöbölése rendezés segítségével Összköltsége: 3β(R). Alkalmazási feltétele: B≤M2 Szükséges blokkok: 𝑩 Ezzel szemben az egymenetes algoritmusnak az alkalmazási feltétele: B≤M Felteve, hogy M memoriablokk van, egyenkent eppen M darab blokkbol allo reszlistakra hozunk letre. A masodik menetben aztan minden egyes reszlistanak egy memoriablokkra van szüksege, így M-nél nem lehet tobb reszlista, es ezek mindegyike M blokk hosszusagu.

Csoportosítás és összesítés rendezés segítségével – γL(R) Hasonló az egymenetes γ(R) algoritmushoz. R sorait M blokkonként beolvassuk a memóriába. Minden M darab blokkot rendezünk, rendezési kulcsként az L csoportosító attribútumait használva. Az egyes rendezett részlistákat egyenként lemezre írjuk. Minden egyes részlistához egy darab memóriablokkot használva, első lépésként az egyes részlisták első blokkját betöltjük a hozzá tartozó pufferbe. Egymás utáni ismétlődően mindig újra megkeressük a rendezeti kulcs (a csoportosító attribútumok) szerinti legkisebb értékét a pufferek sorra követő sorai között. (Gamma)

Csoportosítás és összesítés rendezés segítségével Ez a v érték alkotja a következő csoportot, amelyre a következőket tesszük: Előkészítjük a csoport L listában szereplő összesítéseinek a kiszámítását. A v keresési kulccsal összehasonlítva megvizsgáljuk a sorok mindegyikét, és folyamatosan gyűjtjük a szükséges összesítéseket. Ha egy puffer kiürül, akkor beolvassuk a helyére ugyanannak a részlistának a következő blokkját

Csoportosítás és összesítés rendezés segítségével Ha nincs több sor, amelyik a v keresési kulccsal rendelkezik, akkor kiírunk egy olyan sort a kimenetbe, amelyik az L csoportosító attribútumaiból, valamint a csoportra hozzájuk kiszámított összesítések értékeiből áll. Lemez I/O-költség: 3β(R) Alkalmazási feltétel: B≤M2 Szükséges blokkok: 𝑩

Egyesítés rendezés segítségével - RυsS Multihalmaz-egyesítésnél az egymenetes algoritmus az argumentumok méretétől függetlenül működik, nincs szükség kétmenetes algoritmusra. RυsS kiszámítása: R sorait M darab blokkonként beolvassuk a memóriába, a sorokat rendezzük, majd a kapott rendezett részlistákat visszaírjuk a lemezre. M darab blokk beolvasása, sorok rendezése rendezett részlisták R . . . . . . Lemez Lemez memóriapufferek

Egyesítés rendezés segítségével Ugyanezt elvégezzük S-re at S reláció rendezett részlisták létrehozásához. R és S minden egyes részlistájához veszünk egy memóriapuffert, majd a megfelelő részlista első blokkját oda betöltjük. M darab blokk beolvasása, sorok rendezése rendezett részlisták S . . . . . . Lemez Lemez memóriapufferek

Egyesítés rendezés segítségével Újra és újra megkeressük a pufferekbe az első még ott lévő t sort. Bemásoljuk a t-t a kimenetbe, majd t összes előfordulását eltávolítjuk a pufferből. (Ha R és S halmazok, akkor legfeljebb két ilyen előfordulás lehet). Ha egy puffer kiürül, akkor azt feltöltjük a megfelelő részlista következő blokkjával. I/O-költség: 3(B(R)+B(S)) Alkalmazási feltétel: B(R)+B(S)≤M2

Metszet és Különbség rendezés segítségével Létrehozzuk az R argumentum relációra az M blokkból álló rendezett részlistákat. M darab blokk beolvasása, sorok rendezése rendezett részlisták . . . . . . R Lemez Lemez memóriapufferek

Metszet és Különbség rendezés segítségével Létrehozzuk az S argumentum relációra az M blokkból álló rendezett részlistákat. M darab blokk beolvasása, sorok rendezése rendezett részlisták . . . . . . S Lemez Lemez memóriapufferek

Metszet és Különbség rendezés segítségével Ezután minden részlistához egy memóriapuffert használunk, amelyet kezdetben a részlista első blokkjával töltünk fel. Azután újra és újra megvizsgáljuk az összes pufferben maradó sor közül a legkisebb t- sort. Meghatározzuk R összes t-vel azonos sorának számát, majd ugyanezt megtesszük S-re is. Ehhez ismét az szükséges, hogy a puffereket újra feltöltsük arról a részlistáról, amelynek aktuálisan pufferelt blokkja kiürült. 1. Részlista első blokkja R és S rendezett részlisták . . . 2. Részlista első blokkja Metszet / Különbség . . . . Utolsó részlista első blokkja Lemez Lemez memóriapufferek

Metszet és Különbség rendezés segítségével Ha a művelet a halmazmetszet, úgy t-t akkor írjuk ki, ha R-ben és S- ben is előfordul. Ha a művelet a multihalmazmetszet, úgy t-t annyiszor tesszük a kimenetbe, amennyi az R-beli és S-beli előfordulásainak a minimuma. Ha ezen számosságok bármelyike nulla, azaz, ha t nem szerepel mindkét relációban, akkor t-t nem írjuk a kimenetbe. Ha a művelet a halmazkülönbség, R-sS , akkor t-t csak akkor tesszük a kimenetbe, ha R-ben előfordul, de S-ben nem. Ha a művelet multihalmazkülönbség, R-BS, akkor t-t annyiszor írjuk a kimenetbe, ahányszor előfordul R-ben mínusz ahányszor előfordul S-ben. Ha t S-ben legalább annyiszor fordul elő, mint R-ben, akkor nem tesszük a kimenetbe.

Metszet és Különbség rendezés segítségével I/O-művelet: 3(B(R)+B(S)) Alkalmazási feltétel: (B(R)+B(S)≤M2 Szükséges blokk: 𝐵(𝑅+𝐵 𝑆 )

Egyszerű rendezésen alapuló összekapcsolási algoritmus Tegyük fel, hogy R(X, Y) és S(Y, Z) relációkat szeretnénk összekapcsolni és M memóriablokk áll rendelkezésre. Rendezzük R-et egy kétfázisú többutas összefésüléssel, amelyben Y a rendezési kulcs. S-et hasonló módon rendezzük. Összefésüljük a rendezett R és S relációkat. Ehhez általában csak két puffert használunk, egyet R és egyet S éppen aktuális blokkjára.

Egyszerű rendezésen alapuló összekapcsolási algoritmus Az alábbi lépéseket kell többször megismételnünk: Megkeressük az Y összekapcsolási attribútumoknak azt a legkisebb y értékét, amely éppen az R és S blokkok elején található. Ha y nem jelenik meg a másik reláció elején, akkor az y rendezési kulcsú sor(oka)t eltávolítjuk. R Részlista aktuális blokkja R és S rendezett részlisták . . . Algoritmus . . . . S Részlista aktuális blokkja Lemez Lemez memóriapufferek

Egyszerű rendezésen alapuló összekapcsolási algoritmus Egyébként azonosítjuk mindkét relációban az összes y rendezési kulcsú sort. Ha szükséges, addig olvassuk be a rendezett R és S blokkjait, amíg biztosak nem leszünk benne, hogy már egyik relációban sincs y értékű sor. Erre a célra összesen M puffert használhatunk fel. A kimenetbe írjuk az összes olyan sort, amely R és S közös Y értékkel - jelen esetben éppen y-nál - rendelkező sorainak összekapcsolásával kialakítható. Ha bármelyik relációban már nincs több megvizsgálatlan sor a memóriában, akkor annak pufferét újra feltöltjük.

Egyszerű rendezésen alapuló összekapcsolási algoritmus Ha van olyan y Y érték, amelyre az ezzel az értékkel rendelkező sorok nem férnek be a pufferbe, akkor az előző algoritmust módosítanunk kell. Ha az egyik reláció (R) y Y értékkel rendelkező sorai beférnek M-1 darab pufferbe, akkor olvassuk be R ezen blokkjait pufferekbe, majd egyenként olvassuk be S y értékű sorait a fennmaradó pufferbe. Valójában ilyenkor az egymenetes összekapcsolását végezzük el azokra, amelyre Y értéke éppen y. Ha mindkét relációnak több y Y értékű sora van, annál hogy azok M-1 pufferbe beférjenek, akkor használjuk fel az M puffert, és hajtsunk végre egy beágyazott ciklusú összekapcsolást a két reláció y Y értékű sorain.

Egyszerű rendezésen alapuló összekapcsolási algoritmus I/O-költség: 5(B(R)+B(S)) Korlát: B(R), B(S)≤M2 Szükséges blokk: 𝐦𝐚𝐱⁡(𝑩 𝑹 ,𝑩 𝑺 ) Algoritmusunk az argumentum relációk minden blokkjára öt lemez I/O-műveletet végez. Kivételt képezne az az eset, ha olyan sok sor lenne azonos Y értékkel, hogy a szóban forgó sorokat valamilyen speciális módon kellene összekapcsolnunk. Ebben az esetben a további lemez I/O-műveletek száma attól függ, hogy csak az egyik avagy mindkét reláció olyan sok azonos Y értékű sorral rendelkezik-e, hogy azok maguk már M-1-nél több puffert igényelnek. Meg kell vizsgálnunk, hogy mekkorának kell M-nek lennie ahhoz, hogy az egyszerű rendezéses összekapcsolás működjön. Az elsődleges korlát az, hogy végre kell tudnunk hajtani R-en és S-en a kétfázisú, többutas összefésüléses rendezéseket. Ha ezzel készen vagyunk, akkor már nem fogunk kifogyni a pufferből, noha esetleg el kell majd térnünk az egyszerű összefésüléstől, ha az azonos Y értékkel rendelkező sorok nem férnek be M pufferbe.

Hatékonyabb rendezésen alapuló összekapcsolási algoritmus „összefésüléses összekapcsolás” „rendezéses összefésüléses összekapcsolás” Az R(X,Y) |><| S(Y,Z) összekapcsolást M darab memóriablokkot használva a következőképpen számíthatjuk ki: Ha nem kell aggódnunk az összekapcsolási attribútumokon azonos értékkel bíró sorok igen nagy száma miatt, akkor blokkonként 2 lemez I/O-műveletet megtakaríthatunk, azáltal, hogy a rendezések második fázisát kombináljuk magával az összekapcsolással. Az ilyen algoritmusokat egyszerűen rendezéses összekapcsolásnak hívjuk. További ismert elnevezések még az „összefésüléses összekapcsolás” és a „rendezéses összefésüléses összekapcsolás”.

Hatékonyabb rendezésen alapuló összekapcsolási algoritmus Y-t rendezési kulcsként használva mind R-re, mind S-re M méretű rendezett részlistákat hozunk létre. Az egyes részlisták első blokkjait behozzuk egy-egy pufferbe, ehhez feltesszük, hogy összesen nincs M-nél több részlista. A részlisták soron következő sorai között újra meg újra megkeressük a legkisebb Y értéket, y-t. Mindkét reláció sorai között beazonosítjuk az y értékkel rendelkezőket, ehhez esetleg betesszük azokat az M szabad puffer némelyikébe, feltéve, hogy M-nél kevesebb részlista van. A kimenetbe tesszük az összes olyan R-beli és S-beli sorok összekapcsolását, amelyek az Y attribútum(ok)on y értékkel rendelkeznek. Ha közben bármelyik részlista puffere kiürül, akkor azt lemezről ismét feltöltjük.

Hatékonyabb rendezésen alapuló összekapcsolási algoritmus I/O-költség: 3(B(R)+B(S)) Szükséges blokk: ⁡(𝑩 𝑹 +𝑩 𝑺 )

Összefoglalás Köszönöm a figyelmet! Operátor Szükséges blokkok kb. Lemez I/O műveletek γ, δ 𝐵 3B ∩, υ, - 𝐵(𝑅+𝐵 𝑆 ) 3(B(R)+B(S)) egyszerű összekapcsolás max⁡(𝐵 𝑅 ,𝐵 𝑆 ) 5(B(R)+B(S)) hatékonyabb összekapcsolás (𝐵 𝑅 +𝐵 𝑆 ) Köszönöm a figyelmet!