Négyágú fák Quad trees



Hasonló dokumentumok
Térinformatikai adatszerkezetek

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský

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.

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

Adatbáziskezelés. Indexek, normalizálás NZS 1

Érdekes informatika feladatok

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

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

file:///d:/apa/okt/ad/jegyzet/ad1/b+fa.html

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

Adatszerkezetek 2. Dr. Iványi Péter

Struktúra nélküli adatszerkezetek

Algoritmuselmélet 2. előadás

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Gráfelmélet II. Gráfok végigjárása

Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Adatszerkezetek 7a. Dr. IványiPéter

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Egyirányban láncolt lista

2. Visszalépéses keresés

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

Programozás alapjai II. (7. ea) C++

Regresszió. Csorba János. Nagyméretű adathalmazok kezelése március 31.

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

17. A 2-3 fák és B-fák. 2-3 fák

Adatszerkezetek és algoritmusok

Adatszerkezetek 1. előadás

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Algoritmusok és adatszerkezetek gyakorlat 07

22. GRÁFOK ÁBRÁZOLÁSA

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Navigáci. stervezés. Algoritmusok és alkalmazásaik. Osváth Róbert Sorbán Sámuel

Cohen-Sutherland vágóalgoritmus

Adatszerkezetek 1. Dr. Iványi Péter

KOVÁCS BÉLA, MATEMATIKA I.

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

Gráfelméleti alapfogalmak-1

Algoritmusok és adatszerkezetek 2.

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Algoritmusok bonyolultsága

Térinformatikai adatszerkezetek

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

Adatszerkezetek 2. Dr. Iványi Péter

Fák Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Adatbázismodellek. 1. ábra Hierarchikus modell

III. Gráfok. 1. Irányítatlan gráfok:

KOVÁCS BÉLA, MATEMATIKA I.

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

angolul: greedy algorithms, románul: algoritmi greedy

Matematika 11 Koordináta geometria. matematika és fizika szakos középiskolai tanár. > o < szeptember 27.

Adatszerkezetek II. 1. előadás

Programozási segédlet

Diszkrét matematika 2.C szakirány

Termék modell. Definíció:

Általános algoritmustervezési módszerek

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Diszkrét matematika 2.

Elengedhetetlen a játékokban, mozi produkciós eszközökben Nélküle kvantum hatás lép fel. Az objektumok áthaladnak a többi objektumon

Diszkrét matematika 2. estis képzés

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében

Felvételi tematika INFORMATIKA

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

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

Algoritmusok és adatszerkezetek I. 1. előadás

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Láthatósági kérdések

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Elemi adatszerkezetek

Bevezetés a programozásba. 5. Előadás: Tömbök

Súlyozott automaták alkalmazása

Visszalépéses keresés

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

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

Adatszerkezetek Bevezetés Adatszerkezet Adatszerkezet típusok Műveletek Bonyolultság

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

I.5. A LOGIKAI FÜGGVÉNYEK EGYSZERŰSÍTÉSE (MINIMALIZÁCIÓ)

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

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

Klár Gergely 2010/2011. tavaszi félév

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Arany Dániel Matematikai Tanulóverseny 2010/2011-es tanév 1. forduló haladók III. kategória

Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy

Láncolt listák Témakörök. Lista alapfogalmak

7. Régió alapú szegmentálás

Adatbázis rendszerek. dr. Siki Zoltán

Algoritmusok bonyolultsága

Haladó rendezések. PPT 2007/2008 tavasz.

Diszkrét matematika 2.C szakirány

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Átírás:

Négyágú fák Quad trees Kolozsvár, 2010 Nagy Tímea 1

Bevezetés Napjainkban a térbeli informatika jelentős fejlődésnek indult. A kérés nagy mennyiségű adatok feldolgozására láthatóan növekszik, kötelezvén a kutatókat új adatstruktúrák felfedezésére és kifejlesztésére. Adatstruktúrának nevezzük az információk, az adatok formai elrendeződését, az algoritmus nagyobb hatékonysága céljából. Világos tehát, hogy egy alkalmazás sikere nagy részben függ a használt adatstruktúráktól. Így elérkeztünk a dolgozat témájához : egy olyan adatstruktúrát bemutatni, mely alkalmas térbeli adatok tárolására és ábrázolására. Ez az adatstruktúra a négyágú fa (quad tree). Elméleti áttekintés 1. Definíció A négyágú fa egy olyan adatstruktúra, amelyben minden belső csomópontnak négy leszármazottja van. A legelterjedtebb adatszerkezet többdimenziós adatok tárolására. Egy rekurzív felbontáson alapuló hierarchikus adatszerkezet, amely az oszd meg és uralkodj módszerhez hasonlóan alakul. Mivel a hierarchikus adatszerkezetek képesek az adatok valamilyen szempontból fontosabb részhalmazára összpontosítani, ezáltal fölösleges műveletektől szabadulhatunk meg. Mindemellett könnyen áttekinthetőek és implementálásuk is aránylag egyszerű. A négyágú fákat pont típusú adatok, területek, görbék ábrázolására használják. A négyágú fák a teret cellákra osztják, a celláknak van négy leszármazottjuk vagy egy sem. Ha nincs utóda akkor ezt levélnek nevezzük. Ha egy csomópont telítődik, vagyis megvan a négy utóda, akkor tovább osztódik. 2. Osztályozás a) Területi négyágú fa (Region quadtree) Alapötlete a tér felbontása négyzetekre, amelyeknek oldalhosszúsága 2 többszörösével egyenlő. Legyen egy kép, amelyet egy bináris tömbbel kódoltunk, amelynek elemei a {0, 1} 2

halmazból valók. Az így kapott négyágú fa mélysége és alakja változó különböző képek esetében. A 2.1.a. ábrán láthatunk egy területet, a 2.1.b. ábrán látható a terület 2 3 2 3 bináris tömbben történő tárolása, a 2.2.a. ábra tartalmazza a felosztások után keletkezett maximális blokkokat, míg a 2.2.b. ábrán a megfelelő négyágú fát láthatjuk. 2.1. ábra. a. egy terület, b. kódolása bináris tömbbel. 2.2. ábra. a. a maximális blokk felosztás, b. a blokk felosztásának megfelelő négyágú fa. 3

b) Pont négyágú fa (Point quadtree) A pont fa a bináris fa tovább bővítése kétdimenziós térre. A négyágú fával megoldható feladatoknak két típusa ismert: távolságra vonatkozó feladatok, és jellemzőkre, tulajdonságokra vonatkozó feladatok. A tulajdonságra vonatkozó kérdéseket a következő ábrákkal is szemléltethetjük: a 2.3. a. ábra a felbontott területet tartalmazza (a tulajdonságokat színekkel ábrázoljuk), míg a 2.3. b. ábra tartalmazza a neki megfelelő négyágú fát. 2.3. ábra. a. a maximális blokk felosztás, b. a blokk felosztásának megfelelő négyágú fa. c) Perem négyágú fa (Boundary quadtree) Az ilyen típusú fák inkább vonalakat tárolnak. Görbék megközelítésére használjuk úgy, hogy addig osztjuk a teret amíg a felbontás nagyon apró lesz, és így vonalként tudjuk kezelni. Ennek a felbontásnak a hátránya az, hogy a négyágú fa mélysége túl nagy lesz, valamint a kapott fa nem lesz egyensúlyozott. Az ilyen típusú megközelítés bizonyos adatvesztéssel jár. Perem négyágú fa a 2.4-es ábrán látható. 4

2.4. ábra. Egy poligon megadása Hunter és Steiglitz szerint. 3. Történelmi háttér A quad-fák használata nem ismer hosszú történetet. A legelső említések 1972-ből származnak, mikor Hoare a mátrixok négyzetes blokkokra való felbontását Dijkstra-nak tulajdonítja. Morton már 1966-ban használta a térbeli indexelés elvét. A legalaposabb dolgozat 1990-ből származik és Samet nevéhez fűződik. A rekurzív felosztás elvének az eredetét, ami a négyágú fák alapja, nehéz megállapítani. A következőkben néhány mértani adatokra vonatkozó alkalmazást említünk meg, amelyek a területi négyágú fák alkalmazására utalnak. Warnock két dolgozatában leírja azoknak az algoritmusoknak az alkalmazását, amely a nem látható éleket és területeket figyelmen kívül hagyja, a kép rekurzív felbontását alkalmazva. A képterületet fokozatosan egyre kisebb négyzetekre osztja fel, amíg olyan területeket talál, amelyek eléggé egyszerűek ahhoz, hogy megjeleníthetőek legyenek. Klinger és Dyer Warnock ötleteit formafelismerésre és képfeldolgozásra, míg Hunter egy animációs alkalmazásban használta 1978-ban. Az SRI robot projekt egy háromszintű tér-felbontást használt, a robot világának megfelelő térkép ábrázolására. Eastman észreveszi, hogy egy rekurzív felbontás jobban megfelel a robot világának ábrázolására, és bemutat egy egyszerűbb változatot. Párhuzamosan a négyágú fák strukturális fejlesztéseivel, tanulmányozták ezeknek alkalmazhatóságát a képfeldolgozásban is. Kelly bevezette a sík fogalmát, amely egy kicsi kép, 5

amelynek pixeljei egy 8 8-as méretű blokknak szürke árnyalatait összesíti egy nagyobb képből. Ezáltal elkerülhetők a szükségtelen erőfeszítések az él-felismerésben. Ez úgy érhető el, hogy a síkban felismerjük az éleket, majd felhasználva ezeket, szelektíven más éleket keresünk a nagyobb képben. Ezen ötlet általánosításai motiválták a nagyobb felbontású képek ábrázolásának fejlesztését. Ezek közül Tanimoto és Pavlidis piramisa áll a legközelebb a területi négyágú fához. Adott egy A(n) 2 n 2 n felbontású kép. A piramis (2.5-ös ábra) egy {A(i)} tömbsorozat amelyben A(i 1) az A(i) oldalméretének felével egyenlő nagyságú tömb. Az A(0)-nak megfelelő tömb a pixel. 2.5. ábra. Egy háromszintű piramis szerkezete. Sokkal megfelelőbb a piramist fa formájában definiálni. Legyen egy 2 n 2 n felbontású kép. A képet rekurzívan felbontjuk négyzetekre, ugyanúgy, mint a négyágú fát, azzal a kivétellel, hogy a felbontás addig tart, amíg el nem érjük a pixeleket. Az így keletkező fának levelei egy-egy pixelt ábrázolnak, míg a közvetlen fölötte levő csomópontok az A(n 1) 2 n-1 2 n-1 felbontású tömbnek felelnek meg. A piramis egy teljes négyágú fa, arra használták, hogy a keresésekben szűkíteni tudjanak, azaz ha egy bizonyos információt találtunk egy nagyobb szinten akkor egy kisebb szinten tovább lehet keresni. 4. Az implementáláshoz használt adatszerkezet felépítése A legelőnyösebb implementálás a mutató (pointer) alapú fa adatszerkezet. A fának valamennyi csomópontja tartalmaz négy mutatót, amely a négy utódra (utódokra) mutatnak, és még egy mutatót a neki megfelelő szülőre (apára). Ezek mellett bejöhetnek más adatmezők is, attól 6

függően, hogy mire akarjuk használni a fát. A fa gyökerének apa mutatója null, míg a levelekben a négy utód mutató tartalmaz null értéket. A mutatókra a következőképpen hivatkozunk jelen dolgozatban: q = PARENT(p), ha q valamelyik utód mutatója a p-re mutat. p = CHILD(q, i), ha a p apa mutatója q-ra mutat, vagyis q i. utóda p. 5. A memória szükséglet elemzése Az elsődleges ok amiért a négyágú fákat kifejlesztették az volt, hogy csökkentsék a tárolásra igényelt helyet a homogén blokkok összevonása által. Az összevonásnak egyik következménye az algoritmusok végrehajtási idejének csökkenése. Legyen egy kép ami W darab fehér, és B darab fekete blokkot tartalmaz. Ha egy négyágú fát használunk adatszerkezetként, akkor szükségünk lesz 4(B + W) / 3 darab csomópontra, míg egy 2 n 2 n pixelből álló kép megfelelő bináris tömbjének ábrázolásához 2 2n bit szükséges. Ha olyan esetünk van, hogy az összevonások száma minimális (a kép sakktáblához hasonlít, 2.9 ábra, a négyágú fák használata nem ajánlott. 2.9. ábra. Egy sakktábla és a neki megfelelő négyágú fa. A négyágú fák memória szükséglete a következőktől függ: felbontás, azaz rezolúció (a fában levő szintek száma) 7

a kép mérete (a kép széle) az elhelyezkedése a körülfogó rácson belül 6. Példák A következőkben lássunk néhány példát olyan feladatokra, amelyeknek megoldásában a négyágú fák sokat segítenek. Legyen a klasszikus példa, amikor egy térkép adatait tároló adatbázist kérdezzük le. Feltételezzük, hogy van egy térkép, amely magasság görbéket tartalmaz, és egy másik térkép, amely olyan területeket jelöl, ahol előnyös a búza-termelés. Meg kell találnunk azokat a területeket két bizonyos magasság között ahol a búza-termelés a legelőnyösebb. Ennek érdekében meg kell határoznunk a két térkép egy metszetét. Ha a térkép egyéb információt is tartalmazna, mint például azt, hogy milyen területeken előnyös a kukorica-termelés, akkor egyes nem hierarchikus adatstruktúrák használata költségesnek bizonyulna. Azonban, ha hierarchikus adatstruktúrát használunk, mint például a négyágú fát, akkor az adott területekre vonatkozó nagy mennyiségű adatot kizárhatunk, így gyorsan és olcsón megtalálva a kért eredményt. Legyen a következő feladat két út kereszteződésének meghatározása egy adott területen belül. Alkalmazhatnánk pontonkénti ellenőrzést is, de sokkal hatékonyabb a hierarchikus négyszögsorozatok használata, amelyek a két út bizonyos szakaszait tartalmazzák. A metszetet az a két négyszög adja meg, amelyek átfedik egymást. Pont típusú adatokra is megfogalmazhatunk hasonló feladatot. Tegyük fel, hogy rendelkezésünkre áll több város pozíciója egy térkép részleten. Meg szeretnénk határozni azokat a városokat, amelyeknek legkevesebb 100000 lakosuk van és legtöbb 150 km-re fekszenek Kolozsvártól. Ha Románia térképét felosztjuk négyzetekre, akkor csak azokat a négyzeteket kell ellenőriznünk amelyek a megadott sugarú körön belül helyezkednek el. Egy utolsó példaként tegyük fel, hogy egy olyan adatbázist szeretnénk lekérdezni, amely különböző típusú adatokat tartalmaz (pontok, görbék, területek). Egy lekérdezés lehetne például a következő: keressük meg azokat a városokat, amelyeknek legkevesebb 50 000 lakosuk van, fekvése előnyös a kukorica termelés szempontjából és legtöbb 100 km-re fekszik a Szamostól. 8

Pont típusú adatok 1. Bevezetés A többdimenziós pont adatokat többféleképpen lehet ábrázolni, a választott adatszerkezet a végrehajtott műveletektől függ. A következőkben feltételezzük, hogy az adatokat négyágú fák segítségével implementáltuk. Az adatokat adatbázisban tároljuk, amely rekordok összessége. Minden pont-adatnak megfelel egy rekord, és lehet egy vagy több attribútuma. Egy lekérdezés azokat a rekordokat keresi, amelyek egy bizonyos tulajdonságot, feltételt teljesítenek. 2. Nem-hierarchikus adatszerkezetek Legyen egy 10 városból álló adathalmazunk, amelyeknek adott az x és y koordinátájuk (3.1 ábra). A legegyszerűbb módszer pont típusú adatok tárolására a szekvenciális lista, vagyis a sor. Ha az adatbázisunk N darab k attribútumú bejegyzést (rekordot) tartalmaz, akkor a keresés O(n. k) bonyolultságú. VÁROS X Y MADRID 5 7 LONDON 13 78 AMSTERDAM 29 88 PÁRIZS 20 70 BERLIN 52 81 BÉCS 49 46 RÓMA 50 24 BUDAPEST 65 45 ATHÉN 75 2 BUKAREST 91 35 3.1. ábra. Városok szekvenciális listája. Az adatokhoz való hozzáférést gyorsítja a rendezett lista. A rendezést különböző attribútumok szerint végezhetjük. Valamennyi attribútumnak megfelel egy saját rendezett lista, amely lehetővé teszi, hogy akármelyik attribútum szerint lehessen keresni. A 3.2-es ábra tartalmazza a 3.1-es ábra összes adatait, de fordított listaként adja vissza (inverted lists). Két rendezett listánk van, az egyik az x, a másik az y koordinátának megfelelően. Megjegyezzük, hogy a rendezett listák nem a legmegfelelőbbek ilyen típusú adatok tárolására, mivel a keresést csak egy attribútum szerint végezhetjük, amit főattribútumnak is nevezünk. Ilyen típusú adatok feldolgozására több előnyös 9

módszer létezik, a legelterjedtebb a térképkészítők körében az egyenlő közű rács módszer (fixed grid). Ez a módszer a teret egyenlő közű cellákra osztja fel, kétdimenziós adatok esetén négyzetekre, lefedve egy ráccsal a térképet. Továbbá mindegyik cellának van egy mutatója egy adatszerkezetre, egy listára például, amely tartalmazza a cellában levő pontok halmazát. X MADRID LONDON PÁRIZS AMSTERDAM BÉCS RÓMA BERLIN BUDAPEST ATHÉN BUKAREST Y ATHÉN MADRID RÓMA BUKAREST BUDAPEST BÉCS PÁRIZS LONDON BERLIN AMSTERDAM 3.2. ábra. Fordított lista. A 3.3-as ábra az egyenlő közű rács módszert szemlélteti, ahol a keresési terület 20 20-as méretű négyzetekből áll, a koordinátarendszerünk 100 100-as nagyságú, következik, hogy van 25 egyenlő méretű négyzetünk, amelyek a rácsot alkotják. 3.3. ábra. Egyenlő közű rács módszer. 10

Bentley, Stanat és Williams bebizonyították, hogy egy keresés átlagos ideje az egyenlő közű rács módszerban egyenlő O(n 2 k )-val, ahol n a megtalált rekordok száma és 2 k a maximális cellaszám, amelyek metszik a megvizsgált területet. Például, ha megakarjuk keresni az összes olyan várost, amely a (26, 73) középpontú, 20 20-as négyzeten belül található, meg kell vizsgálnunk a (10, 70), (30, 70), (10, 90) és (30, 90) középpontú cellákat. Lekérdezésünk során négy cellát kell megvizsgálnunk, a visszatérített eredmény pedig, adatbázisunknak megfelelően, Párizs. Az egyenlő közű rács módszer akkor megfelelően hatékony, ha a pont-adatok egyenletes eloszlásúak a területen. Ha a pont-adatok nincsenek egyenletesen elszórva, akkor a módszer nem bizonyul hatékonynak, mivel a cellák nincsenek egyenletesen megtelve, egyesek majdnem üresek, esetleg teljesen üresek is lehetnek, míg más cellákba sok adat tömörülhet, így a hely nem lesz hatékonyan kihasználva. 3. Négyágú pontfák A négyágú pontfa fogalmát (point quadtree) Finkel és Bentley vezették be 1974-ben, mint egy többdimenziós általánosítását a bináris keresőfának, amit úgy kapunk, hogy az egyenlő közű rács módszer és a bináris keresőfa fogalmát egyesítjük. Ezáltal megoldódott a rács módszer hatékonyság-problémája, amikor az adatok nem egyenletes eloszlásúak. Ez a fa pontokat tartalmaz és ha megfigyeljük felépítésének módszerét kiderül, hogy a tér cellákra való felbontását a pontok határozzák meg. Emiatt a rács szerkezete a beszúrás sorrendjétől függ. Két dimenzióban minden pont-adat egy csomópont a négyágú fában, továbbá minden csomópont egy csomópont típusú rekord, hét darab mezővel. Az első négy mező mutató a csomópont négy leszármazottjára, mindenik megfelelő irányban: NW, NE, SW, SE, azaz ÉNy, ÉK, DNy, DK. Legyen p egy mutató egy csomópontra és c egy keret (cella), akkor ezekre a mezőkre így hivatkozunk: p.child[c], ahol c lehet NW, NE, SW, SE. A következő két mező, x és y tartalmazza a pont koordinátáit, míg az utolsó, name, az illető pont leírását tárolja. A 3.4-es ábra a 3.1-es ábra városainak megfelelő négyágú pontfája. Feltételezzük, hogy minden pont egyedi. Ha egy alkalmazásban megengedettek az ütközések (több pontnak ugyanaz a koordinátája), akkor az adatszerkezet tartalmazhat egy plusz mezőt, ami egy mutató egy listára, ami tartalmazza az ugyanolyan koordinátájú pontokat. 11

3.4. ábra. Egy négyágú pontfa és a rekordok amelyeket tárol. 4. Területi négyágú fák pont adatok ábrázolására Egy területet ábrázolhatunk a határainak vagy a belsejének segítségével. A területi négyágú fák a belső ábrázolásra teszik a hangsúlyt. Ezek egy olyan hierarchikus adatszerkezet osztályhoz tartoznak, amely rekurzív felbontáson alapszik. A négyágú pontfák esetében a felosztás pontjait a csomópontok (adatok) jelképezik. Az a feltétel, hogy a keletkezett területek a felosztás során egyforma nagyságúak legyenek, a területi négyágú fához vezet. Ebben a fejezetben azokat a területi négyágú fákat tárgyaljuk, amelyek alkalmasak pont-adatok ábrázolására, MX illetve a PR négyágú fák. 12

a) MX négyágú fák Ha a pont-adatok halmaza véges, akkor tekinthetjük úgy, hogy a pontok fekete pixelek a területi négyágú fában. Ennek az ábrázolásmódnak alternatívájaként tekintsük a pontokat, mint nem nulla elemeket egy négyzetes mátrixban. Innen jön az MX elnevezés is. Szerkezete a területi négyágú fához hasonló, azzal a különbséggel, hogy egy levél vagy fehér vagy fekete, annak megfelelően, hogy létezik-e pont-adat a mátrix megfelelő pozíciójában. Tekintsük például a 3.12-es ábrát, amely egy 2 3 2 3 nagyságú MX négyágú fa ábrázolása a 3.1-es városok listájának. Ezt a fát az f(z) = z / 12.5 függvény alkalmazásaként kapjuk meg (az x és y koordinátákra). Az MX négyágú fában minden pont egy l l-es nagyságú négyzetnek felel meg. Úgy tekintjük, hogy a pontok a négyzetek bal alsó sarkában helyezkednek el. Megjegyezzük, hogy a mátrix bal alsó sarka a (0, 0) pozíciónak felel meg. A területi négyágú fával ellentétben, ha egy csomópontnak van négy fekete utóda, nem vonjuk össze, mivel ezáltal adatvesztéshez jutunk. Figyelembe kell vennünk, hogy minden pont egyedi, különböző. Másfelől, ha a négy utód mind fehér akkor az összevonás alkalmazható, mivel egyik sem hordoz információt. 3.12. ábra. Egy MX négyágú fa és az adatok amiket tárol. 13

a) PR négyágú fák MX négyágú fákat akkor használhatunk, ha az adathalmazunk diszkrét. Ellenkező esetben nem tudjuk fölhasználni adatbázisunk ábrázolására az MX fákat, mivel nem ismerjük az adatpontok közti lehetséges legkisebb távolságot. Ilyenkor a PR (point region) négyágú fákat használjuk, amelyek az adatokat területek negyedeivel asszociálja, ezért nem kell diszkréteknek lenniük. A PR négyágú fa a területi négyágú fához hasonlóan alakul, azaz a tér egyenlő részekre való rekurzív felbontásán alapszik. A rekurzív felbontást addig alkalmazzuk, amíg mindegyik negyed csak egy adatot tartalmaz. A kettő közti különbség annyi, hogy egy levél vagy fehér (üres), vagy fekete (tartalmaz adatot és a pont koordinátáit). Ha két pont nagyon közel van egymáshoz, akkor a felbontás nagyon mély is lehet. Az ilyen esetek elkerülésére az adatokat csoportosíthatjuk (buckets). Meghatározzuk a csoport c kapacitását. Egy negyedet csak akkor bontunk tovább, ha meghaladta ezt a c kapacitást. PR négyágú fához példaként tekintsük a 3.14-es ábrán levő fát. 3.14. ábra. Egy PR négyágú fa és az adatok amelyeket tárol. 14

Területi négyágú fák 1. Bevezetés A négyágú fák egyik legfontosabb típusa a területi négyágú fák. Kétdimenziós bináris adatok (képek) ábrázolására használható, azonban ha szükséges általánosítható színes képekre is. Egy véges kép sorozatos, négy egyenlő részre való lebontására alapul, azaz ha egy negyed tartalmaz 0-ásokat és 1-eseket is, akkor addig folytatjuk a felbontást míg minden negyed csak 0-ásokat, vagy csak 1- eseket tárol. A területi négyágú fákat gyakran használják számítógépes grafikai alkalmazásokban képek tömörebb tárolására. Megjegyezzük, hogy az 1-esek a képelemeknek felelnek meg, míg a 0-ások a területen kívüli pixelek. Példaként tekintsük a 4.1-es ábrát, ahol a megfelelő képet egy 2 4 2 4 nagyságú bináris tömbben tároltuk. Az ábrán látható fa gyökerének mindegyik fia egy negyedet ábrázol (NW, NE, SW, SE). A levelek olyan csomópontok, amelyeket nem kell tovább osztani. A gyökér a fának megfelelő mélységi szinten helyezkedik el, a legalsó szinten (0-s szint) csak pixelek találhatók. A fekete színű csomópontok a kép alkotó részei, a fehér színűek a háttér részei, míg a szürke színűek nem hordoznak konkrét információt, csak azt tudjuk, hogy úgy fekete, mint fehér színű részeket is tartalmaznak. Egy csomópont által ábrázolt terület oldalhosszúságát a megfelelő szint segítségével is megtudhatjuk, sőt ha a fát preorder sorrendben járjuk be, a teljes kép visszaépíthető. 4.1. ábra. a. Egy területet ábrázoló 2 4 x 2 4 bináris tömb, b. a terület maximális blokk felosztásasa, c. a területnek megfelelő négyágú fa. 15

PM négyágú fák 1. Bevezetés A PM négyágú fák családja a területeket nem a belsejük, hanem a határaik segítségével ábrázolja. Ebben a fejezetben bemutatjuk ezt a családot, de azokra a területekre hivatkozunk amelyeknek határai egyenes vonalakból állnak. Az adatokat a terület felbontása során keletkezett szomszédos sokszögek hálózata formájában ábrázoljuk (polygonal map). A PM négyágú fákat Samet, Webber és Nelson vezették be, a más típusú négyágú fák ábrázolásakor felmerülő gondok elkerülése végett. Egy ilyen gond például az, hogy csak hozzávetőlegesen ábrázolják az adatokat, mivel a végpontokat pixelekkel ábrázolják, illetve az, hogy bizonyos tulajdonságokat nem lehet velük ábrázolni, például 5 él nem találkozhat ugyanabban a végpontban. A PM négyágú fáknak több verziói is léteznek. Ezek vagy végpont vagy él alapúak, és felépítésük azon az elven alapszik, miszerint a végpont vagy az élek halmazának fokozatos felosztása olyan részhalmazokhoz vezet, amelyek elég egyszerűek ahhoz, hogy adatszerkezetek segítségével ábrázoljuk őket. 2. PM1 négyágú fák A PM 1 négyágú fák végpont alapúak és a területi, illetve a PR négyágú fákhoz hasonló módon épülnek fel. Terület-határok pontos megjelölésére használják, emiatt úthálózatok ábrázolására alkalmas. A területet fokozatosan négy alterületre osztjuk, amíg olyan blokkokat nem kapunk, amelyek csak egy élt tartalmaznak, kivéve azt az esetet mikor két vagy több él találkozik egy végpontban és ez a végpont is a blokkban található. Egy blokk csak egy végpontot tartalmazhat. A felosztás jobb megértésére tekintsük az 5.1-es ábrát, ami tartalmaz egy sokszögtérképet és a neki megfelelő PM 1 blokk felosztást, és az 5.2-es ábrát, ami tartalmazza a sokszögtérkép PM 1 négyágú fáját. 16

Ennek az ábrázolásnak az egyik hátránya az, hogy ha két él nagyon közel van egymáshoz, vagy a metszet végpontjuk nagyon közel van egymáshoz, akkor nagyon aprólékos felbontásra lesz szükségünk. 5.1. ábra. Egy egyszerű sokszögtérkép és a neki megfelelő PM 1 blokkfelosztás. A PM 1 négyágú fa meghatározása megadható szigorúbban is, ha a sokszögtérképet egy egyenes élekből álló síkgráfnak tekintjük. Ezek az élek alkotják a végpontokat a metszetüknél. q- él-nek nevezzük azt az élt, amelyet a megfelelő felbontásból kapunk. Ez egy szakaszt határoz meg egy olyan élből indulva, amely átmegy a négyágú fa egy csomópontján. Az 5.1-es ábrán például az EB élnek q-élei: EF, FG, GH, HI, IJ, JK és KB. A végpontok csak E és B-ben vannak, a többi pont csak viszonyítási pont. A PM 1 négyágú fa meghatározását újrafogalmazzuk, megemlítve a következő követelményeket: Egy levél által ábrázolt terület csak egy végpontot tartalmazhat. Ha egy levél tartalmaz egy végpontot, nem tartalmazhat q-éleket, amelyek függetlenek az illető végponttól. Ha egy terület, amely egy levél által van ábrázolva, nem tartalmaz végpontokat, akkor csak egy q-élt tartalmazhat. 17

Valamennyi levél a négyágú fában maximális. A PM 1 négyágú fák meghatározása azáltal különbözik a PR négyágú fák meghatározásától, hogy a PM 1 fák éleket ábrázolnak és nem pontokat. Emiatt, ha a felbontás során egy olyan csúcshoz jutunk, amely a fa egy csomópontjának határán fekszik, elköltöztethetjük a csúcsokat az ilyen helyzetek elkerülése végett, vagy tehetünk egy megkötést, hogy bármely területet ábrázoló csomópont bal és alsó határa zárt, míg jobb és felső határa nyílt. Az első megoldás alkalmazásához ismernünk kell a négyágú fa maximális mélységét mielőtt azt felépítenénk, a másodiknak pedig az a hátránya, hogy, ha például három olyan él találkozik egy határon levő csúcsban úgy, hogy kettő a határ egyik részén, s a másik, a határ ellenkező részén levő csomóponton megy keresztül, akkor a felbontásuk a négyágú fa mélységének növekedését eredményezheti. Így egy olyan megkötést teszünk, miszerint valamennyi blokk határa zárt. Ez azt jelenti, hogy, ha egy csúcs két vagy több (maximum négy) csomópont határán fekszik, akkor az összes csomópont tartalmazni fogja. Ezeket a csúcsokat nullhosszúságú éleknek is tekinthetjük. 5.2. ábra. Az 5.1-es ábrának megfelelő PM 1 négyágú fa. Mivel a PM 1 négyágú fákat izolált pontok és vonalak, illetve sokszögtérképek ábrázolására tervezték, csúcsokkal és élekkel dolgoznak. 18

3. PMR négyágú fák Míg a PM 1 négyágú fák csúcs alapúak, a PMR négyágú fák él alapúak. Az éleket különböző méretű csomókba (bucket) rendezzük, a csomópontok keresésének megkönnyítése végett. Létezik egy 1 : 1-hez kapcsolat a csomók és a blokkok között. A PMR négyágú fa (Polygonal Map Random) él alapú PM fa. Megengedett, hogy egy blokk változó számú szakaszt tartalmazzon, és ezek metszhetik egymást, metszetük nem fog csomópontnak számítani. Felépítésekor valamennyi szakaszt egymás után beteszünk egy kezdetben üres adatszerkezetbe. A szakaszokat minden olyan blokkba betesszük, amelyet az egyes szakasz metsz, vagy teljesen benne helyezkedik el. A folyamat közben ellenőrizzük a blokkoknak a telítettségi fokát, hogy az ne haladja meg az előre meghatározott maximális hasadási határt. Ha ezt a határt valamelyik blokk túllépte, akkor a blokkot csak egyszer osztjuk fel négy egyenlő részre. Egy szakasz törlésekor ezt kitöröljük minden olyan blokkból amelyet metsz, vagy teljesen benne helyezkedik el. A folyamat közben ellenőrizzük a blokk telítettségi fokát, hogy az ne legyen kisebb, mint az előre meghatározott minimum egyesítési határ. Hogyha ez bekövetkezik, akkor egyesítjük a megfelelő utódokat és rekurzívan alkalmazzuk az egyesítést a keletkezett blokkra és testvéreire is. Az 5.3-as ábrán láthatjuk hogyan is működik a PMR négyágú fába való beszúrás, amikor a maximális hasadási határ egyenlő 2-vel. Megjegyezzük, hogy a PMR fának a végső alakja nem egyedi, ez függ az élek beszúrási sorrendjétől, míg a PM 1 négyágú fánál ez nem fordul elő, a végső alakja egyedi. 19

5.3. ábra. PMR blokkfelosztás egy élsorozat esetében, a felépítés lépései. Összefoglalás A dolgozat célja az volt, hogy megismertesse a térbeli adatok tárolására használatos egyik legalkalmasabb adatszerkezetet, a négyágú fát. Mivel az információmennyiség rohamosan nő, a négyágú fák használatának jövője nem kérdőjelezett. Az, hogy az egyforma adatokat képes összevonni, nemcsak a helymegtakarítást, hanem a végrehajtási idő csökkenését is maga után vonja. 20

Irodalomjegyzék Finkel, R.A., Bentley, J.L. Quadtrees: A data structure for retrieval on composite keys, Acta Informatica, 1974. Hoare, C.A.R. Notes on data structuring, in Structured Programming, Academic Press, London, 1972. Hunter, G.M. Efficient computation and data structures for graphics, Ph.D. Dissertation, Department of Electrical Engineering and Computer Science, Princeton University, Princeton, NJ, 1978. Hunter, G.M., Steiglitz, K. Operations on images using quadtrees, IEEE Transactions on Pattern Analysis and Machine Intelligence 1, April 1979. Ionescu, C. Proiectarea şi analiza structurilor de date spaţiale. Quad-arbori, Presa Universitară Clujeană, Cluj-Napoca, 2006. Klinger, A. Patterns and search statistics, Optimizing Methods is Statistics, Academic Press, New York, 1971. 21