Κεφάλαιο 10 Ψηφιακά Λεξικά

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

Download "Κεφάλαιο 10 Ψηφιακά Λεξικά"

Transcript

1 Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή Ψηφιακά Δένδρα Υλοποίηση σε Java Συμπιεσμένα και τριαδικά ψηφιακά δένδρα Ασκήσεις Βιβλιογραφία Εισαγωγή Σε αυτό το κεφάλαιο μελετάμε μια διαφορετική κατηγορία λεξικών (δομών αναζήτησης) από αυτή που είδαμε στα Κεφάλαια 7 και 8. Εδώ επιθυμούμε να αποθηκεύσουμε ένα δυναμικό σύνολο στοιχειών τα οποία είναι ακολουθίες συμβόλων x = x 1 x 2 x μ από ένα πεπερασμένο αλφάβητο Σ = {σ 1, σ 2,, σ R. Θα αναφερόμαστε σε τέτοιες ακολουθίες συμβόλων x ως «λέξεις» και σε μια δομή η οποία διαχειρίζεται ένα σύνολο λέξεων ως «ψηφιακό λεξικό». Για μια λέξη x = x 1 x 2 x μ η οποία αποτελείται από μ χαρακτήρες θα λέμε ότι έχει μήκος μ. Το αλφάβητο καθορίζεται από το είδος των λέξεων που θέλουμε να αποθηκεύσουμε. Για παράδειγμα, R = 256 για ακολουθίες χαρακτήρων των 8 bit, R = 10 για ακολουθίες δεκαδικών ψηφίων, R = 4 για ακολουθίες DNA κλπ. Ένα ψηφιακό λεξικό D υποστηρίζει τις βασικές λειτουργίες ενός λεξικού : κατασκευή() : Επιστρέφει ένα κενό λεξικό. αναζήτηση(x) : Αν το D περιέχει τη λέξη x τότε επιστρέφει «αληθές». Διαφορετικά επιστρέφει «ψευδές». εισαγωγή(x) : Εισαγάγει στο D μια νέα λέξη x. διαγραφή(x) : Διαγράφει από το D τη λέξη x. Στα ψηφιακά λεξικά μπορούμε να εκμεταλλευτούμε το γεγονός ότι αποθηκεύουμε ακολουθίες συμβόλων, για να υποστηρίξουμε κάποιες χρήσιμες λειτουργίες, τις οποίες φαίνεται δύσκολο να υλοποιήσουμε αποδοτικά με τις δομές των Κεφαλαίων 7 και 8. Έστω δύο λέξεις y = y 1 y 2 y λ και x = x 1 x 2 x μ, όπου λ μ. Η λέξη y αποτελεί πρόθεμα της x αν x i = y i για 1 i λ. Μια μερική λέξη y = y 1 y 2 y λ είναι μια ακολουθία συμβόλων από το αλφάβητο Σ {?, όπου το σύμβολο «?» είναι ένας ειδικός χαρακτήρας ο οποίος μπορεί να αντικατασταθεί από οποιοδήποτε χαρακτήρα του Σ. Μια λέξη x = x 1 x 2 x μ ταυτίζεται με τη μερική λέξη y = y 1 y 2 y λ, αν για 1 i λ έχουμε x i = y i ή y i =?. 213

2 Ένα ψηφιακό λεξικό D υποστηρίζει ακόμα τις ακόλουθες λειτουργίες: πρόθεμα(y) : Επιστρέφει όλες τις λέξεις x του D οι οποίες έχουν ως πρόθεμα τη λέξη y. ταύτιση(y) : Επιστρέφει όλες τις λέξεις x του D οι οποίες ταυτίζονται με τη μερική λέξη y. Στη συνέχεια, θα σχεδιάσουμε μια δομή δεδομένων η οποία υποστηρίζει τις παραπάνω λειτουργίες Ψηφιακά Δένδρα Ένα ψηφιακό δένδρο Τ είναι ένα δένδρο αναζήτησης, κάθε εσωτερικός κόμβος Ζ του οποίου έχει ακριβώς R = Σ παιδιά Ζ 1, Ζ 2,, Ζ R. Κάθε παιδί Ζ i του Ζ αντιστοιχεί στο σύμβολο σ i του αλφάβητου Σ, όπως φαίνεται στην Εικόνα Εικόνα 10.37: Εσωτερικός κόμβος Ζ ενός ψηφιακού δένδρου και τα παιδιά του Ζ 1, Ζ 2,, Ζ R. Όπως στο Κεφάλαιο 8, θα συμβολίζουμε το i-οστό παιδί ενός κόμβου Z ως Z.παιδί(i). Σε αντίθεση με τα λεξικά των Κεφαλαίων 7 και 8, όπου κάθε λέξη αποθηκεύεται αυτούσια σε ένα ξεχωριστό κόμβο, σε ένα ψηφιακό δένδρο οι λέξεις αποθηκεύονται με έμμεσο τρόπο. Κάθε κόμβος αντιστοιχεί σε ένα χαρακτήρα του αλφάβητου και μια λέξη αντιστοιχεί σε ένα μονοπάτι από τη ρίζα προς κάποιο εσωτερικό κόμβο. Μια αναπαράσταση ενός τέτοιου δένδρου φαίνεται στην Εικόνα Σε αυτήν την αναπαράσταση παραλείπουμε τις αναφορές σε κενούς κόμβους, και σημειώνουμε με έντονη γραμμή τους κόμβους που αντιστοιχούν σε τερματικούς χαρακτήρες των λέξεων. 214

3 Εικόνα 10.38: Γραφική αναπαράσταση ενός ψηφιακού δένδρου για τις λέξεις «ακολουθία», «αλγόριθμος», «αλληλουχία», «αλφάβητο», «δεδομένα», «δεν», «δενδρική». Συγκεκριμένα, ας θεωρήσουμε ότι έχουμε αποθηκεύσει στο δένδρο τη λέξη σ i1 σ i2 σ iμ. Η λέξη αυτή αντιστοιχεί στο μονοπάτι Z 0, Z 1,, Z μ του ψηφιακού δένδρου, όπου Z 0 είναι η ρίζα του δένδρου και Ζ j+1 = Z j.παιδί(i j ) για 0 j μ 1. Δείτε την Εικόνα Εικόνα 10.39: Το μονοπάτι στο ψηφιακό δένδρο της Εικόνα που αντιστοιχεί στη λέξη αλληλουχία. 215

4 Με την παραπάνω δομή μπορούμε να επιτύχουμε τους χρόνους εκτέλεσης που δίνονται στον Πίνακας Πίνακας 10.1: Χρόνοι εκτέλεσης χειρότερης περίπτωσης των βασικών λειτουργιών ενός ψηφιακού δένδρου Τ. Η λέξη η οποία δίνεται ως παράμετρος έχει μήκος μ. Για τις λειτουργίες πρόθεμα και ταύτιση, ν είναι το πλήθος των λέξεων που επιστρέφει η αντίστοιχη λειτουργία. Επιπλέον, για τη λειτουργία πρόθεμα, λ είναι το μέσο μήκος των λέξεων που επιστρέφονται. αναζήτηση εισαγωγή διαγραφή πρόθεμα ταύτιση Ο(μ) Ο(μ) Ο(μ) Ο(μ + (λ μ)ν) O(μν) Θα περιγράψουμε αναλυτικά την υλοποίηση ενός τέτοιου ψηφιακού δένδρου. Κάθε κόμβος Z του δένδρου περιλαμβάνει ένα πίνακα R = Σ θέσεων, όπου η i-οστή θέση αντιστοιχεί στον i-οστό χαρακτήρα σ i του αλφάβητου Σ και αποθηκεύει μια αναφορά στον κόμβο Z.παιδί(i). Δείτε την Εικόνα Επιπλέον, διατηρούμε ένα bit επισήμανσης, με το οποίο ελέγχουμε αν ο τρέχων κόμβος σηματοδοτεί το τέλος μιας λέξης του δένδρου. Καλούμε ένα τέτοιο κόμβο επισημασμένο. Εικόνα 10.40: Υλοποίηση ενός κόμβου ψηφιακού δένδρου για λέξεις από το ελληνικό αλφάβητο. Ας θεωρήσουμε τώρα ένα κόμβο Z του ψηφιακού δένδρου, ο οποίος βρίσκεται σε απόσταση λ από τη ρίζα. Το μονοπάτι από τη ρίζα προς τον κόμβο Z κωδικοποιεί μια λέξη y = σ i1 σ i2 σ iλ, η οποία αποτελεί πρόθεμα μιας ή περισσότερων λέξεων που έχουν αποθηκευτεί στο ψηφιακό δένδρο. Έτσι, για 1 i R, η αναφορά Z.παιδί(i) δείχνει σε εσωτερικό κόμβο του δένδρου αν και μόνο αν έχουμε αποθηκεύσει στο δένδρο κάποια λέξη με πρόθεμα yσ i. Δείτε την Εικόνα Εικόνα 10.41: Πραγματική αναπαράσταση ενός τμήματος του ψηφιακού δένδρου της Εικόνα Ο αλγόριθμος αναζήτησης μιας λέξης x στο ψηφιακό δένδρο ακολουθεί το μονοπάτι από τη ρίζα το οποίο αντιστοιχεί στους χαρακτήρες της x. Παρακάτω δίνουμε μια αναδρομική περιγραφή αυτής της διαδικασίας. 216

5 Αλγόριθμος αναζήτησης λέξης σε ψηφιακό δένδρο αναζήτηση(ζ, x, d) 1. αν ο κόμβος Z είναι κενός, τότε επίστρεψε τον κενό κόμβο 2. αν η λέξη x έχει μήκος d, τότε επίστρεψε τον κόμβο Ζ 3. έστω σ i ο χαρακτήρας της λέξης x στη θέση d εκτέλεσε αναδρομικά αναζήτηση(z.παιδί(i), x, d + 1) τέλος αναζήτηση(z, x, d) αρχή αναζήτησης 5. εκτέλεσε Z αναζήτηση(τ.ρίζα, x, 0) 6. αν ο Ζ είναι κενός ή δεν είναι επισημασμένος τότε επίστρεψε ψευδές 7. διαφορετικά επίστρεψε αληθές τέλος αναζήτησης Για την εισαγωγή μιας λέξης ακολουθούμε μια ανάλογη διαδικασία, με τη διαφορά ότι αν ο επόμενος κόμβος Z.παιδί(i) του μονοπατιού αναζήτησης είναι κενός, τότε τον δημιουργούμε και τον συνδέουμε με τον τρέχοντα κόμβο Z. Έπειτα, συνεχίζουμε την ίδια διαδικασία αναδρομικά. Τέλος, θέτουμε το bit επισήμανσης στον τερματικό κόμβο του μονοπατιού εισαγωγής. Αλγόριθμος εισαγωγής λέξης σε ψηφιακό δένδρο εισαγωγή(ζ, x, d) 1. αν ο κόμβος Z είναι κενός, τότε δημιούργησε ένα νέο εσωτερικό κόμβο Ζ 2. αν η λέξη x έχει μήκος d, τότε θέσε το bit επισήμανσης του Ζ και επίστρεψε τον Ζ 3. έστω σ i ο χαρακτήρας της λέξης x στη θέση d εκτέλεσε αναδρομικά Z.παιδί(i) εισαγωγή(z.παιδί(i), x, d + 1) τέλος εισαγωγή(z, x, d) αρχή εισαγωγής 5. εκτέλεσε Τ.ρίζα εισαγωγή(τ.ρίζα, x, 0) τέλος εισαγωγής Η Εικόνα δίνει ένα παράδειγμα διαδοχικών εισαγωγών λέξεων σε αρχικά κενό ψηφιακό δένδρο. 217

6 Εικόνα 10.42: Κατασκευή ψηφιακού δένδρου με διαδοχική εισαγωγή λέξεων. Εισάγουμε, με τη σειρά, τις λέξεις «ακολουθία», «αλγόριθμος», «αλληλουχία», «αλφάβητο», «δεδομένα», «δενδρική» και «δεν». Σε αυτό το σημείο είναι χρήσιμο να αναφέρουμε κάποια χαρακτηριστικά των επιδόσεων των ψηφιακών δένδρων: Η μορφή του ψηφιακού δένδρου είναι ανεξάρτητη από τη σειρά εισαγωγής των στοιχείων. Κάθε δεδομένο σύνολο διακριτών λέξεων στοιχείων δημιουργεί ένα μοναδικό ψηφιακό δένδρο. Η αναζήτηση ή εισαγωγή μιας λέξης μήκους μ χαρακτήρων απαιτεί Ο(μ) χρόνο στη χειρότερη περίπτωση. Έστω Ν το πλήθος των συνδέσμων (κενών ή μη) σε ένα ψηφιακό δένδρο κατασκευασμένο από n λέξεις μέσου μήκους μ από αλφάβητο R χαρακτήρων. Ισχύει Rn Ν Rnλ. Ας εξετάσουμε τώρα την περίπτωση της διαγραφής μιας λέξης x. Πρώτα αναζητούμε τη λέξη x στο δένδρο. Αν δεν υπάρχει, τότε δε γίνεται καμία αλλαγή στο δένδρο. Διαφορετικά, αν η x υπάρχει, βρίσκουμε τον κόμβο Ζ που αντιστοιχεί στο τελευταίο της γράμμα και σβήνουμε την 218

7 επισήμανση του. Αν ο Ζ δεν έχει απογόνους στο δένδρο, τότε τον διαγράφουμε και συνεχίζουμε την ίδια διαδικασία στους προγόνους του Ζ, μέχρι να φτάσουμε σε κόμβο με απογόνους ή με επισήμανση. Αλγόριθμος διαγραφής σε ψηφιακό δένδρο αρχή διαγραφής 1. εκτέλεσε Z αναζήτηση(τ.ρίζα, x, 0) 2. αν ο Ζ είναι κενός ή δεν είναι επισημασμένος, τότε επίστρεψε (δεν γίνεται καμία αλλαγή στο δένδρο) 3. σβήσε την επισήμανση του Ζ 4. ενόσω ο Ζ δεν είναι κενός και δεν έχει επισήμανση και δεν έχει παιδιά 5. έστω Υ ο γονέας του Ζ στο δένδρο 6. διάγραψε τον κόμβο Ζ 7. θέσε Z Υ τέλος διαγραφής Στην Εικόνα φαίνονται οι διάφορες περιπτώσεις διαγραφής λέξης σε ένα ψηφιακό δένδρο. Στην πρώτη περίπτωση, για τη διαγραφή της λέξης «δεν», αρκεί να σβήσουμε την επισήμανση του κόμβου Ζ, ο οποίος αντιστοιχεί στο τελευταίο γράμμα της λέξης. Καθώς ο κόμβος Ζ έχει παιδί, το δένδρο δεν υφίσταται καμία άλλη αλλαγή. Στη δεύτερη περίπτωση, όπου διαγράφουμε τη λέξη «δενδρική», η αναζήτηση της λέξης καταλήγει σε κόμβο Ζ χωρίς κανένα παιδί. Έτσι, διαγράφουμε όλους τους προγόνους του Ζ στο δένδρο μέχρι τον κοντινότερο πρόγονο ο οποίος είναι επισημασμένος. Ομοίως, στην τρίτη περίπτωση, κατά τη διαγραφή της λέξης «αλληλουχία» καταλήγουμε σε κόμβο Ζ χωρίς κανένα παιδί. Αυτή τη φορά, διαγράφουμε όλους τους προγόνους του Ζ στο δένδρο μέχρι τον κοντινότερο πρόγονο ο οποίος έχει παιδιά. Όπως και με τις λειτουργίες της αναζήτησης και της εισαγωγής, η διαγραφή μιας λέξης μήκους μ χαρακτήρων απαιτεί Ο(μ) χρόνο στη χειρότερη περίπτωση. 219

8 Εικόνα 10.43: Διαγραφή των λέξεων «δεν», «δενδρική» και «αλληλουχία» από το ψηφιακό δένδρο της Εικόνα Κάθε διαγραφή εκτελείται στο αρχικό δένδρο. 220

9 Πριν προχωρήσουμε στις υπόλοιπες δύο εντολές, είναι χρήσιμο να εξετάσουμε πώς μπορούμε να συλλέξουμε όλες τις λέξεις οι οποίες είναι αποθηκευμένες σε ένα ψηφιακό δένδρο. Καλούμε αυτή τη διαδικασία συλλογή. Εύκολα μπορούμε να διαπιστώσουμε ότι η διαδικασία της συλλογής μπορεί να πραγματοποιηθεί με μια προδιατεταγμένη διάσχιση του δένδρου. Κατά τη διάρκεια της διάσχισης, σχηματίζουμε ένα τρέχον πρόθεμα y = σ i1 σ i2 σ iμ το οποίο αντιστοιχεί στο μονοπάτι Z 0, Z 1,, Z μ του ψηφιακού δένδρου, όπου Z 0 είναι η ρίζα του δένδρου, Z μ είναι ο τρέχων κόμβος της διάσχισης, και Ζ j+1 = Z j.παιδί(i j ) για 0 j μ 1. Δείτε την Εικόνα Αν ο τρέχων κόμβος Z μ είναι επισημασμένος, τότε το πρόθεμα y είναι λέξη που έχει αποθηκευτεί στο δένδρο και την τοποθετούμε σε μια ουρά Q. Παρατηρήστε ότι, αν κατά τη διάρκεια της διάσχισης επισκεπτόμαστε τα παιδιά κάθε κόμβου σε αλφαβητική σειρά, τότε στο τέλος αυτής της διαδικασίας η ουρά Q θα περιέχει όλες τις λέξεις του ψηφιακού δένδρου, διατεταγμένες σε λεξικογραφική σειρά. Εικόνα 10.44: Σχηματισμός προθέματος κατά τη προδιατεταγμένη διάσχιση του ψηφιακού δένδρου της Εικόνα Μπορούμε να εκτελέσουμε την ίδια διαδικασία, με αφετηρία κάποιο αυθαίρετο κόμβο Z του ψηφιακού δένδρου αντί για τη ρίζα. Έστω y το πρόθεμα το οποίο αντιστοιχεί στο μονοπάτι του ψηφιακού δένδρου από τη ρίζα προς τον Ζ. Το αποτέλεσμα θα είναι να συλλέξουμε στην ουρά Q τις καταλήξεις των λέξεων του δένδρου οι οποίες έχουν ως πρόθεμα το y. Καλούμε αυτή τη διαδικασία συλλογή(ζ). Από τα παραπάνω, γίνεται κατανοητό ότι μπορούμε να υλοποιήσουμε τη λειτουργία πρόθεμα(y) όπως φαίνεται στον επόμενο αλγόριθμο. Αλγόριθμος εύρεσης όλων των λέξεων του ψηφιακού δένδρου με πρόθεμα y αρχή πρόθεμα(y) 1. εκτέλεσε Z αναζήτηση(τ.ρίζα, y, 0) 2. αν ο Ζ είναι κενός τότε επίστρεψε την κενή ουρά Q 3. επίστρεψε την ουρά Q συλλογή(ζ) τέλος πρόθεμα(y) 221

10 10.3 Υλοποίηση σε Java Tο πρόγραμμα StringDT. java υλοποιεί ένα ψηφιακό δένδρο το οποίο αποθηκεύει λέξεις, δηλαδή αντικείμενα τύπου String όπου ο κάθε χαρακτήρας είναι γράμμα του λατινικού αλφάβητου a-z. Κάθε κόμβος Ζ του ψηφιακού δένδρου περιέχει έναν πίνακα Node next[r] συνδέσμων σε το πολύ R = 26 παιδιά, που ο σύνδεσμος Ζ. next[j] αντιστοιχεί στο γράμμα ( a + j). Δηλαδή ο Ζ. next[0] στο a, o Ζ. next[1] στο b,, και o Ζ. next[25] στο z. Κάθε κόμβος Ζ του ψηφιακού δένδρου περιλαμβάνει επίσης μια μεταβλητή σήμανσης boolean mark, όπου Ζ. mark == true, αν ο Ζ αντιστοιχεί στο τέλος μιας λέξης που έχει εισαχθεί στη δομή. public class StringDT { private static int R = 26; // πλήθος διαφορετικών χαρακτήρων private static int N = 0; // πλήθος λέξεων στο ψηφιακό δένδρο private Node root; // ρίζα του ψηφιακού δένδρου // κόμβος ψηφιακού δένδρου private static class Node { private boolean mark; // true αν είναι το τέλος μιας λέξης private Node[] next = new Node[R]; // αναφορές σε R παιδιά // επιστρέφει true αν βρει τη λέξη x public boolean contains(string x) { Node Z = contains(root, x, 0); if (Z == null) { return false; else { return Z.mark; // αναζήτηση στους απόγονους του Z για τη λέξη που περιέχει το x // από τη θέση d και μετά private Node contains(node Z, String x, int d) { if (Z == null) { return null; if (d == x.length()) { return Z; // τέλος της λέξης char c = x.charat(d); // επόμενος χαρακτήρας int j = (int) c - 'a'; // αντίστοιχη θέση του επόμενου χαρακτήρα return contains(ζ.next[j], x, d + 1); // εισαγωγή της λέξης x public void insert(string x) { root = insert(root, x, 0); // εισαγωγή στους απόγονους του Z της λέξης που περιέχει το x // από τη θέση d και μετά private Node insert(node Ζ, String x, int d) { if (Z == null) { Z = new Node(); 222

11 if (d == x.length()) { Ζ.mark = true; N++; return Z; // τέλος της λέξης char c = s.charat(d); // επόμενος χαρακτήρας int j = (int) c - 'a'; // αντίστοιχη θέση του επόμενου χαρακτήρα Ζ.next[j] = insert(ζ.next[j], x, d + 1); return Ζ; // διαγραφή της λέξης x public void delete(string x) { root = delete(root, x, 0); // διαγραφή από τους απόγονους του Z της λέξης που περιέχει το x // από τη θέση d και μετά private Node delete(node Ζ, String x, int d) { if (Z == null) { return null; if (d == x.length()) { Z.mark = false; // τέλος της λέξης N--; else { char c = s.charat(d); // επόμενος χαρακτήρας int j = (int) c - 'a'; // αντίστοιχη θέση του επόμενου χαρακτήρα Ζ.next[j] = delete(ζ.next[j], x, d + 1); if (Z.mark) { return Z; // o Z είναι επισημασμένος και δεν τον διαγράφουμε for (int j = 0; j < R; j++) { if (Ζ.next[j]!= null) { return Ζ; // o Z έχει μη κενά παιδιά και δεν τον διαγράφουμε return null; 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα Το ψηφιακό δένδρο της Ενότητας 10.2 είναι υπερβολικά σπάταλο σε χώρο μνήμης, όταν αποθηκεύουμε λέξεις με μεγάλο μήκος και με χαρακτήρες από μεγάλο αλφάβητο. Σε αυτήν την ενότητα αναφέρουμε, εν συντομία, δύο εναλλακτικές μορφές ψηφιακών δένδρων, οι οποίες αποσκοπούν στη βελτίωση των απαιτήσεων σε μνήμη. Συμπιεσμένα ψηφιακά δένδρα Ένας τρόπος, για να ελαττώσουμε τον αποθηκευτικό χώρο που απαιτεί το ψηφιακό δένδρο, είναι να απαλείψουμε τους κόμβους του δένδρου που δεν δημιουργούν πολλαπλές διακλαδώσεις. Συγκεκριμένα, έστω Z 0, Z 1,, Z μ ένα μονοπάτι του ψηφιακού δένδρου, όπου 223

12 Ζ j+1 = Z j.παιδί(i j ) και ο κόμβος Ζ j+1 είναι το μοναδικό παιδί του Z j, για 0 j μ 1. Τότε, μπορούμε να αντικαταστήσουμε το μονοπάτι αυτό με ένα νέο κόμβο Z, όπως φαίνεται στην Εικόνα Για να διατηρήσουμε την πληροφορία του αρχικού μονοπατιού Z 0, Z 1,, Z μ, αποθηκεύουμε στον κόμβο Z του συμπιεσμένου ψηφιακού δένδρου τη λέξη y = σ i1 σ i2 σ iμ. Επιπλέον, σημειώνουμε τους χαρακτήρες της y οι οποίοι αποτελούν τερματικούς χαρακτήρες κάποιας λέξης. Έτσι, στο παράδειγμα της Εικόνα 10.45, στον κόμβο ο οποίος αποθηκεύει τη λέξη «νδρική», σημειώνουμε ότι ο πρώτος και ο τελευταίος χαρακτήρας είναι τερματικοί χαρακτήρες λέξεων του δένδρου. Εικόνα 10.45: Κατασκευή συμπιεσμένου ψηφιακού δένδρου. Η παραπάνω αντιμετωπίζει το πρόβλημα χώρου, αλλά ο χειρισμός του ψηφιακού δένδρου γίνεται αρκετά πιο περίπλοκος. Δείτε την Άσκηση Τριαδικά ψηφιακά δένδρα Ένας διαφορετικός τρόπος για να ελαττώσουμε τον αποθηκευτικό χώρο που απαιτεί το ψηφιακό δένδρο, είναι να μειώσουμε το πλήθος των συνδέσμων του κάθε κόμβου. Αυτή την ιδέα εφαρμόζει ένα τριαδικό ψηφιακό δένδρο, οι κόμβοι του οποίου έχουν ακριβώς τρεις συνδέσμους. Δείτε την Εικόνα Εικόνα 10.46: Κόμβος και σύνδεσμοι τριαδικού ψηφιακού δένδρου. Όπως και στα τυπικά ψηφιακά δένδρα, ένα μονοπάτι από τη ρίζα προς κάποιο κόμβο Z αντιστοιχεί σε ένα πρόθεμα y. Ο κόμβος Z ελέγχει μόνο ένα χαρακτήρα σ i του αλφάβητου. Ο μεσαίος σύνδεσμος οδηγεί σε λέξεις με πρόθεμα yσ i. Ο αριστερός σύνδεσμος αντιστοιχεί στις λέξεις με πρόθεμα y στις οποίες ο επόμενος χαρακτήρας είναι μικρότερος του σ i. Τέλος, ο 224

13 δεξιός σύνδεσμος αντιστοιχεί στις λέξεις με πρόθεμα y και επόμενο χαρακτήρα μεγαλύτερο του σ i. Δείτε την Εικόνα Εικόνα 10.47: Γραφική αναπαράσταση ενός τριαδικού ψηφιακού δένδρου μετά την εισαγωγή των λέξεων «ακολουθία», «αλληλουχία», «αλγόριθμος», «αλφάβητο», «δεδομένα», «δεν», «δενδρική». Οι λέξεις έχουν εισαχθεί με αυτήν τη σειρά. Σε αντίθεση με τα τυπικά ψηφιακά δένδρα (και τα συμπιεσμένα ψηφιακά δένδρα), η μορφή ενός τριαδικού ψηφιακού δένδρου δεν καθορίζεται μόνο από το σύνολο των λέξεων που εισάγουμε, αλλά επίσης και από τη σειρά εισαγωγής. Τέλος, σημειώνουμε ότι είναι δυνατό να συνδυάσουμε δύο ή παραπάνω δομές ψηφιακών δένδρων και να κατασκευάσουμε υβριδικές μορφές τους. Δείτε την Άσκηση Ασκήσεις 10.1 Έστω Ν το πλήθος των συνδέσμων (κενών ή μη) σε ένα ψηφιακό δένδρο κατασκευασμένο από n λέξεις μέσου μήκους μ από αλφάβητο R χαρακτήρων. Δικαιολογήστε γιατί ισχύει η σχέση Rn Ν Rnλ. Δώστε κατάλληλα παραδείγματα ψηφιακών δένδρων τα οποία απαιτούν Rn και Rnλ συνδέσμους αντίστοιχα Περιγράψτε μια αποδοτική υλοποίηση της λειτουργίας ταύτιση σε ένα ψηφιακό δένδρο Περιγράψτε πώς μπορούν να υλοποιηθούν οι λειτουργίες αναζήτησης, εισαγωγής και διαγραφής μιας λέξης σε ένα συμπιεσμένο ψηφιακό δένδρο Περιγράψτε πώς μπορούν να υλοποιηθούν οι λειτουργίες αναζήτησης, εισαγωγής και διαγραφής μιας λέξης σε ένα συμπιεσμένο ψηφιακό δένδρο. 225

14 10.5 Έστω ένα τριαδικό ψηφιακό δένδρο κατασκευασμένο από n λέξεις μέσου μήκους μ από αλφάβητο R χαρακτήρων. Δώστε ένα άνω και ένα κάτω φράγμα για το πλήθος των συνδέσμων (κενών ή μη) σε ένα τέτοιο δένδρο Περιγράψτε την υλοποίηση ενός υβριδικού ψηφιακού δένδρου το οποίο συνδυάζει τα τυπικά ψηφιακά δένδρα με τα τριαδικά ψηφιακά δένδρα ως εξής. Στη ρίζα του δένδρου βρίσκεται ένας κόμβος τυπικού ψηφιακού δένδρου με R συνδέσμους. Κάθε μη κενός σύνδεσμος δείχνει σε ένα τριαδικό ψηφιακό δένδρο. Δηλαδή, το i-οστό παιδί της ρίζας είναι η ρίζα ενός τριαδικού ψηφιακού δένδρου για τις λέξεις που ξεκινούν με το χαρακτήρα σ i Υλοποιήστε σε Java και συγκρίνετε πειραματικά την απόδοση των ψηφιακών δένδρων, των τριαδικών ψηφιακών δένδρων και των υβριδικών ψηφιακών δένδρων της Άσκησης Μετρήστε το χρόνο κατασκευής των δένδρων καθώς και το χώρο που καταλαμβάνουν στη μνήμη. Βιβλιογραφία Goodrich, M. T., & Tamassia, R. (2006). Data Structures and Algorithms in Java, 4th edition. Wiley. Mehlhorn, K., & Sanders, P. (2008). Algorithms and Data Structures: The Basic Toolbox. Springer-Verlag. Sedgewick, R., & Wayne, K. (2011). Algorithms, 4th edition. Addison-Wesley. Tarjan, R. E. (1983). Data Structures and Network Algorithms. Society for Industrial and Applied Mathematics. Μποζάνης, Π. Δ. (2006). Δομές Δεδομένων. Εκδόσεις Τζιόλα. 226

Κεφάλαιο 6 Ουρές Προτεραιότητας

Κεφάλαιο 6 Ουρές Προτεραιότητας Κεφάλαιο 6 Ουρές Προτεραιότητας Περιεχόμενα 6.1 Ο αφηρημένος τύπος δεδομένων ουράς προτεραιότητας... 114 6.2 Ουρές προτεραιότητας με στοιχειώδεις δομές δεδομένων... 115 6.3 Δυαδικός σωρός... 116 6.3.1

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κεφάλαιο 11 Ένωση Ξένων Συνόλων Κεφάλαιο 11 Ένωση Ξένων Συνόλων Περιεχόμενα 11.1 Εισαγωγή... 227 11.2 Εφαρμογή στο Πρόβλημα της Συνεκτικότητας... 228 11.3 Δομή Ξένων Συνόλων με Συνδεδεμένες Λίστες... 229 11.4 Δομή Ξένων Συνόλων με Ανοδικά

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

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης Περιεχόμενα 7.1 Ο αφηρημένος τύπος δεδομένων λεξικού... 133 7.1.1 Διατεταγμένα λεξικά... 134 7.2 Στοιχειώδεις υλοποιήσεις με πίνακες και λίστες... 135 7.2.1

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

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε. Ψηφιακά Δένδρα Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών τα οποία είναι ακολουθίες συμβάλλων από ένα πεπερασμένο αλφάβητο Ένα στοιχείο γράφεται ως, όπου κάθε. Μπορούμε να

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

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου Συμπίεση Η συμπίεση δεδομένων ελαττώνει το μέγεθος ενός αρχείου : Εξοικονόμηση αποθηκευτικού χώρου Εξοικονόμηση χρόνου μετάδοσης Τα περισσότερα αρχεία έχουν πλεονασμό στα δεδομένα τους Είναι σημαντική

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

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

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

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

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων Κεφάλαιο 1 Εισαγωγή Περιεχόμενα 1.1 Αλγόριθμοι και Δομές Δεδομένων... 9 1.2 Διατήρηση Διατεταγμένου Συνόλου... 12 1.3 Ολοκληρωμένη Υλοποίηση σε Java... 15 Ασκήσεις... 18 Βιβλιογραφία... 19 1.1 Αλγόριθμοι

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

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

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

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

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

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα στα οποία κάθε κόμβος μπορεί να αποθηκεύει ένα ή περισσότερα κλειδιά. Κόμβος με d διακλαδώσεις : k 1 k 2 k 3 k 4 d-1 διατεταγμένα κλειδιά d διατεταγμένα παιδιά

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

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

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

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης Περιεχόμενα 8.1 Κατηγορίες ισορροπημένων δένδρων αναζήτησης... 155 8.1.1 Περιστροφές... 156 8.2 Δένδρα AVL... 157 8.2.1 Αποκατάσταση συνθήκης ισορροπίας... 158

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

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

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 1 2 3 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από

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

Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές

Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές Κεφάλαιο 5 Συλλογές, Στοίβες και Ουρές Περιεχόμενα 5.1 Αφηρημένοι τύποι δεδομένων... 94 5.2 Συλλογές και Επαναλήπτες... 95 5.1.1 Εφαρμογή: Υλοποίηση λιστών γειτνίασης γραφήματος... 96 5.2 Στοίβα... 97

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

Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων

Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων Κεφα λαιο 3 Στοιχειώδεις Δομές Δεδομένων Περιεχόμενα 3.1 Στοιχειώδεις τύποι δεδομένων... 39 3.2 Πίνακες... 40 3.2.1 Διδιάστατοι πίνακες... 43 3.3 Συνδεδεμένες Λίστες... 48 3.4 Αναδρομή... 51 3.4.1 Μέθοδος

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα

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

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση Κεφάλαιο 13 Αντισταθμιστική Ανάλυση Περιεχόμενα 13.1 Αντισταθμιστική Ανάλυση... 248 13.2 Μέθοδοι Αντισταθμιστικής Ανάλυσης... 250 13.2.1 Η χρεωπιστωτική μέθοδος... 250 13.2.2 Η ενεργειακή μέθοδος... 251

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών : Δένδρα Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών : Ανάλυση αλγορίθμων (π.χ. δένδρα αναδρομής) Δομές δεδομένων (π.χ. δένδρα αναζήτησης) ακμή Κατηγορίες (αύξουσα

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

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Γραμμικές Λίστες Βασικές Έννοιες Βασικές Έννοιες. Αναπαράσταση με τύπο και με δείκτη. Γραμμικές Λίστες. Βασικές Λειτουργίες. Δομές Δεδομένων: Βασικές Έννοιες Αντικείμενο

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

Κεφάλαιο 4 Γραφήματα και Δένδρα

Κεφάλαιο 4 Γραφήματα και Δένδρα Κεφάλαιο 4 Γραφήματα και Δένδρα Περιεχόμενα 4.1 Γραφήματα... 60 4.2 Δομές δεδομένων για την αναπαράσταση γραφημάτων... 64 4.2.1 Υλοποίηση σε Java... 66 4.3 Διερεύνηση γραφήματος... 69 4.4 Δένδρα... 86

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

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης Δοµές Δεδοµένων 18η Διάλεξη Ισορροπηµένα δέντρα Ε. Μαρκάκης Περίληψη Επανάληψη των Τυχαιοποιηµένων ΔΔΑ, Στρεβλών ΔΔΑ, Δέντρων 2-3-4 Δέντρα κόκκινου-µαύρου Λίστες Παράλειψης Χαρακτηριστικά επιδόσεων - συµπεράσµατα

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και

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

Κεφάλαιο 12 Διαχείριση Μνήμης

Κεφάλαιο 12 Διαχείριση Μνήμης Κεφάλαιο 12 Διαχείριση Μνήμης Περιεχόμενα 12.1 Ιεραρχία Μνήμης... 239 12.2 Εξωτερική Μνήμη... 241 12.2.1 Μοντέλο εξωτερικής μνήμης... 241 12.2.2 Διατεταγμένο αρχείο με ευρετήριο... 241 12.2.3 B-δένδρα...

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

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

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

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

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

Στοιχειώδεις Δομές Δεδομένων

Στοιχειώδεις Δομές Δεδομένων Στοιχειώδεις Δομές Δεδομένων Τύποι δεδομένων στη Java Ακέραιοι (int, long) Αριθμοί κινητής υποδιαστολής (float, double) Χαρακτήρες (char) Δυαδικοί (boolean) Από τους παραπάνω μπορούμε να φτιάξουμε σύνθετους

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

Ουρά Προτεραιότητας (priority queue)

Ουρά Προτεραιότητας (priority queue) Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει δύο βασικές λειτουργίες : Εισαγωγή στοιχείου με δεδομένο κλειδί. Επιστροφή ενός στοιχείου με μέγιστο (ή ελάχιστο) κλειδί και διαγραφή

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

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Περιεχόμενα 14.1 Διωνυμικά Δένδρα... 255 14.2 Διωνυμικές Ουρές... 258 14.1.1 Εισαγωγή στοιχείου σε διωνυμική ουρά... 258 14.1.2 Διαγραφή μεγίστου από διωνυμική

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

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης Δομές Δεδομένων και Αλγόριθμοι Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Στόχοι Μαθήματος Η σχεδίαση και ανάλυση αλγορίθμων και δομών δεδομένων αποτελεί σημαντικό τμήμα της πληροφορικής.

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

ΔυαδικάΔΕΝΔΡΑΑναζήτησης

ΔυαδικάΔΕΝΔΡΑΑναζήτησης ΔυαδικάΔΕΝΔΡΑΑναζήτησης Ρίζα (κόμβος που δεν έχει γονέα) πρόγονοι απόγονοι γονέας παιδιά έντρο είναι µία συλλογή από στοιχεία, που ονοµάζονται κόµβοι και συνδέονται µεταξύ τους µε τη βοήθεια ακµών αδέλφια

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

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, ορισμοί, πράξεις και αναπαράσταση στη μνήμη ΔυαδικάΔένδρακαιΔυαδικάΔένδραΑναζήτησης ΕΠΛ 231 Δομές

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

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) :

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) : Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος και Γέφυρα του (με αφετηρία τον ) : Ακμή που περιέχεται σε κάθε μονοπάτι από το στο s a b c d e f g h i j k l Μας δίνεται ένα δίκτυο (κατευθυνόμενο

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

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

Συλλογές, Στοίβες και Ουρές

Συλλογές, Στοίβες και Ουρές Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε για κάθε λειτουργία; χρόνο εκτέλεσης Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή μετά από Περιστροφές x αριστερή περιστροφή από το x y α β y

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

Αναδρομικοί Αλγόριθμοι

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

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

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη Εσωτερική Μνήμη Κρυφή Μνήμη (Cache) μεγαλύτερη χωρητικότητα Καταχωρητές (Registers) Κεντρική Μονάδα (CPU) μεγαλύτερη ταχύτητα Πολλές σημαντικές εφαρμογές διαχειρίζονται

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου

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

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 7 ο έντρο Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης έντρο Ορισµός Υλοποίηση µε Πίνακα Υλοποίηση µε είκτες υαδικό έντρο

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

Διαχρονικές δομές δεδομένων

Διαχρονικές δομές δεδομένων Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής Π.χ. κοκκινόμαυρο δένδρο εισαγωγή 0 18 0 5 39 73 1 46 6 80 Αποκατάσταση ισορροπίας 5 39 73 0 46 6 80

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

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

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε. Ψφά Δέ Μτά τ πίπτωσ όπ πύ έ (ό) σύ στχώ τ πί ί ί σβόω πό έ ππσέ φάβτ Έ στχί άφτ ω, όπ ά. Μπύ χσπήσ τ ππάω πάστσ πύσ τ στχί σ έ -ό έ : Έ σωτό όβ έχ ί ξχό ή ά σύβ Tries Έ trie (πό retrieval) ί έ ψφό έ όπ

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

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

Ουρά Προτεραιότητας (priority queue)

Ουρά Προτεραιότητας (priority queue) Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει τις ακόλουθες λειτουργίες PQinsert : εισαγωγή στοιχείου PQdelmax : επιστροφή του στοιχείου με το μεγαλύτερο* κλειδί και διαγραφή του

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

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Εισαγωγή σε δενδρικές δομές δεδομένων, -

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

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 17 Σωροί (Heaps) έκδοση 10 1 / 19 Heap Σωρός Ο σωρός είναι μια μερικά ταξινομημένη δομή δεδομένων που υποστηρίζει

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε για κάθε λειτουργία; χρόνο εκτέλεσης Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή μετά από Περιστροφές x αριστερή περιστροφή από το x y α β y

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

υαδικό έντρο Αναζήτησης (BSTree)

υαδικό έντρο Αναζήτησης (BSTree) Εργαστήριο 6 υαδικό έντρο Αναζήτησης (BSTree) Εισαγωγή Οι περισσότερες δοµές δεδοµένων, που εξετάσαµε µέχρι τώρα (λίστες, στοίβες, ουρές) ήταν γραµ- µικές (ή δοµές δεδοµένων µιας διάστασης). Στην παράγραφο

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

Διάλεξη 14: Δέντρα IV - B-Δένδρα

Διάλεξη 14: Δέντρα IV - B-Δένδρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 14: Δέντρα IV - B-Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - 2-3 Δένδρα, Εισαγωγή και άλλες πράξεις - Άλλα Δέντρα: Β-δένδρα, Β+-δέντρα,

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

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 14: Δέντρα IV B Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2 3 Δένδρα, Εισαγωγή και άλλες πράξεις Άλλα Δέντρα: Β δένδρα, Β+ δέντρα, R δέντρα Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231

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

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 21: Εισαγωγή σε Δενδρικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Εισαγωγή σε δενδρικές δομές δεδομένων, -Ορισμοί και πράξεις - Αναπαράσταση δενδρικών δομών δεδομένων

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

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Ορισμοί και πράξεις Αναπαράσταση δενδρικών δομών

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

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

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά EPL231: Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά Αναδρομή Η αναδρομή εμφανίζεται όταν μία διεργασία καλεί τον εαυτό της Υπάρχουν

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης Δοµές Δεδοµένων 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης Περίληψη Quicksort Χαρακτηριστικά επιδόσεων Μη αναδροµική υλοποίηση Δέντρα Μαθηµατικές ιδιότητες Δοµές Δεδοµένων 11-2

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670 ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ Έκτο ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ Δομές Δεδομένων και Αλγόριθμοι ΑΥΤΟΤΕΛΕΙΣ ΔΙΔΑΚΤΙΚΕΣ

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου 2 Ουρές

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

Δομές Δεδομένων. Ενότητα 9: Τα ΔΔΑ ως Αναδρομικές Δομές Δεδομένων-Εφαρμογή Δυαδικών Δέντρων: Κωδικοί Huffman. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 9: Τα ΔΔΑ ως Αναδρομικές Δομές Δεδομένων-Εφαρμογή Δυαδικών Δέντρων: Κωδικοί Huffman. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 9: Τα ΔΔΑ ως Αναδρομικές Δομές Δεδομένων-Εφαρμογή Δυαδικών Δέντρων: Κωδικοί Huffman Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Αλγόριθμοι Ταξινόμησης Μέρος 4

Αλγόριθμοι Ταξινόμησης Μέρος 4 Αλγόριθμοι Ταξινόμησης Μέρος 4 Μανόλης Κουμπαράκης Δομές Δεδομένων και Τεχνικές 1 Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Οι αλγόριθμοι ταξινόμησης που είδαμε μέχρι τώρα αποφασίζουν πώς να

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15 Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)

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

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Σχετικές έννοιες 8.3 Υλοποίηση δοµών δεδοµένων 8.4 Μια σύντοµη µελέτη περίπτωσης 8.5 Προσαρµοσµένοι τύποι δεδοµένων 1 Βασικές δοµές

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

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η διαδικασία PercolateDown, Δημιουργία Σωρού O Αλγόριθμος Ταξινόμησης HeapSort Υλοποίηση, Παραδείγματα

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:

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

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 0: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2018 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 14 Μαΐου 2018, ώρα 23:59 Τρόπος Παράδοσης: Χρησιμοποιώντας

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

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

4. Συνδεδεμένες Λίστες

4. Συνδεδεμένες Λίστες Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 4. Συνδεδεμένες Λίστες 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 10/11/2016 Εισαγωγή

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

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ισοζυγισμένα Δέντρα - Υλοποίηση AVL-δέντρων

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Συμβολοσειρές. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Συμβολοσειρές. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Συμβολοσειρές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Συμβολοσειρές Συμβολοσειρές και προβλήματα που αφορούν συμβολοσειρές εμφανίζονται τόσο συχνά που

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

Συγκρίσιμα Αντικείμενα (comparable)

Συγκρίσιμα Αντικείμενα (comparable) Συγκρίσιμα Αντικείμενα (comparable) public class Student implements Comparable{ public String lastname; public String firstname; public int am; public int compareto(object s) throws ClassCastException{

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

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Παπαγιαννόπουλος Δημήτριος 30 Μαρτίου 2017 18 Μαΐου 2017 papagianno@ceid.upatras.gr 1 Περιεχόμενα Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί

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

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 16 Δένδρα (Trees) 1 / 42 Δένδρα (Trees) Ένα δένδρο είναι ένα συνδεδεμένο γράφημα χωρίς κύκλους Για κάθε

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

Λίστες παράλειψης (skip lists)

Λίστες παράλειψης (skip lists) Χρησιμοποιεί πρόσθετους συνδέσμους στους κόμβους μιας συνδεδεμένης λίστας επιτάχυνση της αναζήτησης με παράλειψη μεγάλων τμημάτων της λίστας Μια λίστα παράλειψης είναι μια διατεταγμένη συνδεδεμένη λίστα

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων

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

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος

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