1 / 60

Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi. Vedúci práce : RNDr. Peter Gurský, PhD. . Ciele Práce. Popísať známe vyhľadávacie algoritmy pre vyhľadávanie najbližších a najlepších objektov nad lokálnymi aj distribuovanými viacrozmernými indexmi 

minya
Download Presentation

Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vyhľadávanie najbližších a najlepších objektov nad paralelnými viacrozmernými indexmi Vedúci práce : RNDr. Peter Gurský, PhD. 

  2. Ciele Práce • Popísať známe vyhľadávacie algoritmy pre vyhľadávanie najbližších a najlepších objektov nad lokálnymi aj distribuovanými viacrozmernými indexmi  • Analyzovať vhodnosť použitia jednotlivých viacrozmerných indexov pre tento typ vyhľadávaní • Navrhnúť vlastný algoritmus vyhľadávania najlepších objektov nad vybranými typmi viacrozmerných indexov • Implementovať vybrané indexy a algoritmy vyhľadávania • Porovnať rýchlosť vyhľadávania najbližších a najlepších objekov nad naimplementovanými indexmi.

  3. Obsah • R Strom • MC R Strom • Knn Dopyty • Top k Dopyty • Záver

  4. R Strom je stromová štruktúra na indexovanie viacrozmerných dát na základe ich priestorovej pozície. Pod k-rozmerným dátovým súborom si môžeme predstaviť ľubovoľný objekt z k-rozmerného priestoru s atribútmi. My však budeme pracovať len s obdĺžnikmi a ich viacrozmernými variantmi.

  5. R Strom

  6. MC R strom

  7. MC R strom „Master“ Strom – Obsahuje nelistové uzly globálneho R stromu, indexuje objekty <MBR, IdServeru> „Storage“ Strom – Obsahuje časť listových uzlov globálneho R stromu, spolu s príslušnými objektami indexovanými v týchto uzloch.

  8. MC R Strom, STR algoritmus Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. NechP=n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/kúsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc. Pozn. delenie postupnosti je len ilustračné

  9. MC R Strom, STR algoritmus Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. NechP=n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/kúsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc. Pozn. delenie postupnosti je len ilustračné

  10. MC R Strom, STR algoritmus Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. NechP=n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/kúsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc. Delenie postupnosti na S úsekov Pozn. delenie postupnosti je len ilustračné

  11. MC R Strom, STR algoritmus Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. NechP=n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/kúsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc. Utriedenie podpostupností podľa ďalšej (druhej )súradnice Pozn. delenie postupnosti je len ilustračné

  12. MC R Strom, STR algoritmus Majme k-dimenziálnu postupnosť n (hyper) obdĺžnikov. Nech M je kapacita listu. Túto postupnosť utriedime podľa prvej súradnice ich stredu. NechP=n/M , zaokrúhlené nahor. Postupnosť rozdelíme na S = P1/kúsekov. Rekurzívne usporiadame každý z úsekov podľa zvyšných k-1 súradníc. Triedenie podľa druhej súradnice hotové, každá podpostupnosť sa opäť rozdelí a utriedi podľa tretej súradnice... Pozn. delenie postupnosti je len ilustračné

  13. MC R Strom, STR Packing algoritmus Majme utriedenú postupnosť vstupných objektov. Túto postupnosť delíme na m úsekov dĺžky N kde N je kapacita listového uzlu. Pre každý úsek vytvárame nový uzol - rodiča, ktorého MBR ohraničuje obdĺžniky všetkých objektov úseku. Rekurzívne opakujeme nad zoznamom rodičov, kým dĺžka výsledného zoznamu nie je 1.

  14. MC R Strom, STR Packing algoritmus Majme utriedenú postupnosť vstupných objektov. Túto postupnosť delíme na m úsekov dĺžky M kde M je kapacita listového uzlu. Pre každý úsek vytvárame nový uzol - rodiča, ktorého MBR ohraničuje obdĺžniky všetkých objektov úseku. Rekurzívne opakujeme nad zoznamom rodičov, kým dĺžka výsledného zoznamu nie je 1.

  15. MC R Strom, STR Packing algoritmus Majme utriedenú postupnosť vstupných objektov. Túto postupnosť delíme na m úsekov dĺžky M kde M je kapacita listového uzlu. Pre každý úsek vytvárame nový uzol - rodiča, ktorého MBR ohraničuje obdĺžniky všetkých objektov úseku. Rekurzívne opakujeme nad zoznamom rodičov, kým dĺžka výsledného zoznamu nie je 1.

  16. MC R Strom, Proces Vytvorenia Postupnosť vstupných objektov je utriedená pomocou STR Utriedená postupnosť je rozdelená na m úsekov o dĺžke kapacity listu, pre každý úsek vytvorený ukazovateľ. Úseky rozdistribuované po sieti. Na master serveri vytvárame lokálny strom pomocou STR packing, pričom začíname od najnižšej vrstvy, ktorou sú ukazovatele na jednotlivé stanice Na úložných serveroch vytvárame lokálne stromy už priamo z pridelených dát cez STR packing

  17. MC R Strom ako množina rovnocenných serverov

  18. Komunikačná Sieť, vytvorenie

  19. Komunikačná Sieť, vytvorenie S1 pošle Mastrovi žiadosť o pripojenie

  20. Komunikačná Sieť, vytvorenie Master pošle S1 parametre pre vytvorenie prázdneho stromu

  21. Komunikačná Sieť, vytvorenie S1 čaká, kým mu budú pridelené dáta

  22. Komunikačná Sieť, vytvorenie

  23. Komunikačná Sieť, vytvorenie Koordinátor pošle čakajúcemu serveru I prislúchajúcu porciu objektov. Koordinátor pošle čakajúcemu serveru I kópiu celého zoznamu ukazovateľov. Koordinátor pošle čakajúcemu serveru I mapu <IdServer,IpAdresa:Port> všetkých serverov v sieti.

  24. Komunikačná Sieť, vytvorenie Vzájomné prepojenia medzi servermi sa vytvoria nasledovne : Pre každé id zo (zoznamIdentifikátorov – {idKoordinátora}): Ak id > mojeId, vytvor klientský soket a požiadaj o pripojenie ku korešpondujúcemu serveru správou INIT_RQS. Ak id < mojeId, prijmi žiadosť o naviazanie komunikácie zo svojho server soketu. Táto správa nemusí nutne pochádzať od serveru s identifikátorom id.

  25. MC R Strom ako množina rovnocenných serverov

  26. Knn dopyt Vstupom je bod A, číslo k. Výstupom je k najbližších objektov k tomuto bodu A.

  27. Sekvenčný iNN algoritmus knn(Bod pt, PrioritnyRad queue, int k) { foreach (p in potomok) { queue.add(p); } Object o = queue.poll(); if (o je datovy objekt) vysledok.add(o) else o.knn(pt, queue); if (vysledok.size() == k) return vysledok;

  28. Sekvenčný iNN algoritmus knn(Bod pt, PrioritnyRad queue, int k) { foreach (p in potomok) { queue.add(p); } Object o = queue.poll(); if (o je datovy objekt) vysledok.add(o) else o.knn(pt, queue); if (vysledok.size() == k) return vysledok;

  29. Sekvenčný iNN algoritmus knn(Bod pt, PrioritnyRad queue, int k) { foreach (p in potomok) { queue.add(p); } Object o = queue.poll(); if (o je datovy objekt) vysledok.add(o) else o.knn(pt, queue); if (vysledok.size() == k) return vysledok;

  30. Sekvenčný Inn algoritmus knn(Bod pt, PrioritnyRad queue, int k) { foreach (p in potomok) { queue.add(p); } Object o = queue.poll(); if (o je datovy objekt) vysledok.add(o) else o.knn(pt, queue); if (vysledok.size() == k) return vysledok;

  31. Sekvenčný Inn algoritmus knn(Bod pt, PrioritnyRad queue, int k) { foreach (p in potomok) { queue.add(p); } Object o = queue.poll(); if (o je datovy objekt) vysledok.add(o) else o.knn(pt, queue); if (vysledok.size() == k) return vysledok;

  32. Sekvenčný Inn algoritmus knn(Bod pt, PrioritnyRad queue, int k) { foreach (p in potomok) { queue.add(p); } Object o = queue.poll(); if (o je datovy objekt) vysledok.add(o) else o.knn(pt, queue); if (vysledok.size() == k) return vysledok;

  33. Sekvenčný Inn algoritmus knn(Bod pt, PrioritnyRad queue, int k) { foreach (p in potomok) { queue.add(p); } Object o = queue.poll(); if (o je datovy objekt) vysledok.add(o) else o.knn(pt, queue); if (vysledok.size() == k) return vysledok;

  34. Sekvenčný Inn algoritmus knn(Bod pt, PrioritnyRad queue, int k) { foreach (p in potomok) { queue.add(p); } Object o = queue.poll(); if (o je datovy objekt) vysledok.add(o) else o.knn(pt, queue); if (vysledok.size() == k) return vysledok;

  35. Top k dopyt Vstupom je číslo k, kombinačná funkcia C a n preferenčných fuzzy funkcií fi Výstupom je k najlepších objektov

  36. Top k dopyt, fuzzy funkcia

  37. Top k dopyt

  38. Top k dopyt

  39. Top k dopyt Queue : Root Výsledok :

  40. Top k dopyt Queue : B, A, C Výsledok :

  41. Top k dopyt Queue : A, C, 2, 1 Výsledok :

  42. Top k dopyt Queue : C, 6, 2, 1, 7 Výsledok :

  43. Top k dopyt Queue : 3, 6, 2, 1, 7, 4, 5 Výsledok :

  44. Top k dopyt Queue : 6, 2, 1, 7, 4, 5 Výsledok : 3

  45. Top k dopyt Queue : 2, 1, 7, 4, 5 Výsledok : 3, 6

  46. Paralelný Inn algoritmus, variant 1

  47. Paralelný Inn algoritmus, variant 1

  48. Paralelný Inn algoritmus, variant 1

  49. Paralelný Inn algoritmus, variant 1

  50. Paralelný Inn algoritmus, variant 1

More Related