seminario maggio 2009 daniela scarcella e matteo buffa 1

76
DATABASE MULTIMEDIALI SEMINARIO MAGGIO 2009 DANIELA SCARCELLA E MATTEO BUFFA 1

Upload: fiorenza-carboni

Post on 02-May-2015

220 views

Category:

Documents


0 download

TRANSCRIPT

  • Slide 1
  • SEMINARIO MAGGIO 2009 DANIELA SCARCELLA E MATTEO BUFFA 1
  • Slide 2
  • La rappresentazione dei dati nello spazio, ha diverse applicazioni. Questo trova riscontro nei seguenti applicativi: DBMS commerciali G.I.S. (sistemi informatici geografici) Gestione di progetti nel settore architettonico, industriale; Etc. 2
  • Slide 3
  • STRUTTURE DATI MULTIDIMENSIONALI Laumento del numero di dimensioni nello spazio porta ad una complessit maggiore, ed per questo che si cerca di ottimizzare la rappresentazione di informazioni multidimensionali studiando nuove strutture dati. La rappresentazione di oggetti n-dimensioni strettamente legata al concetto di indicizzazione di relazioni di database. 3
  • Slide 4
  • Esistono molte strutture dati che rappresentano metodi di decomposizione dello spazio, tali per cui la rappresentazione dei punti comporta, un risparmio di spazio di memorizzazione, e tempo di esecuzione delle operazioni (aggiornamento, creazione, modifica, ecc). 4 STRUTTURE DATI MULTIDIMENSIONALI
  • Slide 5
  • Rappresentazioni di dati nello spazio K-d tree Quadtree Point Quadtree-MX R-tree 5
  • Slide 6
  • Sistemi Informatici geografici Consideriamo un sistema di informazioni geografiche il quale immagazzina i dati di una determinata zona. Prendiamo in esame una mappa come unimmagine Bi-dimensionale. 6
  • Slide 7
  • 7
  • Slide 8
  • K-d tree Un albero a due dimensioni (es. k=2) immagazzina informazioni bi-dimensionali,. Un albero a tre dimensioni (es.k=3) immagazzina informazioni tri-dimensionali Etc. 8
  • Slide 9
  • Struttura di un albero 2-d In un albero, il nodo ha una certa struttura di record. nodetype = record INFO : infotype XVAL : real YVAL : real LLINK : nodetype RLINK : nodetype 9
  • Slide 10
  • Condizioni da soddisfare Se N un nodo di livello pari: Nel ramo di sinistra i nodi M hanno la propriet M.XVAL < N.XVAL. Nel ramo di destra i nodi P hanno la propriet P.XVAL >= N.XVAL. Il nodo N divide la regione in due parti, disegnando una linea verticale. 10
  • Slide 11
  • Condizioni da soddisfare Se N un nodo di livello dispari: Nel ramo di sinistra i nodi M (figlio di N) ha la propriet M.YVAL =N.YVAL Il nodo N divide la regione in due parti, disegnando una linea orizzontale. 11
  • Slide 12
  • CITTAXY TORINO 6683 BIELLA 74115 ALESSANDRIA 9865 CUNEO 4215 12
  • Slide 13
  • Supponiamo di voler inserire questi elementi cos come messi nella tabella. Inserimento primo elemento: se la tabella vuota, questo record sar la radice dellalbero di dati. LIV 0 INSERIMENTO ALBERO 2-D 13
  • Slide 14
  • INSERIMENTO ALBERO 2-D Inserimento secondo elemento: siccome siamo in un livello pari dellalbero dobbiamo confrontare i campi XVAL; ovvero BIELLA.XVAL >= TORINO.XVAL; quindi collegheremo il figlio al campo Rlink(destro). 14
  • Slide 15
  • LIV 0 LIV 1 15
  • Slide 16
  • INSERIMENTO ALBERO 2-D Inserimento terzo elemento: inizio con il confrontare Torino.XVAL con Alessandria.XVAL, dal confronto mi accorgo che Alessandria.XVAL > TORINO.XVAL per il campo destro gi occupato, quindi confronto (mi trovo al LIV 1) Alessandria.YVAL con Biella.YVAL, e quindi Alessandria.YVAL < Biella.YVAL; allora collego questo nuovo elemento al campo sinistro. 16
  • Slide 17
  • LIV 0 LIV 1 LIV 2 17 6683 74115 9865
  • Slide 18
  • Inserimento quarto elemento: lultimo elemento da inserire la citt di Cuneo. CUNEO.XVAL con TORINO.XVAL confronto i campi XVAL perch ci troviamo al livello pari. Questo nuovo e ultimo elemento lo colleghiamo al figlio sinistro della radice, poich CUNEO.XVAL < TORINO.XVAL 18
  • Slide 19
  • Quindi il nostro schema finale sar: LIV 0 LIV 1 LIV 2 19 6683 74 115 98 65
  • Slide 20
  • CANCELLAZIONE ALBERI 2-D La parte pi complessa nella gestione degli alberi K-D la cancellazione di un nodo. Il primo passo consiste nell individuare il nodo da cancellare. Supponiamo di voler cancellare un elemento nella posizione (x,y). Se il nodo da cancellare una foglia (questo il caso piu semplice) si elimina il nodo selezionato, ponendo a NULL il puntatore al nodo padre che ne memorizza il riferimento. 20
  • Slide 21
  • NULL 21 CANCELLAZIONE ALBERI 2-D
  • Slide 22
  • Se invece il nodo da cancellare interno, la cancellazione sar pi complessa. Supponiamo infatti di voler cancellare un nodo N, non vuoto cio che ha almeno un figlio. Il primo passo da fare trovare un candidato(nodo R) che pu sostituire il nodo che vogliamo cancellare (N). 22 CANCELLAZIONE ALBERI 2-D
  • Slide 23
  • Passi da fare per cancellare un nodo interno Passo 1: trovare un sostituto R per rimpiazzare il nodo figlio di T i (T r o T l ). Passo 2: sostituire i campi Info, XVAL e YVAL di N con quelli di R (ovvero il sostituto). Passo 3: Cancellare ricorsivamente R da T i. 23
  • Slide 24
  • Il nodo candidato deve soddisfare le seguenti propriet: 1: Ogni nodo M in T l deve verificare M.XVAL < R.XVAL se il livello pari, mentre deve verificare che M.YVAL < R.YVAL se il livello dispari. 2: Ogni nodo M in T r deve verificare che M.XVAL >= R.XVAL se il livello pari, mentre deve verificare che M.YVAL >= R.YVAL se il livello dispari. 24
  • Slide 25
  • 25 TrTr TlTl LIV 0 LIV 1 LIV 2 LIV 3
  • Slide 26
  • CONSIDERAZIONI (sotto-albero destro) In generale,se il livello di N pari, ogni nodo Tr che ha il campo XVAL pi piccolo possibile in Tr il nodo candidato per la sostituzione. In modo analogo se il livello di N dispari, ogni nodo in Tr che ha il campo YVAL pi piccolo possibile in Tr il nodo candidato per la sostituzione. Nel nostro caso, se volessi cancellare TORINO, il nodo che dovrebbe rimpiazzare associato ad ALESSANDRIA, poich questo nodo ha coordinata Y pi piccola di tutte le altre citt nel sottoalbero destro di TORINO. 26
  • Slide 27
  • ALESSANDRIA la citt con campo YVAL pi piccola Nodo N LIV 1 LIV 0 LIV 2 27 R(candidato) M (di livello dispari) M verifica la condizione 2 (ovvero M.YVAL >= R.YVAL)
  • Slide 28
  • ALESSANDRIA la citt con campo YVAL pi piccola Nodo N LIV 1 LIV 0 LIV 2 28
  • Slide 29
  • ALESSANDRIA la citt con campo YVAL pi piccola Nodo N LIV 1 LIV 0 LIV 2 29
  • Slide 30
  • CONSIDERAZIONI ( sotto-albero sinistro) Se il livello N pari, un nodo di rimpiazzo in T l sar il nodo in cui il campo XVAL ha valore pi grande. In modo analogo, se il livello N dispari, consideriamo il nodo di rimpiazzo T l che ha campo YVAL maggiore. 30
  • Slide 31
  • RANGE QUERY IN ALBERI 2-D Una query su un intervallo in un albero a 2-d una ricerca che permette di recuperare tutti i punti situati allinterno di una circonferenza con centro nel punto (x c, y c ) e raggio r. La risposta alla query recupera tutti i punti inseriti nellalbero che hanno una distanza dal centro minore del raggio. In altre parole si presuppone di trovare tutti quei punti dellalbero 2-d che stanno nellintorno. Nellelaborazione di una query su un intervallo necessario ricordare che ogni nodo N inserito allinterno dellalbero definisce una regione Rn. 31
  • Slide 32
  • Se il cerchio in una query non ha intersezione Rn, allora non esistono punti da cercare nel sottoalbero con radice N. Se consideriamo la mappa precedente: 1) Il nodo con etichetta TORINO rappresenta tutti i punti del dominio applicato 2) Il nodo etichettato BIELLArappresenta la regione di tutti i punti (x,y) tali che x>66 3)Il nodo etichettato ALESSANDRIA rappresenta tutti i punti(x,y) tali che x>=19 e y
  • ALBERI K-D per K>2 In modo analogo, possiamo considerare un albero tri- dimensionale con k=3 con coordinate(x,y,z), oppure un albero a 4-D che rappresenterebbe punti della forma (x,y,z,t), etc. La struttura del nodo in un albero K-D INFO: infotype VAL[K]:real LLINK,RLINK:nodetype Il campo VAL[K] una matrice di dimensioni pari a K 36
  • Slide 37
  • PUNTI QUADTREE Questo tipo di struttura utilizzato per rappresentare i punti in due dimensioni. Ogni nodo divide la regione in quattro quadranti:NO(nord-ovest),NE(nord-est), SO(sud-ovest),SE(sud-est). In questo caso, il nodo N divide le regioni che rappresenta, disegnando sia una linea orizzontale che una linea verticale attraverso i punti XVAL e YVAL. 37
  • Slide 38
  • STRUTTURA NODO QUADTREE Qt_node_type= record INFO: type_info XVAL: real YVAL: real NO,NE,SO,SE: Qt_node_type 38
  • Slide 39
  • STRUTTURA NODO QUADTREE I campi NO,NE,SO,SE corrispondono ognuno ad un figlio del nodo N. quindi ogni nodo potrebbe avere quattro figli. INFO XY NOSONESE 39
  • Slide 40
  • INSERIMENTO NEI PUNTI QUADTREE Inizialmente, lalbero vuoto quindi inseriamo il primo nodo TORINO con i campi XVAL e YVAL rispettivamente(66,83). NO SO SE NE 40
  • Slide 41
  • Inseriamo il secondo elemento BIELLA che ha coordinate(74,115), questa citt cade nel quadrante NE (risultante della divisione precedente). In questo modo TORINO ha come figlio NE BIELLA. TORINO NE 6683 BIELLA 74 115 41
  • Slide 42
  • 42
  • Slide 43
  • Inseriamo il terzo elemento, ALESSANDRIA che ha coordinate(98,65). Questo punto si trova a SE della divisione di TORINO. Procediamo con linserimento del quarto punto che CUNEO, con coordinate(42,15), e questo ultimo punto si trova nel quadrante SO. 43
  • Slide 44
  • 44
  • Slide 45
  • 45
  • Slide 46
  • 46 Se volessimo aggiungere ad. es. unaltra citt ALBA, con coordinate (70,49), questa si trover a SO di ALESSANDRIA.
  • Slide 47
  • 47
  • Slide 48
  • CANCELLAZIONE PUNTI QUADTREE Quando cancelliamo un nodo N da un punto quadtree, come nel caso dellalbero a 2-D, per prima cosa dobbiamo trovare un valido sostituto del nodo da cancellare. Nel caso del nodo foglia la cancellazione banale, infatti basta settare il puntatore del nodo padre a NULL. 48
  • Slide 49
  • La cancellazione, invece, di un nodo interno pi complessa. Infatti per prima cosa bisogna trovare un nodo di rimpiazzo, in uno dei sottoalberi N (NO, NE, SO,SE) in modo tale che siano verificate le seguenti propriet: 1) ogni nodo R1 del sottoalbero N.NO a NORD-OVEST di R 2)ogni nodo R2 del sottoalbero N.SO a SUD-OVEST di R 3) ogni nodo R3 del sottoalbero N.NE a NORD-EST di R 4) ogni nodo R4 del sottoalbero N.SE a SUD-EST di R 49 CANCELLAZIONE PUNTI QUADTREE
  • Slide 50
  • QUERY SU INTERVALLI DI VALORI NEI PUNTI QUADTREE Questo argomento viene trattato allo stesso modo degli alberi a K-D. Lintervallo di ricerca viene rappresentato con una circonferenza con coordinate (x c, y c ) e raggio r. Ogni nodo nei punti quadtree rappresenta una regione, lalgoritmo di ricerca scarta i sottoalberi la cui radice sono i nodi alle quali le regioni associate non hanno intersezioni con il cerchio di ricerca. 50
  • Slide 51
  • Quadtree - MX Lordine di inserimento dei nodi nei k-tree e nei Quadtree point influenza la forma finale dellalbero. Di conseguenza questo influisce sulla complessit di inserimento e ricerca di un dato nodo N. Lintento dei Quadtree-MX di rendere indipendente la forma dellalbero rispetto al numero di nodi presenti in esso, cos come lordine in cui i nodi sono inseriti. Questo tipo di approccio rende gli algoritmi di ricerca e cancellazione pi efficienti. 51
  • Slide 52
  • Quadtree MX (Funzionamento) Assumiamo che la mappa da rappresentare sia suddivisa in una griglia di forma per un dato k. Lo sviluppatore pu scegliere un k in modo arbitrario, cos da poter rispecchiare la granularit desiderata, ma una volta scelto k non pu essere cambiato. 52
  • Slide 53
  • Quadtree MX (Struttura) I Quadtree-MX hanno la stessa struttura dei Quadtree Point, salvo per una differenza nella Root dellalbero. Infatti la Root rappresenta la regione specificata da: Tutte le sotto-regioni (NW,SW,NE,SE) hanno lo stesso tipo di rappresentazione delle coordinate, basandosi per su w = XUB XLB. 53
  • Slide 54
  • Quadtree MX (Inserimento) Fissiamo k = 3 (griglia 8 x 8) Supponiamo di voler inserire i seguenti nodi: Nodo A = Coord (x = 1, y = 3); Nodo B = Coord (x = 3, y = 3); Nodo C = Coord (x = 3, y = 1); Nodo D = Coord (x = 3, y = 0); 54
  • Slide 55
  • 55 Quadtree MX (Inserimento) 1.Si crea la Root che rappresenta la regione (XLB = o,XUB = 4, YLB = 0, YUB = 4) 2.A risieder nella sotto-regione NW della Root. Quindi si crea il nodo NW. RootNodo generico NW SW NE SE
  • Slide 56
  • 56 Quadtree MX (Inserimento) 1.Si crea la Root che rappresenta la regione (XLB = o,XUB = 4, YLB = 0, YUB = 4) 2.A risieder nella sotto-regione NW della Root. Quindi si crea il nodo NW. RootNodo generico NW SW NE SE A
  • Slide 57
  • 57 RootNodo generico NW SW NE SE A Quadtree MX (Inserimento) A = (1,3) B = (3,3) B
  • Slide 58
  • 58 RootNodo generico NW SW NE SE A Quadtree MX (Inserimento) A = (1,3) B = (3,3) C = (3,1) BC
  • Slide 59
  • 59 Nodo generico NW SW NE SE Quadtree MX (Inserimento) A = (1,3) B = (3,3) C = (3,1) D = (3,0) Root A BCD
  • Slide 60
  • La cancellazione nei Quadtree-MX abbastanza semplice, perch ogni nodo rappresentato a livello foglia nellalbero. Se N un nodo internodi un Quadtree-MX la cui radice puntata da T, allora la regione implicitamente rappresentata da N contiene almeno un punto esplicitamente contenuto nellalbero. 60 Quadtree MX (Cancellazione)
  • Slide 61
  • Per cancellare un punto (x,y) da un albero T si procede come segue: 1. Si imposta il valore del collegamento di N al padre (M) a NULL. 2. Si controlla se gli altri tre campi DIR del padre sono vuoti. Se si, allora si passa al padre di M (P) e si imposta il collegamento nodo figlio (M in questo caso) a NULL. 3. Si procede cos ricorsivamente a salire. 61 Quadtree MX (Cancellazione)
  • Slide 62
  • In conclusione Il tempo di accesso allalbero richiede uno scorrimento dallalto verso il basso (per trovare e cancellare il nodo) ed uno scorrimento dal punto di cancellazione fino alla radice (per eliminare i nodi impliciti ed espliciti che contenevano al pi un solo figlio). Il tempo richiesto quindi O(k). 62 Quadtree MX (Cancellazione)
  • Slide 63
  • Sono gestite allo stesso modo dei Quadtree Point, salvo per due differenze: 1. Il contenuto dei campi XUB,XLB,YUB,YLB differente. 2. Siccome i punti sono tutti immagazzinati al livello foglia, la verifica di un punto per vedere se risiede nel query range, viene fatta solo al livello foglia. 63 Quadtree MX (Range Query)
  • Slide 64
  • Questo tipo di strutture dati serve ad immagazzinareregioni rettangolari di unimmagine o di una mappa. Gli R-Tree sono davvero efficienti per immagazzinare grandi quantit di dati su disco. Dal momento che laccesso al disco richiede molto tempo, gli R-Tree garantiscono un metodo conveniente, minimizzando il numero di accessi. 64 R - Tree
  • Slide 65
  • Rnodetype = record Rec1,Reck = rectangle; P1,.Pk = ->rnodetype; End 65 R Tree (Struttura) G1 G2 G3 G4R4 R5 R6 R7R8 R9 R1 R2 R3
  • Slide 66
  • Ogni R-Tree ha associato un ordine che un intero k. Ogni nodo che non una foglia, contiene un insieme di k rettangoli (al massimo) o [k/2] rettangoli (almeno). Root lunica eccezione a queste regole. Ogni rettangolo sia un rettangolo reale che un gruppo di rettangoli. 66 R Tree (Struttura)
  • Slide 67
  • 67 R Tree (Inserimento) R2R2 R1 R3 R4 R5 R6 R7 R8 R9 Supponiamo di voler inserire il rettangolo R10 dentro la struttura ad albero vista in precedenza e rappresentata dalla mappa a destra R10
  • Slide 68
  • 68 R Tree (Inserimento) R2R2 R1 R3 R4 R5 R6 R7 R8 R9 Il metodo migliore che ci viene suggerito anche dalla figura quello di inserire il rettangolo R 10 espandendo larea del gruppo 1 di rettangoli. Infatti, se si cercasse di inserire R 10 dentro il gruppo 3 si averebbe un incremento sostanziale dellarea coperta. R10
  • Slide 69
  • 69 R Tree (Inserimento) R2R2 R1 R3 R4 R5 R6 R7 R8 R9 Ora vogliamo inserire il rettangolo R11 Abbiamo 2 opzioni: 1.Inserire il rettangolo nel gruppo che ha ancora spazio (in questo caso il gruppo 3). R10 R11
  • Slide 70
  • 70 R Tree (Inserimento) R2R2 R1 R3 R4 R5 R6 R7 R8 R9 Ora vogliamo inserire il rettangolo R11 Abbiamo 2 opzioni: 1.Inserire il rettangolo nel gruppo che ha ancora spazio (in questo caso il gruppo 3). 2.Creare un sotto-gruppo con le regioni R4 ed R11 R10 R11
  • Slide 71
  • 71 R Tree (Cancellazione) R2R2 R1 R3 R4 R5 R6 R7 R8 R9 La cancellazione negli R-Tree pu violare il vincolo i integrit (ovvero che ci siano sempre almeno [k/2] rettangoli (reali o gruppi). Quindi, quando si elimina un rettangolo dallalbero, bisogna assicurare il vincolo. R10 R11
  • Slide 72
  • 72 R Tree (Cancellazione) G1 G2 G3 G4R4 R5 R6 R7R8 R9 R1 R2 R3
  • Slide 73
  • 73 R Tree (Cancellazione) G1 G2 G3 G4R4 R5 R6 R7R8 R1 R2 R3 Condizione di Underflow
  • Slide 74
  • 74 R Tree (Cancellazione) G1 G2 G3 G4R4 R6 R7R8 R5 R1 R2 R3 Soluzione!!!
  • Slide 75
  • 75 Per concludere Point Quadtree: Pro: di facile implementazione Contro: un albero con k nodi pu avere laltezza = k e la complessit pu arrivare a O(k). Inoltre richiesta sempre la comparazione di due campi, non solo uno. La cancellazione spesso difficile. K-d tree: Pro: di facile implementazione Contro: un albero con k nodi pu avere laltezza = k e la complessit peggiore dei point-Quadtree. La complessit nel caso peggiore della ricerca arriva a
  • Slide 76
  • 76 Per concludere Quadtree-MX: Pro: garantiscono laltezza O(n). Inserimento, cancellazione e ricerca hanno un tempo proporzionale O(n). Il range di ricerca molto efficiente dove N = numero di punti in risposta alla ricerca e h laltezza dellalbero. R-tree: Pro: Ottimi per lottimizzazione degli accessi al disco, riducendo notevolmente laltezza dellalbero. Questo li rende molto popolari. Contro: I rettangoli si possono sovrapporre tra di loro, dando vita a percorsi differenti che portano allo stesso rettangolo. Questo pu provocare un accesso multiplo al disco, vanificando lottimizzazione.