B Albero rispetto ad un albero R - Non è solo un insieme di liste collegate collegate tra loro?

10

Ho una certa familiarità con un albero B, principalmente dovendo mantenere i database ben nutriti con elettricità, aria condizionata e spazio harddrive. Mi associo a una lista doppia (doubl [ie, ey]?) Collegata.

Oggi, uno degli sviluppatori a pranzo ha menzionato un albero R.

Sono saltato su Wikipedia e ho iniziato a leggere. Sembrava terribile come un albero B più alto. Sfortunatamente, non avendo un profondo background matematico è difficile capire di cosa parlano alcuni dei miei colleghi.

Speravo che qualcuno potesse chiarire alcune differenze tra un albero B e un albero R. Probabilmente finirò col chiedere ai ragazzi, ma non c'è alcuna garanzia che risponderanno alla mia domanda. Più che probabile inizieranno a vagare su Dio solo sa cosa. . .

    
posta surfasb 28.07.2011 - 05:17
fonte

2 risposte

5

Un albero R può essere pensato come generalizzazione di un albero b. Laddove un albero b fornisce accesso O (log n) su un "raggio limitato" delle chiavi in esso contenute, un R Tree fornisce l'accesso O (log n) su una "K dimensional region" delle chiavi che contiene.

Se si desidera mappare i codici postali ai nomi delle province, è possibile utilizzare un B-Tree, dal momento che si potrebbe chiedere "Quali sono tutte le contee con codici di avviamento postale tra 60000 e 61000?" Tuttavia, un B-Tree non sarebbe adatto per mappare le coordinate GPS ai nomi delle province per domande come "Quali sono tutte le contee entro 100 miglia da Chicago?", Poiché ordina solo le sue chiavi su una singola dimensione. Un R-Tree rompe le sue chiavi in base a caselle di delimitazione sovrapposte, quindi è un modo naturale per archiviare le chiavi quando è necessario eseguire una query su più dimensioni.

    
risposta data 28.07.2011 - 06:44
fonte
5

La maggior parte delle strutture ad albero può essere ridotta a una qualche forma di elenco collegato, purché si ignori come viene costruito l'elenco (in particolare, come gli elementi vengono aggiunti e rimossi e come i nodi vengono ribilanciati, se applicabile). È essenzialmente l'algoritmo di inserimento / cancellazione / recupero che distingue una struttura dati da un'altra.

I nodi in un albero R in genere contengono un riquadro di delimitazione, che consente di indicizzare in modo efficiente le posizioni, come potrebbe essere necessario se si desidera cercare i record "vicino" a una determinata posizione. Gli elementi in un albero B hanno un ordinamento più semplice; puoi confrontare direttamente se qualcosa è maggiore o uguale a un altro elemento. In un R-Tree, lo scopo di ogni voce è determinare quali elementi sono contenuti in un riquadro di delimitazione.

Un B-Tree consente di cercare in modo efficiente elementi ordinabili nella memoria secondaria (come un disco rigido) e un R-Tree consente di cercare in modo efficiente elementi che si trovano "in" o "vicino" a un punto particolare oa un limite box, anche nella memoria secondaria.

    
risposta data 28.07.2011 - 06:06
fonte

Leggi altre domande sui tag