Ποια είναι τα πλεονεκτήματα της T-δέντρων πάνω από Β +/- δέντρα;

ψήφοι
12

Έχω διερευνηθούν τους ορισμούς των Τ-δέντρα και Β / Β + δέντρα. Από τα έγγραφα στο διαδίκτυο Καταλαβαίνω ότι Β-δέντρα έχουν καλύτερες επιδόσεις στην ιεραρχική μνήμη, όπως σκληρούς δίσκους και προσωρινής αποθήκευσης μνήμης.

Αυτό που δεν μπορώ να καταλάβω είναι γιατί T-δέντρα / χρησιμοποιούνται ακόμη και για επίπεδη μνήμη;

Είναι διαφημίζονται ως χώρος αποτελεσματική εναλλακτική λύση για να AVL δέντρα.

Στη χειρότερη περίπτωση, όλοι οι κόμβοι φύλλα ενός Τ-δέντρου περιέχει ένα μόνο στοιχείο και όλοι οι εσωτερικοί κόμβοι περιέχουν το ελάχιστο επιτρεπόμενο ποσό, το οποίο βρίσκεται κοντά στην πλήρη. Αυτό σημαίνει ότι κατά μέσο όρο μόνο το ήμισυ της χορηγηθείσας χώρου χρησιμοποιείται. Αν δεν κάνω λάθος, αυτό είναι το ίδιο αξιοποίηση ως η χειρότερη περίπτωση της Β-δέντρα, όταν οι κόμβοι ενός B-tree είναι μισογεμάτο.

Αν υποθέσουμε ότι και οι δύο δέντρα να αποθηκεύσει τα κλειδιά τοπικά στους κόμβους, αλλά δείκτες χρήση να αναφερθώ στις εγγραφές, η μόνη διαφορά είναι ότι η Β-δέντρα πρέπει να αποθηκεύουν δείκτες για καθέναν από τους κλάδους. Αυτό θα προκαλέσει γενικά έως 50% εναέρια ή λιγότερο (πάνω από Τ-δέντρα), ανάλογα με το μέγεθος των κλειδιών. Στην πραγματικότητα, αυτό είναι κοντά στην εναέρια αναμένεται AVL δέντρα, υποθέτοντας ότι δεν μητρικής δείκτη, τα αρχεία ενσωματωμένα στους κόμβους, τα κλειδιά ενσωματώνονται στα αρχεία. Είναι αυτή η αναμενόμενη αύξηση της αποδοτικότητας που μας αποτρέπει από τη χρήση B-δέντρα αντ 'αυτού;

Τα Τ-δέντρα που εφαρμόζονται συνήθως στην κορυφή του AVL δέντρα. AVL δέντρα είναι πιο ισορροπημένη από Β-δένδρα. Μπορεί αυτό να συνδεθεί με την εφαρμογή των Τ-δέντρα;

Δημοσιεύθηκε 29/01/2011 στις 15:43
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
3

Μπορώ να σας δώσω μια προσωπική ιστορία που καλύπτει το ήμισυ της απάντησης, δηλαδή, ο λόγος που έγραψα κάποια Pascal κώδικα για να προγραμματίσετε Β δέντρα + περίπου 18 χρόνια πριν.

το σύστημα στόχος μου ήταν ένα PC με δύο δίσκους, έπρεπε να αποθηκεύσετε ένα ευρετήριο σε μη πτητική μνήμη και ήθελα να καταλάβετε καλύτερα τι μάθαινα στο πανεπιστήμιο. Ήμουν πολύ ικανοποιημένος με την απόδοση ενός εμπορικού πακέτου, ίσως DBase III, ή κάποιο προϊόν Fox, δεν μπορώ να θυμηθώ.

ούτως ή άλλως: Χρειαζόμουν αυτές τις λειτουργίες:

  • ψάχνω
  • εισαγωγή
  • διαγραφή
  • ημερήσια διάταξη
  • προηγούμενο στοιχείο

  • μέγιστο μέγεθος του δείκτη δεν ήταν γνωστή

  • έτσι ώστε τα στοιχεία έπρεπε να παραμείνουν για τον δίσκο
  • κάθε πρόσβαση στην υποστήριξη είχε υψηλό κόστος
  • διαβάζοντας ένα ολόκληρο μπλοκ κοστίζουν το ίδιο με την ανάγνωση ενός byte

Β + -δέντρα γίνει η μικρή αργή PC πραγματικά πετάξει μέσα από τα δεδομένα!

τα φύλλα είχε δύο επιπλέον δείκτες, έτσι ώστε να σχηματιστεί μια διπλά συνδεδεμένη λίστα, για τη διαδοχική αναζητήσεις.

Απαντήθηκε 11/02/2011 στις 23:49
πηγή χρήστη

ψήφοι
2

Στην πραγματικότητα, η διαφορά έγκειται στο σύστημα που χρησιμοποιείτε. Ως δάσκαλος μου στο πανεπιστήμιο αυτό σχολίασε: αν το πρόβλημά σας έγκειται στην έλλειψη μνήμης, ή σε έλλειψη hdd θα καθορίσει ποια δέντρο και στο οποίο εφαρμογή που θα χρησιμοποιήσετε. Πιθανότατα θα είναι Β + δέντρο.

Επειδή υπάρχουν εκατοντάδες εφαρμογές, για παράδειγμα, με 2direction ουρά και ένα κατευθυντικό ουρές όπου θα πρέπει να στοιχείων βρόχο σκέψης, και επίσης υπάρχουν πολλοί τρόποι για να αποθηκεύσετε το δείκτη και να ανακτούν θα καθορίσει τα πραγματικά μειονεκτήματα και λεπτά της κάθε εφαρμογής.

Απαντήθηκε 25/02/2011 στις 09:02
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more