Διπλωματικι Εργαςία. Τλοποίθςθ και Οπτικοποίθςθ Δενδρικϊν Δομϊν Δεδομζνων. Κεςςόπουλοσ Αναςτάςιοσ. Επιβλζπων Κακθγθτισ: Παπαδόπουλοσ Απόςτολοσ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Διπλωματικι Εργαςία. Τλοποίθςθ και Οπτικοποίθςθ Δενδρικϊν Δομϊν Δεδομζνων. Κεςςόπουλοσ Αναςτάςιοσ. Επιβλζπων Κακθγθτισ: Παπαδόπουλοσ Απόςτολοσ"

Transcript

1 Τλοποίθςθ και Οπτικοποίθςθ Δενδρικϊν Δομϊν Δεδομζνων Κεςςόπουλοσ Αναςτάςιοσ ΑΕΜ : 617 Επιβλζπων Κακθγθτισ: Παπαδόπουλοσ Απόςτολοσ χολι Θετικϊν Επιςτθμϊν Σμιμα Πλθροφορικισ 1

2 Κεφάλαιο 0. Περιεχόμενα Κεφάλαιο 1 : Ειςαγωγι-Βαςικζσ Ζννοιεσ Κεφάλαιο 2 : Δομζσ Δεδομζνων 2.0 : Ειςαγωγι 2.1 : Δυαδικά Δζντρα Αναηιτθςθσ : Βαςικζσ Ζννοιεσ και Δόμθςθ : Λειτουργίεσ Δυαδικϊν Δζντρων Αναηιτθςθσ : Πολυπλοκότθτα Δυαδικϊν Δζντρων Αναηιτθςθσ 2.2 : AVL Δζντρα : Βαςικζσ Ζννοιεσ και Δόμθςθ : Λειτουργίεσ AVL Δζντρων : Πολυπλοκότθτα AVL Δζντρων 2.3 : Red-Black Δζντρα : Βαςικζσ Ζννοιεσ και Δόμθςθ : Λειτουργίεσ Red-Black Δζντρων : Πολυπλοκότθτα Red-Black Δζντρων Κεφάλαιο 3 : Τλοποίθςθ Δομϊν Δεδομζνων 3.0 : Ειςαγωγι 3.1 : Τλοποίθςθ Δυαδικϊν Δζντρων Αναηιτθςθσ : Ειςαγωγι : Γραφικά : Αλγόρικμοσ : τιγμιότυπα Εκτζλεςθσ 3.2 : Τλοποίθςθ AVL Δζντρων 2

3 3.2.0 : Ειςαγωγι : Αλγόρικμοσ : τιγμιότυπα Εκτζλεςθσ 3.3 : Τλοποίθςθ Red-Black Δζντρων : Ειςαγωγι : Αλγόρικμοσ : τιγμιότυπα Εκτζλεςθσ Κεφάλαιο 4 : φνοψθ και Μελλοντικι Μελζτθ Κεφάλαιο 5 : Βιβλιογραφία 3

4 Κεφάλαιο 1. Ειςαγωγι Βαςικζσ Ζννοιεσ Σκοπόσ αυτισ τθσ διπλωματικισ εργαςίασ είναι θ εκμάκθςθ και εκ βακζων κατανόθςθ του οριςμοφ βαςικϊν δενδρικϊν δομϊν δεδομζνων, κακϊσ και του τρόπου λειτουργίασ τουσ. Ριο ςυγκεκριμζνα, κα αναφερκοφν και κα αναλυκοφν βαςικζσ ζννοιεσ, απαραίτθτεσ για τθν κατανόθςθ των δομϊν, ενϊ ςτθ ςυνζχεια κα προχωριςουμε ςτθ μελζτθ του τρόπου λειτουργίασ των Δυαδικϊν Δζντρων Αναηιτθςθσ (Binary Search Trees), των AVL δζντρων και, τζλοσ, των Red-Black δζντρων. Αφοφ παρουςιαςτοφν οι αλγόρικμοι δόμθςθσ τουσ και αναλυκοφν με παραδείγματα και απεικονίςεισ ο τρόποσ λειτουργίασ και θ πολυπλοκότθτά τουσ, προχωροφμε ςτθν περιγραφι του τρόπου υλοποίθςθσ των applets που ςυνοδεφουν το κείμενο αυτό. Τα applets αποτελοφν ςθμαντικό βοικθμα για τθν κατανόθςθ του τρόπου λειτουργίασ των προαναφερκείςων δομϊν, κακϊσ με ευκολία μπορεί ο αναγνϊςτθσ να δει ςτθν πράξθ πωσ δομοφνται τα δζντρα, κακϊσ και το πωσ μεταβάλλονται κατά τισ πράξεισ τθσ αναηιτθςθσ, ειςαγωγισ και διαγραφισ κόμβου ςε αυτά, ανάλογα με τισ ιδιότθτεσ και ςυνκικεσ που διζπουν τθν λειτουργία του εκάςτοτε δζντρου. Ξεκινάμε, λοιπόν, από κάποιεσ βαςικζσ ζννοιεσ, κακ όλα απαραίτθτεσ για τθν κατανόθςθ όςων ακολουκοφν ςτα επόμενα κεφάλαια. Ο όροσ δομι δεδομζνων ςυμπεριλαμβάνει τθν ζννοια του αφθρθμζνου τφπου δεδομζνων, αλλά επιπλζον περικλείει και τισ ςχζςεισ μεταξφ ςτοιχείων του αφθρθμζνου τφπου δεδομζνων, οι οποίεσ περιγράφονται με το ςφνολο των δυνατϊν πράξεων επάνω ςτα ςτοιχεία του τφπου. Ζτςι προκφπτει ο ακόλουκοσ τυπικόσ οριςμόσ του όρου δομι δεδομζνων. ΟΡΙΜΟ: Δομι Δεδομζνων είναι ζνα ςφνολο αποκθκευμζνων δεδομζνων που υφίςταται επεξεργαςία από ζνα ςφνολο λειτουργιϊν, οι οποίεσ καλοφνται από το υπόλοιπο πρόγραμμα. Με άλλα λόγια μία δομι δεδομζνων αποτελείται από τα εξισ ςτοιχεία: Μία δομι αποκικευςθσ, δθλαδι μία αναπαράςταςθ τθσ δομισ ςτο χαμθλότερο φυςικό επίπεδο, Ζνα ςφνολο από οριςμοφσ ςυναρτιςεων, όπου κάκε ςυνάρτθςθ εκτελεί μία λειτουργία ςτο περιεχόμενο τθσ δομισ, Ζνα ςφνολο από αλγορίκμουσ, ζναν αλγόρικμο για κάκε ςυνάρτθςθ, όπου κάκε αλγόρικμοσ περιγράφει πωσ κα γίνει θ επεξεργαςία τθσ δομισ 4

5 αποκικευςθσ, ϊςτε να εκτελεςτεί κάποια λειτουργία που περιγράφεται ςε μία ςυνάρτθςθ. Κάκε μορφι δομισ δεδομζνων αποτελείται από ζνα ςφνολο κόμβων. Οι βαςικζσ λειτουργίεσ (ι πράξεισ) επί των δομϊν δεδομζνων είναι οι ακόλουκεσ: Προςπζλαςθ: Συνικωσ αναηθτείται ζνασ κόμβοσ, ϊςτε να εξεταςτεί ι για να τροποποιθκεί το περιεχόμενό του. Ειςαγωγι: Η προςκικθ νζων κόμβων ςε ιδθ υπάρχουςα δομι. Διαγραφι: Το αντίςτροφο τθσ ειςαγωγισ. Αναηιτθςθ: Η προςπζλαςθ ενόσ ι περιςςότερων κόμβων, που ζχουν ωσ χαρακτθριςτικό τθν φπαρξθ τθσ ίδιασ τιμισ ςε κάποιο ι κάποια πεδία του κόμβου. Το πεδίο του κόμβου που ανιχνεφεται το ονομάηουμε Κλειδί. Σαξινόμθςθ: Σε πολλζσ εφαρμογζσ οι κόμβοι πρζπει να ταξινομθκοφν ςφμφωνα με τθν αφξουςα ι φκίνουςα ςειρά ενόσ ι περιςςότερων κλειδιϊν. Αντιγραφι: Πλοι οι κόμβοι ι μερικοί από τουσ κόμβουσ μίασ δομισ αντιγράφονται ςε μία άλθ δομι. υγχϊνευςθ: Δφο ι περιςςότερεσ δομζσ ςυνενϊνονται ςε μία ενιαία δομι. Διαχωριςμόσ: Το αντίςτροφο τθσ ςυγχϊνευςθσ. Στθν πράξθ ςπάνια χρθςιμοποιοφνται και οι οκτϊ λειτουργίεσ για κάποια δομι. Συνικωσ παρατθρείται το φαινόμενο μία δομι δεδομζνων να είναι αποδοτικότερθ από μία άλλθ δομι με κριτιριο κάποια ςυγκεκριμζνθ λειτουργία, για παράδειγμα τθν αναηιτθςθ, αλλά λιγότερο αποδοτικι για κάποια άλλθ λειτουργία, πχ. τθν ειςαγωγι. Ζτςι εξθγείται θ φπαρξθ διαφορετικϊν δομϊν, κακϊσ και θ ςθμαντικότθτα τθσ επιλογισ τθσ κατάλλθλθσ δομισ, ανάλογα με τθν χριςθ για τθν οποία τθν προορίηουμε. Χαρακτθριςτικό παράδειγμα δομϊν δεδομζνων είναι οι δενδρικζσ δομζσ. Εφόςον αυτζσ αποτελοφν, ςτθν προκειμζνθ περίπτωςθ, το αντικείμενο με το οποίο κα αςχολθκοφμε, παρακζτουμε μερικζσ βαςικζσ ζννοιεσ, που κα χρειαςτοφμε ςτθ ςυνζχεια: Δζντρο είναι ζνα ςυνεκτικό (μθ κατευκυνόμενο) γράφθμα, το οποίο δεν περιζχει κανζνα κφκλωμα. Μια κορυφι ενόσ δζντρου που ςυνδζεται με μόνο μία άλλθ κορυφι ονομάηεται τερματικόσ κόμβοσ ι φφλλο του δζντρου. 5

6 Μια κορυφι ενόσ δζντρου που ςυνδζεται με περιςςότερεσ από μία κορυφζσ ονομάηεται κόμβοσ διακλάδωςθσ. Για τα δζντρα ιςχφει: Δφο κορυφζσ ςυνδζονται με ζνα μοναδικό μονοπάτι. Ο αρικμόσ των κορυφϊν είναι κατά μία μονάδα μεγαλφτεροσ από τον αρικμό των ακμϊν. Κάκε δζντρο με δφο ι περιςςότερεσ κορυφζσ ζχει τουλάχιςτον δφο φφλλα. Δζντρο με ρίηα ονομάηεται το δζντρο ςτο οποίο υπάρχει ακριβϊσ μία κορυφι με βακμό 0 (ρίηα) και οι ειςερχόμενοι κόμβοι όλων των άλλων κορυφϊν ζχουν βακμό 1 (απόγονοι). Ζνα διατεταγμζνο δζντρο, ςτο οποίο κάκε κόμβοσ διακλάδωςθσ ζχει το πολφ m παιδιά, ονομάηεται m-αδικό δζντρο. Ζνα m-αδικό δζντρο ονομάηεται κανονικό, αν κακζνασ από τουσ κόμβουσ διακλάδωςθσ του ζχει το πολφ m παιδιά. Επίςθσ, ζνα τζτοιο δζντρο που ζχει ακριβϊσ m παιδιά ονομάηεται ςυμπλθρωμζνο. Μικοσ μονοπατιοφ μιασ κορυφισ ορίηουμε τον αρικμό των ακμϊν του μονοπατιοφ, το οποίο ξεκινάει από τθν ρίηα του δζντρου και καταλιγει ςτθν κορυφι αυτι. Υψοσ του δζντρου ορίηουμε το μζγιςτο από τα μικθ του ςυνόλου των μονοπατιϊν, δθλαδι το μεγαλφτερο μονοπάτι. Στθν ςυγκεκριμζνθ εργαςία οι πράξεισ που κα εξεταςτοφν και κα αναλυκοφν είναι αυτζσ τισ αναηιτθςθσ, ειςαγωγισ και διαγραφισ κόμβου ςτα δυαδικά δζντρα που κα παρουςιάςουμε. Ριο Συγκεκριμζνα, θ διάρκρωςθ τθσ διπλωματικισ εργαςίασ ζχει ωσ εξισ: Ανάλυςθ των αλγορίκμων που χρθςιμοποιοφνται, ωσ προσ τον τρόπο δόμθςθσ των δενδρικϊν δομϊν. Ανάλυςθ του τρόπου εκτζλεςθσ κάκε μίασ πράξθσ (αναηιτθςθσ, ειςαγωγισ, διαγραφισ), για κάκε μία δενδρικι δομι. Ανάλυςθ χρονικισ πολυπλοκότθτασ κάκε δενδρικισ υλοποίθςθσ και δυνατότθτεσ βελτίωςθσ. Ρεριγραφι τθσ πορείασ που ακολουκικθκε για τθν υλοποίθςθ των δομϊν που περιγράφθκαν και παρουςίαςθ των ςθμαντικότερων κλάςεων του προγράμματοσ. Ρεριγραφι τρόπου λειτουργίασ των java-applets, με τθν παρουςίαςθ ςτιγμιοτφπων των προγραμμάτων που καταςκευάςτθκαν. Ραρουςίαςθ νεϊτερων δομϊν που κα απαςχολιςουν τον αναγνϊςτθ μελλοντικά. 6

7 Κεφάλαιο 2. Δομζσ Δεδομζνων 2.0 Ειςαγωγι Η πλθκϊρα προβλθμάτων των Αηφγιςτων Δυαδικϊν Δζντρων, όςον αφορά τθν άναρχθ δόμθςι τουσ, οδιγθςε ςτθ δθμιουργία νζων, πιο αποδοτικϊν, δζντρων. Τα δζντρα αυτά κα μποροφςαν να διατθροφν με κάποιο τρόπο μία τάξθ ςτο εςωτερικό τουσ, επιτρζποντασ, ζτςι, τθν ολοκλιρωςθ των βαςικϊν πράξεων τθσ αναηιτθςθσ, ειςαγωγισ και διαγραφισ ςε ζναν μζςο χρόνο, ο οποίοσ κα κυμαίνεται ςε λογικά υπολογιςτικά πλαίςια, εξαλείφοντασ τθν εκ γενετισ αδυναμία των απλϊν Δυαδικϊν Δζντρων, να παρουςιάηουν μζχρι και γραμμικι πολυπλοκότθτα ςτισ βαςικζσ τουσ πράξεισ. Ρροζκυψαν, λοιπόν, νζεσ μορφζσ δζντρων, με πιο ςθμαντικά τα Δυαδικά Δζντρα Αναηιτθςθσ, κακϊσ και παραλλαγζσ τουσ, που ιρκαν με ςκοπό να βελτιϊςουν περαιτζρω τισ αποδόςεισ τουσ. Ραρακάτω, εξετάηουμε τα Δυαδικά Δζντρα Αναηιτθςθσ και δφο παραλλαγζσ-βελτιϊςεισ τουσ, τα AVL και τα Red-Black δζντρα. 2.1 Δυαδικά Δζντρα Αναηιτθςθσ Βαςικζσ Ζννοιεσ και Δόμθςθ Τα δυαδικά δζντρα αναηιτθςθσ αποτελοφν μία ειδικι κατθγορία των δυαδικϊν δζντρων. Τα δυαδικά δζντρα αποτελοφν δενδρικζσ δομζσ δεδομζνων, ςτισ οποίεσ κάκε κόμβοσ μπορεί να ζχει μζχρι και δφο απογόνουσ (παιδιά). Αυτόσ ο κανόνασ, όμωσ, αποδεικνφεται ανίκανοσ να εγγυθκεί τθν «καλι» δόμθςθ του δζντρου. Η ζλλειψθ περαιτζρω περιοριςμϊν μπορεί να οδθγιςει ςτθ δθμιουργία ενόσ κακϊσ ηυγιςμζνου δζντρου, με τισ βαςικζσ λειτουργίεσ του οποίου (αναηιτθςθ, ειςαγωγι, διαγραφι ενόσ ςτοιχείου) να απαιτοφν αςυμπτωτικά περιςςότερο χρόνο, απ ότι ςε ζνα ορκά δομθμζνο και ηυγιςμζνο δζντρο. Ορίηουμε, ζτςι, το δυαδικό δζντρο αναηιτθςθσ (ΔΔΑ), το οποίο ωσ ςκοπό ζχει τθν ελάττωςθ των αςυμπτωτικϊν χρόνων για τισ βαςικζσ λειτουργίεσ του δζντρου ςε Ο(logn). Οι κανόνεσ που διζπουν αυτά τα δζντρα είναι οι εξισ: 7

8 Κάκε ςτοιχείο ζχει ζνα κλειδί (ι τιμι) και δεν υπάρχουν δφο ςτοιχεία (κόμβοι) με το ίδιο κλειδί. Κατά ςυνζπεια, όλα τα κλειδιά είναι διακριτά. Τα κλειδιά του αριςτεροφ υποδζντρου τθσ ρίηασ είναι μικρότερα από το κλειδί τθσ ρίηασ. Τα κλειδιά του δεξιοφ υποδζντρου τθσ ρίηασ είναι μεγαλφτερα από το κλειδί τθσ ρίηασ. Το αριςτερό και το δεξιό υποδζντρο είναι επίςθσ δυαδικά δζντρα αναηιτθςθσ. Ππωσ μποροφμε να καταλάβουμε και από το όνομά τουσ, θ βαςικι λειτουργία των ΔΔΑ είναι θ αναηιτθςθ. Σε αυτιν βαςίηονται όλεσ οι υπόλοιπεσ λειτουργίεσ των δζντρων αυτϊν. Εδϊ πρζπει να επανειςάγουμε τον όρο μονοπάτι αναηιτθςθσ, το οποίο αποτελείται από τουσ κόμβουσ που διανφουμε ςε μία πράξθ αναηιτθςθσ, μζχρισ ότου να βρεκεί ο ηθτοφμενοσ κόμβοσ (επιτυχθμζνθ αναηιτθςθ) ι μζχρι να φτάςουμε ςε κάποιο φφλλο του δζντρου, χωρίσ να ζχουμε βρει τθν ηθτοφμενθ τιμι (αποτυχθμζνθ αναηιτθςθ) Λειτουργίεσ Δυαδικϊν Δζντρων Αναηιτθςθσ Τα δυαδικά δζντρα αναηιτθςθσ εκτελοφν τρεισ βαςικζσ λειτουργίεσ: αναηιτθςθ, ειςαγωγι και διαγραφι. Ραρακάτω κα δοφμε πιο αναλυτικά κάκε μία από αυτζσ τισ λειτουργίεσ. Αναηιτθςθ τοιχείου Ππωσ αναφζραμε πιο πάνω, θ αναηιτθςθ είναι θ βαςικι λειτουργία των δυαδικϊν δζντρων αναηιτθςθσ, ςτθν οποία ςτθρίηονται όλεσ οι υπόλοιπεσ λειτουργίεσ τουσ. Χάρισ ςτθ δόμθςθ τουσ, θ αναηιτθςθ ςτα ΔΔΑ είναι μία απλι και ςφντομθ διαδικαςία, θ οποία βαςίηεται ςε ςυγκρίςεισ τιμϊν. Αναλυτικότερα, όταν ξεκινά θ αναηιτθςθ, ζχουμε ςαν δεδομζνο τθν τιμι που κζλουμε να εντοπίςουμε ςτθ δομι του δζντρου. Ξεκινϊντασ, λοιπόν, από τθ ρίηα, ςυγκρίνουμε τθν τιμι τθσ με τθν τιμι του κόμβου που κζλουμε να εντοπίςουμε. Αν υπάρχει ταφτιςθ, τότε θ αναηιτθςθ ςταματά και επιςτρζφει ςαν αποτζλεςμα τθσ αναηιτθςθσ τον κόμβο που εξετάηεται, ςτθ ςυγκεκριμζνθ περίπτωςθ τθ ρίηα του δζντρου. Αν δεν ταυτίηονται, όμωσ, θ τιμι του κόμβου και θ τιμι αναηιτθςθσ, τότε ςυγκρίνουμε τισ τιμζσ τουσ. Αν θ τιμι αναηιτθςθσ είναι μικρότερθ από τθν τιμι τθσ ρίηασ, εξετάηουμε το αριςτερό 8

9 παιδί τθσ ρίηασ, μεταβαίνοντασ ζτςι ςτο αριςτερό υποδζντρο. Αν θ τιμι τθσ αναηιτθςθσ είναι μεγαλφτερθ από τθν τιμι τθσ ρίηασ, τότε μετακινοφμαςτε ςτο δεξιό παιδί τθσ ρίηασ, και κατά ςυνζπεια ςτο δεξιό υποδζντρο. Η διαδικαςία αυτι επαναλαμβάνεται για το δεξιό ι αριςτερό υποδζντρο, ανάλογα με το προσ τα ποφ κατευκφνκθκε θ αναηιτθςθ μετά τθ ρίηα. Εικόνα 1: ΔΔΑ 9 ςτοιχείων και φψουσ 3 Για παράδειγμα, κα χρθςιμοποιιςουμε το δζντρο τθσ εικόνασ 1. Σαν τιμι προσ αναηιτθςθ κα κεωριςουμε τθν τιμι 7. Ξεκινϊντασ από τθ ρίηα, ςυγκρίνουμε τθν τιμι αναηιτθςθσ με τθν τιμι τθσ ρίηασ. Εφόςον θ ρίηα ζχει μεγαλφτερθ τιμι από 7, ο αλγόρικμοσ μεταβαίνει ςτο αριςτερό υποδζντρο. Ρραγματοποιϊντασ νζα ςφγκριςθ, ςυμπεραίνουμε ότι θ τιμι αναηιτθςθσ είναι μεγαλφτερθ από τθν τιμι τθσ ρίηασ του υποδζντρου (3), οπότε μεταβαίνουμε ςτο δεξιό υποδζντρο τθσ, με ρίηα το 6. Συγκρίνοντασ και πάλι τισ τιμζσ, το 7 είναι μεγαλφτερο από το 6, οπότε μεταβαίνουμε ςτον δεξιό απόγονο. Στθν τελευταία ςφγκριςθ υπάρχει ταφτιςθ τιμϊν και θ αναηιτθςθ τερματίηει, επιςτρζφοντασ τον κόμβο που περιζχει τθν ηθτοφμενθ τιμι. Ανάλογα κα πράτταμε με τιμι αναηιτθςθσ το 5, με τθ διαφορά ότι ςτθν τελευταία ςφγκριςθ με το 4, απουςία άλλων απογόνων και λαμβάνοντασ υπόψθ τθν ιδιότθτα των ΔΔΑ (κάκε κλειδί είναι διακριτό), ο αλγόρικμοσ κα τερμάτιηε, ςυμπεραίνοντασ ότι θ τιμι 5 δεν υπάρχει ςτο δζντρο. 9

10 Ειςαγωγι τοιχείου Για τθν ειςαγωγι νζου ςτοιχείου-κόμβου ςε ζνα δζντρο δυαδικισ αναηιτθςθσ, χρθςιμοποιοφμε τον αλγόρικμο αναηιτθςθσ που περιγράψαμε παραπάνω. Ξεκινϊντασ από τθ ρίηα αναηθτοφμε τθν τιμι που κζλουμε να ειςάγουμε ςτο δζντρο. Αν θ τιμι βρεκεί, τότε τερματίηεται θ διαδικαςία, κακϊσ τα κλειδιά είναι διακριτά και δεν επιτρζπονται διπλζσ εγγραφζσ, αναφζροντασ ότι θ τιμι υπάρχει ιδθ. Στθν περίπτωςθ που δεν βρεκεί το ςυγκεκριμζνο κλειδί, τότε αυτό ειςάγεται ςτθ κζςθ που τερματίηει θ αναηιτθςθ. Εικόνα 2: Ειςαγωγι κλειδιοφ 11 Ραραδείγματοσ χάρθ, κεωροφμε ότι κζλουμε να ειςάγουμε το 11 ςτο δζντρο τθσ εικόνασ 2. Η αναηιτθςθ προχωράει από τθ ρίηα 7 ςτον δεξιό απόγονο 9 (αφοφ 7<11), και από τον 9 μετακινείται ςτον δεξιό απόγονό του (αφοφ 9<11), όπου δεν υπάρχει κόμβοσ. Ζτςι, ςυμπεραίνουμε ότι δεν υπάρχει θ τιμι 11 ςτο δζντρο και πωσ ο νζοσ κόμβοσ με κλειδί 11 κα δθμιουργθκεί ςτθ κζςθ που τερμάτιςε ο αλγόρικμοσ. Με αυτόν τον τρόπο ειςάγεται ο 11 ςαν δεξιό παιδί του 9. Διαγραφι τοιχείου Η διαγραφι ενόσ κόμβου Ν από ζνα δυαδικό δζντρο αναηιτθςθσ, βαςίηεται ςτθν πράξθ τθσ αναηιτθςθσ, προκειμζνου να βρεκεί ο κόμβοσ ςτο δζντρο (αν υπάρχει) που κζλουμε να διαγραφεί. Εάν θ αναηιτθςθ αποδειχκεί ανεπιτυχισ, τότε ο αλγόρικμοσ ςταματά, αναφζροντασ ότι ο κόμβοσ δεν υπάρχει ςτο δζντρο. Αν, 10

11 όμωσ, θ αναηιτθςθ είναι επιτυχισ, τότε μποροφμε να διακρίνουμε τρεισ διαφορετικζσ περιπτϊςεισ. Η πρϊτθ περίπτωςθ είναι ο κόμβοσ που κζλουμε να διαγραφεί να είναι φφλλο του δζντρου, δθλαδι να μθν ζχει απογόνουσ. Σε αυτιν τθν περίπτωςθ απλά διαγράφουμε τον κόμβο Ν και τερματίηεται θ διαδικαςία. Στθ δεφτερθ περίπτωςθ, ο κόμβοσ προσ διαγραφι ζχει ζναν απόγονο. Σε αυτι τθν περίπτωςθ, διαγράφουμε τον κόμβο Ν και τθ κζςθ του ςτο δζντρο παίρνει ο κόμβοσ-απόγονοσ του, ο οποίοσ ανεβαίνει ζτςι ζνα επίπεδο ςτο φψοσ του δζντρου. Τζλοσ, θ τρίτθ περίπτωςθ αφορά τθ διαγραφι ενόσ κόμβου Ν, ο οποίοσ ζχει δφο απογόνουσ. Σε αυτιν τθν περίπτωςθ αντικακιςτοφμε τον κόμβο Ν με το βακφτερο αριςτερό παιδί του δεξιοφ του υποδζντρου, και ςτθ ςυνζχεια διαγράφουμε τον κόμβο Ν από το δζντρο. Για να γίνει πιο ςαφζσ το πϊσ πραγματοποιοφνται οι διαγραφζσ, κα χρθςιμοποιιςουμε τθν εικόνα 3 ςτο εξισ παράδειγμα. Ασ υποκζςουμε ότι κζλουμε να διαγράψουμε τον κόμβο με κλειδί 4. Η αναηιτθςθ κα εντοπίςει τον κόμβο και εφόςον πρόκειται για κόμβο χωρίσ απογόνουσ (φφλλο - πρϊτθ περίπτωςθ), αυτόσ απλά διαγράφεται από το δζντρο. Στθ ςυνζχεια υποκζτουμε ότι κζλουμε να διαγράψουμε τον κόμβο με κλειδί 15. Ο κόμβοσ 15 όμωσ δεν είναι φφλλο όπωσ το 4, αλλά διακζτει απόγονο τον 16. Σε αυτι τθν περίπτωςθ ο κόμβοσ 15 διαγράφεται και ο κόμβοσ-απόγονοσ 16 ανεβαίνει ςτθν κζςθ του προγόνου και διαγεγραμμζνου κόμβου 15. Τα πράγματα περιπλζκονται, όμωσ, όταν κελιςουμε να διαγράψουμε τον κόμβο με κλειδί 24. Βλζπουμε ςτθν εικόνα 3, ότι ο 24 ζχει δφο απογόνουσ, τον κόμβο με κλειδί 23 και τον κόμβο με κλειδί

12 Εικόνα 3: ΔΔΑ πριν τθ διαγραφι του 24 Ρροκειμζνου να διαγράψουμε τον κόμβο με κλειδί 24, πρζπει να εντοπίςουμε τον βακφτερο αριςτερό απόγονο του δεξιοφ του υποδζντρου. Αυτόσ ο κόμβοσ κα χρθςιμοποιθκεί ωσ αντικαταςτάτθσ του κόμβου προσ διαγραφι, κακϊσ είναι ο κόμβοσ ο οποίοσ λαμβάνοντασ τθ κζςθ του κόμβου προσ διαγραφι (ςτθ ςυγκεκριμζνθ περίπτωςθ του 24), επιτρζπει ςτο ΔΔΑ να διατθριςει όλεσ του τισ ιδιότθτεσ, όπωσ αυτζσ προκφπτουν από τουσ κανόνεσ που διζπουν τα ΔΔΑ και αναφζρκθκαν παραπάνω. Στθ ςυγκεκριμζνθ περίπτωςθ, λοιπόν, το δεξιό υποδζντρο με ρίηα το 27 ζχει μόνο ζναν αριςτερό απόγονο, τον κόμβο με κλειδί 25. Επομζνωσ, ζχουμε βρει τον κόμβο που κα αντικαταςτιςει τον 24 μόλισ τον διαγράψουμε. Μιασ και ο 25 είναι αριςτερόσ απόγονοσ του 27, όλοι οι απόγονοι του είναι μικρότεροι από το 27 (από τον οριςμό των ΔΔΑ). Ζτςι, όταν διαγραφεί ο 24 και ο 25 πάρει τθ κζςθ του, με το δζντρο να διατθρεί όλεσ του τισ ιδιότθτεσ, αφοφ το αριςτερό υποδζντρο κάτω από το 25 ζχει τιμζσ μικρότερεσ τισ ρίηασ και το δεξιό, αντίςτοιχα, μεγαλφτερεσ. Το 26, πλζον χωρίσ κόμβο-γονζα, κα ανεβεί και κα πάρει τθ κζςθ του κόμβου-γονζα του (κόμβοσ με κλειδί 25), ακριβϊσ όπωσ γίνεται κατά τθν διαγραφι κόμβου με ζνα φφλλο, μεταςχθματίηοντασ το δζντρο ςε αυτό που εμφανίηεται ςτθν εικόνα 4. 12

13 Εικόνα 4: ΔΔΑ μετά τθ διαγραφι του Πολυπλοκότθτα Δυαδικϊν Δζντρων Αναηιτθςθσ Κακίςταται φανερι θ εξάρτθςθ των ΔΔΑ από τθν πράξθ τθσ αναηιτθςθσ, για τθν διεκπαιρζωςθ όλων των λειτουργιϊν τουσ. Λογικό επακόλουκο αυτοφ είναι και θ εξάρτθςθ τθσ πολυπλοκότθτασ από τθν πράξθ τθσ αναηιτθςθσ. Πριο ςτθν τιμι τθσ πολυπλοκότθτασ αποτελεί το φψοσ του εμπλεκόμενου δζντρου, επειδι θ διαδικαςία επεξεργάηεται ζνα μονοπάτι αναηθτιςεωσ, το οποίο, ενδεχομζνωσ, κα καταλιξει ςε φφλλο. Από τθν άλλθ, το φψοσ του δζντρου μπορεί να είναι γραμμικό ςτο πλικοσ των αποκθκευμζνων ςτοιχείων, αφοφ δεν πραγματοποιοφμε καμία πράξθ για να επανορκϊςουμε τθν ιςορροπία του. Συμπεραίνουμε, λοιπόν, ότι ςε ζνα αηφγιςτο ΔΔΑ, οι πράξεισ τθσ αναηιτθςθσ, ειςαγωγισ και διαγραφισ κοςτίηουν, ςτθ χειρότερθ περίπτωςθ, γραμμικό, ςτο πλικοσ του υποκείμενου ςυνόλου, χρόνο (O(n)). Στθ μζςθ περίπτωςθ, ζνα ΔΔΑ μεγζκουσ n, παρουςιάηει αναμενόμενο κόςτοσ επιτυχθμζνθσ αναηιτθςθσ το οποίο είναι λογαρικμικό ςτο πλικοσ των ςτοιχείων (O(logn)). Η πολφ χρονοβόρα χειρότερθ περίπτωςθ των ΔΔΑ, οδιγθςε ςτθν προςπάκεια περαιτζρω βελτίωςθσ των ΔΔΑ, με αποτζλεςμα να προκφψουν τα δυναμικά αυτοηυγιηόμενα δζντρα, όπωσ το AVL δζντρο, αλλά και τα χρωματιηόμενα δζντρα, όπωσ το Red-Black δζντρο. 2.2 AVL Δζντρα Βαςικζσ Ζννοιεσ και Δόμθςθ 13

14 Ππωσ γίνεται εφκολα αντιλθπτό από τα παραπάνω, τα Δυαδικά Δζντρα Αναηιτθςθσ εμφανίηουν ςοβαρά προβλιματα δόμθςθσ, παρόμοια με αυτά που παρουςιάηονται ςτα απλά Δυαδικά Δζντρα. Στα απλά Δυαδικά Δζντρα είχαμε να αντιμετωπίςουμε τθν άναρχθ δόμθςθ τουσ, θ οποία δυςκόλευε τισ πράξεισ τθσ αναηιτθςθσ, και κατά ςυνζπεια και όλεσ τισ υπόλοιπεσ που εξαρτϊνται άμεςα από αυτιν. Στα Δυαδικά Δζντρα Αναηιτθςθσ κζςαμε κάποιουσ κανόνεσ, και ενϊ αποφφγαμε τθν κατάςταςθ αυτι προζκυψε το πρόβλθμα τθσ άνιςθσ κατανομισ. Εννοοφμε, φυςικά, τθν αφξθςθ του φψουσ του ενόσ υποδζντρου ςε βάροσ του ζταιρου. Σε μία τζτοια περίπτωςθ θ αναηιτθςθ ςτοιχείου ςτο δζντρο μπορεί να απαιτιςει ζωσ και χρόνο γραμικισ αναηιτθςθσ. Ρροκειμζνου να αποφφγουμε τζτοιεσ περιπτϊςεισ πρζπει τα δζντρα να ζχουν χειρότερθ περίπτωςθ φψουσ h=o(logn). Αυτά τα δζντρα ονομάηονται ιςορροπθμζνα δζντρα, με ζνα από τα πιο δθμοφιλι το δζντρο AVL, το οποίο «βαπτίςτθκε» το 1962 από τα αρχικά των ρϊςων δθμιουργϊν του, Adelson-Velskii και Landis. Ρρόκειται για ζνα δυαδικό δζντρο αναηιτθςθσ ιςοηυγιςμζνο κατά φψοσ για το οποίο ιςχφει θ εξισ ςυνκικθ: Ζνα δυαδικό δζντρο αναηιτθςθσ καλείται AVL δζντρο αν τα φψθ των δφο υποδζντρων κάκε εςωτερικοφ κόμβου διαφζρουν το πολφ κατά ζνα. Η ανωτζρω αναδρομικι ιδιότθτα των ςυγκεκριμζνων δζντρων εγγυάται τθν λογαρικμικότθτα του φψουσ, ωσ προσ το πλικοσ των ςτοιχείων του δζντρου. Επίςθσ, εγγυάται ότι κάκε υποδζντρο του αρχικοφ δζντρου είναι και αυτό με τθ ςειρά του AVL δζντρο. Καταλαβαίνουμε ότι ζνα AVL δζντρο μπορεί να χάςει τισ ιδιότθτζσ του μετά από τθν ειςαγωγι ι διαγραφι ενόσ κόμβου του, αφοφ θ διαφορά φψουσ των υποδζντρων του πικανότατα κα αποκτά τιμι μεγαλφτερθ τθσ μονάδασ. Για να διατθριςει τισ ιδιότθτεσ αυτζσ, το AVL δζντρο εφαρμόηει επαναηυγιςτικζσ πράξεισ, αλλάηοντασ τθ κζςθ κάποιων κόμβων και επαναφζροντασ τθν διαφορά φψουσ ανάμεςα ςτα δφο υποδζντρα ςε απόλυτθ τιμι μικρότερθ ι ίςθ τθσ μονάδασ. Αυτι θ δυνατότθτα, εντάςςει τα AVL δζντρα ςτα Δυναμικά Δζντρα Αναηιτθςθσ. 14

15 2.2.2 Λειτουργίεσ AVL Δζντρων Ππωσ τα δυαδικά δζντρα αναηιτθςθσ, ζτςι και τα AVL δζντρα εκτελοφν τρεισ βαςικζσ λειτουργίεσ: αναηιτθςθ, ειςαγωγι και διαγραφι. Ραρακάτω κα δοφμε πιο αναλυτικά κάκε μία από αυτζσ τισ λειτουργίεσ. Ταυτόχρονα κα εξθγοφμε τι είναι οι επαναηυγιςτικζσ πράξεισ των AVL δζντρων, πότε εφαρμόηονται και πωσ επαναφζρουν τθν ιςορροπία ςτα δζντρα αυτά. Αναηιτθςθ τοιχείου Τα AVL δζντρα, παρά τισ βελτιωμζνεσ επιδόςεισ και τθν δυναμικότθτα τουσ, παραμζνουν δυαδικά δζντρα αναηιτθςθσ. Επομζνωσ, εφόςον διατθροφν τισ ίδιεσ ιδιότθτεσ (το κλειδί του δεξιοφ απογόνου είναι μεγαλφτερο από το κλειδί του αριςτεροφ απογόνου), θ αναηιτθςθ γίνεται με τον ίδιο τρόπο. Θεωροφμε, λοιπόν, μία τιμι κλειδιοφ. Συγκρίνουμε τθν τιμι αυτι με τθν τιμι τθσ ρίηασ. Αν οι τιμζσ είναι ίςεσ, τότε επιςτρζφουμε ςαν λφςθ ςτθν αναηιτθςθ τον κόμβο τθσ ρίηασ. Αν, όμωσ, θ τιμι τθσ ρίηασ είναι μικρότερθ από τθν τιμι αναηιτθςθσ, τότε επιςκεπτόμαςτε το δεξιό υποδζντρο. Αντιςτρόφωσ ανάλογα, αν θ τιμι τθσ ρίηασ είναι μεγαλφτερθ τθσ τιμισ αναηιτθςθσ, επιςκεπτόμαςτε το αριςτερό υποδζντρο. Η διαδικαςία αυτι επαναλαμβάνεται μζχρι να βρεκεί ο κόμβοσ που περιζχει τθν τιμι-κλειδί που αναηθτοφμε ι μζχρισ ότου φτάςουμε ςε κόμβο-φφλλο του δζντρου με κλειδί διαφορετικό από αυτό που αναηθτοφμε, ςτθν οποία περίπτωςθ θ αναηιτθςθ απζτυχε και το εν λόγω κλειδί δεν υπάρχει ςτο δζντρο. Σαν παράδειγμα, μπορείτε να αναφερκείτε ςτο παράδειγμα τθσ αναηιτθςθσ ςε ΔΔΑ τθσ παραγράφου Ειςαγωγι τοιχείου Η ειςαγωγι κόμβου-ςτοιχείου ςε ζνα AVL δζντρο γίνεται με ακριβϊσ τον ίδιο τρόπο που γίνεται και ςτα δυαδικά δζντρα αναηιτθςθσ. Σαν παράδειγμα, κα κεωριςουμε τθν ειςαγωγι του κόμβου με τιμι 23 ςτο δζντρο τθσ εικόνασ 5. 15

16 Εικόνα 5: AVL δζντρο πριν τθν ειςαγωγι του 23 Ραρατθροφμε ότι το δζντρο τθσ εικόνασ 5 είναι AVL δζντρο, κακϊσ θ διαφορά φψουσ των υποδζντρων είναι ίςθ με το μθδζν. Για τθν ειςαγωγι του κόμβου 23 ξεκινοφμε τισ ςυγκρίςεισ από τθ ρίηα του δζντρου. Εφόςον θ τιμι προσ ειςαγωγι είναι μεγαλφτερθ τθσ ρίηασ, προχωροφμε ςτο δεξιό υποδζντρο. Ο επόμενοσ κόμβοσ ζχει μεγαλυτερθ τιμι από τθν ειςαγϊμενθ τιμι, οπότε μετακινοφμαςτε ςτο αριςτερό του υποδζντρο. Αντίςτοιχα, ο κόμβοσ που εξετάηουμε τϊρα είναι ο 22, με τιμι μικρότερθ του 23, επομζνωσ μετακινοφμαςτε ςτο δεξιό υποδζντρο του. Εκεί διαπιςτϊνουμε ότι δεν υπαρχει άλλοσ κόμβοσ και ςυμπεραίνουμε ότι αυτι είναι θ κζςθ ςτθν οποία πρζπει να τοποκετθκεί ο νζοσ κόμβοσ 23. Εικόνα 6: AVL δζντρο μετά τθν ειςαγωγι του 23 Το δζντρο που προκφπτει, όπωσ διαπιςτϊνεται, είναι και αυτό AVL δζντρο, κακότι θ διαφορά φψουσ των υποδζντρων του είναι ίςθ με τθ μονάδα, τθν επιτρεπόμενθ διαφορά από τον οριςμό των δζντρων αυτϊν. Ζτςι, ςε αυτι τθν περίπτωςθ δεν απαιτοφνται επαναηυγιςτικζσ πράξεισ. 16

17 Ασ υποκζςουμε ότι ζχουμε το AVL δζντρο τθσ εικόνασ 7. Το εν λόγω δζντρο είναι ζνα AVL δζντρο με διαφορά φψουσ των υποδζντρων του ίςθ με τθ μονάδα. Στθ ςυνζχεια ειςάγουμε τον κόμβο με τιμι 5, ο οποίοσ τοποκετείται ςαν αριςτερό παιδί του 7. Ραρατθροφμε ότι το δζντρο που προκφπτει δεν είναι πλζον AVL δζντρο και ότι το αριςτερό υποδζντρο ζχει διαφορά φψουσ από το δεξιό υποδζντρο ίςθ με δφο (εικόνα 8). Εικόνα 7: AVL δζντρο Εικόνα 8: Αηφγιςτο ΔΔΑ Το δζντρο πλζον που ζχουμε ςτα χζρια μασ δεν ζχει καμία διαφορά από ζνα απλό δυαδικό δζντρο αναηιτθςθσ. Ρροκειμζνου να επανακτιςει τισ ιδιότθτεσ ενόσ AVL δζντρου απαιτείται μία επαναηυγιςτικι πράξθ, και πιο ςυγκεκριμζνα μία περιςτροφι προσ τα δεξιά. Με τον όρο περιςτροφι εννοοφμε τθν ανταλλαγι ρόλων των δφο εμπλεκόμενων κόμβων. Στθ ςυγκεκριμζνθ περίπτωςθ το δζντρο περιςτρζφεται προσ τα δεξιά, αφοφ «βαραίνει» από τθν αριςτερι μεριά μετά τθν ειςαγωγι του 5. Επομζνωσ, ο κόμβοσ 7 παίρνει τθ κζςθ του γονζα 11 και το 11 γίνεται παιδί του 7 (εξ ου και θ αντιςτροφι ρόλων). Το δζντρο που προκφπτει φαίνεται ςτθν εικόνα 9. Εικόνα 9: AVL δζντρο 17

18 Ασ υποκζςουμε τϊρα ότι κζλουμε να ειςάγουμε τον κόμβο 4. Αυτόσ τοποκετείται ςαν αριςτερό παιδί του κόμβου 5. Αυτι θ ειςαγωγι διαταράςςει τθν ιςορροπία του δζντρου, κακιςτϊντασ το πάλι βεβαρυμζνο ςτο αριςτερό του υποδζντρο (εικόνα 10). Με μία δεξιά περιςτροφι μποροφμε να το επαναφζρουμε πάλι ςε κατάςταςθ ιςορροπίασ (εικόνα 11). Εικόνα 10: AVL δζντρο εκτόσ ιςορροπίασ Εικόνα 11: AVL δζντρο Στθν παροφςα περιςτροφι ο κόμβοσ 7 αλλάηει ρόλο από παιδί ςε γονζασ του 15, με αποτζλεςμα να «ανεβεί» ςτθ ρίηα του δζντρου και με το 15 να ολιςκαίνει ςτο δεξιό υποδζντρο. Ραράλλθλα το 11 γίνεται το αριςτερό παιδί του κόμβου που αντικαταςτάκθκε (δθλαδι του 15), διατθρϊντασ ζτςι το δζντρο τθν ιδιότθτα του αριςτεροφ παιδιοφ να είναι μικρότερο από τον γονζα του. Υπάρχουν, όμωσ, και περιπτϊςεισ ςτισ οποίεσ μία απλι δεξιά ι αριςτερι περιςτροφι δεν αρκεί για να επαναφζρει το δζντρο ςε ιςορροπία. Εκεί επιςτρατεφεται θ χριςθ τθσ διπλισ περιςτροφισ. Η διπλι περιςτροφι ςυνίςταται από δυο απλζσ περιςτροφζσ αντίκετθσ φοράσ. Υπάρχουν δφο περιπτϊςεισ ςτισ οποίεσ εφαρμόηουμε τθν διπλι περιςτροφι, αν το δζντρο είναι βεβαρυμζνο ςτο δεξιό υποδζντρο του αριςτεροφ του υποδζντρου ι αν το δζντρο είναι βεβαρυμζνο ςτο αριςτερό υποδζντρο του δεξιοφ του υποδζντρου. Στθν πρϊτθ περίπτωςθ κα εξετάςουμε ζνα AVL δζντρο βεβαρυμζνο ςτο δεξιό υποδζντρο του αριςτεροφ του υποδζντρου. Ζνα τζτοιο δζντρο φαίνεται ςτθν εικόνα

19 Εικόνα 12: AVL δζντρο με βεβαρυμζνο το δεξιό υποδζντρο του αριςτεροφ του υποδζντρου Ππωσ μποροφμε, εφκολα, να καταλάβουμε τα υποδζντρα του ςυγκεκριμζνου δζντρου ζχουν διαφορά φψουσ ίςθ με 2, με αποτζλεςμα να διαταράςςεται θ ιςοροπία του. Εδϊ, παρόλαυτα, μία απλι δεξιά περιςτροφι, κοκότι το δζντρο είναι βεβαρυμζνο ςτο αριςτερό του υποδζντρο, δεν επαναφζρει τθν ιςορροπία, κακϊσ το υποδζντρο με ρίηα το 35 κα μετακινθκεί ςτο δεξιό υποδζντρο, προκφπτοντασ ζτςι ζνα εκ δεξιϊν βεβαρυμζνο δζντρο. Στθ ςυγκεκριμζνθ περίπτωςθ εφαρμόηουμε μία διπλι περιςτροφι, και επειδι το δεξιό υποδζντρο του αριςτεροφ υποδζντρου είναι αυτό που δθμιουργεί το πρόβλθμα, χρθςιμοποιοφμε αριςτερι-δεξιά περιςτροφι. Δθλαδι, περιςτρζφουμε τθν ρίηα του «προβλθματικοφ» υποδζντρου, ςτο παράδειγμά μασ το 35, με τον γονζα του 25 (αριςτερι περιςτροφι). Στθ ςυνζχεια, περιςτρζφουμε το δζντρο μία φορά προσ τα δεξιά, ανεβάηοντασ ζτςι τον κόμβο 35 ςτθ ρίηα του δζντρου, το οποίο 35 ζχει πλζον αριςτερό απόγονο το 25 και δεξιό απόγονο το 50. Επίςθσ, το αρχικό αριςτερό υποδζντρο του 35 γίνεται δεξιό υποδζντρο του αρχικοφ κόμβου γονζα 25, ενϊ το αρχικό δεξιό του υποδζντρο γίνεται αριςτερό υποδζντρο τθσ μζχρι πρότεινωσ ρίηασ του δζντρου 50. Τελικά, το δζντρο που προκφπτει φαίνεται ςτθν εικόνα

20 Εικόνα 13: Αποκατάςταςθ ιςορροπίασ ςε AVL δζντρο Επειδι μιλοφμε για υποδζντρα, κρίνεται απαραίτθτο να δοκεί και μία γενικότερθ ςχθματικι απεικόνιςθ τθσ αριςτερισ-δεξιάσ περιςτροφισ, ϊςτε να γίνει πιο κατανοθτι θ λειτουργία τθσ ςυγκεκριμζνθσ πράξθσ (ςχιμα 1). χιμα 1: AVL δζντρο πριν και μετά τθν πράξθ τθσ διπλισ περιςτροφισ Είναι προφανζσ ότι ςτο γενικό ςχιμα εντάςςεται και θ περίπτωςθ που εξετάςαμε παραπάνω. Ππωσ γίνεται κατανοθτό, ςτισ κζςεισ των υποδζντρων του παραδείγματοσ, όπου είχαμε απλοφσ κόμβουσ, μποροφν να βρίςκονται υποδζντρα με περιςςότερουσ κόμβουσ. Ζτςι, λοιπόν, το δεξιό υποδζντρο με ρίηα το z του αριςτεροφ υποδζντρου με ρίηα το y βγάηει εκτόσ ιςορροπίασ το δζντρο, αφοφ ζχει διαφορά φψουσ ίςθ με 2 ςε ςχζςθ με το δεξιό υποδζντρο με ρίηα το x. Μετά τθν επαναηυγιςτικι πράξθ τθσ διπλισ περιςτροφισ το δζντρο αποκτά απόλυτθ ιςορροπία, όςον αφορά τα φψθ των υποδζντρων του. Ραρατθροφμε, επίςθσ, ότι ωσ νζο ελάχιςτο φψοσ του κάκε υποδζντρου ορίηεται το h+1, ςε αντίκεςθ με πριν που είχαμε h για το δεξιό υποδζντρο και h+2 για το αριςτερό, και επομζνωσ διατάρραξθ τθσ ιςορροπίασ του AVL δζντρου. 20

21 Στθ δεφτερθ περίπτωςθ κα εξετάςουμε ζνα AVL δζντρο βεβαρυμζνο ςτο αριςτερό υποδζντρο του δεξιοφ του υποδζντρου. Ζνα τζτοιο δζντρο φαίνεται ςτθν εικόνα 14. Εικόνα 14: AVL δζντρο με βεβαρυμζνο το αριςτερό υποδζντρο του δεξιοφ του υποδζντρου Ππωσ και ςτθν προθγοφμενθ περίπτωςθ, το εκτόσ ιςορροπίασ δζντρο δεν μπορεί να επανζλκει ςτθν ηθτοφμενθ κατάςταςθ με μία απλι περιςτροφι προσ τα αριςτερά, αλλά απαιτείται μία διπλι περιςτροφι δεξιά-αριςτερά. Δθλαδι, θ ρίηα του υποδζντρου που δθμιουργεί το πρόβλθμα, εδϊ είναι το 60, κα περιςτραφεί δεξιά, παίρνοντασ τθ κζςθ του γονζα τθσ 75 και ςτθ ςυνζχεια εκτελείται μία αριςτερι περιςτροφι με τον νζο κόμβο γονζα 50. Το δζντρο, μετά από αυτζσ τισ επαναηυγιςτικζσ πράξεισ, αποκτά απόλυτθ ιςορροπία φψουσ μεταξφ των δφο υποδζντρων του. Το αποτζλεςμα των πράξεων φαίνεται ςτο δζντρο τθσ εικόνασ 15. Εικόνα 15: Αποκατάςταςθ ιςορροπίασ ςε AVL δζντρο Στο ςχιμα 2 δίνεται και θ ςχθματικι απεικόνιςθ τθσ δεξιάσ-αριςτερισ περιςτροφισ, ςτθν οποία φαίνονται καλφτερα οι μετακινιςεισ των κόμβων και των υποδζντρων, κακϊσ και οι μεταβολζσ των υψϊν των υποδζντρων. 21

22 χιμα 2: AVL δζντρο πριν και μετά τθν πράξθ τθσ διπλισ περιςτροφισ Ραρατθροφμε, και ςε αυτι τθν περίπτωςθ, ότι τα υποδζντρα μποροφν να περιζχουν πολφ μεγάλο αρικμό κόμβων ι ακόμα και να είναι κενά. Επίςθσ, αφοφ αποκαταςτακεί θ ιςορροπία ςτο AVL δζντρο, το νζο φψοσ του δζντρου ζχει αυξθκεί κατά ζνα ςτο ςφνολο, δθλαδι από h αυξάνεται ςε h+1, με τθ διαφορά φψουσ των δφο υποδζντρων από 2: AVL δζντρο πριν και μετά τθν πράξθ τθσ διπλισ περιςτροφισ 2 να μειϊνεται ςτο μθδζν. Εξετάςαμε, λοιπόν, τθν ειςαγωγι νζου κόμβου ςε AVL δζντρο, θ οποία γίνεται με τουσ ίδιουσ ακριβϊσ κανόνεσ που ακολουκοφμε ςτα Δυαδικά Δζντρα Αναηιτθςθσ. Αφοφ ειςαχκεί ο νζοσ κόμβοσ, εξετάηεται θ ιςορροπία του δζντρου. Αν ζχει διαταρραχκεί με τζτοιον τρόπο, ϊςτε να μθν πλθρεί τισ προχποκζςεισ των AVL δζντρων (διαφορά φψουσ αριςτεροφ-δεξιοφ υποδζντρου μεγαλφτερθ ι ιςθ του 2), τότε εφαρμόηουμε μία εκ των τεςςάρων προαναφερκζντων επαναηυγιςτικϊν πράξεων, ανάλογα με το ποιο υποδζντρο είναι βεβαρυμζνο ςε ςχζςθ με τα υπόλοιπα του ςυνόλου. Διαγραφι τοιχείου Η διαγραφι ςτοιχείου-κόμβου από ζνα AVL δζντρο γίνετα με τον ίδιο ακριβϊσ τρόπο με τον οποίο διαγράφουμε ςτοιχεία από ζνα Δυαδικό Δζντρο Αναηιτθςθσ. Η μοναδικι διαφορά ζγκειται ςτισ επαναηυγιςτικζσ πράξεισ που ακολουκοφν τθν διαγραφι. Ριο ςυγκεκριμζνα, εκτελοφμε μία δυαδικι αναηιτθςθ ςτο AVL δζντρο, όπωσ ακριβϊσ εκτελείται ςε ζνα ΔΔΑ και περιγράψαμε πιο πάνω. Πταν βρεκεί ο κόμβοσ προσ διαγραφι, απαλείφουμε τον κόμβο από το δζντρο, ακολουκϊντασ τθν ίδια μεκοδολογία με αυτι τθσ διαγραφισ κόμβου από ζνα ΔΔΑ. Αναλόγωσ από τθν κζςθ που κατζχει ςτο δζντρο ο κόμβοσ (ρίηα, φφλλο, ενδιάμεςοσ 22

23 κόμβοσ), αλλάηει και θ μορφολογία του δζντρου. Το δζντρο που προκφπτει από μία δυαδικι αναηιτθςθ και διαγραφι ενόσ κόμβου του είναι και αυτό δυαδικό δζντρο αναηιτθςθσ αλλά είναι πολφ πικανό να μθν πλθροί τισ προχποκζςεισ, όςον αφορά τθ διαφορά φψουσ των δφο υποδζντρων του, και να μθν ανικει πλζον ςτθν κατθγορία των AVL δζντρων. Για τον λόγο αυτό γίνεται ζνασ ζλεγχοσ των υψϊν των υποδζντρων και εάν απαιτείται, δθλαδι αν θ διαφορά φψουσ ανάμεςα ςτα δφο υποδζντρα είναι μεγαλφτερθ τθσ μονάδασ, εκτελοφνται επαναηυγιςτικζσ πράξεισ, όμοιεσ με αυτζσ που ςυναντιςαμε ςτθν ειςαγωγι ςτοιχζιου ςε AVL δζντρο. Ραρακάτω εξετάηουμε τισ περιπτϊςεισ που μποροφν να προκφψουν κατά μία τζτοια πράξθ διαγραφισ κόμβου από AVL δζντρο. Περίπτωςθ 1: Η διαγραφι δεν διαταράςςει τθν ιςορροπία του AVL δζντρου. Ππωσ αναφζραμε και παραπάνω, θ διαγραφι κόμβου γίνεται ακριβϊσ με τον ίδιο τρόπο που γίνεται ςτα Δυαδικά Δζντρα Αναηιτθςθσ (ΔΔΑ). Ζτςι, λοιπόν, μετά τθν διαγραφι του κόμβου εξετάηουμε το δζντρο που προκφπτει. Αν το δζντρο διατθρεί τα χαρακτθριςτικά ενόσ AVL δζντρου, δθλαδι είναι δυαδικό δζντρο και το αριςτερό με το δεξιό του υποδζντρο ζχουν κατ απόλυτθ τιμι διαφορά φψουσ το πολφ ίςθ με τθ μονάδα, τότε θ διαγραφι ιταν επιτυχισ και το δζντρο που προζκυψε είναι και αυτό με τθ ςειρά του AVL δζντρο και τερματίηει θ πράξθ τθσ διαγραφισ. Χαρακτθριςτικό παράδειγμα, είναι θ AVL διαγραφι του ςτοιχείου 11 από το AVL δζντρο τθσ εικόνασ 16. Εικόνα 16: AVL δζντρο πριν και μετά τθν διαγραφι του κόμβου 11 Το δζντρο που προκφπτει διατθρεί τα χαρακτθριςτικά του προκατόχου του οπότε λιγει θ επιτυχϊσ θ πράξθ τθσ διαγραφισ. Περίπτωςθ 2: Μετά τθ διαγραφι απαιτοφνται επαναηυγιςτικζσ πράξεισ για τθν επαναφορά του δζντρου ςε ιςορροπία. 23

24 Εδϊ μποροφμε να διακρίνουμε, όπωσ και με τθν ειςαγωγι κόμβου, τζςςερισ διαφορετικζσ περιπτϊςεισ δζντρων εκτόσ ιςορροπίασ. Τα βεβαρυμζνα ςτο αριςτερό υποδζντρο του αριςτεροφ υποδζντρου και τα βεβαρυμζνα ςτο δεξιό υποδζντρο του δεξιοφ υποδζντρου, ςτα οποία διορκϊνουμε τον παράγοντα τθσ ιςορροπίασ με μία απλι δεξιά ι αριςτερι περιςτροφι αντίςτοιχα, κακϊσ και τα βεβαρυμζνα ςτο αριςτερό υποδζντρο του δεξιοφ υποδζντρου ι τα βεβαρυμζνα ςτο δεξιό υποδζντρο του αριςτεροφ υποδζντρου, τα οποία απαιτοφν μία διπλι περιςτροφι δεξιάαριςτερι ι αριςτερι-δεξιά αντίςτοιχα για να αποκαταςτακεί θ ιςορροπία τουσ. Στθν εικόνα 17 φαίνονται οι δφο πρϊτεσ περιπτϊςεισ τζτοιων δζντρων και από κάτω αναγράφονται οι περιςτροφζσ που πρζπει να εκτελεςτοφν. Εικόνα 17: το πρϊτο δζντρο απαιτείται δεξιά περιςτροφι ενϊ ςτο δεφτερο αριςτερι περιςτροφι Στθν εικόνα 17 δίνονται τα δζντρα μετά από τθν διαγραφι, με τον κόμβο που διεγράφθ ςτθν πρϊτθ περίπτωςθ να είναι απόγονοσ του κόμβου 33, ενϊ ςτθ δζυτερθ απόγονοσ του 20, με τθ διαγραφι τουσ να οδθγεί ςε αυτά τα βεβαρυμζνα δζντρα. Ππωσ αναφζραμε και παραπάνω, υπάρχει και θ άλλθ περίπτωςθ, με το δζντρο μετά τθν διαγραφι κάποιου κόμβου του, να είναι βεβαρυμζνο δεξιά ι αριςτερά και να απαιτείται διπλι περιςτροφι για τθν επαναφορά τθσ ιςορροπίασ του. Επαναλαμβάνουμε, ότι θ δεξιά-αριςτερι περιςτροφι επιςτρατεφεται ςτθν περίπτωςθ κατά τθν οποία είναι βεβαρυμζνο το αριςτερό υποδζντρο του δεξιοφ υποδζντρου, ενϊ θ αριςτερι-δεξιά περιςτροφι επιςτρατεφεται όταν είναι βεβαρυμζνο το δεξιό υποδζντρο του αριςτεροφ υποδζντρου. Στθν εικόνα 18 παρουςιάηεται ζνα AVL δζντρο μετά τθν διαγραφι του κόμβου-απογόνου του 25, πριν και μετά τισ επαναηυγιςτικζσ πράξεισ, ςτθν ςυγκεκριμζνθ περίπτωςθ δεξιάαριςτερι περιςτροφι. 24

25 Εικόνα 18: AVL δζντρο μετά τθν διαγραφι κόμβου, πριν και μετά τισ επαναηυγιςτικζσ πράξεισ. Αντίςτοιχα, ςτθν εικόνα 19 απεικονίηεται ζνα AVL δζντρο μετά τθν διαγραφι κόμβου-απογόνου του 75, με αποτζλεςμα επιβάρυνςθ του δεξιοφ υποδζντρου του αριςτεροφ υποδζντρου του νζου δζντρου. Εδϊ εφαρμόηεται μία αριςτερι-δεξιά περιςτροφι για να επανζλκει το δζντρο ςε ιςορροπία. Εικόνα 19: AVL δζντρο μετά τθν διαγραφι κόμβου, πριν και μετά τισ επαναηυγιςτικζσ πράξεισ. Συνοψίηοντασ, διαπιςτϊνουμε εφκολα ότι τα AVL δζντρα είναι κάτι περιςςότερο από Δυαδικά Δζντρα Αναηιτθςθσ, χάρισ ςτο ςφνολο των επαναηυγιςτικϊν πράξεων, που εφαρμόηονται ςε αυτά διατθρϊντασ τθν διαφορά φψουσ των υποδζντρων μικρότερθ ι το πολφ ίςθ με τθ μονάδα. Το αποτζλεςμα αυτϊν των πράξεων είναι θ χαμθλι χρονικι πολυπλοκότθτα για τα ςυγκεκριμζνα δζντρα, ςτισ πράξεισ που περιγράφθκαν παραπάνω (αναηιτθςθ, ειςαγωγι, διαγραφι). 25

26 2.2.3 Πολυπλοκότθτα AVL Δζντρων Μποροφμε να εγγυθκοφμε απόδοςθ O(logn) για κάκε βαςικι λειτουργία ςε ζνα δζντρο αναηιτθςθσ εάν διαςφαλίςουμε ότι το φψοσ του δζντρου αναηιτθςθσ είναι πάντα O(logn), όπου n το πλικοσ των κόμβων-ςτοιχείων του δζντρου. Ππωσ αναφζραμε και παραπάνω το AVL δζντρο προςφζρει τζτοιεσ εγγυιςεισ, λόγω τθσ δόμθςθσ του. Με το φψοσ του να κυμαίνεται πάντα ςτα όρια: log(n + 1) h 440 x log(n + 2)- 328 μποροφμε με βεβαιότθτα να εγγυθκοφμε ότι τα AVL δζντρα ζχουν τθν ηθτοφμενθ απόδοςθ του O(logn) ςτθν χειρότερθ μάλιςτα περίπτωςθ, και με τισ επαναηυγιςτικζσ πράξεισ διατθροφν αυτιν τθν καλι απόδοςι τουσ. Επιπροςκζτωσ, αξίηει να αναφζρουμε ότι μία ειςαγωγι κοςτίηει O(1), ενϊ μία διαγραφι κοςτίηει O(logn) επαναηυγιςτικζσ δομικζσ πράξεισ. 2.3 Red-Black Δζντρα Βαςικζσ Ζννοιεσ και Δόμθςθ Τα Red-Black Δζντρα είναι ζνασ ειδικό τφποσ Δυαδικϊν Δζντρων Αναηιτθςθσ και ταξινόμθςθσ, τα οποία ςυνικωσ χρθςιμοποιοφνται για τθν οργάνωςθ ςυγκρίςιμων δεδομζνων, όπωσ αρικμθτικά δεδομζνα. Στα Red-Black δζντρα τα φφλλα δεν περιζχουν δεδομζνα και δεν είναι ςχετικά με τθ δόμθςθ του δζντρου. Πςον αφορά το προγραμματιςτικό μζροσ, αυτό το χαρακτθριςτικό των φφλλων μπορεί να λθφκεί υπ όψιν, προκειμζνου να επιτευχκεί μεγαλφτερο ποςοςτό εξοικονόμθςθσ μνιμθσ. Ζνασ δείκτθσ null για κάκε παιδί μπορεί να ςθματοδοτεί ότι το εν λόγω παιδί είναι φφλλο. Τα Red-Black δζντρα, όπωσ όλα τα Δυαδικά Δζντρα Αναηιτθςθσ, επιτρζπει τθν αποτελεςματικι ενδοδιατεταγμζνθ διάςχιςθ των ςτοιχείων του, δεδομζνου ότι υπάρχει τρόποσ να προςδιοριςτεί ο πατζρασ κάκε κόμβου. Επίςθσ, θ διάςχιςθ από τθ ρίηα ςτα φφλλα, ςε ζνα ηυγιςμζνο δζντρο με το μικρότερο γι αυτό δυνατό φψοσ, απαιτεί ςτθ μζςθ του περίπτωςθ χρόνο αναηιτθςθσ ίςο με O(logn). 26

27 Εικόνα 20: Red-Black δζντρο με κενά μαφρα φφλλα Τα Red-Black δζντρα, λοιπόν, είναι Δυαδικά Δζντρα Αναηιτθςθσ, ςτα οποία κάκε κόμβοσ χαρακτθρίηεται από ζνα χρϊμα. Τα χρϊματα αυτά είναι δφο, το κόκκινο και το μαφρο (όπωσ είναι προφανζσ από τθν ονομαςία τουσ). Επιπλζον, πζραν του χαρακτθριςτικοφ του χρϊματοσ για κάκε κόμβο, παρακζτουμε και τισ υπόλοιπεσ ιδιότθτεσ που διζπουν τα Red-Black δζντρα. Ζνασ κόμβοσ είναι αποκλειςτικά είτε κόκκινοσ είτε μαφροσ. Η ρίηα είναι μαφρθ. Αυτό δεν είναι πάντα απαραίτθτθ προχπόκεςθ, αφοφ το χρϊμα τθσ ρίηασ μπορεί να αλλάξει, με αποτζλεςμα αυτόσ ο κανόνασ να μθν επθρεάηει τθν ανάλυςθ. Πλα τα φφλλα είναι μαφρα. Και τα δφο παιδιά ενόσ κόκκινου κόμβου είναι μαφρα. Αυτό ςθμαίνει ότι δεν είναι δυνατόν να υπάρχουν δφο ςυνεχόμενοι κόκκινοι κόμβοι ςε οποιοδιποτε μονοπάτι του δζντρου. Κάκε μονοπάτι που ξεκινά από ζναν δεδομζνο κόμβο και καταλιγει ςε οποιοδιποτε από τα κλθρονομοφμενα φφλλα του δζντρου, περιζχει τον ίδιο ςτακερό αρικμό μαφρων κόμβων. Αυτό ςθμαίνει πωσ όλα τα μονοπάτια από τθ ρίηα προσ τα φφλλα του δζντρου, περιζχουν τον ίδιο αρικμό μαφρων κόμβων. Από τουσ παραπάνω περιοριςμοφσ των Red-Black δζντρων ουςιαςτικά προκφπτει θ πιο ςθμαντικι ιδιότθτα τουσ, ότι το μεγαλφτερο μονοπάτι από τθ ρίηα ςτα φφλλα δεν είναι μεγαλφτερο (άρα μικρότερο ι ίςο) από το διπλάςιο του μικουσ του ςυντομότερου μονοπατιοφ από τθ ρίηα ςτα φφλλα, ςτο ςυγκεκριμζνο δζντρο. Δθλαδι, το μεγαλφτερο μονοπάτι του δζντρου είναι το πολφ διπλάςιο ςε μικοσ από 27

28 το μικρότερο μονοπάτι του. Σαν αποτζλεςμα τθσ παραπάνω ιδιότθτασ των Red- Black δζντρων, προκφπτει ζνα ςχετικά ηυγιςμζνο δζντρο. Από τθ ςτιγμι που θ αναηιτθςθ, θ ειςαγωγι και θ διαγραφι ςτο δζντρο απαιτοφν χρόνο ανάλογο με το φψοσ του δζντρου, ο περιοριςμόσ (άνω όριο) ςτο φψοσ, επιτρζπει ςτα Red-Black δζντρα να είναι πιο αποτελεςματικά ςε ςενάρια χειρότερθσ περίπτωςθσ (worst xase scenario), ςε ςχζςθ με τα Δυαδικά Δζντρα Αναηιτθςθσ. Ρωσ γίνεται όμωσ αυτό; Σφμφωνα με τθν τζταρτθ ιδιότθτα, κανζνα μονοπάτι δεν περιζχει δφο ςυνεχόμενουσ κόκκινουσ κόμβουσ. Το ςυντομότερο μονοπάτι περιζχει μόνο μαφρουσ κόμβουσ, ενϊ το μεγαλφτερο μονοπάτι περιζχει κόκκινουσ και μαφρουσ κόμβουσ, οι οποίοι εναλλάςςονται μεταξφ τουσ. Εφόςον όλα τα μονοπάτια που φτάνουν από τθ ρίηα ςτα φφλλα περιζχουν τον ίδιο αρικμό μαφρων κόμβων, ςφμφωνα με τθν πζμπτθ ιδιότθτα, ςυμπεραίνουμε ότι κανζνα μονοπάτι δεν είναι μεγαλφτερο από το διπλάςιο οποιουδιποτε άλλου μονοπατιοφ, δθλαδι και του ςυντομότερου. Ραρά τθν πολφ καλι απόδοςθ που εμφανίηουν λόγω αυτισ τθσ ιδιότθτασ, υπάρχουν και παραλλαγζσ τουσ, ςτισ οποίεσ τα φφλλα μποροφν να περιζχουν δεδομζνα ι ζνασ κόμβοσ να παρουςιάηει μόνο ζναν απόγονο. Αυτζσ οι προςεγγίςεισ αλλάηουν αρκετζσ από τισ προαναφερκιςεσ ιδιότθτεσ των Red-Black δζντρων και περιπλζκουν παριςςότερο τουσ αλγορίκμουσ υλοποίθςισ των. Επίςθσ, αναφζρουμε τθν προςζγγιςθ κατά τθν οποία χρωματίηονται οι ακμζσ ανάμεςα ςτουσ κόμβουσ, αντί των ιδίων. Αυτό, βζβαια, δεν προκαλεί κάποια αλλαγι ςτθ δομι του δζντρου, οφτε ςτθν κακολικι λειτουργία του. Το χρϊμα του κόμβου, όπωσ το ορίηουμε εμείσ, αντιςτοιχεί ςτο χρϊμα τθσ ακμισ που ςυνδζει τον κόμβο με τον γονζα του, μόνο που θ ρίηα-κόμβοσ είναι πάντα μαφρθ, αφοφ δεν ζχει κόμβο-γονζα, άρα και αντίςτοιχθ ακμι για να κλθρονομεί το χρϊμα που κατευκφνεται ςε αυτι Λειτουργίεσ Red-Black Δζντρων Οι λειτουργίεσ των Red-Black δζντρων που αφοροφν μόνο τθν πράξθ τθσ ανάγνωςθσ ςτο δζντρο, δεν μεταβάλλουν τθν δομι του. Ωςτόςο, θ προςκικθ ι θ αφαίρεςθ ενόσ κόμβου μπορεί να προκαλζςει παραβιάςεισ ςτισ ιδιότθτεσ ενόσ Red- Black δζντρου.ρροκειμζνου να αποκταςτακοφν οι απαραίτθτεσ γι αυτό ιδιότθτζσ του, απαιτοφνται O(logn) ι ςε βζλτιςτθ περίπτωςθ O(1) αλλαγζσ χρϊματοσ, οι οποίεσ παρόλα αυτά υλοποιοφνται αρκετά γριγορα, κακϊσ και τρεισ περιςτροφζσ ςτθν χειρότερθ περίπτωςθ. Στθν περίπτωςθ τθσ ειςαγωγισ δε απαιτοφνται το πολφ δφο περιςτροφζσ. Ραρόλο που οι ειςαγωγζσ και οι διαγραφζσ κόμβων φαίνονται να είναι πολφπλοκεσ διαδικαςίεσ, οι χρόνοι τουσ παραμζνουν ςτθν χαμθλι και ηθτοφμενθ πολυπλοκότθτα του O(logn). 28

29 Αναηιτθςθ τοιχείου Ραρά το γεγονόσ ότι τα Red-Black δζντρα μπορεί να φαίνονται τόςο διαφορετικά από τα δζντρα που εξετάςαμε ωσ τϊρα, παρόλα αυτά παραμζνουν Δυαδικά Δζντρα Αναηιτθςθσ, διατθρϊντασ και όλεσ τισ ιδιότθτεσ αυτϊν. Επομζνωσ, μποροφμε εφκολα να ςυμπεράνουμε ότι θ αναηιτθςθ ςτοιχείου ςτα Red-Black δζντρα είναι εν τζλει μία αναηιτθςθ δυαδικοφ δζντρου. Δεδομζνου ενόσ κόμβου προσ αναηιτθςθ, ξεκινοφμε τισ ςυγκρίςεισ από τθ ρίηα του δζντρου. Αν θ τιμι τθσ ρίηασ ταυτίηεται με αυτι που αναηθτοφμε, τότε τερματιηει επιτυχϊσ θ αναηιτθςθ και επιςτρζφεται θ κζςθ τθσ ρίηασ. Αν από τθ ςφγκριςθ με τθ ρίηα προκφπτει ότι θ τιμι αναηιτθςθσ είναι μεγαλφτερθ τθσ ρίηασ, τότε μεταβαίνουμε ςτο δεξιό υποδζντρο, ειδάλλωσ μεταβαίνουμε ςτο αριςτερό. Οι ςυγκρίςεισ ςυνεχίηονται, μζχρισ ότου βρεκεί ο κόμβοσ που περιζχει τθν τιμι αναηιτθςθσ ι μζχρι να φτάςουμε ςε κόμβο-φφλλο του δζντρου. Εκεί ςυμπεραίνουμε ότι δεν υπάρχει κόμβοσ με τθν τιμι που αναηθτοφμε και θ αναηιτθςθ τερματίηει ανεπιτυχϊσ. Ππωσ βλζπουμε, δεν υπάρχει καμία διαφορά ανάμεςα ςτα Red-Black δζντρα και ςτα Δυαδικά Δζντρα Αναηιτθςθσ, όςον αφορά τθν πράξθ τθσ αναηιτθςθσ. Αντίςτοιχα, και εδϊ, θ πράξθ τθσ αναηιτθςθσ δεν προκαλεί καμία δομικι αλλαγι ςτο εξεταηόμενο δζντρο και ςυνεπϊσ δεν απαιτοφνται επαναχρωματιςμοί κόμβων ι επαναηυγιςτικζσ πράξεισ, αφοφ το δζντρο είναι ιδθ Red-Black δζντρο και ιδθ πλθροί τισ προχποκζςεισ που αναφζραμε πιο πάνω. Ειςαγωγι τοιχείου Η ειςαγωγι κόμβου ςτα Red-Black δζντρα γίνεται με παρόμοιο τρόπο, τουλάχιςτον ςτο πρϊτο τουσ ςτάδιο, με τα Δυαδικά Δζντρα Αναηιτθςθσ. Ο κόμβοσ προσ ειςαγωγι τοποκετείται ςτθ κζςθ που του αντιςτοιχεί και χρωματίηεται κόκκινοσ. Η κζςθ του βρίςκεται κατόπιν μιασ αναηιτθςθσ ςτο δζντρο, όπου διαπιςτϊνεται αν υπάρχει ιδθ ςτο δζντρο κόμβοσ με τθ ίδια τιμι. Αν δεν υπάρχει, ο νζοσ κόκκινοσ κόμβοσ τοποκετείται ςτθ κζςθ που τερματίηει ανεπιτυχϊσ θ αναηιτθςθ, παίρνοντασ τθ κζςθ ζνοσ μαφρου κενοφ φφλλου, και αυτόματα ο κόμβοσ κλθρονομεί δφο νζουσ κενοφσ απόγονουσ-μαφρα φφλλα, ϊςτε να είμαςτε ςφμφωνοι με τισ ιδιότθτεσ των Red-Black δζντρων. 29

30 Εδϊ κρίνεται ςκόπιμο να ορίςουμε τον όρο κόμβοσ-κείοσ. Είναι εφκολα κατανοθτό ότι αναφερόμαςτε ςτον κόμβο-αδερφό του κόμβου-γονζα, ςε πλιρθ αντιςτοιχία με τα γενεαλογικά δζντρα. Το αν κα ακολουκιςουν τθν ειςαγωγι κόμβου επαναηυγιςτικζσ πράξεισ εξαρτάται από τα χρϊματα που χαρακτθρίηουν τουσ κοντινοφσ ςτον ωεοειςαχκζντα κόμβουσ. Τονίηουμε ότι: Η τρίτθ ιδιότθτα πρζπει να ιςχφει πάντα (τα φφλλα είναι μαφρα). Η τζταρτθ ιδιότθτα (όλα τα παιδιά ενόσ κόκκινου κόμβου είναι πάντα μαφρα) απειλείται μόνο από τθν ειςαγωγι ενόσ κόκκινου κόμβου, από τον επαναχρωματιςμό ενόσ μαφρου κόμβου ςε κόκκινο, ι από κάποια περιςτροφι που αλλάηει τισ κζςεισ των ιδθ υπάρχοντων κόμβων. Η πζμπτθ ιδιότθτα (όλα τα μονοπάτια από τθ ρίηα ςτα φφλλα περιζχουν τον ίδιο αρικμό μαφρων κόμβων) απειλείται μόνο από τθν ειςαγωγι ενόσ μαφρου κόμβου, από τον επαναχρωματιςμό ενόσ κόκκινου κόμβου ςε μαφρο, ι από κάποια περιςτροφι που αλλάηει τισ κζςεισ των ιδθ υπάρχοντων κόμβων. Ραρακάτω εξετάηουμε τισ πζντε πικανζσ διαφορετικζσ περιπτϊςεισ που μποροφν να προκφψουν κατά τθν ειςαγωγι ενόσ νζου κόμβου ςε ζνα Red-Black δζντρο. Περίπτωςθ 1: Ο νζοσ κόμβοσ Ν τοποκετείται ςτθ ρίηα. Ρροκειμζνου να ικανοποιθκεί θ δεφτερθ ςυνκικθ (θ ρίηα είναι μαφρθ), ο κόμβοσ χρωματίηεται μαφροσ. Ζτςι, προςτίκεται ζνασ μαφροσ κόμβοσ ςε κάκε μονοπάτι που ξεκινά από τθ ρίηα και φτάνει ωσ τα φφλλα. Διαςφαλίηουμε με αυτόν τον τρόπο τθν διατιρθςθ τθσ πζμπτθσ ιδιότθτασ (όλα τα μονοπάτια που ξεκινοφν από τθ ρίηα και καταλιγουν ςτα φφλλα περιζχουν τον ίδιο αρικμό μαφρων κόμβων). Περίπτωςθ 2: Ο νζοσ κόμβοσ Ν λαμβάνει κζςθ ςαν παιδί ενόσ μαφρου κόμβου Ρ. Ππωσ προαναφζραμε, ο κόμβοσ Ν ειςάγεται ςαν κόκκινοσ κόμβοσ ςτο δζντρο. Η τζταρτθ ςυνκικθ δεν παραβιάηεται μετά από μία τζτοια ειςαγωγι, αφοφ μποροφμε να προςκζςουμε μαφρα φφλλα ςτον κόκκινο κόμβο Ν. Η πζμπτθ ςυνκικθ δεν παραβιάηεται, αφοφ ο Ν ζχει πλζον δφο μαφρα παιδιά, με τον ίδιο να είναι κόκκινοσ, οπότε ο αρικμόσ των μαφρων κόμβων για όλα τα μονοπάτια από τθ ρίηα ςτα φφλλα δεν μεταβάλλεται. 30

31 Περιπτωςθ 3: Αν ο γονζασ και ο κείοσ του νεοειςαχκζντα κόκκινου κόμβου Ν είναι επίςθσ κόκκινοι κόμβοι, τότε αυτοί επαναχρωματίηονται μαφροι και ο γονζασ τουσ (κόμβοσ-παπποφσ του νεοειςαχκζντα κόμβου Ν) χρωματίηεται κόκκινοσ. Αυτόσ ο επαναχρωματιςμόσ γίνεται προκειμζνου να διατθρθκεί θ τζταρτθ ςυνκικθ (όλα τα μονοπάτια από τθ ρίηα ςτα φφλλα περιζχουν τον ίδιο αρικμό μαφρων κόμβων). Ζτςι ο νζοσ κόμβοσ Ν ζχει μαφρο γονζα, τον κόμβο. Εφόςον κάκε μονοπατι που περνά από τον γονζα ι τον κείο πρζπει να περάςει και από τον κόμβο-παπποφ, ο αρικμόσ των μαφρων κόμβων ςτα μονοπάτια από τθ ρίηα ςτα φφλλα του δζντρου παραμζνει ςτακερόσ. Ωςτόςο, ο κόμβοσ-παπποφσ G μπορεί να παραβιάηει τθν δεφτερθ ςυνκικθ (θ ρίηα είναι μαφρθ) ι τθν τζταρτθ ςυνκικθ (ζνασ κόκκινοσ κόμβοσ ζχει δφο μαφρα παιδιά) αν ο κόμβοσ-παπποφσ ζχει κόκκινο γονζα. Ρροκειμζνου να διορκϊςουμε αυτι τθν ανωμαλία, επαναλαμβάνουμε τθν παραπάνω διαδικαςία επαναχρωματιςμοφ κόμβων, μόνο που αυτι τθν φορά ςαν ςθμείο αναφοράσ ζχουμε τον κόμβο G, ςε αντίκεςθ με τον κόμβο Ν που είχαμε προτφτερα. Εικόνα 21: Επαναχρωματιςμόσ κόμβων Ρ και G μετά τθν ειςαγωγι του Ν Σθμείωςθ: ςτισ υπόλοιπεσ περιπτϊςεισ υποκζτουμε ότι ο γονζασ είναι το αριςτερό παιδί του γονζα του, κόμβου-παπποφ G. Στθν περίπτωςθ που είναι το δεξιό παιδί, τότε ςτισ επόμενεσ δφο περιπτϊςεισ που κα εξετάςουμε, αντικακιςτοφμε τον όρο αριςτερό ςε δεξιό και τον όρο δεξιό ςε αριςτερό. Περίπτωςθ 4: Ο γονζασ είναι κόκκινοσ και αριςτερό παιδί του παπποφ G, ο κόμβοσ-κείοσ U είναι μαφροσ και δεξιό παιδί του παπποφ G, και ο κόμβοσ Ν είναι κόκκινοσ και δεξί παιδί του γονζα. Σε αυτι τθν περίπτωςθ πραγματοποιοφμε μια αριςτερι περιςτροφι, όπωσ αναφζρκθκε αυτι ςτα AVL δζντρα, θ οποία ωκεί τουσ κόμβουσ και Ν να αλλάξουν κζςθ μεταξφ τουσ. Στθ ςυνζχεια, ο μζχρι πρότεινοσ γονζασ του νεοειςαχκζντα κόμβου Ν, παραβιάηει τθν τζταρτθ ςυνκικθ (ζνασ κόκκινοσ κόμβοσ ζχει μόνο μαφρα παιδιά). Η παραβίαςθ τθσ ςυνκικθσ καλεί τθν περίπτωςθ 5 που αναλφουμε παρακάτω (το αριςτερό παιδί κόκκινου κόμβου είναι επίςθσ κόκκινοσ κόμβοσ). Να αναφζρουμε εδϊ ότι θ περιςτροφι δεν παραβιάηει 31

32 τθν πζμπτθ ςυνκικθ (όλα τα μονοπάτια από τθ ρίηα ςτα φφλλα παριζχουν τον ίδιο αρικμό μαφρων κόμβων), κακϊσ επίςθσ ότι θ περιςτροφι δθμιουργεί νζα μονοπάτια, που περνοφν από τον νζο κόμβο Ν, το οποία πριν τθν περιςτροφι δεν υπιρχαν. Εικόνα 22: Αριςτερι περιςτροφι κόμβων Ρ και Ν. Σο δζντρο πλζον ανικει ςτθν περίπτωςθ 5 Περίπτωςθ 5: Ο γονζασ είναι κόκκινοσ και αριςτερό παιδί του κόμβου-παπποφ G, ο κόμβοσ-κείοσ είναι μαφροσ κόμβοσ και δεξί παιδί του G και ο νζοσ κόμβοσ Ν είναι αριςτερό παιδί του κόμβου-γονζα και είναι κόκκινοσ κόμβοσ. Συμπεραίνουμε ότι αυτό παραβιάηει τθν τζταρτθ ςυνκικθ (ζνασ κόκκινοσ κόμβοσ ζχει μόνο μαφρα παιδιά). Εφαρμόηουμε λοιπόν μία δεξιά περιςτροφι ςτον κόμβο γονζα. Σαν αποτζλεςμα αυτοφ, ο κόμβοσ-γονζασ ζχει πλζον ςαν αριςτερό του παιδί τον νζο κόμβο Ν και ςαν δεξιό του παιδί τον κόμβο-παπποφ G. Ο κόμβοσ-παπποφσ G είναι μαφροσ, ειδάλλωσ ο κόμβοσ-γονζασ και προτφτερα απόγονόσ του G δε κα μποροφςε να είναι κόκκινοσ. Ο κόμβοσ-γονζασ και ο κόμβοσ-παπποφσ G ανταλλάςςουν χρϊματα, με τον πρϊτο να γίνεται μαφροσ και τον δεφτερο να γίνεται κόκκινοσ, παράγωντασ ζνα δζντρο το οποίο ικανοποιεί τθν τζταρτθ και τθν πζμπτθ ςυνκικθ (ζνασ κόκκινοσ κόμβοσ ζχει μόνο μαφρα παιδιά και όλα τα μονοπάτια που ξεκινοφν από τθ ρίηα και καταλιγουν ςτα φφλλα περιζχουν τον ίδιο αρικμό μαφρων κόμβων). Συγκεκριμζνα, θ πζμπτθ ςυνκικθ διατθρείται αφοφ όλα τα μονοπάτια που διζςχιηαν τον μαφρο προθγουμζνωσ κόμβο-παπποφ G, τϊρα διαςχίηουν τον μαφρο κόμβο-γονζα, που πιρε τθ κζςθ του G. Σε κάκε περίπτωςθ, πλζον κόμβοσ-γονζασ είναι πλζον ο μόνοσ πραγματικόσ ςυμπλθρωμζνοσ μαφροσ κόμβοσ ανάμεςα ςτουσ τρεισ (N, P, G). 32

33 Εικόνα 23: Δεξιά περιςτροφι και ανταλλαγι χρϊματοσ ανάμεςα ςε Ρ και G Διαγραφι τοιχείου Σε ζνα Δυαδικό Δζντρο Αναηιτθςθσ, όταν αφαιροφμε ζναν κόμβο από τθ δομι του, ο οποίοσ ζχει δφο κόμβουσ-παιδιά, τα οποία δεν είναι φφλλα, βρίςκουμε είτε το μζγιςτο ςτοιχείο του αριςτεροφ του υποδζντρου είτε το ελάχιςτο ςτοιχείο του δεξιοφ του υποδζντρου, και αντιγράφουμε το ςτοιχείο αυτό ςτθ κζςθ του κόμβου που επικυμοφμε να διαγράψουμε. Στθ ςυνζχεια, διαγράφουμε τον κόμβο αυτόν από τον οποίο αντιγράψαμε τθν τιμι ςτον κόμβο προσ διαγραφι, ο οποίοσ πρζπει να ζχει λιγότερα από δφο παιδιά που δεν είναι φφλλα. Επειδι θ αντιγραφι ενόσ κόμβου ςε ζναν άλλο δεν παραβιάηει τισ ςυνκικεσ των Red-Black δζντρων, αυτό ανάγει και περιορίηει το πρόβλθμα τθσ διαγραφισ ςε πρόβλθμα διαγραφισ κόμβου με το πολφ ζνα παιδί που δεν είναι φφλλο. Επίςθσ, δεν ζχει ςθμαςία αν είναι ο κόμβοσ που κζλαμε να διαγράψουμε αρχικά ι αν είναι ο κόμβοσ από τον οποίο αντιγράψαμε τθν τιμι, δίνοντασ του τελικά τθν τιμι που κζλουμε να διαγραφεί από το δζντρο, μαηί με τον κόμβο που τον περιζχει. Επομζνωσ, το πρόβλθμα ανάγεται ςε διαγραφι κόμβου με το πολφ ζναν κόμβο παιδί μθ-φφλλο. Αν διαγράφουμε ζναν κόκκινο κόμβο, τότε τον αντικακιςτοφμε με το μαφρο παιδί του. Πλα τα μονοπάτια διατθροφν τον ίδιο αρικμό μαφρων κόμβων, αφοφ αφαιρείται ζνασ κόκκινοσ κόμβοσ, και ο γονζασ και το παιδί του διεγραμμζνου κόμβου κα είναι μαφροι, με αποτζλεςμα να διατθρθκοφν θ τρίτθ και θ τζταρτθ ςυνκικθ. Σε περίπτωςθ που διαγραφεί μαφροσ κόμβοσ με κόκκινο παιδί, τότε το κόκκινο παιδί του, που παίρνει τθ κζςθ του ςτο δζντρο, επαναχρωματίηεται μαφρο, διατθρϊντασ ζτςι το δζντρο τθν τρίτθ και τθν τζταρτθ ιδιότθτα. 33

34 Η κατάςταςθ, όμωσ, περιπλζκεται όταν ο κόμβοσ προσ διαγραφι και το παιδί του είναι μαφρο. Αρχικά, αντικακιςτοφμε τον κόμβο που κα διαγραφεί με το παιδί του. Στθν πορεία αλλάηουμε τισ μεταξφ τουσ ονομαςίεσ. Ο κόμβοσ-παιδί κα ονομαςτεί Ν, αφοφ λάβει τθ νζα του κζςθ, και ο κόμβοσ-αδερφόσ του κα ονομαςτεί S. Επίςθσ, ο κόμβοσ που πριν ιταν παπποφσ του Ν, χαρακτθρίηεται πλζον με ςαν γονζασ του Ν. Τζλοσ, χαρακτθρίηουμε με SL το αριςτερό παιδί του S και με SR το δεξιό παιδί του S. Απαραίτθτθ προχπόκεςθ αποτελεί το S να μθν είναι φφλλο του δζντρου. Μπορεί να αλλάηουμε τουσ χαρακτθριςμοφσ των εμπλεκόμενων κόμβων, αλλά ςε κάκε περίπτωςθ, κάκε κόμβοσ διατθρεί τθν τιμι που είχε και τον αντιπροςϊπευε ςτθν αρχι. Κάκε χρϊμα που παρουςιάηεται ςτισ παρακάτω εικόνεσ και διαγράμματα είτε ςυμπεραίνεται ανάλογα με τθν περίπτωςθ είτε υποννοείται από τισ υποκζςεισ που κάνουμε. Οι κόμβοι που χρωματίηονται με άςπρο χρϊμα είναι κόμβοι των οποίων το χρϊμα δεν μασ επθρεάηει ςτθν ανάλυςθ. Ραρακάτω εξετάηουμε τισ ζξι περιπτϊςεισ που μποροφν να προκφψουν κατά τθν διαγραφι κόμβου. Να τονίςουμε ότι αν ο κόμβοσ Ν και ο αρχικόσ του γονζασ είναι μαφροι, τότε θ αφαίρεςθ του αρχικοφ γονζα οδθγεί ςτθν ελάττωςθ των μαφρων κόμβων που περιζχουν τα μονοπάτια που διζρχονται από τον κόμβο Ν, κατά ζναν μαφρο κόμβο. Αυτό παραβιάηει τθν πζμπτθ ςυνκικθ (όλα τα μονοπάτια από τθ ρίηα ςτα φφλλα παριζχουν τον ίδιο αρικμό μαφρων κόμβων) και το δζντρο πρζπει να επαναηυγιςτεί. Υπάρχουν, λοιπόν, οι εξισ περιπτϊςεισ: Περίπτωςθ 1: Ο κόμβοσ Ν είναι θ νζα ρίηα μετά τθν διαγραφι. Οπότε, αφαιρζςαμε ζναν μαφρο κόμβο από κάκε μονοπάτι που ξεκινά από τθν ρίηα και καταλθγει ςτα φφλλα του δζντρου, αλλά επειδι θ νζα ρίηα είναι μαφρθ, διατθρείται θ πζμπτθ κακϊσ και όλεσ οι υπόλοιπεσ ςυνκικεσ και θ διαδικαςία τερματίηει επιτυχϊσ. Περίπτωςθ 2: Ο αδερφόσ κόμβοσ S του κόμβου Ν είναι κόκκινοσ. Σε αυτι τθν περίπτωςθ, ανταλλάςςουμε τα χρϊματα των κόμβων S και μεταξφ τουσ και αςκοφμε μία δεξιά περιςτροφι. Ζτςι ο κόμβοσ S γίνεται ο κόμβοσ-παπποφσ του Ν. Ραρόλο που όλα τα μονοπάτια ζχουν ίδιο αρικμό μαφρων κόμβων, ο κόμβοσ Ν ζχει μαφρο αδερφό και κόκκινο γονζα, οπότε μποροφμε να προχωριςουμε ςτισ περιπτϊςεισ 3, 4, και 5. Για τα μετζπειτα βιματα, μετονομάηουμε τον νζο αρικμό του κόμβου Ν ςε S. 34

35 Εικόνα 24: Ανταλλαγι χρωμάτων και αριςτερι περιςτροφι Περίπτωςθ 3: Οι κόμβοι S, P κακϊσ και οι κόμβοι SL και SR είναι μαφροι. Σε αυτι τθν περίπτωςθ επαναχρωματίηουμε τον κόμβο S ςε κόκκινο. Σαν αποτζλεςμα, όλα τα μονοπάτια που περνοφν από τον κόμβο S, που είναι ακριβϊσ όςα μονοπάτια δεν περνοφν από τον κόμβο Ν, κα ζχουν ζναν μαφρο κόμβο λιγότερο. Επειδι θ διαγραφι του αρχικοφ πατζρα του κόμβου Ν ελλάτωςε τον αρικμό μαφρων κόμβων ςτα μονοπάτια κατά ζνα, αυτόσ ο επαναχρωματιςμόσ του κόμβου S επαναφζρει τθν ιςορροπία. Ωςτόςο, τα μονοπάτια που περνοφν από τον κόμβο P ζχουν ζναν μαφρο κόμβο λιγότερο από όςα δεν περνοφν από το υποδζντρο του. Ραραβιάηεται, ζτςι, θ πζμπτθ ςυνκικθ για το ςυγκεκριμζνο δζντρο. Για να διορκωκεί αυτό, επαναηυγίηουμε το δζντρο για τον κόμβο, ξεκινϊντασ πάλι από τθν περίπτωςθ 1. Εικόνα 25: Επαναχρωματιςμόσ του κόμβου S Περίπτωςθ 4: Τα παιδιά του κόμβου S και του κόμβου Ν είναι μαφρα, αλλά ο κόμβοσ είναι κόκκινοσ. Σε αυτι τθν περίπτωςθ, αλλάηουμε τα χρϊματα των κόμβων και S μεταξφ τουσ. Αυτό δεν επθρεάηει τον αρικμό των μαφρων κόμβων ςτα μονοπάτια που περνοφν από τον κόμβο S, αλλά προςκζτει ζναν μαφρο κόμβο ςτα μονοπάτια που περνοφν από τον κόμβο Ν, ιςορροπϊντασ ζτςι τον μαφρο κόμβο που διεγράφθ. 35

36 Εικόνα 26: Ανταλλαγι χρϊματοσ ανάμεςα ςτουσ κόμβουσ Ρ και S Περίπτωςθ 5: Ο κόμβοσ S είναι μαφροσ, ο κόμβοσ SL είναι κόκκινοσ και ο κόμβοσ SR είναι μαφροσ, ενϊ ο κόμβοσ Ν είναι το αριςτερό παιδί του γονζα του. Σε αυτι τθν περίπτωςθ, περιςτρζφουμε τον κόμβο S δεξιά, ϊςτε ο κόμβοσ SL να γίνει γονζασ του S, και κατά ςυνζπεια ο κόμβοσ SL γίνεται και αδερφόσ του κόμβου Ν. Ανταλλάςουμε χρϊματα ανάμεςα ςτουσ κόμβουσ S και τον γονζα του πλζον SL. Τα μονοπάτια διατθροφν τον αρικμό μαφρων κόμβων, αλλά τϊρα ο κόμβοσ Ν ζχει ζναν μαφρο αδερφό με κόκκινο παιδί, οπότε υπάγεται ςτθν περίπτωςθ 6. Ο κόμβοσ Ν και ο γονζασ του δεν επθρεάηονται από αυτι τθν αλλαγι. Αναφζρουμε ότι για τθν περίπτωςθ 6, επανονομάηουμε τον κόμβο SL ωσ S, αφοφ είναι ο νζοσ αδερφόσ του κόμβου Ν. Εικόνα 27: Ανταλλαγι χρωμάτων μεταξφ κόμβων S και SL και αριςτερι περιςτροφι Περίπτωςθ 6: Ο κόμβοσ S είναι μαφροσ, ο κόμβοσ SR είναι κόκκινοσ και ο κόμβοσ Ν είναι αριςτερόσ απόγονοσ του κόμβου. Σε αυτι τθν περίπτωςθ, περιςτρζφουμε αριςτερά τον κόμβο, με τον κόμβο S να γίνεται γονζασ του κόμβου και τον κόμβο SR να γίνεται δεξιό παιδί του κόμβου S. Ανταλλάςουμε τα χρϊματα των κόμβων P και S και επαναχρωματίηουμε τον κόμβο SR ςε μαφρο. Το υποδζντρο ζχει ρίηα ίδιου χρϊματοσ, όπωσ όταν ξεκίνθςε (ο κόμβοσ αρχικά ιταν αρχικά λευκόσ και τϊρα μετά τθν ανταλλαγι χρωμάτων ο κόμβοσ είναι μαφροσ και ο κόμβοσ S λευκόσ). Με τον τρόπο αυτό, δεν παραβιάηονται θ τζταρτθ και θ πζμπτθ ςυνκικθ. Ωςτόςο, ο κόμβοσ Ν ζχει ζναν επιπλζον μαφρο πρόγονο. Είτε, λοιπόν, ο κόμβοσ ζγινε μαφροσ ι ιταν μαφροσ και ο κόμβοσ S προςτζκθκε ςαν μαφροσ κόμβοσ- 36

37 παπποφσ. Ζτςι, τα μονοπάτια που περνοφν από τον Ν, διζρχονται από ζναν επιπλζον μαφρο κόμβο. Εικόνα 28: Ανταλλαγι χρωμάτων ανάμεςα ςτουσ κόμβουσ S και SR και αριςτερι περιςτροφι Εν τω μεταξφ, αν ζνα μονοπάτι δεν περνά από τον κόμβο Ν, τότε διακρίνουμε δφο περιπτϊςεισ. Το μονοπάτι περνάει από τον νζο αδερφό του κόμβου Ν. Τότε, περνάει από τουσ κόμβουσ S και, όπωσ ακριβϊσ ςυνζβαινε και πριν από τισ επαναηυγιςτικζσ πράξεισ. Επειδι απλά ανταλλάξαμε τα χρϊματα ανάμεςα ςτουσ κόμβουσ S και SR και τθ μεταξφ τουσ κζςθ, το μονοπάτι περιζχει τον ίδιο αρικμό μαφρων κόμβων. Το μονοπάτι περνάει από τον νζο κόμβο-κείο του Ν, τον κόμβο SR. Διαπιςτϊνουμε ότι ενϊ πριν τισ αλλαγζσ περνοφςε από τουσ κόμβουσ S, που ζχει ίδιο χρϊμα με τον κόμβο πριν τισ αλλαγζσ, και τον κόμβο SR, ο οποίοσ επαναχρωματίςτθκε ςε μαφροσ. Οπότε, απλά εξαλείφκθκε ο κόκκινοσ κόμβοσ από το μονοπάτι, και το μονοπάτι διατιρθςε τον αρικμό των μαφρων κόμβων που είχε πριν από τισ αλλαγζσ ςε χρϊματα και δομι το δζντρο. Ππωσ και να χει, ο αρικμόσ των μαφρων κόμβων κατά μικοσ του μονοπατιοφ δεν αλλάηει. Ζτςι, βλζπουμε ότι θ τζταρτθ και θ πζμπτθ ςυνκικθ ιςχφουν, αρκεί ο λευκόσ κόμβοσ και, μετά από τισ επαναηυγιςτικζσ πράξεισ, ο κόμβοσ S να διατθριςουν το χρϊμα τουσ αυτό κακ όλθ τθ διάρκεια τθσ μεταβολισ του υποδζντρου Πολυπλοκότθτα Red-Black Δζντρων 37

38 Κατά τθν υλοποίθςθ των Red-Black δζντρων, χρθςιμοποιείται ζνασ επαναλθπτικόσ βρόγχοσ ςτον αλγόρικμο, όπου ο κόμβοσ που κζλουμε να αντικαταςτιςουμε ςτθ ρίηα του δζντρου, ανεβαίνει προσ τθ ρίηα βιμα-βιμα, με τθ χριςθ ενόσ επαναλιπτθ (iterator). Το φψοσ h του δζντρου είναι τθσ τάξθσ του O(logn), οπότε απαιτοφνται O(logn) επαναλιψεισ. Ζτςι, ςυμπεραίνουμε ότι θ ειςαγωγι ςτοιχείου ςε ζνα Red-Black δζντρο εμφανίηει πολυπλοκότθτα O(logn). Εφόςον το φψοσ ενόσ Red-Black δζντρου είναι το πολφ 2log₂(n+1) οι αλγόρικμοι αναηιτθςθσ, ειςαγωγισ και διαγραφισ κόμβου εμφανίηουν πολυπλοκότθτα τθσ τάξθσ του O(logn). Αν ςε ζνα Red-Black δζντρο, παρόλα αυτά, εμφανίηεται θ χειρότερθ δυνατι κατάςταςθ για το φψοσ του, τότε ζχουμε και το worst-case-scenario για τα δζντρα αυτά, με τθν πολυπλοκότθτά τουσ να είναι ζωσ και 1,44log₂(n+2) μεγαλφτερθ από αυτι ενόσ AVL δζντρου με το ίδιο πλικοσ εςωτερικϊν κόμβων. 38

39 Κεφάλαιο 3. Τλοποίθςθ Δομϊν Δεδομζνων 3.0 Ειςαγωγι Ππωσ αναφζραμε και ςτθν ειςαγωγι, ςθμαντικό κομμάτι τθσ ςυγκεκριμζνθσ διπλωματικισ εργαςίασ αποτελοφν οι μικροεφαρμογζσ-applets, που υλοποιικθκαν ςτθν γλϊςςα προγραμματιςμοφ Java, κακϊσ μζςω αυτϊν, ακολουκϊντασ τθν πορεία υλοποίθςισ τουσ, κα δείξουμε πωσ μποροφμε να μεταβοφμε από τθν κεωρία ςτθν πράξθ. Επίςθσ, οι υλοποιιςεισ τουσ αποδεικνφονται χριςιμεσ για τον αναγνϊςτθ που επιχειρεί να κατανοιςει τον τρόπο λειτουργίασ των δεδρικϊν δομϊν των προθγοφμενων κεφαλαιϊν, κακϊσ μπορεί να ειςάγει, να αναηθτιςει και να διαγράψει κόμβουσ, βλζποντασ τθν επίδραςθ των πράξεων αυτϊν ςτα δζντρα ςε γραφικζσ απεικονίςεισ, και μάλιςτα ςε πραγματικό χρόνο. Αρχικά, όμωσ, οφείλουμε να αναφζρουμε το κομμάτι του hardware και του software που επιςτρατεφτθκε κακ όλθ τθν υλοποίθςθ. Πςον αφορά το hardware: AMD Athlon 64bit 2.2 GHz ASUS Motherboard M2NPV-VM nvidia GeForce 6800 XT Kingston 2 GB RAM Ενϊ αναφορικά με το software επιςτρατεφτθκαν τα εξισ προγράμματα: Λειτουργικό Σφςτθμα: Windows 7, x64 Professional Edition Java JDK, version 6 Gel Native Java IDE, version RC39 NetBeans IDE, version 6.8 Mozilla Firefox, version Microsoft Office Professional Plus 2010, version (64-bit) Adobe Acrobat.com Στα επόμενα υποκεφάλαια αυτισ τθσ τεχνικισ ζκκεςθσ, κα περιγραφοφν οι κλάςεισ και οι ςθμαντικότερεσ μζκοδοι τουσ, με τθ ςειρά κατά τθν οποία υλοποιικθκαν. Επίςθσ, κα αναφζρονται, όπου αυτό κρίνεται απαραίτθτο, οι ςχζςεισ μεταξφ κλάςεων και θ επίδραςθ που ζχουν αυτζσ ςτθν όλθ πορεία τθσ υλοποίθςθσ. Τζλοσ, λόγω ςθμαντικϊν ςχεδιαςτικϊν διαφορϊν, που προζκυψαν κατά τθν υλοποίθςθ λόγω των ιδιοτιτων τουσ (και κυρίωσ του χρωματιςμοφ κόμβων), γίνεται ζνασ διαχωριςμόσ των Red-Black δζντρων από τα Δυαδικά Δζντρα Αναηιτθςθσ και τα AVL δζντρα, με το applet των πρϊτων να διαφζρει ςθμαντικά από τα άλλα δφο applets. 39

40 Ρεριςςότερα για τθν διαφορετικότθτα των υλοποιιςεων κα γίνουν αντιλθπτά παρακάτω. 3.1 Τλοποίθςθ Δυαδικϊν Δζντρων Αναηιτθςθσ Ειςαγωγι Τα Δυαδικά Δζντρα Αναηιτθςθσ διζπονται από ζναν πολφ απλό μθχανιςμό ςυγκρίςεων μεταξφ των κόμβων τουσ και θ υλοποίθςι τουσ είναι εν γζνει ςχετικά απλι. Δεδομζνου, όμωσ, ότι ςκοπόσ τθσ υλοποίθςθσ δεν ιταν απλά θ δθμιουργία τζτοιων δενδρικϊν δομϊν, αλλά θ απεικόνιςι τουσ ςε γραφικό περιβάλλον, δθμιοφργθςε ςθμαντικά προβλιματα. Για τον λόγο αυτό, ακολουκικθκε μία προςζγγιςθ top-down, μία δόμθςθ του applet από το γραφικό κομμάτι προσ τον αλγορικμό. Αυτό επζτρεψε τθν μετζπειτα χρθςιμοποίθςθ του γραφικοφ μζρουσ και από τον αλγόρικμο του AVL δζντρου, με τθν προςκικθ ςυμπλθρωματικϊν κλάςεων για τισ ςυμπλθρωματικζσ ωσ προσ το Δυαδικό Δζντρο Αναηιτθςθσ λειτουργίεσ τουσ. Ραρακάτω, λοιπόν κάνουμε ζναν διαχωριςμό ανάμεςα ςτισ κλάςεισ του γραφικοφ μζρουσ και του αλγορικμικοφ μζρουσ, όπωσ αυτζσ υλοποιικθκαν. Τονίηουμε, ξανά, τθν δυνατότθτα προςαρμογισ των γραφικϊν και ςτισ δφο δομζσ των Δυαδικϊν Δζντρων Αναηιτθςθσ και των AVL δζντρων Γραφικά Αρχικά, για κάκε applet ςτο οποίο ςχεδιάηονται γραφικά χρειαηόμαςτε ζναν καμβά, ο οποίοσ κα αποτελζςει τθ βάςθ των γραφικϊν. Επίςθσ, κα χρειαςτοφμε και ζνα πλαίςιο με το οποίο κα φράξουμε τον καμβά αυτόν. Ορίηουμε, λοιπόν, τισ κλάςεισ: FramedPanel.java: Σχεδιάηει ζνα panel, το οποίο είναι φραγμζνο από ςυμπαγι όρια, ςε αντίκεςθ με το ςυμβατικό panel. Κατά τθν καταςκευι του δζχεται το όριςμα framewidth, που ορίηει το πλάτοσ του ορίου, και το όριςμα framecolor, το οποίο χρωματίηει τα όρια με το εκάςτοτε δωκζν χρϊμα. Επίςθσ, περιζχει και δφο μεκόδουσ, τθν paint(), θ οποία ςχεδιάηει το περίγραμμα του panel, και τθν insets(), θ οποία ζχει ςκοπό τθν ορκι απεικόνιςθ του panel, με τα όρια που ορίςτθκαν κατά τθν καταςκευι του. 40

41 StructureCanvas.java: Ρρόκειται για μία abstract κλάςθ, θ οποία κα χρθςιμοποιθκεί ωσ βάςθ για τθν BinaryCanvas, τθν κλάςθ δθλαδι που κα ςχεδιάηει το εςωτερικό του panel. Είναι υπεφκυνθ για τθν ςχεδίαςθ κόμβων, αλλά και για τθν εφαρμογι όλων των μεταβολϊν, για τισ οποίεσ είναι υπεφκυνεσ οι πράξεισ που εφαρμόηουμε ςτο δζντρο, τισ μετακινιςεισ κόμβων και τθν επιςιμανςθ των κόμβων ςτουσ οποίουσ γίνονται ςυγκρίςεισ. Ρεριζχει δθλϊςεισ μεκόδων, όπωσ θ paintanimation(), θ οποία ςχεδιάηει δυναμικά το δζντρο, θ update(), θ οποία μετά από κάποια πράξθ ανανεϊνει τθν όψθ του δζντρου, θ getnodesize(), θ οποία επιςτρζφει τθν τιμι του κόμβου, και θ dofunctions(), θ οποία δζχεται ζνα διάνυςμα από λειτουργίεσ που πρζπει να εκτελεςτοφν, και μετά από τθν πραγματοποίθςθ των απαραίτθτων ελζγχων, εφαρμόηει αυτζσ τισ λειτουργίεσ. BinaryCanvas.java: Ρρόκειται για κλάςθ-απόγονο τθσ StructureCanvas, και υλοποιεί τθν πρόγονό τθσ, ειςάγοντασ μεκόδουσ για τθν διαχείριςθ Δυαδικϊν Δζντρων Αναηιτθςθσ. Επίςθσ, αργότερα κα χρθςιμοποιθκεί και για τθν απεικόνιςθ των AVL δζντρων. Οι βαςικότερεσ μζκοδοι που ειςάγονται είναι οι addnode(), getlevel(), removenode(), setlevel() και loadbuffer(). Αυτζσ οι μζκοδοι ςκοπό ζχουν τθν φόρτωςθ ςτθ μνιμθ των αντικειμζνων-κόμβων του δζντρου, τθν ειςαγωγι και τθν διαγραφι κόμβου από το γράφθμα, ενϊ ζνα πλικοσ μεκόδων αςχολείται με τθν διαγραφι αντικειμζνων και αναφορϊν ςε αυτά από τθ μνιμθ, για πιο γριγορθ εκτζλεςθ του κϊδικα. Τζλοσ, να αναφζρουμε ότι ςτα χαρακτθριςτικά του κάκε κόμβου, που μζχρι ςτιγμισ ιταν θ τιμι του και οι κόμβοι παιδιά του, προςτίκεται και το χαρακτθριςτικό int level, από το οποίο υπολογίηεται ποιο είναι το βάκοσ του ςτο δζντρο. Αυτι θ μεταβλθτι είναι απαραίτθτθ για τον υπολογιςμό των υψϊν των υποδζντρων και τθ δθμιουργία ςυνκθκϊν ελζγχου για τθν εφρυκμθ λειτουργία των AVL δζντρων. Στθ ςυνζχεια παρουςιάηονται οι κλάςεισ που δθμιουργοφν τα γραφικά αντικείμενα. Τα αντικείμενα αυτά αποτελοφνται από τετράγωνα (Rectangles) για τθν απεικόνιςθ των κόμβων, και από κφκλουσ (Ovals), οι οποίοι κα δείχνουν ςτον χριςτθ ςε ποιον κόμβο βρίςκεται ανά πάςα ςτιγμι θ πράξθ που επιλζχκθκε. GraphicsObject.java: Μία abstract κλάςθ που κα χρθςιμοποιθκεί για τον ςχεδιαςμό όλων των αντικειμζνων που ςυνκζτουν ζνα δζντρο. Ο οριςμόσ τθσ κλάςθσ παρόλα αυτά είναι τζτοια ϊςτε να επιτρζπει τθν δθμιουργία οποιουδιποτε γραφικοφ αντικειμζνου. Στθ ςυνζχεια, με τισ κλάςεισ απογόνουσ, κα ορίηουμε ζνα πιο ςτενό 41

42 πλαίςιο για το κάκε αντικείμενο, ανάλογα με το αντικείμενο που κζλουμε να καταςκευάςουμε. Οι βαςικζσ μζκοδοι που ορίηονται είναι θ getorigin(), θ οποία επιςτρζφει τθ κζςθ του κζντρου του αντικειμζνου ςτον καμβά, θ size(), θ οποία επιςτρζφει τισ διαςτάςεισ του αντικειμζνου, και θ movebaseorigin(), θ οποία μετακινεί ζνα αντικείμενο ςε μία νζα κζςθ. Σθμαντικό χαρακτθριςτικό των GraphicsObject είναι θ ςτακερά Point origin, θ οποία δεν ςυμβολίηει τίποτα άλλο από το ςθμείο ςτο οποίο βρίςκεται το αντικείμενο. ImageObject.java: Αποτελεί υλοποίθςθ τθσ GraphicsObjects. Στθν ουςία δθμιουργεί εικόνεσ-γραφικά ςτο panel και παρζχει και τισ απαραίτθτεσ μεκόδουσ για τθν διαχείριςθ των εικόνων αυτϊν. Επίςθσ, πολφ ςθμαντικόσ είναι και ο ζλεγχοσ που εκτελοφν τα αντικείμενά του, ϊςτε να μθν υπερβαίνουν τα όρια του panel. Circle.java: Ρρόκειται για επζκταςθ τθσ GraphicsObject και ςκοπό ζχει τθ δθμιουργία κυκλικϊν αντικειμζνων αυτοφ του τφπου γραφικϊν. Υλοποιεί τθσ προαναφερκιςεσ μεκόδουσ, με τθν προςκικθ των getcolor(), θ οποία επιςτρζφει το χρϊμα με το οποίο ζχουμε γεμίςει τον κφκλο, και τθν radius(), θ οποία επιςτρζφει τθν ακτίνα του κφκλου. Τα κυκλικά αντικείμενα αυτοφ του τφπου μετά τθν αρχικοποίθςι τουσ δεν μεταβάλλονται. MoveableCircle.java: Ρρόκειται για επζκταςθ τθσ Circle. Ειςάγονται μζκοδοι, οι οποίεσ χειρίηονται τθ κζςθ του κφκλου που κα ςχθματιςτεί, όπωσ θ move() και θ translate(). Η τελευταία ανακζτει τισ ςυντεταγμζνεσ ςε δφο μετεβλθτζσ x και y. Αφοφ ζχουμε ορίςει τισ βαςικζσ κλάςθσ για τθ δθμιουργία αντικειμζνων γραφικϊν, μποροφμε να προχωριςουμε ςε πιο ςυγκεκριμζνεσ κλάςεισ, που κα μασ φζρουν πιο κοντά ςτθν πραγματικι υλοποίθςθ ενόσ κόμβου-αντικειμζνου. GraphicsNode.java: Αποτελεί τθν βαςικι δομι για τθν δθμιουργία γραφικϊν αντικειμζνων-κόμβων. Είναι απόγονοσ τθσ GraphicsObject και επιτελεί τθσ βαςικζσ λειτουργίεσ των αντικειμζνων τζτοιου τφπου, όπωσ επιςτροφι τθσ τιμισ του κόμβου, τθσ κζςθσ του, κακϊσ και αλλαγι όλων των προθγουμζνων. 42

43 ImageFrame.java: Εδϊ δθμιουργείται μία abstract δομι πίνακα κατακερματιςμοφ, ο οποίοσ κα χρθςιμοποιθκεί για τθν αποκικευςθ όλων των γραφικϊν απεικονίςεων που κα δθμιουργθκοφν, από το applet. Επίςθσ, θ ςυγκεκριμζνθ κλάςθ κάνει χριςθ και ενόσ AlphaFilter, προκειμζνου τα χρϊματα ενδιαφζροντοσ, αυτά των κόμβων δθλαδι, να μθν υπερκαλυφκοφν από άλλα κατά τον ςχεδιαςμό του δζντρου. NodeImageFrame.java: Η υλοποίθςθ-απόγονοσ τθσ ImageFrame. Εδϊ, δίνεται για πρϊτθ φορά θ δυνατότθτα δθμιουργίασ κόμβων, μιασ και πλζον ζχουμε τθν δυνατότθτα να αποκθκεφςουμε τα αντικείμενα αυτά ςε ζναν πίνακα κατακερματιςμοφ. CircleImageFrame.java: Σε πλιρθ αντιςτοιχία με τθν ανωτζρω κλάςθ, με τθ διαφορά ότι θ ςυγκεκριμζνθ παράγει και αποκθκεφει ςε πίνακα κατακερματιςμοφ, αντικείμενα γραφικϊν κφκλου. SimpleGraphicsNode.java: Αποτελεί μία απλοφςτερθ υλοποίθςθ τθσ GraphicsNode, με αρχικοποιθμζνεσ τισ διαςτάςεισ και το χρϊμα των κόμβων που παράγει. Τα αντικείμενα τισ κλάςθσ αυτισ χρθςιμοποιικθκαν κατά κόρων ςτισ δοκιμζσ και αποτζλεςαν βάςθ για τθν γραφικι απεικόνιςθ των κόμβων των Red-Black δζντρων. Orderable.java: Ζνα interface, το οποίο κα χρθςιμοποιθκεί για τθν ςφγκριςθ των τιμϊν των κόμβων. Αποτελεί μία από τισ πιο ςθμαντικζσ κλάςεισ, κακϊσ όλεσ οι λειτουργίεσ των Δυαδικϊν Δζντρων Αναηιτθςθσ, αλλά και των AVL δζντρων βαςίηονται ςε ςυγκρίςεισ τιμϊν. Node.java: Αυτι θ κλάςθ αποτελεί υλοποίθςθ τθσ ImageObject και, όπωσ και θ πρόγονοσ τθσ, ςχεδιάηει αντικείμενα-κόμβουσ ςτο panel. Επίςθσ, περιζχει μεκόδουσ για τθ ςφγκριςθ τθσ τιμισ του ενόσ κόμβου με κάποιον άλλο (equals, greaterthan, lessthan) Αλγόρικμοσ 43

44 Οι κλάςεισ που ακολουκοφν, αν και άρρθκτα ςυνδεδεμζνεσ με το γραφικό κομμάτι τθσ εφαρμογισ, διακρίνονται κυρίωσ από τισ μεκόδουσ τουσ που κετοφν ςε εφαρμογι τον αλγόρικμο των Δυαδικϊν Δζντρων Αναηιτθςθσ. TreeNode.java: Κλάςθ απόγονοσ τθσ Node. Αποτελεί τθν κλάςθ ςτθν οποία κζλαμε να καταλιξουμε και θ οποία δθμιουργεί γραφικά αντικείμενα κόμβουσ ενόσ Δυαδικοφ Δζντρου Αναηιτθςθσ. Στθν κλάςθ ορίηεται πλθκϊρα μεκόδων, οι οποίεσ ζχουν να κάνουν με τισ ιδιότθτεσ των ΔΔΑ. Οι πιο ςθμαντικζσ είναι οι: getleastchild(): επιςτρζφει τον κόμβο με τθν μικρότερθ τιμι ςτο υποδζντρο που εξετάηεται. getgreatestchild(): επιςτρζφει τον κόμβο με τθ μεγαλφτερθ τιμι ςτο υποδζντρο που εξετάηεται. getleftchild/setleftchild(): επιςτρζφει/ορίηει το αριςτερό παιδί του κόμβου. getparent/setparent(): επιςτρζφει/ορίηει τον κόμβο-γονζα του κόμβου. getrank/setrank(): επιςτρζφει/ορίηει τον βακμό του κόμβου ςτο δζντρο. getrightchild/setrightchild(): επιςτρζφει/ορίηει το δεξιό παιδί του κόμβου. Πταν αναφερόμαςτε ςτον βακμό του κόμβου, εννοοφμε το φψοσ ςτο οποίο βρίςκεται ο κόμβοσ μζςα ςτο δζντρο. Αυτι θ τιμι παρουςιάηει χρθςιμότθτα κατά τθν υλοποίθςθ των AVL δζντρων. Εδϊ κρίνεται απαραίτθτο να αναφζρουμε τθν κλάςθ Function.java, θ οποία αποτελεί τθ βάςθ για κάκε λειτουργία των Δυαδικϊν Δζντρων Αναηιτθςθσ και AVL δζντρων, που κα αναπτφξουμε ςτθ ςυνζχεια. Αυτι θ abstract κλάςθ περιζχει δφο μεκόδουσ, τθν functiondone(), θ οποία ελζγχει αν εκτελζςτθκε θ πράξθ που τθσ ανατζκθκε, και τθν performfunction(), θ οποία πραγματοποιεί μια πράξθ. Σε αυτι τθ δομι κα βαςιςτοφμε για τον οριςμό όλων των κλάςεων που αφοροφν τθ διαχείριςθ των κόμβων και των γραφικϊν των δζντρων ςτθ ςυνζχεια. Ζτςι, υλοποιοφμε τισ κλάςεισ πράξεων και διαχείριςθσ γραφικϊν: MoveNode.java: χρθςιμοποιείται για τθν μετακίνθςθ ενόσ κόμβου από μία κζςθ ςε μία άλλθ, πάνω ςτο panel. Υπάρχουν τζςςερισ επιλογζσ, πάνωδεξιά, πάνω-αριςτερά, κάτω-δεξιά και κάτω-αριςτερά. Επίςθσ, ορίηονται μακθματικά όρια για το μζχρι ςε ποιο ςθμείο επιτρζπεται να μετακινθκεί ζνασ κόμβοσ. MoveSubtree.java: χρθςιμοποιείται για τθν μετακίνθςθ ενόσ υποδζντρου από μία κζςθ ςε μία άλλθ πάνων ςτο panel. Και εδϊ, υπάρχουν οι τζςςερισ επιλογζσ και οι φραγμοί ςτθν κίνθςθ, όπωσ ςτο MoveNode. Η διαφορά εδϊ 44

45 ζγκειται ςτο ότι μετακινοφμε τον κόμβο και όλο το υποδζντρο του, αναδρομικά κόμβο -κόμβο. AdjustTree.java: οι παραπάνω κλάςεισ δεν ορίηουν το ςθμείο ςτο οποίο πρζπει να μετακινθκεί το υποδζντρο. Η Function τθσ ςυγκεκριμζνθσ κλάςθσ ορίηει με μακθματικό τρόπο το νζο ςθμείο ςτο οποίο κα εγκαταςτακεί το υποδζντρο. SpreadTree.java: θ ςυγκεκριμζνθ κλάςθ ζχει ωσ ςκοπό τθν διαςτολι του γραφιματοσ, κάκε φορά που προςτίκεται ζνα νζο επιπεδο ςε αυτό. Κάκε φορά που προςκζτουμε ζναν κόμβο υπάρχει θ πικανότθτα το φψοσ του δζντρου να αυξθκεί. Κάκε φορά που ςυμβαίνει αυτό, θ μζκοδοσ Function τθσ SpreadTree, διαςτζλει το γράφθμα, απλϊνοντασ τα υποδζντρα του ςε νζα ςθμεία, κάνοντασ χριςθ τθσ MoveSubtree. Κατ αυτόν τον τρόπο, υπάρχει διαρκϊσ χϊροσ για τθν ειςαγωγι νζων κόμβων ςτο γράφθμα. ContractTree.java: θ ςυγκεκριμζνθ κλάςθ λειτουργεί με τον ακριβϊσ αντίκετο τρόπο από τθν SpreadTree. Μετά από τισ διαδεχόμενεσ διαγραφζσ κόμβων το δζντρο μπορεί να ζχει μειωμζνο φψοσ απ ότι αρχικά και προφανϊσ λιγότερουσ κόμβουσ. Συμπεραίνουμε, λοιπόν, ότι δεν υπάρχει λόγοσ το δζντρο να καταλαμβάνει τόςο μεγάλθ ζκταςθ ςτο panel, κυρίωσ για λόγουσ αιςκθτικισ, αλλά και για λόγουσ καλφτερθσ αντίλθψθσ του γραφιματοσ. Οπότε, με μετακινιςεισ των υποδζντρων μζςω τθσ MoveSubtree, ςυμπτφςουμε το δζντρο. Highlight.java: θ κλάςθ αυτι αναφζρεται ςτισ επόμενεσ τρείσ κλάςεισ και ωσ ςκοπό ζχει τθν εμφάνιςθ κφκλων ςτο υπόβακρο, με κζντρο του κφκλου το κζντρο του κόμβου ο οποίοσ εξετάηεται. Είπαμε και νωρίτερα, ότι τα Δυαδικά Δζντρα Αναηιτθςθσ βαςίηουν τισ πράξεισ τουσ ςτθν πράξθ τθσ αναηιτθςθσ, θ οποία αποτελείται από μία ςειρά ςυγκρίςεων των τιμϊν των κόμβων μεταξφ τουσ. Ο κφκλοσ εμφανίηεται, λοιπόν, πίςω από κάκε κόμβο, ο οποίοσ τθ δεδομζνθ χρονικι ςτιγμι ςυγκρίνεται με τθν τιμι που ζχει ειςάγει ο χριςτθσ για αναηιτθςθ, ειςαγωγι ι διαγραφι. Search.java: θ κλάςθ αυτι περιζχει τθν Function τθσ αναηιτθςθσ κόμβου ςτο δζντρο. Χρθςιμοποιεί τισ μεκόδουσ τθσ κλάςθσ TreeNode lessthan(), greaterthan(), getleftchild(), και getrightchild() για να εκτελεί ςυγκρίςεισ ανάμεςα ςτον τρζχον κόμβο και τθν τιμι που χοριγθςε ο χριςτθσ, και για να διατρζχει το δζντρο ανάλογα με το αποτζλεςμα των ςυγκρίςεων. Στο προθγοφμενο κεφάλαιο αναφζρεται με παράδειγμα πωσ εκτελείται μια τζτοια αναηιτθςθ και υπό ποιεσ ςυνκικεσ κεωρείται επιτυχθμζνθ. Επίςθσ, επιςτρατεφει τθν Fuction τθσ Hightlight για να επιςθμαίνεται ςε ποιον κόμβο εκτελεί ςυγκρίςεισ θ πράξθ τθσ αναηιτθςθσ, ανά πάςα ςτιγμι. Insert.java: πρόκειται για τθν κλάςθ που εκτελεί τθν πράξθ τθσ ειςαγωγισ νζου κόμβου. Αρχικά, διατρζχει το δζντρο με μία αναηιτθςθ. Στο ςθμείο που τερματίηει θ αναηιτθςθ, αν υπάρχει ιδθ κόμβοσ, τότε τερματίηει θ πράξθ, 45

46 κακϊσ δεν επιτρζπονται διπλότυπα ςτα Δυαδικά Δζντρα Αναηιτθςθσ. Αν δεν υπάρχει κόμβοσ, τότε τοποκετείται ο νζοσ κόμβοσ ςτθ κζςθ αυτι και τερματίηει θ πράξθ τθσ ειςαγωγισ. Χρθςιμοποιεί, επίςθσ, τθν Highlight για να είναι εμφανζσ ςε ποιον κόμβο βρίςκεται θ αναηιτθςθ τθσ κζςθσ του νζου κόμβου. Delete.java: πρόκειται για τθν κλάςθ που εκτελεί τθν πράξθ τθσ διαγραφισ κόμβου. Αρχικά, εκτελείται μία αναηιτθςθ για τθν εφρεςθ του κόμβου προσ διαγραφι. Αν δεν βρεκεί, τερματίηει θ πράξθ διαγραφισ ανεπιτυχϊσ. Αλλιϊσ, εξετάηει τον κόμβο και τον εντάςςει ςε μία από τισ τρεισ κατθγορίεσ: κόμβοσ-φφλλο, κόμβοσ με ζναν απόγονο, κόμβοσ με δφο απογόνουσ. Ανάλογα με τθν περίπτωςθ, και όπωσ αναλφςαμε ςτο προθγοφμενο κεφάλαιο, διαγράφει τον κόμβο και επιλζγεται αντικαταςτάτθσ του, όπου αυτό είναι απαραίτθτο. Μετά τθν διαγραφι και τθν τυχόν λιψθ τθσ κζςθσ του κόμβου από κάποιον απόγονο, τερματίηεται επιτυχϊσ θ πράξθ. Επίςθσ, χρθςιμοποιείται θ Highlight για να εντοπίηει ο χριςτθσ ςε ποιον κόμβο βρίςκεται θ πράξθ αναηιτθςθσ του κόμβου προσ διαγραφι. Αφοφ υλοποιιςαμε όλεσ τισ απαραίτθτεσ κλάςεισ για τθ δθμιουργία του panel, των αντικειμζνων για τα γραφικά, των κόμβων και των λειτουργιϊν των Δυαδικϊν Δζντρων Αναηιτθςθσ, ζμεινε μόνο ο οριςμόσ του ίδιου του δζντρου, το οποίο κα ορίηει τθν μορφι των κόμβων, των κφκλων που κα χρθςιμοποιθκοφν από το Highlight, αλλά και το μζγεκοσ του panel. BinaryTree.java: Η δομι του δζντρου. Ρεριζχει τθν περιγραφι των τελικϊν κόμβων του δζντρου και των κφκλων που κα χρθςιμοποιθκοφν ςτο υπόβακρο για επιςιμανςθ των βθμάτων που ακολουκοφνται κατά τισ βαςικζσ πράξεισ ςτο Δυαδικό Δζντρο Αναηιτθςθσ. Σθμαντικι είναι θ φπαρξθ τθσ μεκόδου init(), θ οποία «τρζχει» τον κϊδικα και δθμιουργεί το δζντρο, με το αρχείο BinaryTree.class, που προκφπτει μετά από τθν μεταγλϊττιςθ του πθγαίου κϊδικα, να αποτελεί το ίδιο το applet. Στθν init δίνεται θ τελικι μορφι του panel με τα απαραίτθτα κουμπιά, ζνα για κάκε λειτουργία του δζντρου. Στο επόμενο υποκεφάλαιο παρζχονται ςτιγμιότυπα από τθν εκτζλεςθ τθσ εφαρμογισ και επιςθμάνςεισ για τον τρόπο λειτουργίασ τθσ τιγμιότυπα Εκτζλεςθσ 46

47 Στο ςυγκεκριμζνο υποκεφάλαιο παρουςιάηουμε μερικά ςτιγμιότυπα από τθν λειτουργία των εφαρμογϊν που υλοποιικθκαν ςτο πλαίςιο αυτισ τθσ διπλωματικισ εργαςίασ. Στθν πρϊτθ εικόνα βλζπουμε το applet του Δυαδικοφ Δζντρου Αναηιτθςθσ, αμζςωσ μόλισ αυτό «φορτωκεί». Δεξιά υπάρχει ζνα textbox για τθν ειςαγωγι τιμισ κόμβου. Οι τιμζσ πρζπει να είναι ακζραιεσ και το πολφ διψιφιεσ. Εικόνα 1 Με τα κουμπιά Insert, Delete και Search εκτελοφμε τισ πράξεισ τθσ Ειςαγωγισ, Διαγραφισ και Αναηιτθςθσ κόμβου. Αναφζραμε παραπάνω πωσ κατά τθν εκτζλεςθ ςυγκρίςεων εμφανίηεται ζνασ κφκλοσ που επιςθμαίνει τον κόμβο ςτο οποίο βρίςκεται θ αναηιτθςθ. Αυτό φαίνεται ςτθν επόμενθ εικόνα, όπου ειςάγουμε ςτο δζντρο τον κόμβο με τιμι 2. 47

48 Εικόνα 2 Επίςθσ, ςτο κουτάκι κάτω φαίνεται και ποια είναι θ ςφγκριςθ που λαμβάνει χϊρα τθ δεδομζνθ χρονικι ςτιγμι. Ο κφκλοσ, όπωσ τονίηεται και από το κείμενο ςτο κάτω μζροσ του panel, βρίςκεται ςτον κόμβο 4, ο οποίοσ ςυγκρίνεται με τον κόμβο που ειςάγουμε, τον κόμβο 2. Στθν επόμενθ εικόνα φαίνεται και το αποτζλεςμα τθσ επιτυχθμζνθσ ειςαγωγισ. Εικόνα 3 48

49 Ππωσ αναγράφεται και ςτο κάτω μζροσ, ειςιχκει ο νζοσ κόμβοσ 2 ςαν αριςτερό παιδί του κόμβου 4. Σε περίπτωςθ που προςπακιςουμε να ειςάγουμε ξανά τον κόμβο 2, θ ειςαγωγι κα αποτφχει, αφοφ όπωσ τονίηει και το applet, ο κόμβοσ υπάρχει ιδθ ςτο δζντρο. Εικόνα 4 Με αντίςτοιχο τρόπο εκτελοφνται και οι υπόλοιπεσ πράξεισ και ο αναγνϊςτθσ καλείται να πειραματιςτεί πάνω ςτα Δυαδικά Δζντρα Αναηιτθςθσ, κάνοντασ χριςθ τθσ ςυγκεκριμζνθσ εφαρμογισ. 3.2 Τλοποίθςθ AVL Δζντρων Ειςαγωγι Η δόμθςθ και θ μεκοδολογία που ακολουκικθκε για τα Δυαδικά Δζντρα Αναηιτθςθσ, ςκοπό είχε τθν επαναχρθςιμοποίθςθ του κϊδικα που ςυγγράφθκε και για το AVL δζντρο. Αυτό κατζςτθ δυνατό με τθ ςυμπλιρωςθ των απαραίτθτων κλάςεων-μεκόδων, οι οποίεσ εφαρμόηουν τισ απαραίτθτεσ επαναηυγιςτικζσ πράξεισ ςτα AVL δζντρα, ϊςτε αυτό να διατθρεί μετά από κάποια ειςαγωγι ι διαγραφι ςτοιχείου του τθν ιςςοροπία ανάμεςα ςτα υποδζντρα του. Να παρατθριςουμε 49

50 ξανά, λοιπόν, ότι δεν απαιτικθκε θ ςυγγραφι νζου κϊδικα για το γραφικό μζροσ των AVL δζντρων, και ασ προχωριςουμε ςτθν περιγραφι των νζων κλάςεων του αλγορικμικοφ μζρουσ Αλγόρικμοσ Ππωσ αναφζραμε παραπάνω, για τθν υλοποίθςθ των AVL δζντρων χρειαηόμαςτε τον οριςμό νζων κλάςεων, που κα πραγματοποιοφν τθν διαφορετικι από τα Δυαδικά Δζντρα Αναηιτθςθσ πράξθ τθσ ειςαγωγισ και διαγραφισ κόμβου. Αρχικά, λοιπόν κα ορίςουμε ζναν νζο κόμβο, ειδικά για τα AVL δζντρα, κακϊσ και κλάςεισ-μεκόδουσ για τισ περιςτροφζσ των υποδζντρων. Αυτά κα ςυνοψιςκοφν ςτισ νζεσ κλάςεισ-μεκόδουσ ειςαγωγισ και διαγραφισ κόμβου, και τζλοσ όλεσ οι κλάςεισ αυτζσ κα αποτελζςουν τθ βάςθ για τθν τελικι δομι-applet του AVL δζντρου. Είναι πολφ ςθμαντικό να ποφμε ότι δεν υλοποιικθκε νζα κλάςθ για τθν αναηιτθςθ ςε AVL δζντρο, αφοφ θ αναηιτθςθ γίνεται με τον ίδιο τρόπο όπωσ και ςτα Δυαδικά Δζντρα Αναηιτθςθσ. Ασ αναφζρουμε τισ νζεσ δομζσ: AVLNode.java: αποτελεί επζκταςθ του κόμβου που χρθςιμοποιικθκε για τα ΔΔΑ. Αποτελείται από τα ίδια ςτοιχεία, με τθν διαφορά τθσ ειςαγωγισ του παράγοντα ιςορροπίασ (Balance Factor). Μζςω αυτοφ, μποροφμε να εντοπίηουμε τυχόν βεβαρυμζνα υποδζντρα ςτο AVL δζντρο και με επαναηυγιςτικζσ πράξεισ να διορκϊνουμε τθν κατάςταςθ αυτι. Η τιμι του παράγοντα ιςορροπίασ μεταβάλλεται από μεκόδουσ που ορίηονται ςτθν κλάςθ. RightRotation.java: θ κλάςθ αυτι περιζχει τον τρόπο με τον οποίο κα πραγματοποιθκεί μία απλι δεξιά περιςτροφι. Μετά το πζρασ τθσ περιςτροφισ ελζγχει αν αυτι εκτελζςτθκε ςωςτά. LeftRotation.java: θ κλάςθ αυτι περιζχει τον τρόπο με τον οποίο κα πραγματοποιθκεί μία απλι αριςτερι περιςτροφι. Μετά το πζρασ τθσ περιςτροφισ ελζγχει αν αυτι εκτελζςτθκε ςωςτά. AVLRightRotation.java: θ κλάςθ αυτι ορίηει μία μζκοδο Fuction, θ οποία εκτελεί μία δεξιά περιςτροφι ςε υποδζντρο ι μία δεξιά-αριςτερι περιςτροφι, όπου αυτό χρειάηεται, μετά από ζλεγχο του παράγοντα ιςορροπίασ. Επιςτρατεφονται οι κλάςεισ LeftRotation και RightRotation για τθν εκτζλεςθ των πράξεων αυτϊν. Επίςθσ, ελζγχεται αν ολοκλθρϊκθκε επιτυχϊσ θ περιςτροφι, με νζο ζλεγχο του παράγοντα ιςορροπίασ. AVLLeftRotation.java: ςε πλιρθ αναλογία με τθν παραπάνω κλάςθ, περιζχει μία Function, θ οποία εκτελεί μία αριςτερι περιςτροφι ςε υποδζντρο ι μία αριςτερι-δεξιά περιςτροφθ, όπου αυτό χρειάηεται, μετά από ζλεγχο του 50

51 παράγοντα ιςορροπίασ. Επιςτρατεφονται οι κλάςεισ LeftRotation και RightRotation για τθν εκτζλεςθ των πράξεων αυτϊν. Επίςθσ, ελζγχεται αν ολοκλθρϊκθκε επιτυχϊσ θ περιςτροφι, με νζο ζλεγχο του παράγοντα ιςορροπίασ. AVLInsert.java: πρόκειται για τθν κλάςθ που εκτελεί τθν πράξθ τθσ ειςαγωγισ. Ρραγματοποιεί, πρϊτα, μία αναηιτθςθ ςτο δζντρο για τον κόμβο που ο χριςτθσ επικυμεί να ειςάγει. Αν υπάρχει ιδθ, θ διεργαςία τερματίηει κακϊσ δεν επιτρζπονται τα διπλότυπα. Αλλιϊσ, ςτθ κζςθ που τερματίηει θ αναηιτθςθ, ειςάγεται ο νζοσ κόμβοσ τφπου AVLNode. Στθ ςυνζχεια, ελζγχεται ο παράγοντασ ιςορροπίασ του νζου δζντρου και αν υπερβαίνει το επιτρεπτό όριο θ τιμι του, τότε επιςτρατεφονται οι επαναηυγιςτικζσ πράξεισ AVLRightRotation και AVLLeftRotation, ανάλογα με το ποιο υποδζντρο είναι βεβαρυμζνο, και το το επαναφζρουν ςε ιςορροπία. AVLDelete.java: πρόκειται για τθν κλάςθ που εκτελεί τθν πράξθ τθσ διαγραφισ κόμβου από το δζντρο. Και εδϊ, πραγματοποιείται πρϊτα μία αναηιτθςθ για τθν εφρεςθ του προσ διαγραφι κόμβου. Αν δεν βρεκεί, θ πράξθ τερματίηει ανεπιτυχϊσ. Αλλιϊσ, διακρίνουμε τρεισ περιπτϊςεισ. Ο κόμβοσ είναι φφλλο, ζχει ζναν απόγονο ι ζχει δφο απογόνουσ. Στθν πρϊτθ περίπτωςθ ο κόμβοσ διαγράφεται και ακολουκοφν επαναηυγιςτικζσ πράξεισ, αν ο παράγοντασ ιςορροπίασ ζχει υπερβεί τα επιτρεπτά όρια. Στισ άλλεσ δφο περιπτϊςεισ, ο κόμβοσ διαγράφεται και τθ κζςθ του παίρνει ζνασ κόμβοσ από τουσ απογόνουσ του, ο οποίοσ ανιχνεφεται με το τρόπο που περιγράψαμε ςτο προθγοφμενο κεφάλαιο. Αφοφ ο κόμβοσ-απόγονοσ του διεγραμζνου κόμβου λάβει τθ νζα του κζςθ, ελζγχεται ο παράγοντασ ιςορροπίασ και εκτελοφνται επαναηυγιςτικζσ πράξεισ, αν ζχει υπερβεί τα επιτρεπτά ςε αυτόν όρια. AVLTree.java: αποτελεί επζκταςθ τθσ κλάςθσ BinaryTree και κλθρονομεί όλεσ τισ ρυκμίςεισ που κάναμε ςτα Δυαδικά Δζντρα Αναηιτθςθσ, όςον αφορά τθν εμφάνιςθ των κόμβων και των κφκλων επιςιμανςθσ (Highlight). Ρεριζχει, επίςθσ, μία μζκοδο init(), θ οποία «τρζχει» τον κϊδικα και δθμιουργεί το δζντρο, με το αρχείο AVLTree.class, που προκφπτει μετά από τθν μεταγλϊττιςθ του πθγαίου κϊδικα, να αποτελεί το ίδιο το applet. Στθν init δίνεται θ τελικι μορφι του panel με τα απαραίτθτα κουμπιά, ζνα για κάκε λειτουργία του δζντρου. Με τον τρόπο αυτό ολοκλθρϊνεται και θ δθμιουργία τθσ εφαρμογισ που ςχεδιάηει AVL δζντρα. Είναι εφκολο να διαπιςτϊςουμε τθν ευκολία με τθν οποία το Δυαδικό Δζντρο Αναηιτθςθσ αποτζλεςε τθ βάςθ για το AVL δζντρο, και αυτό δεν οφείλεται ςε τίποτα άλλο πζρα από τισ ςθμαντικζσ ομοιότθτεσ που χαρακτθρίηουν τουσ δφο αυτοφσ τφπουσ δενδρικϊν δομϊν 51

52 3.2.2 τιγμιότυπα Εκτζλεςθσ Κακϊσ, όπωσ αναφζραμε παραπάνω, για τθν υλοποίθςθ τθσ εφαρμογισ για τα AVL δζντρα χρθςιμοποιικθκε το γραφικό κομμάτι κϊδικα που χρθςιμοποιικθκε για τα Δυαδικά Δζντρα Αναηιτθςθσ, ο τρόποσ λειτουργίασ τθσ νζασ εφαρμογισ είναι ακριβϊσ ίδιοσ με τθν προθγοφμενθ εφαρμογι. Η μοναδικι διαφορά ζγκειται ςτισ επαναηυγιςτικζσ πράξεισ, οι οποίεσ μεταβάλλουν με κινιςεισ το AVL δζντρο. Επειδι, όμωσ, οι κινιςεισ αυτζσ δφςκολα αποτυπϊνονται ςε εικόνεσ, παραπζμπουμε τον αναγνϊςτθ ςτο υποκεφάλαιο για τον τρόπο χριςθσ τθσ εφαρμογισ, και ςτθν ίδια τθν εφαρμογι για καλφτερθ κατανόθςθ των επαναηυγιςτικϊν κινιςεων που λαμβάνουν χϊρα ςτα AVL δζντρα. 3.3 Τλοποίθςθ Red-Black Δζντρων Ειςαγωγι Μολονότι τα Red-Black δζντρα είναι και αυτά Δυαδικά Δζντρα Αναηιτθςθσ, με τθ δυνατότθτα εφαρμογισ επαναηυγιςτικϊν πράξεων, όπωσ τα AVL δζντρα, ο χρωματιςμόσ των κόμβων τουσ, αλλά κυρίωσ θ πράξεισ επαναχρωματιςμοφ ι ανταλλαγισ χρωμάτων ανάμεςά τουσ, κατζςτθςε αρκετά δφςκολθ τθν υλοποίθςι τουσ, κάνοντασ χριςθ των ιδθ υπάρχουςων κλάςεων γραφικϊν, που χρθςιμοποιικθκαν για τα ΔΔΑ και τα AVL δζντρα. Ρροτιμικθκε, λοιπόν, μία πιο παραδοςιακι προςζγγιςθ, από τθν υλοποίθςθ του αλγορίκμου προσ τθν μετζπειτα υλοποίθςθ του γραφικοφ τμιματοσ. Αυτό, βζβαια, μασ επζτρεψε τθν δθμιουργία μίασ πιο αποδοτικισ ωσ προσ το χρόνο εφαρμογισ, αλλά πιο φτωχισ, όςον αφορά τθν καλαιςκθςία. Στισ επόμενεσ ενότθτεσ, κα αναλφςουμε τισ κλάςεισ και τισ μεκόδουσ που υλοποιικθκαν για τθν applet-εφαρμογι Αλγόρικμοσ 52

53 Αρχικά, κρίνεται κρίςιμοσ ο οριςμόσ των κλάςεων που κα μασ βοθκιςουν ςτον ζλεγχο των ςυμβάντων και κυρίωσ των δεδομζνων που ειςάγει ο χριςτθσ ςτθν εφαρμογι, όπωσ αρικμθτικά δεδομζνα για απόδοςθ τιμϊν ςε κόμβουσ, αλλά και θ διάδραςι του με το περιβάλλον, με πατιματα κουμπιϊν και κινιςεισ του κζρςορα του ποντικιοφ μζςα ςτα όρια του panel. Ορίηουμε λοιπόν τισ εξισ κλάςεισ: TokenObject.java: πρόκειται για ζνα interface, το οποίο κα χρθςιμοποιθκεί από τθν επόμενθ κλάςθ, για τθν δθμιουργία αντικειμζνων. Στα αντικείμενα αυτά αποκθκεφονται οι εντολζσ που δίνει μζςω πλθκτρολογίου ι ποντικιοφ ο χριςτθσ ςτθν εφαρμογι. Stream.java: θ κλάςθ αυτι δθμιουργεί threads, μζςω των οποίων διοχετεφονται τα αντικείμενα τφπου TokenObject ςτθν εφαρμογι προσ εκτζλεςθ. Αποτελεί υλοποίθςθ του interface Runnable, λόγω του οποίου το thread εκτελείται μζχρι να «διαβαςτοφν» όλα τα αντικείμενα που αυτό περιζχει. Στθ ςυνζχεια, δθμιουργοφμε τθν κλάςθ RedBlack.java, θ οποία περιζχει όλα τα απαραίτθτα ςτοιχεία για τθν υλοποίθςθ του applet. Στισ υποκλάςεισ τθσ περιγράφεται θ δομι των αντικειμζνων τφπου κόμβου, και για αλγορικμικι χριςθ και για χριςθ γραφικϊν, περιγράφονται οι βαςικζσ λειτουργίεσ ενόσ Red-Black δζντρου, με τισ υποκλάςεισ για ειςαγωγι και διαγραφι κόμβου, αλλά και για επαναηυγιςτικζσ πράξεισ και επαναχρωματιςμοφσ κόμβων, και, τζλοσ, ορίηεται θ βαςικι υποκλάςθ RedBlack, θ οποία υλοποιεί όλεσ αυτζσ τισ υποκλάςεισ και δθμιουργεί το applet. Ραρακάτω, παρακζτουμε τισ ςθμαντικότερεσ από αυτζσ τισ υποκλάςεισ, ξεκινϊντασ από τισ πιο βαςικζσ δομζσ και κατεβαίνοντασ προσ τισ πιο ςφνκετεσ: TreeObject: πρόκειται για το interface ςτο οποίο κα βαςιςτεί θ υλοποίθςθ κάκε αντικειμζνου προσ αποκικευςθ. IntObject: αποτελεί μία υλοποίθςθ του προθγοφμενου interface για τθν δθμιουργία και αποκικευςθ αντικειμζνων ακεραίου αρικμοφ. RBTree_inorder_class: το ςυγκεκριμζνο interface προτυποποιεί τθ μζκοδο για τθ ςφγκριςθ τιμϊν ανάμεςα ςε δφο αντικείμενα, προκειμζνου να διαπιςτωκεί ποιο είναι χαμθλότερθσ τάξθσ. IntInorderObject: υλοποιεί τθν προθγοφμενθ κλάςθ για ςφγκριςθ αντικειμζνων ακεραίου αρικμοφ. RBTree_compare_class: νζο interface, παρόμοιο με το RBTree_inorder_class. Συγκεκριμζνα, ςυγκρίνει διαδοχικζσ τιμζσ κόμβων με μία αποκθκευμζνθ τιμι. Θα χρθςιμοποιθκεί για τθν εκτζλεςθ ςυγκρίςεων, με τθν τιμι του κόμβου που κα κζςει ο χριςτθσ, κατά τθ διάςχιςθ του δζντρου. IntCompare: υλοποίθςθ του προθγοφμενου interface, για ςυγκρίςεισ μεταξφ κόμβων που περιζχουν ακζραιεσ τιμζσ. 53

54 Η πιο ςθμαντικι δομι ςτθν υλοποίθςθ του Red-Black δζντρου είναι ςίγουρα θ κλάςθ που υλοποιεί τουσ κόμβουσ του δζντρου. Η κλάςθ αυτι είναι θ Dot, και υλοποιεί το interface TreeObject. Στα χαρακτθριςτικά των κόμβων που καταςκευάηονται από αυτιν περιλαμβάνονται μεταβλθτζσ χρϊματοσ, για κόκκινο ι μαφρο ανάλογα με τθ κζςθ του κόμβου, μεταβλθτι ακζραιασ τιμισ, ςτθν οποία αποκθκεφεται θ τιμι του κόμβου, μεταβλθτι επιπζδου, που μασ δείχνει ςε ποιο επίπεδο του δζντρου βρίςκεται ο κόμβοσ, κακϊσ και μία μεταβλθτι για κάκε απόγονο, θ οποία δείχνει ποιοσ είναι ο αριςτερόσ και ο δεξιόσ απόγονοσ του κόμβου. Τζλοσ, υπάρχει και θ ζνδειξθ sentinel για τον κόμβο, που τον εντάςςει ςε μία μεταβαλλόμενθ κατάςταςθ, όταν ο κόμβοσ δεν ζχει ειςαχκεί ακόμα ςτο δζντρο και αναηθτά τθν κζςθ του ςε αυτό. Ο κόμβοσ ςε αυτιν τθν περίπτωςθ κατευκφνεται ςταδιακά προσ τθ κζςθ του με εντολι του χριςτθ (μζςω του κουμπιοφ Next Step ) και ζχει μπλε χρϊμα. Ραρακάτω, αναφζρουμε μερικζσ από τισ ςθμαντικότερεσ μεκόδουσ που ορίηονται για τθ διαχείριςθ των κόμβων τφπου Dot: getprev(): επιςτρζφει τον προθγοφμενο κόμβο, κόμβο-γονζα. getnext(): επιςτρζφει τον επόμενο κόμβο, κόμβο απόγονο. Αν ζχει δφο απογόνουσ τότε επιςτρζφει τον αριςτερό και ςτθ ςυνζχεια τον δεξιό. rightrotate(): εκτελεί ζνα leftside_rightrotate ι ζνα rightside_rightrotate, ανάλογα με το ςε ποιο υποδζντρο του κόμβου βριςκόμαςτε, ςτο αριςτερό ι ςτο δεξί, αντίςτοιχα. leftrotate(): εκτελεί ζνα rightside_leftrotate ι ζνα leftside_leftrotate, ανάλογα με το ςε ποιο υποδζντρο του κόμβου βριςκόμαςτε, ςτο αριςτερό ι ςτο δεξί, αντίςτοιχα. leftside_leftrotate(): εκτελεί μία αριςτερι περιςτροφι ςτο αριςτερό υποδζντρο του κόμβου. leftside_rightrotate(): εκτελεί μία δεξιά περιςτροφι ςτο αριςτερό υποδζντρο του κόμβου. rightside_leftrotate(): εκτελεί μία αριςτερι περιςτροφι ςτο δεξιό υποδζντρο του κόμβου. rightside_rightrotate(): εκτελεί μία δεξιά περιςτροφι ςτο δεξιό υποδζντρο του κόμβου. Στθ ςυνζχεια, ορίηουμε κλάςεισ-μεκόδουσ για τισ βαςικζσ λειτουργίεσ των Red-Black δζντρων. Αυτζσ αποτελοφνται από τθν Αdd, θ οποία χρθςιμοποιείται για τθν ειςαγωγι νζου κόμβου, τθν Balance, θ οποία μετά από τθν ειςαγωγι κόμβου επαναφζρει το δζντρο ςε ηυγιςμζνθ κατάςταςθ που πλθροί τισ προχποκζςεισ των δζντρων, τθν PruneLeaf, θ οποία επιςτρατεφεται για τθν διαγραφι κόμβων-φφλλων από το δζντρο, και τζλοσ τθν Prune, θ οποία χρθςιμοποιείται για τθν διαγραφι κόμβου που δεν είναι φφλλο. Στισ δθλϊςεισ αυτϊν των κλάςεων γίνεται αντιλθπτι θ χριςθ και θ επίλυςθ όλων των περιπτϊςεων που περιγράψαμε ςτον αλγόρικμο αυτϊν των δζντρων ςτο προθγοφμενο κεφάλαιο. 54

55 Αφοφ υλοποιιςαμε όλεσ τισ βαςικζσ δομζσ και μεκόδουσ που χρειαηόμαςτε για τθν λειτουργία ενόσ Red-Black δζντρου, προχωράμε ςτθν δόμθςθ του ίδιου του δζντρου με τθν κλάςθ RBTree. Ειςάγουμε, λοιπόν, ςτθν κλάςθ αντικείμενα κόμβων (Dot) και ορίηουμε και μεκόδουσ διάςχιςθσ του δζντρου και επιςτροφισ του επιπζδου του κάκε κόμβου. Επίςθσ, για τθ δόμθςθ του δζντρου, ορίηουμε και μία μζκοδο τοποκζτθςθσ του κάκε κόμβου ςτθ ςωςτι κζςθ, από τθ ρίηα μζχρι τα φφλλα, τθν setdots(). Με το δζντρο ζτοιμο ζμεινε θ κλάςθ που κα δθμιουργεί το panel, ςτο οποίο κα ςχεδιαςτεί θ απεικόνιςθ του δζντρου. Ορίηουμε τθν κλάςθ DotPanel θ οποία δθμιουργεί το panel, ορίηει τθν μορφι που κα ζχουν οι κόμβοι, εντοπίηει με MouseListeners τισ κινιςεισ και τισ εντολζσ που δίνονται από τον χριςτθ μζςω ποντικιοφ, αλλάηει τα χρϊματα των κόμβων και επιτρζπει τθν επιλογι κόμβων από τον χριςτθ με το ποντίκι. Δθμιουργοφμε, δθλαδι ζνα άκρωσ δυναμικό περιβάλλον. Τζλοσ, όλεσ οι προαναφερκιςεσ κλάςεισ και μζκοδοι χρθςιμοποιοφνται για τθν δθμιουργία τθσ κλάςθσ-applet, τθν οποία ονοματίηουμε RedBlack. Εδϊ αρχικοποιείται το panel και λαμβάνει τθν τελικι του μορφι με τα κουμπιά χειριςμοφ τθσ εφαρμογισ και δθμιουργοφνται, κατόπιν εντολισ του χριςτθ, κόμβοι και κατά ςυνζπεια ζνα Red-Black δζντρο, ςτο οποίο ο χριςτθσ μπορεί να ειςάγει ι να διαγράψει κόμβουσ, παρακολουκϊντασ τθν πορεία των πράξεων αυτϊν. Επίςθσ, προςτζκθκε και μία επιπλζον δυνατότθτα, ο χριςτθσ να μπορεί να ορίηει τθν ταχφτθτα με τθν οποία εκτελοφνται οι πράξεισ και να επιλζγει πότε κα εκτελεςτεί το επόμενο βιμα του αλγορίκμου, είτε ςτθν πράξθ τθσ ειςαγωγισ, είτε ςτθν πράξθ τθσ διαγραφισ κόμβου. Στο επόμενο υποκεφάλαιο παρζχονται ςτιγμιότυπα από τθν εκτζλεςθ τθσ εφαρμογισ και επιςθμάνςεισ για τον τρόπο λειτουργίασ τθσ τιγμιότυπα Εκτζλεςθσ Στο υποκεφάλαιο αυτό κα εξετάςουμε τον τρόπο λειτουργίασ τθσ εφαρμογισ που υλοποιικθκε για τα Red-Black δζντρα. Στθν πρϊτθ εικόνα βλεπουμε τθν αρχικι κατάςταςθ του applet. Στο κάτω μζροσ αντοπίηονται τα κουμπιά για τθν ειςαγωγι και διαγραφι νζου κόμβου, ζνα checkbox για τθν επιλογι ταχφτθτασ με τθν οποία κα εκτελοφνται οι πράξεισ, και τα δφο κουμπιά Restart και Undo, που επανεκινοφν το applet και ακυρϊνουν τθν τελευταία πράξθ που επζλεξε ο χριςτθσ. Σθμαντικι είναι θ φπαρξθ του κουμπιοφ Next Step, το οποίο μασ προχωρά ςτα βιματα του αλγορίκμου, με τθν ακολουκία που αυτά εκτελοφνται. 55

56 Εικόνα 1 Στθ δεφτερθ εικόνα, βλζπουμε ζνα δζντρο με ζξι κόμβουσ και τθν ειςαγωγι ενόσ ζβδομου, με τιμι 14. Ο μπλε είναι ο κόμβοσ προσ ειςαγωγι και με ςυγκρίςεισ ζχει φτάςει ςτον κόμβο 12, από όπου κα κατεβεί ακόμα πιο κάτω και κα πάρει τθ κζςθ του ωσ παιδί του 12, αμζςωσ μόλισ ο χριςτθσ πατιςει το κουμπί Next Step. Θα ακολουκιςει επαναχρωματιςμόσ κόμβων και κα προκφψει το δζντρο τισ τρίτθσ εικόνασ. Και εδϊ, προκειμζνου ο αναγνϊςτθσ να διαπιςτϊςει πωσ λαμβάνουν χϊρα οι περιςτροφζσ και οι αλλαγζσ χρωμάτων, καλείται να «τρζξει» τθν εφαρμογι και να πειραματιςτεί με διαδοχικζσ ειςαγωγζσ και διαγραφζσ κόμβων. 56

57 Εικόνα 2 Εικόνα 3 57

58 Κεφάλαιο 4. φνοψθ και Μελλοντικι Μελζτθ Στα προθγοφμενα κεφάλαια, παρουςιάςαμε τρεισ δενδρικζσ δομζσ για τθν αποκικευςθ και οργάνωςθ δεδομζνων, τα Δυαδικά Δζντρα Αναηιτθςθσ και δφο επεκτάςεισ τουσ, τα AVL δζντρα και τα Red-Black δζντρα. Μελετικθκε ο τρόποσ με τον οποίο δομοφνται, κακϊσ και το πϊσ εκτελοφμε χειριςμοφσ και πράξεισ πάνων τουσ, προκειμζνου να διαχειριςτοφμε τουσ κόμβουσ, ςτουσ οποίουσ αποκθκεφονται τα δεδομζνα. Για τα δζντρα αυτϊν των προδιαγραφϊν αναπτφχκθκαν και εφαρμογζσ-applets, ϊςτε ο αναγνϊςτθσ να μπορεί να μελετιςει οπτικά τθ δόμθςθ αυτϊν των δζντρων, αλλά και τθν επίδραςθ που ζχουν ςτισ δομζσ οι πράξεισ ειςαγωγισ και διαγραφισ, όπωσ και οι επαναηυγιςτικζσ πράξεισ, οι οποίεσ διατθροφν τθν ιςορροπία ανάμεςα ςτα υποδζντρα τθσ ςυνολικισ δενδρικισ δομισ. Ρροκειμζνου ο αναγνϊςτθσ να κατανοιςει καλφτερα τθ μζκοδο που ακολουκικθκε για τθν υλοποίθςθ των εφαρμογϊν, δίδονται επιγραμματικά οι κλάςεισ που υλοποιικθκαν, κακϊσ και μία περιγραφι τθσ λειτουργίασ τθσ κάκε κλάςθσ και αρκετϊν κρίςιμων μεκόδων τθσ. Χρθςιμοποιϊντασ, λοιπόν, ο αναγνϊςτθσ το κείμενο ωσ οδθγό, μπορεί να κατευκυνκεί ςτον πθγαίο κϊδικα των εφαρμογϊν και να κατανοιςει πλιρωσ τθν πορεία τθσ υλοποίθςθσ. Τζλοσ, όςον αφορά τθ ςφνοψθ των παραπάνω, παρουςιάηουμε, με τθ χριςθ εικόνων-ςτιγμιοτφπων, τον τρόπο λειτουργίασ των εφαρμογϊν που αναπτφχκθκαν και προτρζπουμε τον αναγνϊςτθ να προβεί ςτθν άμεςθ χριςθ τουσ, για τθν κατανόθςθ του τρόπου λειτουργίασ τουσ, αλλά και των δενδρικϊν δομϊν, που είναι και ο απϊτεροσ ςκοπόσ τθσ διπλωματικισ αυτισ εργαςίασ. Επίςθσ, για τον αναγνϊςτθ που μελζτθςε τισ παραπάνω δομζσ και επικυμεί να επεκτείνει το γνωςτικό του πεδίο, αξίηει να αναφζρουμε ότι θ ζρευνα για πιο αποδοτικζσ δενδρικζσ δομζσ ςυνεχίηεται, με όλο και πιο αποδοτικζσ υλοποιιςεισ να εμφανίηονται. Τζτοιεσ είναι τα Splay Δζντρα και τα KD-Δζντρα. Συγκεκριμζνα, τα Splay δζντρα είναι μια κατθγορία αυτοηυγιηόμενων δυαδικϊν δζντρων αναηιτθςθσ, με τθν πρόςκετθ δυνατότθτα να προςπελαφνουν ιδιαίτερα γριγορα ςτοιχεία τα οποία προςπελάςκθκαν πρόςφατα. Μάλιςτα, τα Splay δζντρα επιδεικνφουν καλφτερεσ αποδόςεισ για τισ περιςςότερεσ ακολουκίεσ πράξεων από άλλα δυαδικά δζντρα, ακόμα και όταν είναι άγνωςτο το πρότυπο τθσ ακολουκίασ των πράξεων αυτϊν. Τζλοσ, να αναφζρουμε για τα Splay δζντρα, ότι το όνομα τουσ προκφπτει από τθν λειτουργία splaying, θ οποία επαναηυγίηει το δζντρο μετά από κάκε πράξθ, ακόμα και μετά τθν αναηιτθςθ ςτοιχείου, φζρνοντασ τα πιο πρόςφατα ςτοιχεία κοντά ςτθ ρίηα. Πςον αφορά τα KD-δζντρα, πρόκειται για δζντρα K διαςτάςεων. Είναι δομζσ δεδομζνων που εφαρμόηουν διαχωριςμό διαςτάςεων, προκειμζνου να 58

59 οργανϊςουν ζνα ςφνολο ςθμείων ςε ζναν χϊρο k διαςτάςεων. Τα KD-δζντρα βρίςκουν εφαρμογι ςε αναηθτιςεισ πολυδιάςτατων κλειδιϊν, κακϊσ και ςε αναηθτιςεισ πλθςιεςτζρων γειτόνων. Αξίηει να αναφζρουμε ότι τα Splay δζντρα βρίςκουν εφαρμογι ςε διαχείριςθ δυναμικϊν μνιμεων. Απεικόνιςθ KD-Δζντρου : Εδϊ παρουςιάηεται ζνα 3d-δζντρο Ρροτρζπουμε λοιπόν τον αναγνϊςτθ, εφόςον επικυμεί να επεκτακεί ςτο αντικείμενο των δενδρικϊν δομϊν, να μελετιςει τισ προαναφερκιςεσ δομζσ και να προβεί ςτθν υλοποίθςθ των εφαρμογϊν τουσ, για τθν καλφτερθ κατανόθςθ του τπόπου λειτουργίασ και τθσ αποδοτικότθτάσ τουσ, ςε ςχζςθ με τισ προγενζςτερεσ δομζσ. 59

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων

Ιςοηυγιςμζνα δζντρα και Β- δζντρα. Δομζσ Δεδομζνων Ιςοηυγιςμζνα δζντρα και Β- δζντρα Δομζσ Δεδομζνων Περιεχόμενα Ιςοηυγιςμζνα δζντρα Μζκοδοι ιςοηφγιςθσ δζντρων Μονι Περιςτροφι Διπλι Περιςτροφι Β - δζντρα Ιςοηυγιςμζνα δζντρα Η μορφι ενόσ δυαδικοφ δζντρου

Διαβάστε περισσότερα

Δζντρα. Δομζσ Δεδομζνων

Δζντρα. Δομζσ Δεδομζνων Δζντρα Δομζσ Δεδομζνων Περιεχόμενα Δζντρα Γενικζσ ζννοιεσ Κόμβοσ ενόσ δζντρου Δυαδικά δζντρα αναηιτθςθσ Αναηιτθςθ Κόμβου Ειςαγωγι ι δθμιουργία κόμβου Δζντρα Γενικζσ ζννοιεσ Οι προθγοφμενεσ δομζσ που εξετάςτθκαν

Διαβάστε περισσότερα

Γράφοι. Δομζσ Δεδομζνων Διάλεξθ 9

Γράφοι. Δομζσ Δεδομζνων Διάλεξθ 9 Γράφοι Δομζσ Δεδομζνων Διάλεξθ 9 Περιεχόμενα Γράφοι Γενικζσ ζννοιεσ, οριςμόσ, κτλ Παραδείγματα Γράφων Αποκικευςθ Γράφων Βαςικοί Οριςμοί Γράφοι και Δζντρα Διάςχιςθ Γράφων Περιοδεφων Πωλθτισ Γράφοι Οριςμόσ:

Διαβάστε περισσότερα

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ

Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό. μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ Πόςο εκτατό μπορεί να είναι ζνα μη εκτατό νήμα και πόςο φυςικό μπορεί να είναι ζνα μηχανικό ςτερεό. Συνιςταμζνη δφναμη versus «κατανεμημζνησ» δφναμησ Για τθν ανάδειξθ του κζματοσ κα λφνουμε κάποια προβλιματα

Διαβάστε περισσότερα

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι

ΘΥ101: Ειςαγωγι ςτθν Πλθροφορικι Παράςταςη κινητήσ υποδιαςτολήσ ςφμφωνα με το πρότυπο ΙΕΕΕ Δρ. Χρήστος Ηλιούδης το πρότυπο ΙΕΕΕ 754 ζχει χρθςιμοποιθκεί ευρζωσ ςε πραγματικοφσ υπολογιςτζσ. Το πρότυπο αυτό κακορίηει δφο βαςικζσ μορφζσ κινθτισ

Διαβάστε περισσότερα

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο του Άβακα Αυτζσ οι οδθγίεσ ζχουν ςτόχο λοιπόν να βοθκιςουν τουσ εκπαιδευτικοφσ να καταςκευάςουν τισ δικζσ τουσ δραςτθριότθτεσ με το μοντζλο του Άβακα. Παρουςίαςη

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ. Φιλιοποφλου Ειρινθ ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΣΗ ΝΟΗΛΕΤΣΙΚΗ Φιλιοποφλου Ειρινθ Προςθήκη νζων πεδίων Ασ υποκζςουμε ότι μετά τθ δθμιουργία του πίνακα αντιλαμβανόμαςτε ότι ζχουμε ξεχάςει κάποια πεδία. Είναι ζνα πρόβλθμα το οποίο

Διαβάστε περισσότερα

Αςκιςεισ ςε (i) Δομζσ Ευρετθρίων και Οργάνωςθ Αρχείων (ii) Κανονικοποίθςθ

Αςκιςεισ ςε (i) Δομζσ Ευρετθρίων και Οργάνωςθ Αρχείων (ii) Κανονικοποίθςθ Αςκιςεισ ςε (i) Δομζσ Ευρετθρίων και Οργάνωςθ Αρχείων (ii) Κανονικοποίθςθ Δεκζμβριοσ 2016 Άςκθςθ 1 Θεωρείςτε ότι κζλουμε να διαγράψουμε τθν τιμι 43 ςτο Β+ δζντρο τθσ Εικόνασ 1. Η διαγραφι αυτι προκαλεί

Διαβάστε περισσότερα

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2

Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2 Παράςταςη ακεραίων ςτο ςυςτημα ςυμπλήρωμα ωσ προσ 2 Δρ. Χρήζηος Ηλιούδης Μθ Προςθμαςμζνοι Ακζραιοι Εφαρμογζσ (ςε οποιαδιποτε περίπτωςθ δεν χρειάηονται αρνθτικοί αρικμοί) Καταμζτρθςθ. Διευκυνςιοδότθςθ.

Διαβάστε περισσότερα

Ιδιότθτεσ πεδίων Γενικζσ.

Ιδιότθτεσ πεδίων Γενικζσ. Οι ιδιότθτεσ των πεδίων διαφζρουν ανάλογα με τον τφπο δεδομζνων που επιλζγουμε. Ορίηονται ςτο κάτω μζροσ του παρακφρου ςχεδίαςθσ του πίνακα, ςτθν καρτζλα Γενικζσ. Ιδιότθτα: Μζγεκοσ πεδίου (Field size)

Διαβάστε περισσότερα

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν:

Ένα πρόβλθμα γραμμικοφ προγραμματιςμοφ βρίςκεται ςτθν κανονικι μορφι όταν: Μζθοδος Simplex Η πλζον γνωςτι και περιςςότερο χρθςιμοποιουμζνθ μζκοδοσ για τθν επίλυςθ ενόσ γενικοφ προβλιματοσ γραμμικοφ προγραμματιςμοφ, είναι θ μζκοδοσ Simplex θ οποία αναπτφχκθκε από τον George Dantzig.

Διαβάστε περισσότερα

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f.

ΑΝΣΙΣΡΟΦΗ ΤΝΑΡΣΗΗ. f y x y f A αντιςτοιχίηεται ςτο μοναδικό x A για το οποίο. Παρατθριςεισ Ιδιότθτεσ τθσ αντίςτροφθσ ςυνάρτθςθσ 1. Η. f A τθσ f. .. Αντίςτροφθ ςυνάρτθςθ Ζςτω θ ςυνάρτθςθ : A θ οποία είναι " ". Τότε ορίηεται μια νζα ςυνάρτθςθ, θ μζςω τθσ οποίασ το κάκε ιςχφει y. : A με Η νζα αυτι ςυνάρτθςθ λζγεται αντίςτροφθ τθσ. y y A αντιςτοιχίηεται

Διαβάστε περισσότερα

Βάςεισ Δεδομζνων Ι. Ενότητα 12: Κανονικοποίηςη. Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ

Βάςεισ Δεδομζνων Ι. Ενότητα 12: Κανονικοποίηςη. Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ Βάςεισ Δεδομζνων Ι Ενότητα 12: Κανονικοποίηςη Δρ. Τςιμπίρθσ Αλκιβιάδθσ Τμιμα Μθχανικών Πλθροφορικισ ΤΕ Άδειεσ Χρήςησ Το παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χριςθσ Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ςυςτιματα γραμμικϊν εξιςϊςεων

ςυςτιματα γραμμικϊν εξιςϊςεων κεφάλαιο 7 Α ςυςτιματα γραμμικϊν εξιςϊςεων αςικζσ ζννοιεσ Γραμμικά, λζγονται τα ςυςτιματα εξιςϊςεων ςτα οποία οι άγνωςτοι εμφανίηονται ςτθν πρϊτθ δφναμθ. Σα γραμμικά ςυςτιματα με δφο εξιςϊςεισ και δφο

Διαβάστε περισσότερα

Παράςταςη ςυμπλήρωμα ωσ προσ 1

Παράςταςη ςυμπλήρωμα ωσ προσ 1 Δρ. Χρήστος Ηλιούδης Θζματα διάλεξησ ΣΤ1 Προςθεςη αφαίρεςη ςτο ΣΤ1 2 ή ΣΤ1 Ονομάηουμε ςυμπλιρωμα ωσ προσ μειωμζνθ βάςθ R ενόσ μθ προςθμαςμζνου αρικμοφ Χ = ( Χ θ-1 Χ θ-2... Χ 0 ) R ζναν άλλον αρικμό Χ'

Διαβάστε περισσότερα

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium V Σ ΤΑΤ Ι Σ Τ Ι Κ Η i Statisticum collegium V Στατιςτική Συμπεραςματολογία Ι Σημειακζσ Εκτιμήςεισ Διαςτήματα Εμπιςτοςφνησ Στατιςτική Συμπεραςματολογία (Statistical Inference) Το πεδίο τθσ Στατιςτικισ Συμπεραςματολογία,

Διαβάστε περισσότερα

Λαμβάνοντασ υπόψη ότι κατά την πρόςθεςη δφο δυαδικϊν ψηφίων ιςχφει: Κρατοφμενο

Λαμβάνοντασ υπόψη ότι κατά την πρόςθεςη δφο δυαδικϊν ψηφίων ιςχφει: Κρατοφμενο Αριθμητικά κυκλώματα Ημιαθροιστής (Half Adder) Ο ημιαθροιςτήσ είναι ζνα κφκλωμα το οποίο προςθζτει δφο δυαδικά ψηφία (bits) και δίνει ωσ αποτζλεςμα το άθροιςμά τουσ και το κρατοφμενο. Με βάςη αυτή την

Διαβάστε περισσότερα

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο

8 τριγωνομετρία. βαςικζσ ζννοιεσ. γ ςφω. εφω και γ. κεφάλαιο κεφάλαιο 8 τριγωνομετρία Α βαςικζσ ζννοιεσ τθν τριγωνομετρία χρθςιμοποιοφμε τουσ τριγωνομετρικοφσ αρικμοφσ, οι οποίοι ορίηονται ωσ εξισ: θμω = απζναντι κάκετθ πλευρά υποτείνουςα Γ ςυνω = εφω = προςκείμενθ

Διαβάστε περισσότερα

Δομζσ Δεδομζνων Πίνακεσ

Δομζσ Δεδομζνων Πίνακεσ Δομζσ Δεδομζνων Πίνακεσ Διάλεξθ 2 Περιεχόμενα Πίνακεσ: Οριςμοί, Γενικζσ ζννοιεσ Αποκικευςθ πινάκων Ειδικζσ μορφζσ πινάκων Αλγόρικμοι Αναηιτθςθσ Σειριακι Αναηιτθςθ Δυαδικι Αναηιτθςθ Οριςμοί, Γενικζσ ζννοιεσ

Διαβάστε περισσότερα

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ

Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ Οδηγίεσ προσ τουσ εκπαιδευτικοφσ για το μοντζλο τησ Αριθμογραμμήσ Αυτζσ οι οδθγίεσ ζχουν ςτόχο να βοθκιςουν τουσ εκπαιδευτικοφσ να καταςκευάςουν τισ δικζσ τουσ δραςτθριότθτεσ με το μοντζλο τθσ Αρικμογραμμισ.

Διαβάστε περισσότερα

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Ιοφνιοσ 2013 Περιεχόμενα: Ειςαγωγή... 3 1.Εθνικό Τυπογραφείο... 3 1.1. Είςοδοσ... 3 1.2. Αρχική Οθόνη... 4 1.3. Διεκπεραίωςη αίτηςησ...

Διαβάστε περισσότερα

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό.

x n D 2 ENCODER m - σε n (m 2 n ) x 1 Παραδείγματα κωδικοποιθτϊν είναι ο κωδικοποιθτισ οκταδικοφ ςε δυαδικό και ο κωδικοποιθτισ BCD ςε δυαδικό. Κωδικοποιητές Ο κωδικοποιθτισ (nor) είναι ζνα κφκλωμα το οποίο διακζτει n γραμμζσ εξόδου και το πολφ μζχρι m = 2 n γραμμζσ ειςόδου και (m 2 n ). Οι ζξοδοι παράγουν τθν κατάλλθλθ λζξθ ενόσ δυαδικοφ κϊδικα

Διαβάστε περισσότερα

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Εθνικό Τυπογραφείο) Πάτρα, 2013 Περιεχόμενα: Ειςαγωγή... 4 1. Επιμελητήριο... Error! Bookmark not defined. 1.1 Διαχειριςτήσ Αιτήςεων Επιμελητηρίου...

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων

Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων Ανάπτυξη Εφαρμογών με Σχεςιακέσ Βάςεισ Δεδομένων Δρ. Θεοδώρου Παύλοσ theodorou@uoc.gr Περιεχόμενα Τι είναι οι Βάςεισ Δεδομζνων (DataBases) Τι είναι Σφςτθμα Διαχείριςθσ Βάςεων Δεδομζνων (DBMS) Οι Στόχοι

Διαβάστε περισσότερα

Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων

Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων Σχεδίαςη Σφγχρονων Ακολουθιακών Κυκλωμάτων Πίνακεσ Διζγερςησ των FF Όπωσ είδαμε κατά τθ μελζτθ των FF, οι χαρακτθριςτικοί πίνακεσ δίνουν τθν τιμι τθσ επόμενθσ κατάςταςθσ κάκε FF ωσ ςυνάρτθςθ τθσ παροφςασ

Διαβάστε περισσότερα

Μθχανολογικό Σχζδιο, από τθ κεωρία ςτο πρακτζο Χριςτοσ Καμποφρθσ, Κων/νοσ Βαταβάλθσ

Μθχανολογικό Σχζδιο, από τθ κεωρία ςτο πρακτζο Χριςτοσ Καμποφρθσ, Κων/νοσ Βαταβάλθσ Λεπτζσ Αξονικζσ γραμμζσ χρθςιμοποιοφνται για να δθλϊςουν τθν φπαρξθ ςυμμετρίασ του αντικειμζνου. Υπενκυμίηουμε ότι οι άξονεσ ςυμμετρίασ χρθςιμοποιοφνται μόνον όταν το ίδιο το εξάρτθμα είναι πραγματικά

Διαβάστε περισσότερα

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 7 θ Διάλεξθ Διαχείριςθ Μνιμθσ Μζροσ Γ ελιδοποίθςθ (1/10) Σόςο θ κατάτμθςθ διαμεριςμάτων ςτακεροφ μεγζκουσ όςο και θ κατάτμθςθ διαμεριςμάτων μεταβλθτοφ και άνιςου μεγζκουσ δεν κάνουν

Διαβάστε περισσότερα

Αυτόνομοι Πράκτορες. Αναφορά Εργασίας Εξαμήνου. Το αστέρι του Aibo και τα κόκαλα του

Αυτόνομοι Πράκτορες. Αναφορά Εργασίας Εξαμήνου. Το αστέρι του Aibo και τα κόκαλα του Αυτόνομοι Πράκτορες Αναφορά Εργασίας Εξαμήνου Το αστέρι του Aibo και τα κόκαλα του Jaohar Osman Η πρόταςθ εργαςίασ που ζκανα είναι το παρακάτω κείμενο : - ξ Aibo αγαπάει πάρα πξλύ ρα κόκαλα και πάμρα ρα

Διαβάστε περισσότερα

ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ

ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ ΦΥΣΙΚΗ vs ΒΙΟΛΟΓΙΑ ΒΙΟΛΟΓΟΙ ΓΙΑ ΦΥΣΙΚΟΥΣ «Προτείνω να αναπτφξουμε πρώτα αυτό που κα μποροφςε να ζχει τον τίτλο: «ιδζεσ ενόσ απλοϊκοφ φυςικοφ για τουσ οργανιςμοφσ». Κοντολογίσ, τισ ιδζεσ που κα μποροφςαν

Διαβάστε περισσότερα

ΦΥΕ 14 ΑΚΑΔ. ΕΤΟΣ Η ΕΡΓΑΣΙΑ. Ημερομηνία παράδοςησ: 12 Νοεμβρίου (Όλεσ οι αςκιςεισ βακμολογοφνται ιςοτίμωσ με 10 μονάδεσ θ κάκε μία)

ΦΥΕ 14 ΑΚΑΔ. ΕΤΟΣ Η ΕΡΓΑΣΙΑ. Ημερομηνία παράδοςησ: 12 Νοεμβρίου (Όλεσ οι αςκιςεισ βακμολογοφνται ιςοτίμωσ με 10 μονάδεσ θ κάκε μία) ΦΥΕ ΑΚΑΔ. ΕΤΟΣ 007-008 Η ΕΡΓΑΣΙΑ Ημερομηνία παράδοςησ: Νοεμβρίου 007 (Όλεσ οι αςκιςεισ βακμολογοφνται ιςοτίμωσ με 0 μονάδεσ θ κάκε μία) Άςκηςη α) Να υπολογιςκεί θ προβολι του πάνω ςτο διάνυςμα όταν: (.

Διαβάστε περισσότερα

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες)

Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες) Εγχειρίδιο Χρήςησ Προςωποποιημζνων Υπηρεςιών Γ.Ε.ΜΗ. (Περιφέρειες) Ιούνιοσ 2013 Περιεχόμενα: Ειςαγωγή... 3 1. Περιφζρεια... 3 1.1 Διαχειριςτήσ Αιτήςεων Περιφζρειασ... 3 1.1.1. Είςοδοσ... 3 1.1.2. Αρχική

Διαβάστε περισσότερα

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7)

Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων. (v.1.0.7) Διαδικαςία Διαχείριςθσ Στθλϊν Βιβλίου Εςόδων - Εξόδων (v.1.0.7) 1 Περίληψη Το ςυγκεκριμζνο εγχειρίδιο δθμιουργικθκε για να βοθκιςει τθν κατανόθςθ τθσ διαδικαςίασ διαχείριςθσ ςτθλών βιβλίου Εςόδων - Εξόδων.

Διαβάστε περισσότερα

Μεθολογία αςκιςεων αραίωςησ και ανάμειξησ διαλυμάτων (με τθν ίδια δ. ουςία).

Μεθολογία αςκιςεων αραίωςησ και ανάμειξησ διαλυμάτων (με τθν ίδια δ. ουςία). Μεθολογία αςκιςεων αραίωςησ και ανάμειξησ διαλυμάτων (με τθν ίδια δ. ουςία). Από τθν τράπεηα κεμάτων Α_ΧΘΜ_0_20651 Διακζτουμε υδατικό διάλυμα (Δ1) KOH 0,1 Μ. α)να υπολογίςετε τθν % w/v περιεκτικότθτα του

Διαβάστε περισσότερα

HY437 Αλγόριθμοι CAD

HY437 Αλγόριθμοι CAD HY437 Αλγόριθμοι CAD Διδάςκων: Χ. Σωτηρίου http://inf-server.inf.uth.gr/courses/ce437/ 1 Περιεχόμενα Κανονικζσ Μορφζσ Οριςμόσ των Δυαδικών Διαγραμμάτων Αποφάςεων (Binary Decision Diagrams BDDs) Αναπαράςταςθ

Διαβάστε περισσότερα

ΠΡΟΦΟΡΑ ΖΗΣΗΗ ΚΡΑΣΘΚΗ ΠΑΡΕΜΒΑΗ

ΠΡΟΦΟΡΑ ΖΗΣΗΗ ΚΡΑΣΘΚΗ ΠΑΡΕΜΒΑΗ ΠΡΟΦΟΡΑ ΖΗΣΗΗ ΚΡΑΣΘΚΗ ΠΑΡΕΜΒΑΗ 1 Ειςαγωγι: Οι αγοραίεσ δυνάµεισ τθσ προςφοράσ και ηιτθςθσ Προσφορά και Ζήτηση είναι οι πιο γνωςτοί οικονοµικοί όροι. Η λειτουργία των αγορϊν προςδιορίηεται από δφο βαςικζσ

Διαβάστε περισσότερα

Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ

Διαχείριςθ του φακζλου public_html ςτο ΠΣΔ Διαχείριςθ του φακζλου "public_html" ςτο ΠΣΔ Οι παρακάτω οδθγίεσ αφοροφν το χριςτθ webdipe. Για διαφορετικό λογαριαςμό χρθςιμοποιιςτε κάκε φορά το αντίςτοιχο όνομα χριςτθ. = πατάμε αριςτερό κλικ ςτο Επιςκεφκείτε

Διαβάστε περισσότερα

Εργαςτιριο Βάςεων Δεδομζνων

Εργαςτιριο Βάςεων Δεδομζνων Εργαςτιριο Βάςεων Δεδομζνων 2010-2011 Μάθημα 1 ο 1 Ε. Σςαμούρα Σμήμα Πληροφορικήσ ΑΠΘ Σκοπόσ του 1 ου εργαςτθριακοφ μακιματοσ Σκοπόσ του πρϊτου εργαςτθριακοφ μακιματοσ είναι να μελετιςουμε ερωτιματα επιλογισ

Διαβάστε περισσότερα

Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα:

Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα: 2 ο Σετ Ασκήσεων Δομές Δεδομένων - Πίνακες Άςκθςθ 1θ: Να γραφεί αλγόρικμοσ που κα δθμιουργεί με τθ βοικεια διπλοφ επαναλθπτικοφ βρόχου, τον ακόλουκο διςδιάςτατο πίνακα: 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8

Διαβάστε περισσότερα

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1

Πολυπλέκτες. 0 x 0 F = S x 0 + Sx 1 1 x 1 Πολυπλέκτες Ο πολυπλζκτθσ (multipleer - ) είναι ζνα ςυνδυαςτικό κφκλωμα που επιλζγει δυαδικι πλθροφορία μιασ από πολλζσ γραμμζσ ειςόδου και τθν κατευκφνει ςε μια και μοναδικι γραμμι εξόδου. Η επιλογι μιασ

Διαβάστε περισσότερα

Πλαγιογώνια Συςτήματα Συντεταγμζνων Γιϊργοσ Καςαπίδθσ

Πλαγιογώνια Συςτήματα Συντεταγμζνων Γιϊργοσ Καςαπίδθσ Πρόλογοσ το άρκρο αυτό κα δοφμε πωσ διαμορφϊνονται κάποιεσ ζννοιεσ όπωσ το εςωτερικό γινόμενο διανυςμάτων, οι ςυνκικεσ κακετότθτασ και παραλλθλίασ διανυςμάτων και ευκειϊν, ο ςυντελεςτισ διευκφνςεωσ διανφςματοσ

Διαβάστε περισσότερα

3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ

3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ 3 θ διάλεξθ Επανάλθψθ, Επιςκόπθςθ των βαςικϊν γνϊςεων τθσ Ψθφιακισ Σχεδίαςθσ 1 2 3 4 5 6 7 Παραπάνω φαίνεται θ χαρακτθριςτικι καμπφλθ μετάβαςθσ δυναμικοφ (voltage transfer characteristic) για ζναν αντιςτροφζα,

Διαβάστε περισσότερα

Γενικά Μαθηματικά ΙΙ

Γενικά Μαθηματικά ΙΙ ΑΡΙΣΟΣΕΛΕΙΟ ΠΑΝΕΠΙΣΗΜΙΟ ΘΕΑΛΟΝΙΚΗ ΑΝΟΙΚΣΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΣΑ Γενικά Μαθηματικά ΙΙ Ενότητα 4 η : Όρια και Συνζχεια Λουκάσ Βλάχοσ Κακθγθτισ Αςτροφυςικισ Άδειεσ Χρήςησ Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Joomla! - User Guide

Joomla! - User Guide Joomla! - User Guide τελευταία ανανέωση: 10/10/2013 από την ICAP WEB Solutions 1 Η καταςκευι τθσ δυναμικισ ςασ ιςτοςελίδασ ζχει ολοκλθρωκεί και μπορείτε πλζον να προχωριςετε ςε αλλαγζσ ι προςκικεσ όςον

Διαβάστε περισσότερα

Ζρευνα ικανοποίθςθσ τουριςτϊν

Ζρευνα ικανοποίθςθσ τουριςτϊν Ζρευνα ικανοποίθςθσ τουριςτϊν Ammon Ovis_Ζρευνα ικανοποίθςθσ τουριςτϊν_ Ραδιοςτακμόσ Flash 96 1 ΣΤΟΙΧΕΙΑ ΔΕΙΓΜΑΤΟΣ Σο δείγμα περιλαμβάνει 332 τουρίςτεσ από 5 διαφορετικζσ θπείρουσ. Οι περιςςότεροι εξ αυτϊν

Διαβάστε περισσότερα

Διαχείριςη Αριθμοδεικτών (v.1.0.7)

Διαχείριςη Αριθμοδεικτών (v.1.0.7) Διαχείριςη Αριθμοδεικτών (v.1.0.7) Περιεχόμενα 1. Μενοφ... 5 1.1 Αρικμοδείκτεσ.... 5 1.1.1 Δθμιουργία Αρικμοδείκτθ... 6 1.1.2 Αντιγραφι Αρικμοδείκτθ... 11 2. Παράμετροι... 12 2.1.1 Κατθγορίεσ Αρικμοδεικτϊν...

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΤΟΤ. Φιλιοποφλου Ειρινθ

ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΤΟΤ. Φιλιοποφλου Ειρινθ ΕΦΑΡΜΟΓΕ ΒΑΕΩΝ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΤΟΤ Φιλιοποφλου Ειρινθ Βάςθ Δεδομζνων Βάζη δεδομένων είναι μια οπγανωμένη ζςλλογή πληποθοπιών οι οποίερ πποζδιοπίζοςν ένα ζςγκεκπιμένο θέμα.χπηζιμεύοςν ζηην Σςλλογή

Διαβάστε περισσότερα

Εφδοξοσ+ Συνδεκείτε ςτθν Εφαρμογι Φοιτθτϊν και μεταβείτε ςτθ ςελίδα «Ανταλλαγι Βιβλίων (Εφδοξοσ+)».

Εφδοξοσ+ Συνδεκείτε ςτθν Εφαρμογι Φοιτθτϊν και μεταβείτε ςτθ ςελίδα «Ανταλλαγι Βιβλίων (Εφδοξοσ+)». Εφδοξοσ+ Διαθζτοντασ βιβλία μζςω του «Εφδοξοσ+» Συνδεκείτε ςτθν Εφαρμογι Φοιτθτϊν και μεταβείτε ςτθ ςελίδα «Ανταλλαγι Βιβλίων (Εφδοξοσ+)». Εμφανίηεται θ λίςτα με όλα ςασ τα βιβλία. Από εδϊ μπορείτε: -

Διαβάστε περισσότερα

Ποσοτικές Μέθοδοι Δρ. Χάϊδω Δριτσάκη

Ποσοτικές Μέθοδοι Δρ. Χάϊδω Δριτσάκη Ποσοτικές Μέθοδοι Δρ. Χάϊδω Δριτσάκη MSc Τραπεζική & Χρηματοοικονομική Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Western Macedonia University of Applied Sciences Κοίλα Κοζάνης 50100 Kozani GR

Διαβάστε περισσότερα

ΚΥΚΛΩΜΑΤΑ VLSI. Ασκήσεις Ι. Γ. Τσιατούχας. Πανεπιςτιμιο Ιωαννίνων. Τμιμα Μθχανικϊν Η/Υ και Πλθροφορικισ 8/11/18

ΚΥΚΛΩΜΑΤΑ VLSI. Ασκήσεις Ι. Γ. Τσιατούχας. Πανεπιςτιμιο Ιωαννίνων. Τμιμα Μθχανικϊν Η/Υ και Πλθροφορικισ 8/11/18 ΚΥΚΛΩΜΑΤΑ LSI Πανεπιςτιμιο Ιωαννίνων Ασκήσεις Ι Τμιμα Μθχανικϊν Η/Υ και Πλθροφορικισ 8/11/18 Γ. Τσιατούχας Άσκηση 1 1) Σχεδιάςτε τισ ςφνκετεσ COS λογικζσ πφλεσ (ςε επίπεδο τρανηίςτορ) που υλοποιοφν τισ

Διαβάστε περισσότερα

Δίκτυα Υπολογιςτϊν 2-Rooftop Networking Project

Δίκτυα Υπολογιςτϊν 2-Rooftop Networking Project Ονοματεπώνυμα και Α.Μ. μελών ομάδασ Κοφινάσ Νίκοσ ΑΜ:2007030111 Πζρροσ Ιωακείμ ΑΜ:2007030085 Site survey Τα κτιρια τθσ επιλογισ μασ αποτελοφν το κτιριο επιςτθμϊν και το κτιριο ςτο οποίο ςτεγάηεται θ λζςχθ

Διαβάστε περισσότερα

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου

ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου Ενότητα 1β: Ισότητα - Εξίσωση ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΥΠΗΡΕΣΙΑ ΑΝΑΠΤΥΞΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ ΜΑΘΗΜΑΤΙΚΑ Α Γυμνασίου Ενότητα 1β: Ισότητα - Εξίσωση Συγγραφή:

Διαβάστε περισσότερα

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 3: Εργονομία ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ Εργονομία, ωςτι ςτάςθ εργαςίασ, Εικονοςτοιχείο (pixel), Ανάλυςθ οκόνθσ (resolution), Μζγεκοσ οκόνθσ Ποιεσ επιπτϊςεισ μπορεί να ζχει θ πολφωρθ χριςθ του υπολογιςτι ςτθν

Διαβάστε περισσότερα

Πωσ δθμιουργώ φακζλουσ;

Πωσ δθμιουργώ φακζλουσ; Πωσ δθμιουργώ φακζλουσ; Για να μπορζςετε να δθμιουργιςετε φακζλουσ ςτο χαρτοφυλάκιό ςασ ςτο Mahara κα πρζπει να μπείτε ςτο ςφςτθμα αφοφ πατιςετε πάνω ςτο ςφνδεςμο Mahara profiles από οποιοδιποτε ςελίδα

Διαβάστε περισσότερα

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ

ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ ΗΛΕΚΣΡΟΝΙΚΗ ΤΠΗΡΕΙΑ ΑΠΟΚΣΗΗ ΑΚΑΔΗΜΑΪΚΗ ΣΑΤΣΟΣΗΣΑ Οδηγός Χρήσης Εφαρμογής Ελέγχου Προσφορών Αφοφ πιςτοποιθκεί ο λογαριαςμόσ που δθμιουργιςατε ςτο πρόγραμμα ωσ Πάροχοσ Προςφορϊν, κα λάβετε ζνα e-mail με

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου

ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ. Ειρινθ Φιλιοποφλου ΕΦΑΡΜΟΓΖσ ΒΆΕΩΝ ΔΕΔΟΜΖΝΩΝ ΚΑΙ ΔΙΑΔΙΚΣΥΟΤ Ειρινθ Φιλιοποφλου Ειςαγωγι Ο Παγκόςμιοσ Ιςτόσ (World Wide Web - WWW) ι πιο απλά Ιςτόσ (Web) είναι μία αρχιτεκτονικι για τθν προςπζλαςθ διαςυνδεδεμζνων εγγράφων

Διαβάστε περισσότερα

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8

Δείκτεσ Διαχείριςθ Μνιμθσ. Βαγγζλθσ Οικονόμου Διάλεξθ 8 Δείκτεσ Διαχείριςθ Μνιμθσ Βαγγζλθσ Οικονόμου Διάλεξθ 8 Δείκτεσ Κάκε μεταβλθτι ςχετίηεται με μία κζςθ ςτθν κφρια μνιμθ του υπολογιςτι. Κάκε κζςθ ςτθ μνιμθ ζχει τθ δικι τθσ ξεχωριςτι διεφκυνςθ. Με άμεςθ

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι

ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι ΕΝΟΤΗΤΑ 2: ΤΟ ΛΟΓΙΣΜΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΚΕΦΑΛΑΙΟ 5: Γνωριμία με το λογιςμικό του υπολογιςτι Λογιςμικό (Software), Πρόγραμμα (Programme ι Program), Προγραμματιςτισ (Programmer), Λειτουργικό Σφςτθμα (Operating

Διαβάστε περισσότερα

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα

Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα Δομζσ Αφαιρετικότθτα ςτα Δεδομζνα Περιεχόμενα Ζννοια δομισ Οριςμόσ δομισ Διλωςθ μεταβλθτϊν Απόδοςθ Αρχικϊν τιμϊν Αναφορά ςτα μζλθ μιασ δομισ Ζνκεςθ Δομισ Πίνακεσ Δομϊν Η ζννοια τθσ δομισ Χρθςιμοποιιςαμε

Διαβάστε περισσότερα

Αναφορά Εργαςίασ Nim Game

Αναφορά Εργαςίασ Nim Game Αναφορά Εργαςίασ Nim Game Αυτόνομοι Πράκτορεσ (ΠΛΗ 513) Βαγενάσ Σωτιριοσ 2010030034 Ειςαγωγή Για τθν εργαςία του μακιματοσ αςχολικθκα με το board game Nim. Ρρόκειται για ζνα παιχνίδι δφο παιχτϊν (2-player

Διαβάστε περισσότερα

HY437 Αλγόριθμοι CAD

HY437 Αλγόριθμοι CAD HY437 Αλγόριθμοι CAD Διδάςκων: Χ. Σωτηρίου http://inf-server.inf.uth.gr/courses/ce437/ 1 ΗΥ437 - Πολυεπίπεδθ Λογικι Απλοποίθςθ με Περιεχόμενα Είδθ Αδιάφορων Τιμϊν ςε Πολφ-επίπεδα Δυαδικά Δίκτυα Αδιάφορεσ

Διαβάστε περισσότερα

ΑΔΡΑΝΕΙΑ ΜΑΘΗΣΕ: ΜΑΡΙΑΝΝΑ ΠΑΡΑΘΤΡΑ ΑΝΑΣΑΗ ΠΟΤΛΙΟ ΠΑΝΑΓΙΩΣΗ ΠΡΟΔΡΟΜΟΤ ΑΝΑΣΑΙΑ ΠΟΛΤΧΡΟΝΙΑΔΟΤ ΙΩΑΝΝΑ ΠΕΝΓΚΟΤ

ΑΔΡΑΝΕΙΑ ΜΑΘΗΣΕ: ΜΑΡΙΑΝΝΑ ΠΑΡΑΘΤΡΑ ΑΝΑΣΑΗ ΠΟΤΛΙΟ ΠΑΝΑΓΙΩΣΗ ΠΡΟΔΡΟΜΟΤ ΑΝΑΣΑΙΑ ΠΟΛΤΧΡΟΝΙΑΔΟΤ ΙΩΑΝΝΑ ΠΕΝΓΚΟΤ ΑΔΡΑΝΕΙΑ ΜΑΘΗΣΕ: ΜΑΡΙΑΝΝΑ ΠΑΡΑΘΤΡΑ ΑΝΑΣΑΗ ΠΟΤΛΙΟ ΠΑΝΑΓΙΩΣΗ ΠΡΟΔΡΟΜΟΤ ΑΝΑΣΑΙΑ ΠΟΛΤΧΡΟΝΙΑΔΟΤ ΙΩΑΝΝΑ ΠΕΝΓΚΟΤ Οριςμόσ: Με τον όρο αδράνεια ςτθ Φυςικι ονομάηεται θ χαρακτθριςτικι ιδιότθτα των ςωμάτων να αντιςτζκονται

Διαβάστε περισσότερα

Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων

Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων Ενότητα 3: υςτιματα ουρϊν αναμονισ Κακθγθτισ Γιάννθσ Γιαννίκοσ χολι Οργάνωςθσ και Διοίκθςθσ Επιχειριςεων Σμιμα Διοίκθςθσ Επιχειριςεων Σκοποί ενότητασ Μελζτθ ςυςτθμάτων

Διαβάστε περισσότερα

Ραραμετροποίθςθ ειςαγωγισ δεδομζνων περιόδων

Ραραμετροποίθςθ ειςαγωγισ δεδομζνων περιόδων Παραμετροποίηςη ειςαγωγήσ δεδομζνων περιόδων 1 1 Περίληψη Το παρόν εγχειρίδιο παρουςιάηει αναλυτικά τθν παραμετροποίθςθ τθσ ειςαγωγισ αποτελεςμάτων μιςκοδοτικϊν περιόδων. 2 2 Περιεχόμενα 1 Ρερίλθψθ...2

Διαβάστε περισσότερα

Ανάλυςη κλειςτϊν δικτφων

Ανάλυςη κλειςτϊν δικτφων Ανάλυςη κλειςτϊν δικτφων Θ ανάλυςθ κλειςτϊν δικτφων ςτθρίηεται ςτθ διατιρθςθ τθσ μάηασ και τθσ ενζργειασ. Σε ζνα τυπικό βρόχο ABCDA υπάρχει ζνασ αρικμόσ από κόμβουσ, εδϊ A,B,C,D, ςτουσ οποίουσ ιςχφει θ

Διαβάστε περισσότερα

Γενικόσ Δείκτησ Τιμών Καταναλωτή (ΔΤΚ) Γενικοφ ΔΤΚ. Εκπαίδευςη Αλκοολοφχα ποτά & Καπνό Χρηςιμοποιήςαμε τα λογιςμικά Excel, PowerPoint & Piktochart.

Γενικόσ Δείκτησ Τιμών Καταναλωτή (ΔΤΚ) Γενικοφ ΔΤΚ. Εκπαίδευςη Αλκοολοφχα ποτά & Καπνό Χρηςιμοποιήςαμε τα λογιςμικά Excel, PowerPoint & Piktochart. Τι είναι ο Γενικόσ Δείκτησ Τιμών Καταναλωτή (ΔΤΚ); Ροιεσ από τισ ομάδεσ που μελετά ο δείκτθσ εμφανίηουν τουσ υψθλότερουσ, ποιεσ τουσ χαμθλότερουσ μζςουσ ετιςιουσ υποδείκτεσ τθν περίοδο 2008-2018; Οι υποδείκτεσ

Διαβάστε περισσότερα

ΕΡΓΑΣΗΡΙΟ ΕΦΑΡΜΟΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΡΓΑΣΗΡΙΟ ΕΦΑΡΜΟΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ Στο εργαςτιριο αυτό κα δοφμε πωσ μποροφμε να προςομοιϊςουμε μια κίνθςθ χωρίσ τθ χριςθ εξειδικευμζνων εργαλείων, παρά μόνο μζςω ενόσ προγράμματοσ λογιςτικϊν φφλλων, όπωσ είναι το Calc και το Excel. Τα δφο

Διαβάστε περισσότερα

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox

Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox Megatron ERP Βάςη δεδομζνων Π/Φ - κατηγοριοποίηςη Databox 03 05 ΙΛΤΔΑ ΠΛΗΡΟΦΟΡΙΚΗ Α.Ε. αρμά Ιηαμπζλλα Βαρλάμθσ Νίκοσ Ειςαγωγι... 1 Σι είναι το Databox...... 1 Πότε ανανεϊνεται...... 1 Μπορεί να εφαρμοςτεί

Διαβάστε περισσότερα

Ακολουκιακά Λογικά Κυκλώματα

Ακολουκιακά Λογικά Κυκλώματα Ακολουκιακά Λογικά Κυκλώματα Τα ψθφιακά λογικά κυκλϊματα που μελετιςαμε μζχρι τϊρα ιταν ςυνδυαςτικά κυκλϊματα. Στα ςυνδυαςτικά κυκλϊματα οι ζξοδοι ςε κάκε χρονικι ςτιγμι εξαρτϊνται αποκλειςτικά και μόνο

Διαβάστε περισσότερα

Θεςιακά ςυςτιματα αρίκμθςθσ

Θεςιακά ςυςτιματα αρίκμθςθσ Θεςιακά ςυςτιματα αρίκμθςθσ Δρ. Χρήστος Ηλιούδης αρικμθτικό ςφςτθμα αρίκμθςθσ (Number System) Αξία (value) παράςταςθ Οι αξίεσ (π.χ. το βάροσ μιασ ποςότθτασ μιλων) μποροφν να παραςτακοφν με πολλοφσ τρόπουσ

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι

ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ. ΚΕΦΑΛΑΙΟ 5: Αρχεία - Φάκελοι ΕΝΟΤΗΤΑ 2: ΕΠΙΚΟΙΝΩΝΩ ΜΕ ΤΟΝ ΥΠΟΛΟΓΙΣΤΗ Αρχείο (File) Φάκελοσ (Folder) Διαχειριςτισ Αρχείων (File Manager) Τφποι Αρχείων Σε τι εξυπθρετεί θ οργάνωςθ των εργαςιϊν μασ ςτουσ υπολογιςτζσ; Πϊσ κα οργανϊςουμε

Διαβάστε περισσότερα

1. Κατέβαςμα του VirtueMart

1. Κατέβαςμα του VirtueMart 1. Κατέβαςμα του VirtueMart Αρχικό βήμα (προαιρετικό). Κατζβαςμα και αποςυμπίεςη αρχείων VirtueMart ΠΡΟΟΧΗ. Αυτό το βήμα να παρακαμφθεί ςτο εργαςτήριο. Τα αρχεία θα ςασ δοθοφν από τουσ καθηγητζσ ςασ. Οι

Διαβάστε περισσότερα

Διαδικαζία Διατείριζης Εκηύπωζης Ιζοζσγίοσ Γενικού - Αναλσηικών Καθολικών. (v )

Διαδικαζία Διατείριζης Εκηύπωζης Ιζοζσγίοσ Γενικού - Αναλσηικών Καθολικών. (v ) Διαδικαζία Διατείριζης Εκηύπωζης Ιζοζσγίοσ Γενικού - Αναλσηικών Καθολικών (v.1. 0.7) 1 Περίλθψθ Το ςυγκεκριμζνο εγχειρίδιο δθμιουργικθκε για να βοθκιςει τθν κατανόθςθ τθσ διαδικαςίασ διαχείριςθσ Εκτφπωςθσ

Διαβάστε περισσότερα

17. Πολυδιάςτατοι πίνακεσ

17. Πολυδιάςτατοι πίνακεσ Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 17. Πολυδιάςτατοι πίνακεσ Ιωάννθσ Κατάκθσ Πολυδιάςτατοι πίνακεσ o Μζχρι τϊρα μιλοφςαμε για μονοδιάςτατουσ πίνακεσ ι int age[5]= 31,28,31,30,31; o Για παράλλθλουσ

Διαβάστε περισσότερα

Διαδικασία με βήματα. 1. Αλλάηω το χρϊμα ςκθνικοφ ςε γκρι(#3333).

Διαδικασία με βήματα. 1. Αλλάηω το χρϊμα ςκθνικοφ ςε γκρι(#3333). Διαδικασία με βήματα 1. Αλλάηω το χρϊμα ςκθνικοφ ςε γκρι(#3333). 2. Διαλζγω το Polystar Tool. Από τα Options κάνω το Polygon ςε Star και τα υπόλοιπα όπωσ είναι. Ζωγραφίηω ζνα αςτζρι πάνω αριςτερά. Fill

Διαβάστε περισσότερα

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν

ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ. 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν ΛΕΙΤΟΥΓΙΚΆ ΣΥΣΤΉΜΑΤΑ 5 ο Εργαςτιριο Ειςαγωγι ςτθ Γραμμι Εντολϊν Τι είναι θ Γραμμι Εντολϊν (1/6) Στουσ πρϊτουσ υπολογιςτζσ, και κυρίωσ από τθ δεκαετία του 60 και μετά, θ αλλθλεπίδραςθ του χριςτθ με τουσ

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal

ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ. Κεφάλαιο 8 Η γλϊςςα Pascal ΠΡΟΓΡΑΜΜΑΣΙΜΌ ΤΠΟΛΟΓΙΣΏΝ Κεφάλαιο 8 Η γλϊςςα Pascal Παράγραφοσ 8.2 Βαςικοί τφποι δεδομζνων Σα δεδομζνα ενόσ προγράμματοσ μπορεί να: είναι αποκθκευμζνα εςωτερικά ςτθν μνιμθ είναι αποκθκευμζνα εξωτερικά

Διαβάστε περισσότερα

ΤΙΤΛΟΣ: "SWITCH-ΠΩ ΝΑ ΚΑΣΑΦΕΡΕΙ ΣΗΝ ΑΛΛΑΓΗ ΟΣΑΝ Η ΑΛΛΑΓΗ ΕΙΝΑΙ ΔΤΚΟΛΗ" Σσγγραφείς: Chip Heath & Dan Heath. Εκδόζεις: Κσριάκος Παπαδόποσλος/ΕΕΔΕ

ΤΙΤΛΟΣ: SWITCH-ΠΩ ΝΑ ΚΑΣΑΦΕΡΕΙ ΣΗΝ ΑΛΛΑΓΗ ΟΣΑΝ Η ΑΛΛΑΓΗ ΕΙΝΑΙ ΔΤΚΟΛΗ Σσγγραφείς: Chip Heath & Dan Heath. Εκδόζεις: Κσριάκος Παπαδόποσλος/ΕΕΔΕ ΤΙΤΛΟΣ: "SWITCH-ΠΩ ΝΑ ΚΑΣΑΦΕΡΕΙ ΣΗΝ ΑΛΛΑΓΗ ΟΣΑΝ Η ΑΛΛΑΓΗ ΕΙΝΑΙ ΔΤΚΟΛΗ" Σσγγραφείς: Chip Heath & Dan Heath Εκδόζεις: Κσριάκος Παπαδόποσλος/ΕΕΔΕ www.dimitrazervaki.com Περιεχόμενα ΣΡΕΙ ΑΝΑΠΑΝΣΕΧΕ ΔΙΑΠΙΣΩΕΙ

Διαβάστε περισσότερα

Πλατφόρμα χάρεσ ειςόδου Εξόδου Εξοπλιςμόσ Αζρα/ Νερό

Πλατφόρμα χάρεσ ειςόδου Εξόδου Εξοπλιςμόσ Αζρα/ Νερό Κακαριςμόσ Αίκουςασ Κακαριςμόσ Ψευδοροφισ Κακαριςμόσ Φίλτρων Κλιματιςτικϊν Κακαριςμόσ θμάνςεων Κατθγοριϊν Κακαριςμόσ Σοίχου πίςω από το ταμείο Κακαριςμόσ Ραφιϊν & Προϊόντων Αντικατάςταςθ Φκαρμζνων Σιμϊν

Διαβάστε περισσότερα

Η άςκθςθ αποτελεί τροποποιθμζνθ εκδοχι του κζματοσ φυςικισ, τθσ Ευρωπαϊκισ Ολυμπιάδασ Φυςικών Επιςτθμών 2009_επιμζλεια κζματοσ: Κώςτασ Παπαμιχάλθσ

Η άςκθςθ αποτελεί τροποποιθμζνθ εκδοχι του κζματοσ φυςικισ, τθσ Ευρωπαϊκισ Ολυμπιάδασ Φυςικών Επιςτθμών 2009_επιμζλεια κζματοσ: Κώςτασ Παπαμιχάλθσ ΕΚΦΕ Αχαρνών Η άςκθςθ αποτελεί τροποποιθμζνθ εκδοχι του κζματοσ φυςικισ, τθσ Ευρωπαϊκισ Ολυμπιάδασ Φυςικών Επιςτθμών 9_επιμζλεια κζματοσ: Κώςτασ Παπαμιχάλθσ Εφαρμογζσ τθσ Αρχισ του Αρχιμιδθ & τθσ ςυνκικθσ

Διαβάστε περισσότερα

Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων

Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων Τεχνικζσ Ανάλυςησ Διοικητικών Αποφάςεων Ενότητα 7: Ειςαγωγι ςτο Δυναμικό Προγραμματιςμό Κακθγθτισ Γιάννθσ Γιαννίκοσ Σχολι Οργάνωςθσ και Διοίκθςθσ Επιχειριςεων Τμιμα Διοίκθςθσ Επιχειριςεων Σκοποί ενότητασ

Διαβάστε περισσότερα

Η γλώςςα προγραμματιςμού C

Η γλώςςα προγραμματιςμού C Η γλώςςα προγραμματιςμού C Οι εντολζσ επανάλθψθσ (while, do-while, for) Γενικά για τισ εντολζσ επανάλθψθσ Συχνά ςτο προγραμματιςμό είναι επικυμθτι θ πολλαπλι εκτζλεςθ μιασ ενότθτασ εντολϊν, είτε για ζνα

Διαβάστε περισσότερα

Ενεργειακά Τηάκια. Πουκεβίλ 2, Ιωάννινα Τθλ. 26510.23822 www.energeiaka-ktiria.gr www.facebook.com/energeiaka.ktiria

Ενεργειακά Τηάκια. Πουκεβίλ 2, Ιωάννινα Τθλ. 26510.23822 www.energeiaka-ktiria.gr www.facebook.com/energeiaka.ktiria Ενεργειακά Τηάκια Πουκεβίλ 2, Ιωάννινα Τθλ. 26510.23822 www.facebook.com/energeiaka.ktiria Σελ. 2 Η ΕΣΑΙΡΕΙΑ Η εταιρεία Ενεργειακά Κτίρια δραςτθριοποιείται ςτθν παροχι ολοκλθρωμζνων υπθρεςιϊν και ςτθν

Διαβάστε περισσότερα

Ερωτιςεισ & απαντιςεισ για τα ξφλινα πνευςτά

Ερωτιςεισ & απαντιςεισ για τα ξφλινα πνευςτά Τα νύλιμα! ΧΟΡΗΓΟΣ Ερωτιςεισ & απαντιςεισ για τα ξφλινα πνευςτά τα ξφλινα! 1. Γιατί τα λζμε ξφλινα πνευςτά; Πνευςτά ονομάηονται τα όργανα ςτα οποία ο ιχοσ παράγεται μζςα ςε ζνα ςωλινα απ όπου περνάει ο

Διαβάστε περισσότερα

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν

ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ. 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν ΛΕΙΣΟΤΡΓΙΚΆ ΤΣΉΜΑΣΑ 2 ο Εργαςτιριο Διαχείριςθ Διεργαςιϊν Τπόβακρο (1/3) τουσ παλαιότερουσ υπολογιςτζσ θ Κεντρικι Μονάδα Επεξεργαςίασ (Κ.Μ.Ε.) μποροφςε κάκε ςτιγμι να εκτελεί μόνο ζνα πρόγραμμα τουσ ςφγχρονουσ

Διαβάστε περισσότερα

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format.

Virtualization. Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format. Virtualization Στο ςυγκεκριμζνο οδηγό, θα παρουςιαςτεί η ικανότητα δοκιμήσ τησ διανομήσ Ubuntu 9.04, χωρίσ την ανάγκη του format. Το virtualization πρόκειται για μια τεχνολογία, θ οποία επιτρζπει το διαχωριςμό

Διαβάστε περισσότερα

ΧΗΥΙΑΚΟ ΔΚΠΑΙΔΔΤΣΙΚΟ ΒΟΗΘΗΜΑ «ΥΤΙΚΗ ΘΔΣΙΚΗ ΚΑΙ ΣΔΦΝΟΛΟΓΙΚΗ ΚΑΣΔΤΘΤΝΗ» ΦΥΣΙΚΗ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΧΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ ΘΔΜΑ Α ΘΔΜΑ Β

ΧΗΥΙΑΚΟ ΔΚΠΑΙΔΔΤΣΙΚΟ ΒΟΗΘΗΜΑ «ΥΤΙΚΗ ΘΔΣΙΚΗ ΚΑΙ ΣΔΦΝΟΛΟΓΙΚΗ ΚΑΣΔΤΘΤΝΗ» ΦΥΣΙΚΗ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΧΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ ΘΔΜΑ Α ΘΔΜΑ Β 4 o ΔΙΓΩΝΙΜ ΠΡΙΛΙΟ 04: ΔΝΔΔΙΚΣΙΚΔ ΠΝΣΗΔΙ ΦΥΣΙΚΗ ΘΔΤΙΚΗΣ ΚΙ ΤΔΧΝΟΛΟΓΙΚΗΣ ΚΤΔΥΘΥΝΣΗΣ 4 ο ΔΙΓΩΝΙΣΜ ΔΝΔΔΙΚΤΙΚΔΣ ΠΝΤΗΣΔΙΣ ΘΔΜ. β. β 3. α 4. γ 5. α.σ β.σ γ.λ δ.σ ε.λ. ΘΔΜ Β Σωςτι είναι θ απάντθςθ γ. Έχουμε ελαςτικι

Διαβάστε περισσότερα

Πειραματικι Ψυχολογία (ΨΧ66)

Πειραματικι Ψυχολογία (ΨΧ66) Πειραματικι Ψυχολογία (ΨΧ66) Διάλεξη 7 Σεχνικζσ για τθν επίτευξθ ςτακερότθτασ Πζτροσ Ροφςςοσ Μζθοδοι για την επίτευξη του ελζγχου Μζςω του κατάλλθλου ςχεδιαςμοφ του πειράματοσ (ςτόχοσ είναι θ εξάλειψθ

Διαβάστε περισσότερα

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι

ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ. ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι ΕΝΟΣΗΣΑ 1: ΓΝΩΡIΖΩ ΣΟΝ ΤΠΟΛΟΓΙΣΗ ΚΕΦΑΛΑΙΟ 2: Σο Τλικό του Τπολογιςτι Τλικό υπολογιςτι (Hardware), Προςωπικόσ Τπολογιςτισ (ΡC), υςκευι ειςόδου, υςκευι εξόδου, Οκόνθ (Screen), Εκτυπωτισ (Printer), αρωτισ

Διαβάστε περισσότερα

Α ΕΚΦΕ ΑΝ. ΑΤΤΙΚΗΣ Υπ. Κ. Παπαμιχάλθσ. Μζτρηςη του λόγου γ=c P /C V των αερίων με τη μζθοδο Clement Desormes

Α ΕΚΦΕ ΑΝ. ΑΤΤΙΚΗΣ Υπ. Κ. Παπαμιχάλθσ. Μζτρηςη του λόγου γ=c P /C V των αερίων με τη μζθοδο Clement Desormes Α ΕΚΦΕ ΑΝ. ΑΤΤΙΚΗΣ Υπ. Κ. Παπαμιχάλθσ Μζτρηςη του λόγου γ=c P /C V των αερίων με τη μζθοδο Clement Desormes Στόχοι 1. Ανάλυςθ τθσ λειτουργίασ τθσ πειραματικισ διάταξθσ 2. Εφαρμογι των νόμων τθσ κερμοδυναμικισ

Διαβάστε περισσότερα

Πνομα Ομάδασ: Προγραμματιςμόσ ενόσ κινοφμενου ρομπότ

Πνομα Ομάδασ: Προγραμματιςμόσ ενόσ κινοφμενου ρομπότ Φφλλο Εργαςίασ : Ακολοφθηςε τισ εντολζσ μου! Τάξθ: Β Γυμναςίου Ενότθτα: Λφνω προβλιματα με υπολογιςτικά φφλλα Εμπλεκόμενεσ ζννοιεσ: ρομποτικι, Lego Mindstorms, υπολογιςτικά φφλλα, ςυναρτιςεισ, γραφιματα

Διαβάστε περισσότερα

ΜΑΘΗΜΑΤΙΚΑ ΕΠΙΠΕΔΟ 9 10 (Γ Γυμνασίου- Α Λυκείου)

ΜΑΘΗΜΑΤΙΚΑ ΕΠΙΠΕΔΟ 9 10 (Γ Γυμνασίου- Α Λυκείου) ΕΠΙΠΕΔΟ 9 10 (Γ Γυμνασίου- Α Λυκείου) 19 Μαρτίου 011 10:00-11:15 3 point/μονάδες 1) Μια διάβαςθ πεηϊν ζχει άςπρεσ και μαφρεσ λωρίδεσ, πλάτουσ 50 cm. ε ζνα δρόμο θ διάβαςθ ξεκινά και τελειϊνει με άςπρεσ

Διαβάστε περισσότερα

ΔΙΑΓΩΝΙΣΜΑ ΧΗΜΕΙΑΣ Γ'ΛΥΚΕΙΟΥ. Ονοματεπϊνυμο:... Ημ/νία:... Τάξθ:...Χρονικι Διάρκεια:...

ΔΙΑΓΩΝΙΣΜΑ ΧΗΜΕΙΑΣ Γ'ΛΥΚΕΙΟΥ. Ονοματεπϊνυμο:... Ημ/νία:... Τάξθ:...Χρονικι Διάρκεια:... ΔΙΑΓΩΝΙΣΜΑ ΧΗΜΕΙΑΣ Γ'ΛΥΚΕΙΟΥ Κεφάλαια 1,2,3,4,5(μέχρι ενότητα 5) Ονοματεπϊνυμο:... Ημ/νία:... Τάξθ:...Χρονικι Διάρκεια:... Βακμόσ: ΘΕΜΑ Α Για τισ προτάςεισ Α1 ζωσ Α5 να γράψετε ςτο τετράδιό ςασ τον αρικμό

Διαβάστε περισσότερα

Απάντηση ΘΕΜΑ1 ΘΕΜΑ2. t=t 1 +T/2. t=t 1 +3T/4. t=t 1 +T ΔΙΑΓΩΝΙΣΜΑ ΣΕ ΤΑΛΑΝΤΩΣΕΙΣ-ΚΥΜΑΤΑ 1) (Β), 2. (Γ), 3. (Γ), 4. (Γ), 5. (Δ).

Απάντηση ΘΕΜΑ1 ΘΕΜΑ2. t=t 1 +T/2. t=t 1 +3T/4. t=t 1 +T ΔΙΑΓΩΝΙΣΜΑ ΣΕ ΤΑΛΑΝΤΩΣΕΙΣ-ΚΥΜΑΤΑ 1) (Β), 2. (Γ), 3. (Γ), 4. (Γ), 5. (Δ). Απάντηση ΘΕΜΑ1 1) (Β), 2. (Γ), 3. (Γ), 4. (Γ), 5. (Δ). ΘΕΜΑ2 Α)Ανάκλαςθ ςε ακίνθτο άκρο. Το προςπίπτον κφμα ςε χρόνο Τ/2 κα ζχει μετακινθκεί προσ τα δεξιά κατά 2 τετράγωνα όπωσ φαίνεται ςτο ςχιμα. Για

Διαβάστε περισσότερα

ΕΠΑΝΕΚΔΟΗ ΣΙΜΟΛΟΓΙΩΝ ΙΑΝΟΤΑΡΙΟΤ (version )

ΕΠΑΝΕΚΔΟΗ ΣΙΜΟΛΟΓΙΩΝ ΙΑΝΟΤΑΡΙΟΤ (version ) ΕΠΑΝΕΚΔΟΗ ΣΙΜΟΛΟΓΙΩΝ ΙΑΝΟΤΑΡΙΟΤ (version 2.14.13) Σχετικά με το κζμα που προζκυψε με τθν επιςτροφι των τιμολογίων του ΕΟΠΥΥ, που υποβλικθκαν με το λογαριαςμό Ιανουαρίου 2014, και τθν απαίτθςθ ορκισ επανζκδοςθσ

Διαβάστε περισσότερα

Τάξη Β. Φυςικθ Γενικθσ Παιδείασ. Τράπεζα ιεμάτων Κεφ.1 ο ΘΕΜΑ Δ. Για όλεσ τισ αςκθςεισ δίνεται η ηλεκτρικθ ςταιερά

Τάξη Β. Φυςικθ Γενικθσ Παιδείασ. Τράπεζα ιεμάτων Κεφ.1 ο ΘΕΜΑ Δ. Για όλεσ τισ αςκθςεισ δίνεται η ηλεκτρικθ ςταιερά Τάξη Β Φυςικθ Γενικθσ Παιδείασ Τράπεζα ιεμάτων Κεφ.1 ο ΘΕΜΑ Δ Για όλεσ τισ αςκθςεισ δίνεται η ηλεκτρικθ ςταιερά k 2 9 9 10 Nm 2 1. Δφο ακίνθτα ςθμειακά θλεκτρικά φορτία q 1 = - 2 μq και q 2 = + 3 μq, βρίςκονται

Διαβάστε περισσότερα

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 15. Πίνακεσ ΙI. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων 15. Πίνακεσ ΙI Ιωάννθσ Κατάκθσ Σιμερα o Ειςαγωγι o Διλωςθ o Αρχικοποίθςθ o Πρόςβαςθ o Παραδείγματα Πίνακεσ - Επανάλθψθ o Στθν προθγοφμενθ διάλεξθ κάναμε μια

Διαβάστε περισσότερα

Γ' ΛΥΚΕΙΟΥ Η ΤΑΞΗ ΤΗΣ ΤΕΛΙΚΗΣ ΕΠΙΛΟΓΗΣ. Στθ ΓϋΛυκείου οι Ομάδεσ Προςανατολιςμοφ είναι τρεισ:

Γ' ΛΥΚΕΙΟΥ Η ΤΑΞΗ ΤΗΣ ΤΕΛΙΚΗΣ ΕΠΙΛΟΓΗΣ. Στθ ΓϋΛυκείου οι Ομάδεσ Προςανατολιςμοφ είναι τρεισ: Γ' ΛΥΚΕΙΟΥ Η ΤΑΞΗ ΤΗΣ ΤΕΛΙΚΗΣ ΕΠΙΛΟΓΗΣ Στθ ΓϋΛυκείου οι Ομάδεσ Προςανατολιςμοφ είναι τρεισ: 1. Ομάδα Ανκρωπιςτικών Σπουδών 2. Ομάδα Οικονομικών, Πολιτικών, Κοινωνικών & Παιδαγωγικών Σπουδών 3. Ομάδα Θετικών

Διαβάστε περισσότερα

Η θεωρία τησ ςτατιςτικήσ ςε ερωτήςεισ-απαντήςεισ Μέροσ 1 ον (έωσ ομαδοποίηςη δεδομένων)

Η θεωρία τησ ςτατιςτικήσ ςε ερωτήςεισ-απαντήςεισ Μέροσ 1 ον (έωσ ομαδοποίηςη δεδομένων) 1)Πώσ ορύζεται η Στατιςτικό επιςτόμη; Στατιςτικι είναι ζνα ςφνολο αρχϊν και μεκοδολογιϊν για: το ςχεδιαςμό τθσ διαδικαςίασ ςυλλογισ δεδομζνων τθ ςυνοπτικι και αποτελεςματικι παρουςίαςι τουσ τθν ανάλυςθ

Διαβάστε περισσότερα

Slide 1. Εισαγωγή στη ψυχρομετρία

Slide 1. Εισαγωγή στη ψυχρομετρία Slide 1 Εισαγωγή στη ψυχρομετρία 1 Slide 2 Σφντομη ειςαγωγή ςτη ψυχρομετρία. Διάγραμμα Mollier (πίεςησ-ενθαλπίασ P-H) Σο διάγραμμα Mollier είναι μία γραφικι παράςταςθ ςε ζναν άξονα ςυντεταγμζνων γραμμϊν

Διαβάστε περισσότερα

ΚΤΚΛΩΜΑ RLC Ε ΕΙΡΑ (Απόκριςη ςε ημιτονοειδή είςοδο)

ΚΤΚΛΩΜΑ RLC Ε ΕΙΡΑ (Απόκριςη ςε ημιτονοειδή είςοδο) ΚΤΚΛΩΜΑ RLC Ε ΕΙΡΑ (Απόκριςη ςε ημιτονοειδή είςοδο) χήμα Κφκλωμα RLC ςε ςειρά χήμα 2 Διανυςματικι παράςταςθ τάςεων και ρεφματοσ Ζςτω ότι ςτο κφκλωμα του ςχιματοσ που περιλαμβάνει ωμικι, επαγωγικι και χωρθτικι

Διαβάστε περισσότερα