Φυλλοπροσανατολιζόμενο δυαδικό δέντρο αναζήτησης.
Ορισμός δέντρου. |
Μια σημαντική ιδιότητα του δέντρου εύρεσης είναι ότι αν ένας εσωτερικός κόμβος v περιέχει μια τιμή(v)=Κ, τότε κάθε τιμή στο αριστερό υποδέντρο του v θα είναι μικρότερη του Κ ενώ κάθε τιμή στο δεξιό υποδέντρο θα είναι μεγαλύτερη του Κ. Κάτι τέτοιο μπορείτε να το παρατηρήσετε στην εικόνα 1.
Σε κάθε κόμβο v ορίζουμε το xrange(v) το οποίο είναι διάστημα τιμών [a,b]. To xrange(v) δείχνει το εύρος των στοιχείων που καλύπτουν το φύλλα του υποδέντρου με ρίζα v. Με άλλα λόγια αποκλείεται κάποιο φύλλο u από το υποδέντρο αυτό να έχει τιμή(u) που να μην ανήκει στο xrange(v).
Τυπική εξήγηση για τιμή(v) και xrange(v)
Η τιμή(v) κάθε κόμβου v υπολογίζεται ως
η μέση τιμή των περιεχομένων των παιδιών
του.
Έτσι τιμή(v)=( τιμή(αρ.παιδί(v))+τιμή(δεξ.παιδί(v))
) .
|
Η τιμή ενός κόμβου v εξαρτάται απο τις
τιμές των παιδιών του. Έτσι μπορούμε να
βρούμε σταδιακά ξεκινώντας από τα φύλλα την
τιμή(v) κάθε κόμβου v.Στην εικόνα φαίνεται
ότι η ρίζα έχει τιμή(ρίζας)=35
και ότι όλοι οι κόμβοι αριστερά της ρίζας
έχουν τιμές μικρότερες του 35 ενώ δεξιά της ρίζας μεγαλύτερες του 35. |
Εικόνα 1 |
Αντίθετα το xrange(v) κάθε κόμβου v υπολογίζεται άμα ξέρουμε το xrange και την τιμή(val()) του γονέα του, όπως φαίνεται στον παρακάτω τύπο.
Δηλαδή το xrange(v) είναι ένα υποσύνολο
του xrange(w) του γονέα, και το val(w)
του γονέα είναι το δεξιό όριο στο xrange
του αριστερού παιδιού. Για δεξί παιδί
έχουμε το val(w) (τιμή(w))είναι
αριστερό όριο στο xrange.
Ορισμός : Δίνετε διάστημα ερώτησης Ι=[x0,y0]. Ορίζουμε τα σύνολα κόμβων P,C,Cmax σε σχέση με το I.
Για το πλήθος των στοιχείων του συνόλου P
ισχύει |P| £ 2h.
Δηλαδή το πλήθος του P
είναι το πολύ ισο με το διπλάσιο του ύψους
του δέντρου.
C={v; xrange(v)
Ν I }
Το C είναι το σύνολο των κόμβων των οποίων το
xrange είναι υποσύνολο του I.
Στη
διπλανή εικόνα τα u1,u2,u3 ανήκουν στο
C μια που
τα xrange τους είνα υποσύνολα του I=[x0,y0].
Για το πλήθος των στοιχείων του C
ισχύει οτι αυτό είναι μικρότερο ή ισο με
διπλάσιο του πλήθους των φύλλων των
υποδέντρων που έχουν ρίζα κάποιο στοιχείο
του Cmax.
|P| £ 2(# φύλλα
v με xrange(v) Ν
I )
Cmax={v; vΞ C και πατέρας(v)Ο
C}
To Cmax είναι το σύνολο των κόμβων που ανήκουν
στο C αλλά ο πατέρας τους δέν ανήκει στο
C.
Αριστερά
βλέπουμε πως το v ανήκει στο Cmax μια που το
xrange του είναι υποσύνολο του [x0,y0]. Αντίθετα ο
πατέρας του v δεν ανήκει στο C αλλά ανήκει
στο P, επειδή τέμνει το I αλλά δεν περιέχεται
σε αυτό.
ΛΗΜΜΑ.:Εστω Τ ένα δυικό
δένδρο εύρεσης με ύψος h και έστω [x0,y0]
ένα διάστημα ερώτησης. Τότε ισχύει:
a) |P|£2h
b)|Cmax| £2h
c)|C| £2(πλήθος
φύλλων v με xrange(v)Ν
I)
Είναι σημαντικό κανείς να δεί την κατανομή των συνόλων P,C,Cmax σε ένα φυλλοπροσανατολιζόμενο δυικό δέντρο. Τα σύνολα αυτά φαίνονται πως κατανέμονται στο Search Tree Applet.