200 likes | 391 Views
Vizualizácia stromových indexov (bakalárska práca). autor: Miroslav Sajko vedúci práce: Mgr. Martin Šumák. Motivácia. vizualizácia vs. výpis info o strome (hromada čísel je neprehľadná) vizualizácia vs. kontrolné algoritmy (nemožné sledovanie zmien vlastností)
E N D
Vizualizácia stromových indexov(bakalárska práca) autor: Miroslav Sajko vedúci práce: Mgr. Martin Šumák
Motivácia • vizualizácia vs. výpis info o strome (hromada čísel je neprehľadná) • vizualizácia vs. kontrolné algoritmy (nemožné sledovanie zmien vlastností) • výrazná pomoc pri úprave algoritmov • edukatívne účely
Ciele • Navrhnutie univerzálneho objektového modelu pre vizualizáciu s.i. a vyhľadávanie nad nimi • Vytvorenie aplikácie s grafickým prostredím pre vizualizáciu vybraných indexov (R-Tree, M-Tree)
Problémy • Rýchla vizuálna kontrola správnosti správania algoritmov • Univerzálnosť pre rôzne stromové indexy
R-Tree • Rozšírením B-Tree • Výškovo vyvážený strom • Geometrickou interpretáciou dát sú obdĺžniky (kvádre, hyper-obdĺžniky) • Každý nelistový uzol obsahuje dcérske uzly a ohraničujúci obdĺžnik každého uzla • Listové uzly obsahuje samotné dáta
M-Tree • Rozšírením B-Tree • Výškovo vyvážený strom • Geometrickou interpretáciou dát sú kruhy (gule, ..) • Každý nelistový uzol obsahuje dcérske uzly a ohraničujúci kruh každého uzla • Listové uzly obsahujú samotné dáta
R-Tree M-Tree Koreň, uzly, listy Uzol vie dcérske uzly Uzol vie ohraničujúci kruh každého uzla List drží dáta Geometricky v 2D kruh • Koreň, uzly, listy • Uzol vie dcérske uzly • Uzol vie ohraničujúci obdĺžnik každého uzla • List drží dáta • Geometricky v 2D obdĺžnik • Štruktúra rovnaká • Rozdielne geometrické reprezentácie • Necháme vykresľovanie na index!
Objektový návrh • Pomocou rozhraní vnútim stromom a dátam funkcionalitu vykresľovania • Rozhranie DrawableObject • Rozhranie DrawableResultObject • Rozhranie DrawableTree
Rozhranie DrawableObject • drawObject – vykreslenie objektu schovaného za dátami (kruh/obdĺžnik) • getObjectId – vráti id objektu
Rozhranie DrawableResultObject • getDrawableObject – vráti objekt • getValue – vráti vzdialenosť od bodu
Rozhranie DrawableTree • draw – rekurzívne vykreslenie celého stromu od koreňa (len vykreslenie dát) • drawNode – vykreslenie uzla s ohraničujúcim K/O a všetkými dcérskymi uzlami • addFromViewer – spracovanie dát z kresliacej plochy na pridanie do stromu • getRootNode – vrátenie koreňa pre JTree • knnQuery – spracovanie dát pre dopyt a vrátenie zoznamu DrawableResultObject-ov
Prechádzanie stromom • Odlíšenie ohraničujúcich K/O hrúbkou čiary podľa levelu (čím bližšie ku koreňu, tým hrubšia čiara) • Odlíšenie dátových K/O podľa farby (všetky dátové objekty rovnakou farbou ako ohraničujúci K/O) • Neprejdené časti stromu šedou
Ďalšie indexy • Štruktúry rovnaké pri väčšine indexov • Nevyváženosť nie je problém • Info o dátach nie len v uzloch – teoreticky to nie je problém, nechávame na programátorovi • Implementácia je pri správnom priradení rozhraní jednoduchá
Plán do blízkeho budúcna • Doladenie bugov aplikácie • Dopísanie a odovzdanie záverečnej práce
Literatúra • A. Guttman: R-Trees: A Dynamic Index Structure for Spatial Searching.SIGMOD Conference 1984 • B. Spell: Java: Programujeme profesionálně.Computer Press 2002, ISBN 80-7226-667-5 • D. Jacko: Indexovanie a triedenie objektov pomocou R-stromov (Diplomová práca).UPJŠ 2008