BFák Kiegyensúlyozott keresőfák Hatékonyság: O(lg(n)), de a nagy fokszám miatt igen alacsony szorzótényezővel Alkalmazás: Lemezen tárolt adatbázisoknál.

Slides:



Advertisements
Hasonló előadás
GRIN: Gráf alapú RDF index
Advertisements

ADATBÁZISOK.
Memória.
RAID (Redundant Array of Independent/Inexpensive Disks) Független/Olcsó lemezek redundáns tömbje.
Tömbök C#-ban.
Adatbázis kezelés. Hierarchikus modell Legrégebbi modell, ma már nem használatos. Az adatokat fákban tároljuk, ahol minden pont a szegmens adatokat, és.
ADATBÁZIS KEZELÉS – Adattípusok
Microsoft Access V. Készítette: Rummel Szabolcs Elérhetőség:
AVL-fa építése.
Készítette: Sebestyén Dávid SEDRAAI.ELTE. Az adathordozók Ha nincs hálózatban a két számítógép, amik között adatot szeretnénk átvinni Vagy a digitálisan.
Információ kezelés Az információ visszakeresésének lehetőségei.
Adatbázis-kezelés.
16. Tétel. Adatbázis: Olyan adatgyűjtemény, amely egy adott feladathoz kapcsolódó adatokat szervezett módon tárolja, és biztosítja az adatokhoz való hozzáférést,
Bevezetés a Java programozásba
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
12. Óra Háttértárak.
A számítógép Szűkebb értelemben a számítógép olyan elektronikus információ feldolgozó gép, amely információk (adatok és programok) tárolására alkalmas.
Adatbázis-kezelés ACCESS program:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
PIC processzor és környezete
Az adatfeldolgozás forrásai
DAG topologikus rendezés
2 tárolós egyszerű logikai gép vázlata („feltételes elágazás”)
Ferenci László És Viniczai Zsófia Előadásában.  A vizsgázónak tisztában kell lennie az adatbázis-kezeléssel kapcsolatos legfontosabb fogalmakkal, és.
A memória tárolja a végrehajtandó programokat és a feldolgozásra váró adatokat. A számítógép memóriája adattárokból áll. Minden ilyen adattár memóriaelemekből.
Egy egyszerű gép vázlata
Fixpontos, lebegőpontos
A programozás alapjai A számítógép számára a feladat meghatá- rozását programozásnak nevezzük. Ha a processzor utasításait használjuk a feladat meghatározásához,
RAID lemezek (Redundant Array of Independent or Inexpensive Disks)
Tervezés, Normalizálás
DDL – Adatdefiníciós nyelv
Gráfelmélet: Fák.
Adatszerkezetek 1. előadás
A számítógép elindítása
Kötvényárazási hibák intelligens javítóalgoritmusának tervezése és fejlesztése GELLÉN ÁGNES IUFQ58.
11. tétel Adatbázis táblái közti kapcsolatok optimalizálása
Számítógépek története, felépítése összefoglalás
Fák.
Adatbázis kezelés. Az adatbázis tágabb értelemben egy olyan adathalmaz, amelynek elemei – egy meghatározott tulajdonságuk alapján – összetartozónak tekinthetők.
Visual Basic 2008 Express Edition
Adatbázis kezelés.
Adatbázis-kezelés Probléma: az excel kezelhetetlen túl sok adat esetén
Adatbázisok tervezése, megvalósítása és menedzselése
Kulcsok meghatározása a táblákban
Adatbázis alapfogalmak
CUDA C/C++ programozás
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Példa kettő-három fa felépítésére - törlés művelet Készítette : Krizsai Petra
Minuet: A Scalable Distributed Multiversion B-Tree Írta: Benjamin Sowell, Wojciech Golab, Mehul A. Shah Feldolgozta: Fokin Miklós, Hodosy Gábor, Tóth Tamás.
Software - Ismeretek Avagy mitől megy a Hardware.
Dag Toplogikus rendezés
Algoritmusok és adatszerkezetek
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
(Bináris) Kupac (heap) adattípus
REGISTRY - regisztrációs adatbázis
Smart Farming dr. Szieberth Dénes Kőszárhegy Kazinczy Ferenc utca 12. mobil telefon: 36 (06)
Gazdasági informatika II (SZIE GTK GVAM 1. évfolyam) 2009/2010. tanév 2. félév.
MBR és a partíciós tábla Forrás: Wikipedia. MBR 1. A Master Boot Record (MBR) vagy más néven a partíciós szektor a merevlemez legelső szektorának (azaz.
Adatbázisok 5. gyakorlat. Jövő hét utáni héten ZH! (Adatmodellezés, normalizálás) és kötprog doksi leadás (adatmodell rész)
Készítette: Kiss András
Nevezetes algoritmusok
Adatbázisok tervezése, megvalósítása és menedzselése
BFák Kiegyensúlyozott keresőfák
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
Algoritmusok és Adatszerkezetek I.
Avagy mitől megy a Hardware
Algoritmusok és Adatszerkezetek I.
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Előadás másolata:

BFák Kiegyensúlyozott keresőfák Hatékonyság: O(lg(n)), de a nagy fokszám miatt igen alacsony szorzótényezővel Alkalmazás: Lemezen tárolt adatbázisoknál Mágneslemezen hatékony tárolásra lett tervezve Ki/Be műveletek minimalizálása Elágazási tényező: néhány ezerig is terjedhet Időszükséglet=Ki/Be idő+memória számolás ideje

Egy csúcs n db kulcsot tartalmaz  a kulcstartomány felosztása  a csúcsnak n+1 gyereke van. Levélcsúcs: egyetlen gyereke sincs BFák M D H Q T X B CF GY ZV WR SN PJ K L

Lemezműveletek modellezése x: egy adathivatkozás, nem tudni, hogy hol van Ha x a lemezen van, akkor x mezői nem elérhetők LemezrőlOlvas(x) ha lemezen van, akkor beolvassa. Egyébként hatástalan, LemezreÍr(x) kiírja a lemezre, ha történt módosítás. Egyébként hatástalan. Egy csúcs mérete = lemez blokkmérete. Ez az elágazási tényező felső korlátja is.

BFa Definíciója A T BFa olyan gyökeres fa, amelyre: 1. Minden x csúcsnak a következő mezői vannak: –n: az x csúcsban tárolt kulcsok száma –n db kulcs úgy, hogy kulcs[1]<=…<=kulcs[n] –levél=Igaz, ha x levél, Hamis egyébként 2. Ha x belső csúcs, akkor gyerek[i] vektor, ahol i<=n a gyerekekre mutató vektor. Ha x levél, akkor a vektor tartalma meghatározatlan 3. Ha k i egy kulcs, amelyik a gyerek[i] részfában van, akkor: k 1 <=kulcs[1]<=k 2 <=kulcs[2]<=…<=kulcs[n]<= k n+1

Minden levél magassága egyenlő, ez a fa h magassága Minimális fokszám: t>=2, maximális fokszám: 2t –Minden nem gyökér csúcsnak legalább t-1 kulcsa van –Minden csúcsnak legfeljebb 2t-1 kulcsa van –Egy csúcs telített, ha pontosan 2t-1 kulcsa van Gyökércsúcsnak legalább 1 kulcsa  2 gyereke van Legegyszerűbb eset: t=2  minden csúcsnak 2,3 vagy 4 gyereke lehet  fának nevezzük (gyakorlatban t>>>2 !) BFa Definíciója

BFa magassága Tétel: Ha n>=1 és T egy n kulcsos BFa, magassága h és min.fokszáma t>=2  h<=log t (n+1)/2 Biz: egy h magasságú bfa csúcsszáma akkor minimális, ha minden nem gyökér belső csúcsnak éppen t-1 kulcsa van. Ilyenkor: n=1+2t+2t 2 +…+2t h-1 =1+(t-1)* i=1 Σ h 2t i-1 = =1+2(t-1)(t h -1)/(t-1)=2t h -1 Vagyis más fákra n>=2t h -1  log t (n+1)/2>=h

Keresés BFában BFaKeres(k) i=1 while i kulcs[i] i=i+1 if i<=n és k=kulcs[i] then return (Me,i) if levél then return NIL else LemezrőlOlvas(gyerek[i]) return gyerek[i].BFaKeres(k) Jobbrekurzív algoritmus: HF: átírni ciklikussá Többutas elágaztató döntés Ha megtaláltuk  csúcs és index visszaadása

Üres BFa készítése ÚjBFa() bfa=CsúcsotElhelyez() bfa.levél=Igaz bfa.n=0 LemezreÍr(bfa) return(bfa) Lemezen helyfoglalás

BFa egy csúcsának kettévágása Me: nem telített csúcs, csúcs=gyerek[i], ami telített (2t gyereke van) BFaVágásGyerek(i,csúcs) új=CsúcsotElhelyez() új.levél=csúcs.levél csúcs.n=t-1 for j=1 to t-1 új.kulcs[j]=csúcs.kulcs[j+t] if not csúcs.levél then for j=1 to t új.gyerek[j]=csúcs.gyerek[j+t] for j=n downto i gyerek[n+2]=gyerek[n+1] kulcs[n+1]=kulcs[n] gyerek[i+1]=új kulcs[i]=csúcs.kulcs[i] n=n+1 LemezreÍr(csúcs), LemezreÍr(új), LemezreÍr(Me) Új csúcs kezdőértékezése Gyerekek, kulcsok átmásolása Csúcs fokszáma feleződik Új csúcs beszúrása apa csúcsai közé

Csúcs kettévágása N W P Q R S T U V N S W P Q RT U V

Kulcs beszúrása BFába Beszúrás mindig levélelemnél történik  a fa magassága nem változik  (egyfajta kiegyenlítettség megmarad) Ha a beszúrási ponthoz vezető út bármelyik eleme telített, akkor felhasad két fele méretű csúcsra A fa nem a levelénél, hanem a gyökerénél nő

TelítetlenBFábaBeszúr(k) i=n if levél then while i>=1 és k =1 és k kulcs[i] then i=i+1 gyerek[i].TelítetlenBFábaBeszúr(k) Kulcs beszúrása BFába Beszúrás levélelembe Ha a gyerek telített, akkor felhasítjuk Meghatározzuk, hogy a rekurziót melyik gyerekkel folytassuk A fa gyökere telítetlen

Kulcs beszúrása BFába BFábaBeszúr(k) if n=2t+1 then új=CsúcsotElhelyez() új.levél=Hamis új.n=0 új.gyerek[1]=Me új.BFaVágásGyerek(1,Me) új.TelítetlenBFábaBeszúr(k) else TelítetlenBFábaBeszúr(k) Ezt csak a bfa gyökerére hívjuk meg

Kulcs törlése BFából Hasonlít a beszúrásra, de kicsit bonyolultabb A minimális fokszámnál szélesebb csúcsokból törlünk. A keskenyebbeket egyesíteni próbáljuk A rekurzió során lefelé menőben minden egyesíthető csúcsot egyesítünk, felfelé pedig törlünk a pontos algoritmust nem adjuk meg, ez HF!!

P C G M T X A BD E FY ZU VQ R S N O J K L P C G M T X A BD EY ZU VQ R SN OJ K L 0. t=3  legalább t-1=2 kulcs  legfeljebb 2t-1=5 kulcs csomópontonként 1. Ha a k kulcs az x levélelemben van  kulcs törlése levélelemből

2. Ha a k kulcs az x belső csúcsban van (megtaláltuk), és a megelőző k’ kulcsot tartalmazó gyerek fokszáma legalább t+1 –a. megelőző k’ kulcsot rekurzívan töröljük a gyerekből, majd a k’ kulcsot beemeljük az x csúcsba –b. Szimmetrikusan: ha a rákövetkező k” kulcsot tartalmazó gyerek fokszáma legalább t+1… P C G M T X A BD EY ZU VQ R SN OJ K L P C G L T X A BD EY ZU VQ R SN OJ K

2.c. 2a-2b után: ha mindkét gyerek fokszáma minimális, akkor a megelőző és a következő gyerek egyesíthető, ebbe levisszük a törlendő k kulcsot  ezután töröljük a k csúcsot P C L T X A BD E J KY ZU VQ R SN O P C G L T X A BD EY ZU VQ R SN OJ K

3. Ha a k kulcs az x belső csúcsban nincs, akkor meghatározzuk annak a részfájának a csúcsát, amelyikben benne lehet. A rekurzív hívást csak legalább t kulccsal (1 extra kulccsal) rendelkező részfákon hajtjuk végre, hogy legyen mit törölni. Ha mégis csak t-1 kulcsa lenne, akkor –a. Ha van olyan testvére, amelynek legalább t gyereke van, akkor az x csúcsból a megelőző vagy rákövetkező elemet vigyük a gyerekbe, a testvéréből pedig 1 kulcsot vigyünk az x csúcsba. –b. Ha nincs ilyen testvére, akkor egyesítsük a két testvért. –c. Ha a gyökér két utolsó gyerekét egyesítjük, akkor a gyökérkulcsot is vigyük ide le, ilyenkor csökken a fa fokszáma Kulcs törlése BFából

P C L T X A BD E J KY ZU VQ R SN O C L P T X A BD E J KY ZU VQ R SN O C L P T X A BE J KY ZU VQ R SN O CL és TX egyesítése, P lemozdítása A fa magassága csökken

C L P T X A BE J KY ZU VQ R SN O E L P T X A CJ KY ZU VQ R SN O A B törlése megsértené a minimális fokszám elvét, viszont a testvérének van egy extra kulcsa  a testvérétől 1-et felviszünk, fentről egyet lehozunk, és ekkor már törölhetjük az elemet