2013-04-14 12 views

risposta

4

In realtà la risposta è sì.

La differenza principale tra B + -trees e B-tree semplici è che i valori sono effettivamente memorizzati nelle foglie per il primo, mentre in seguito troverete valori in ogni nodo. Quindi, gli elementi B + consentono di archiviare i dati in modo quasi continuo, ciascuna foglia contenente una porzione contigua di tutti i dati ordinati. Questo non può essere vero per gli alberi B: un nodo interno conterrà diversi elementi, ma non saranno conttui. l'intero set di dati ordinato.

Questa proprietà è essenziale per il caricamento di massa: il processo funziona su un set di dati già ordinato tagliandolo negli array che formeranno le foglie dell'albero B +. Quindi per un B-tree sembra che non possa funzionare.

Se siamo in grado di ordinare i dati in un modo che raggruppa elementi interni nodi, allora il problema è risolto. Per fare ciò, è necessario sapere in anticipo come saranno raggruppati gli elementi. Questo risulta essere possibile.

Chiamiamo o (ordine) il numero minimo di figli in un nodo (che è coerente con la definizione originale di un albero B). Consideriamo che il nodo radice sia nello stadio più alto dell'albero e le foglie siano al livello più basso (fase 0). Per un albero ben equilibrato, tutte le foglie saranno effettivamente allo stesso livello.

La fase k dell'albero raggruppa elementi distanziati di almeno o elementi nello stage k-1. Dopo un ordinamento iniziale, dobbiamo estrarre elementi dall'array ordinato, che costituisce lo stage 0, e raggrupparli in una matrice diversa per costruire lo stage 1, quindi farlo di nuovo con quell'array in un nuovo array per lo stage 2 e ripetere il processo fino a quando non ci sono meno di o elementi nell'array più recente, che sarà la fase principale. Da allora in poi, è possibile costruire l'albero direttamente dal pacchetto di stadi:

  • diviso ogni fase in matrici di o elementi,
  • array indice generazione per collegare i nodi di sottonodi
  • costruire ciascun nodo come la coppia di array di indice corrispondente * matrice di valori

L'albero risultante non sarà necessariamente ben bilanciato. Dipende dal numero di voci nel set di dati e da o. Dovrebbe essere possibile regolare l'intervallo utilizzato nella costruzione degli stage per avere un albero distribuito migliore.

Tutto sommato il lavoro necessario per caricare in serie un B-tree è più noioso che per B + -tree, ma è possibile.

Problemi correlati