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.