1 An Approximation- Based Data Structure for Similarity Search R. Weber, S. Blott Hermes, 1998 Sistemi Informativi per le Decisioni Diego Cera – Michele.

Slides:



Advertisements
Presentazioni simili
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Advertisements

Teoria e Tecniche del Riconoscimento
                      Insertion-Sort
Uso avanzato di C.
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
PROGRAMMARE IN PASCAL (le basi)
Modalità di ricerca semantica nelle Biblioteche digitali Maria Teresa Biagetti DIPARTIMENTO DI SCIENZE DOCUMENTARIE LINGUISTICO-FILOLOGICHE E GEOGRAFICHE.
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Esempio: Tombola! Parte seconda.
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
1 Esercitazione sui segnali Problema: creare un programma analizzatore di file testuali che prenda come argomenti il nome di un file e una sequenza di.
APPUNTI SUL LINGUAGGIO C
6.6Ordinamento di Vettori Ordinamento di dati –Applicazione computazionale importante –Virtualmente ogni organizzazione deve ordinare dei dati Enormi quantità
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
Servizi educativi per linfanzia: interventi e progetti finanziati dalla Provincia Reggio Emilia, 7 agosto 2008 a cura del Servizio Programmazione Scolastica.
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
Algoritmo SelectSort Invariante di ciclo: ad ogni passo
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Synthema TALeP 2006 Pisa Carlo Aliprandi Language and Speech Solutions Manager Synthema srl.
Mostra fine anno Ida Del Vecchio. Mostra fine anno Ida Del Vecchio.
AN Fondam98 Sorting Ricerca in un vettore ordinato.
1 Programmazione grafica 1 Daniele Marini. 2 Linguaggio di riferimento OpenGL: libreria di procedure che realizza un API (application programmers interface)
Università degli studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea Specialistica in Ingegneria Informatica Analisi e valutazione.
Piero Scotto - C141 C14 #14 Puntatori e file. Il problema dellordinamento. Debug.
Sistemi Informativi Avanzati Presentazione Tesina
Corso di Marketing Verifica di Apprendimento Definizioni di base.
OUTPUT FORMATTATO La funzione printf consente di effettuare la stampa a video formattata. Sintassi: printf ( stringa_formato, arg0, arg1, … ); La stringa.
Anno Accademico 2010 – 2011 Corso di Progettazione dei Sistemi di Controllo Prof. Luca Schenato Prof. Gianluigi Pillonetto Gottardo Giuseppe, matr
Gruppo 4: Gelmi Martina, Morelato Francesca, Parisi Elisa La mia scuola ha un sito Web: modelli per la qualità dei siti (Ingegneria del Web)
ICF e Politiche del Lavoro
L2 Elaborazione di immagini in C/C++
(1) Sistemi Operativi Prof. P. Cattaneo ufficio: L Ricevimento: Martedì14.00 –
Calcolo Parallelo e Distribuito
void binario(int n); …………………
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
Personalizzazione e porting delle procedure esterne connesse ad Aleph Il caricamento degli utenti della circolazione da files esterni Modifiche introdotte.
Ese 2 (del 31 Marzo 2004). Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni.
Introduzione Effettuare query top-k su un sistema altamente distribuito, sfruttando il P2P Nodi Principali (SP = Super Peers) Nodi Secondari (P = Peers)
Efficient Region- Based Image Retrieval di Roger Weber e Michael Mlivoncic Swiss Federal Institute of Technology (ETH) Presentazione di Laura Galli, Mauro.
ESERCIZI.
Scrivere un algoritmo non deterministico di complessita` polinomiale che risolva il problema del commesso viaggiatore. Vengono proposte due soluzioni,
Ricerca sequenziale in un array di interi
Collection & Generics in Java
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
Interrogazioni private di database mediante Filtri di Bloom:
1 Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Peter N. Yanilos Presentazione di: Medri Matteo Tronconi Federica.
CORRELAZIONE TRA LUNG COMET SCORE E SCAMBI GASSOSI IN PAZIENTI CON
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
F0rze parallele e concordi
Divide et Impera Quicksort Mergesort Charles Antony Richard Hoare
Cammini minimi tra tutte le coppie
Adolf Luther Born 1912 in Krefeld, Germany. Died 1990 Krefeld.
APPUNTI SUL LINGUAGGIO C
L’algoritmo MergeSort
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
comprensione e modifica di codice
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Transcript della presentazione:

1 An Approximation- Based Data Structure for Similarity Search R. Weber, S. Blott Hermes, 1998 Sistemi Informativi per le Decisioni Diego Cera – Michele Degli Esposti – Letizia Falcone

15/03/2006An Approximation-Based Data Structure for Similarity Search2 Dall’R-tree al VA-File I metodi di data-partitioning degradano all’aumentare delle dimensioni dello spazio vettoriale. Soluzione: Vector-Approximation FILE Cos’è? Perché lo usiamo? È un file che contiene un’approssimazione compatta e geometrica di ciascun vettore. Usualmente le approssimazioni occupano solo il 10-20% dello spazio occupato dai vettori stessi. Il vantaggio principale riguarda le buone prestazioni all’aumentare della dimensionalità. Si può dimostrare che gli algoritmi basati sul VA- file sono più performanti, rispetto ai metodi di data-partitioning, di almeno un ordine di grandezza.

15/03/2006An Approximation-Based Data Structure for Similarity Search3 Costruzione VA-File (1)

15/03/2006An Approximation-Based Data Structure for Similarity Search lili qjqj m j [r i,y ] m j [r i,y +1] uiui r i,y Costruzione VA-File (2) u i = upper bound del vettore i l i = lower bound del vettore i m j [r i,x ]m j [r i,x +1] r i,x

15/03/2006An Approximation-Based Data Structure for Similarity Search l i = 0 m j [r i,y ] uiui q j = r i,y Costruzione VA-File (3) q j = r i,x m j [r i,x ]

15/03/2006An Approximation-Based Data Structure for Similarity Search6 VA- Simple Search Algorithm Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate;

15/03/2006An Approximation-Based Data Structure for Similarity Search7 Algoritmo VA-SSA Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; Inizializza le distanze dei k vettori risultato alla massima distanza possibile FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate;

15/03/2006An Approximation-Based Data Structure for Similarity Search8 Algoritmo VA-SSA Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; Inizializza le distanze dei k vettori risultato alla massima distanza possibile FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; Restituisce il lower bound relativo ad ogni punto FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate;

15/03/2006An Approximation-Based Data Structure for Similarity Search9 Algoritmo VA-SSA Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; Inizializza le distanze dei k vettori risultato alla massima distanza possibile FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; Restituisce il lower bound relativo ad ogni punto FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate; Inserimento del punto i al posto del k-esimo se dst[i] < dst[k]

15/03/2006An Approximation-Based Data Structure for Similarity Search10 Algoritmo VA-SSA Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; Inizializza le distanze dei k vettori risultato alla massima distanza possibile FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; Restituisce il lower bound relativo ad ogni punto FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate; Ordina i k “punti risultato” per distanza crescente Inserimento del punto i al posto del k-esimo se dst[i] < dst[k]

15/03/2006An Approximation-Based Data Structure for Similarity Search11 VA-SSA q  MAXREAL 1 l1l1 << L p1 < Dst[3] a1a1 2 a2a2 l2l2 L p2 <  Dst[3] 3 l3l3 <  L p3 < Dst[3] <  a3a3 Dst[1]=MRDst[2]=MRDst[3]=MR Hp:k=3Dst[1]=MRDst[2]=MRDst[3] =L p1 Dst[1] Dst[2]=MRDst[3] = MR Dst[1] =L p1 Dst[2]=MRDst[3] = L p2 Dst[1] Dst[2] = L p1 Dst[3] = MR Dst[1] = L p2 Dst[2] = L p1 Dst[3] = L p3 Dst[1] Dst[2] =L p2 Dst[3] =L p1  L p1

15/03/2006An Approximation-Based Data Structure for Similarity Search12 VA-SSA q 1 a1a1  L p1 2 a2a2 3 a3a3 Hp:k=3 Dst[1] = L p3 Dst[2] =L p2 Dst[3] =L p1 4 l4l4  L p4 < Dst[3]Dst[1] = L p3 Dst[2] =L p2 Dst[3] =L p4 Dst[1] = L p3 Dst[2] =L p4 Dst[3] = L p2  L p2 a4a4

15/03/2006An Approximation-Based Data Structure for Similarity Search13 VA-SSA q 1 a1a1 2 a2a2 3 a3a3 Hp:k=3 4 Dst[1] = L p3 Dst[2] =L p4 Dst[3] = L p2  L p2 a4a4 5 a5a5 l5l5 6 a6a6 l6l6 <  >  L p6 < Dst[3]Dst[1] = L p3 Dst[2] =L p4 Dst[3] = L p6 Dst[1] = L p3 Dst[2] = L p6 Dst[3] =L p4  L p4 Punti più vicini: 3, 6, 4

15/03/2006An Approximation-Based Data Structure for Similarity Search14 VA - Near Optimal Algorithm Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Pila “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR;  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE;

15/03/2006An Approximation-Based Data Structure for Similarity Search15 Algoritmo VA-NOA Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Coda “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR; Calcola e restituisce le distanze dalla query rispetto agli UPPER BOUND, non ai punti  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE;

15/03/2006An Approximation-Based Data Structure for Similarity Search16 Algoritmo VA-NOA Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Coda “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR; Calcola e restituisce le distanze dalla query rispetto agli UPPER BOUND, non ai punti Inserisce nella coda Heap ordinando in funzione del LOWER BOUND  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE;

15/03/2006An Approximation-Based Data Structure for Similarity Search17 Algoritmo VA-NOA Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Coda “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR; Calcola e restituisce le distanze dalla query rispetto agli UPPER BOUND, non ai punti Inserisce nella coda Heap ordinando in funzione del LOWER BOUND  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE; Calcola e restituisce le distanze tra la query e i punti

15/03/2006An Approximation-Based Data Structure for Similarity Search18 Algoritmo VA-NOA Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Coda “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR; Calcola e restituisce le distanze dalla query rispetto agli UPPER BOUND, non ai punti Inserisce nella coda Heap ordinando in funzione del LOWER BOUND  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE; Calcola e restituisce le distanze tra la query e i punti Estrae dalla coda Heap in funzione del LOWER BOUND più vicino alla query

15/03/2006An Approximation-Based Data Structure for Similarity Search19 VA-NOA (Fase 1) q  MAXREAL 1 l1l1 << u1u1 < Dst[3] a1a1 2 a2a2 l2l2 u2u2 <  Dst[3] 3 l3l3 <  u3u3 < Dst[3] <  a3a3 Dst[1]=MRDst[2]=MRDst[3]=MR Hp:k=3Dst[1]=MRDst[2]=MRDst[3] =u 1 Dst[1] Dst[2]=MRDst[3] = MR Dst[1] =u 1 Dst[2]=MRDst[3] = u 2 Dst[1] Dst[2] = u 1 Dst[3] = MR Dst[1] = u 2 Dst[2] = u 1 Dst[3] = u 3 Dst[1] = u 2 Dst[2] =u 3 Dst[3] =u 1  u 1 Heap l1l1l1l1 l2l2l2l2 l1l1l1l1 l3l3l3l3 l2l2l2l2 l1l1l1l1

15/03/2006An Approximation-Based Data Structure for Similarity Search20 VA-NOA (Fase 1) q 1 a1a1  u 1 2 a2a2 3 a3a3 Hp:k=3 Dst[1] = u 2 Dst[2] =u 3 Dst[3] =u 1 4 l4l4 = 0 u4u4 < Dst[3]Dst[1] = u 2 Dst[2] =u 3 Dst[3] =u 4 Dst[1] Dst[2] =u 2 Dst[3] = u 3  u 3 a4a4 Heap l3l3l3l3 l2l2l2l2 l1l1l1l1 l4l4l4l4 l3l3l3l3 l2l2l2l2 l1l1l1l1

15/03/2006An Approximation-Based Data Structure for Similarity Search21 VA-NOA (Fase 1) q 1 a1a1 2 a2a2 3 a3a3 Hp:k=3 4 Dst[1] = u 4 Dst[2] =u 2 Dst[3] = u 3  u 3 a4a4 5 a5a5 l5l5 6 a6a6 l6l6 <  u6u6 < Dst[3]Dst[1] = u 4 Dst[2] = u 2 Dst[3] = u 6 Dst[1] = u 4 Dst[2] = u 6 Dst[3] = u 2  u 2 u5u5 > Dst[3] Heap l4l4l4l4 l3l3l3l3 l2l2l2l2 l1l1l1l1 l4l4l4l4 l3l3l3l3 l2l2l2l2 l1l1l1l1 l5l5l5l5 l4l4l4l4 l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5

15/03/2006An Approximation-Based Data Structure for Similarity Search22 VA-NOA (Fase 2) q  MAXREAL l4l4  Dst[1]=MRDst[2]=MRDst[3]=MR Hp:k=3 Heap l4l4l4l4 l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l Dst[1]=MRDst[2]=MRDst[3] =L p4 Dst[1] Dst[2]=MRDst[3] = MR l4l4l4l4 l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5

15/03/2006An Approximation-Based Data Structure for Similarity Search23 VA-NOA (Fase 2) q  MAXREAL l3l3 <  Dst[1] =L p4 Dst[2]=MRDst[3]=MR Hp:k=3 Heap l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l Dst[1] =L p4 Dst[2]=MRDst[3] =L p3 Dst[1] Dst[2] =L p4 Dst[3] = MR l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5

15/03/2006An Approximation-Based Data Structure for Similarity Search24 VA-NOA (Fase 2) q  MAXREAL l6l6 <  Dst[1] =L p3 Dst[2] =L p4 Dst[3]=MR Hp:k=3 Heap l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l Dst[1] =L p3 Dst[2] =L p4 Dst[3] =L p6 Dst[1] =L p3 Dst[2] =L p6 Dst[3] = L p4 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5  L p4

15/03/2006An Approximation-Based Data Structure for Similarity Search25 VA-NOA (Fase 2) q l2l2 <  Hp:k=3 Heap l2l2l2l2 l1l1l1l1 l5l5l5l l2l2l2l2 l1l1l1l1 l5l5l5l5  L p4 L p2 >  Dst[3]Dst[1] =L p3 Dst[2] =L p6 Dst[3] = L p4

15/03/2006An Approximation-Based Data Structure for Similarity Search26 VA-NOA (Fase 2) q l1l1 >  Hp:k=3 Heap l1l1l1l1 l5l5l5l l1l1l1l1 l5l5l5l5  L p4Dst[1] =L p3 Dst[2] =L p6 Dst[3] = L p4 Punti più vicini: 3, 6, 4

15/03/2006An Approximation-Based Data Structure for Similarity Search27 Confronto VA-File ed R-Tree + Algoritmi basati su VA-File non richiedono la costruzione di alcun albero - Algoritmi VA-File visitano sicuramente tutti i punti Però ogni lettura è computazionalmente meno costosa + Algoritmi per i VA-File calcolano le distanze solo per i candidati = Algoritmi sui VA-File migliorano all’aumentare delle dimensioni mentre gli R-Tree peggiorano

15/03/2006An Approximation-Based Data Structure for Similarity Search28 Confronto VA-File ed R-Tree (1) (a): Tempo di CPU relativo al database immagine (b): Tempo di esecuzione (wall-clock time) relativo al database immagine

15/03/2006An Approximation-Based Data Structure for Similarity Search29 Confronto VA-File ed R-Tree (4) (a): Selettività dei blocchi in funzione del numero delle dimensioni. (b): Numero totale dei blocchi visitati in funzione del numero di dimensioni. Data Set REALE

15/03/2006An Approximation-Based Data Structure for Similarity Search30 Confronto tra VA-SSA e VA-NOA VA-NOA visita due volte i punti nella pila... VA-NOA visita due volte i punti nella pila ma nella prima fase calcola solo gli upper bound... ma nella prima fase calcola solo gli upper bound Difatti VA-NOA calcola L p, la distanza pesata, su un numero ridotto di candidati Difatti VA-NOA calcola L p, la distanza pesata, su un numero ridotto di candidati In pratica: In pratica: –VA-SSA è di complessità O(N) –VA-NOA è di complessità O(N 2 log 2 N 1 )

15/03/2006An Approximation-Based Data Structure for Similarity Search31 Confronto tra VA-SSA e VA-NOA (a): Selettività vettoriale per il VA-File in funzione della grandezza del database. (b): Selettività dei blocchi in funzione della dimensionalità.

15/03/2006An Approximation-Based Data Structure for Similarity Search32 Bibliografia “An Approximation-Based Data Structure for Similarity Search” – R. Weber, S. Blott “An Approximation-Based Data Structure for Similarity Search” – R. Weber, S. Blott Hermes TR, 1998 “Algorithms” – R. Sedgewick “Algorithms” – R. Sedgewick Addison-Wesley Publishing Company, 1983

33 Grazie per l’attenzione!! Diego Cera Michele Degli Esposti Letizia Falcone