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

Σχετικά έγγραφα
Λίστες και Ακολουθίες. Λίστες και ακολουθίες 1

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

Διοικητική Λογιστική

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

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

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Εισαγωγή στους Αλγορίθμους

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

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Μάρκετινγκ Αγροτικών Προϊόντων

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Διοικητική Λογιστική

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Βάσεις Περιβαλλοντικών Δεδομένων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Ψηφιακή Επεξεργασία Εικόνων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΣΥΜΠΕΡΙΦΟΡΑ ΚΑΤΑΝΑΛΩΤΗ

Τεχνικό Σχέδιο - CAD

Οικονομική Γεωργικών Εκμεταλλεύσεων

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Δομές Δεδομένων Ενότητα 3

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1ο Μέρος)

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Τεχνικό Σχέδιο - CAD

Στατιστική. 6 ο Μάθημα: Διαστήματα Εμπιστοσύνης και Έλεγχοι Υποθέσεων. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Μάρκετινγκ Αγροτικών Προϊόντων

Μηχανολογικό Σχέδιο Ι

Μάρκετινγκ Αγροτικών Προϊόντων

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Βάσεις Περιβαλλοντικών Δεδομένων

Διδακτική Πληροφορικής

Κβαντική Επεξεργασία Πληροφορίας

Διδακτική Πληροφορικής

Κβαντική Επεξεργασία Πληροφορίας

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Βάσεις Δεδομένων. Ενότητα 1: Εισαγωγή στις Βάσεις δεδομένων. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Βέλτιστος Έλεγχος Συστημάτων

Εισαγωγή στην Πληροφορική

Δομές Δεδομένων Ενότητα 1

Διδακτική Πληροφορικής

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Κβαντική Επεξεργασία Πληροφορίας

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΗΛΕΚΤΡΟΝΙΚΗ Ι Ενότητα 5

Εκπαιδευτική Διαδικασία και Μάθηση στο Νηπιαγωγείο Ενότητα 1: Εισαγωγή

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Διαχείριση Πολιτισμικών Δεδομένων

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Αγροτικός Τουρισμός. Ενότητα 9 η : Εκπαιδευτικές τεχνικές στον τουρισμό. Όλγα Ιακωβίδου Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Εννοιες και Παράγοντες της Ψηφιακής Επεξεργασίας Εικόνας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Φυσική ΙΙΙ. Ενότητα 4: Ηλεκτρικά Κυκλώματα. Γεώργιος Βούλγαρης Σχολή Θετικών Επιστημών Τμήμα Φυσικής

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Προσχολική Παιδαγωγική Ενότητα 2: Οργάνωση χρόνου και χώρου στα νηπιαγωγεία

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Διδακτική των εικαστικών τεχνών Ενότητα 3

Εισαγωγή στους Υπολογιστές

ΣΥΜΠΕΡΙΦΟΡΑ ΚΑΤΑΝΑΛΩΤΗ

ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΚΑΛΑΘΟΣΦΑΙΡΙΣΗΣ ΙΙ

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Πληροφορική

Διοικητική Λογιστική

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

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Κοινωνία & Υγεία Υγεία Πρόληψη Προαγωγή υγείας: Βαθμίδες πρόληψης

Στατιστική. 5 ο Μάθημα: Βασικές Έννοιες Εκτιμητικής. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Προγραμματισμός Η/Υ. 7 η ενότητα: Αρχεία. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Μυκητολογικές ασθένειες φυτών μεγάλης καλλιέργειας

Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Διοίκηση Επιχειρήσεων

Ψηφιακή Επεξεργασία Εικόνων

Transcript:

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

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

Σημείωμα αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση, Όχι Παράγωγο Έργο 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-nd/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.. 3

Λίστες και Ακολουθίες Ακολουθίες 4

Κύρια σημεία για μελέτη Απλά συνδεδεμένη λίστα Ο ΑΤΔ της Θέσης και της Λίστας ( 2.2.2) Διπλά συνδεδεμένη λίστα ( 2.2.2) ΑΤΔ της Ακολουθίας ( 2.2.3) Υλοποίηση του ΑΤΔ της Ακολουθίας ( 2.2.3) Iterators (2.2.3) Ακολουθίες 5

Απλά Συνδεδεμένη Λίστα Μία απλά συνδεδεμένη λίστα είναι μία δομή δεδομένων αποτελούμενη από μία ακολουθία κόμβων επόμενο Σε κάθε κόμβο αποθηκεύεται Ένα στοιχείο Ένας σύνδεσμος στον επόμενο κόμβο στοιχείο κόμβος A B C D Ακολουθίες 6

Στοίβα με μία Απλά Συνδεδεμένη Λίστα Μπορούμε να υλοποιήσουμε μια στοίβα με μια απλά συνδεδεμένη λίστα Το στοιχείο κορυφή αποθηκεύεται στον πρώτο κόμβο της λίστας Ο χώρος που χρησιμοποιείται είναι O(n) και κάθε λειτουργία του ΑΤΔ της στοίβας παίρνει χρόνο O(1) κόμβοι t στοιχεία Ακολουθίες 7

Ουρά με Απλά Συνδεδεμένη Λίστα Μπορούμε να υλοποιήσουμε μια ουρά με μια απλά συνδεδεμένη λίστα Το πρώτο στοιχείο αποθηκεύεται στον πρώτο κόμβο Το τελευταίο στοιχείο αποθηκεύεται στον τελευταίο κόμβο Ο χώρος που χρησιμοποιείται είναι O(n) και κάθε λειτουργία r του ΑΤΔ της ουράς παίρνει χρόνο O(1) κόμβοι f στοιχεία Ακολουθίες 8

Ο ΑΤΔ της Θέσης Ο ΑΤΔ της Θέσης μοντελοποιεί την ιδέα της θέσης μέσα σε μία δομή δεδομένων όπου είναι αποθηκευμένο ένα απλό αντικείμενο Παρέχει μια ενοποιημένη οπτική διαφορετικών τρόπων αποθήκευσης δεδομένων, όπως Ένα κελί ενός πίνακα Ένα κόμβο από μια συνδεδεμένη λίστα Μόνο μία μέθοδος χρησιμοποιείται: Το αντικείμενο element(): επιστρέφει το στοιχείο που είναι αποθηκευμένο στη θέση Ακολουθίες 9

Ο ΑΤΔ της Λίστας Ο ΑΤΔ της Λίστας μοντελοποιεί μια ακολουθία από θέσεις που έχουν αποθηκευθεί αυθαίρετα δεδομένα Καθιστά μία σχέση before/after ανάμεσα στις θέσεις των αντικειμένων Γενικές μέθοδοι(generic) : size(), isempty() Μέθοδοι ερωτήσεων(query ): isfirst(p), islast(p) Μέθοδοι πρόσπέλασης(accessor) : first(), last() before(p), after(p) Update methods: replaceelement(p, o), swapelements(p, q) insertbefore(p, o), insertafter(p, o), insertfirst(o), insertlast(o) remove(p) Ακολουθίες 10

Διπλά Συνδεδεμένες Λίστες Μια Διπλά Συνδεδεμένη Λίστα ορίζει μια φυσική υλοποίηση του ΑΤΔ της λίστας Οι κόμβοι υλοποιούν τη Θέση και αποθηκεύουν: Ένα στοιχείο Ένα σύνδεσμο στον προηγούμενο κόμβο Ένα σύνδεσμο στον επόμενο κόμβο προηγούμενος επόμενος στοιχείο κόμβος Ειδικοί κόμβοι trailer και header header κόμβοι/θέσεις trailer στοιχεία Ακολουθίες 11

Εισαγωγή Δίνουμε ένα παράδειγμα της λειτουργίας insertafter(p, X), η οποία επιστρέφει τη θέση q p A B C p A B q C p q X A B X C Ακολουθίες 12

Διαγραφή Δίνουμε ένα παράδειγμα της λειτουργίας remove(p), όπου p = last() p A B C D A B C p D A B C Ακολουθίες 13

Απόδοση Στην υλοποίηση του ΑΤΔ της λίστας μέσω μιας διπλά συνδεδεμένης λίστας Ο χώρος που χρησιμοποιείται από μία λίστα με n στοιχεία είναι O(n) Ο χώρος που χρησιμοποιείται από κάθε θέση της λίστας είναι O(1) Όλες οι λειτουργίες του ΑΤΔ της λίστας τρέχουν σε χρόνο O(1) Η λειτουργία element() του ΑΤΔ της λίστας τρέχει σε χρόνο O(1) Ακολουθίες 14

ΑΤΔ της Ακολουθίας Ο ΑΤΔ της Ακολουθίας είναι η ένωση των ΑΤΔ του Διανύσματος και της Λίστας Τα στοιχεία προσπελάζονται από την τάξη (rank), ή τη θέση(position) Γενικές μέθοδοι(generic): size(), isempty() Μέθοδοι βασισμένοι σε διάνυσμα(vector-based): elematrank(r), replaceatrank(r, o), insertatrank(r, o), removeatrank(r) Μέθοδοι βασισμένοι σε λίστα(list-based): first(), last(), before(p), after(p), replaceelement(p, o), swapelements(p, q), insertbefore(p, o), insertafter(p, o), insertfirst(o), insertlast(o), remove(p) Μέθοδοι της Γέφυρας (Bridge): atrank(r), rankof(p) Ακολουθίες 15

Εφαρμογές των Ακολουθιών Ο ΑΤΔ μιας ακολουθίας είναι μία βασική, γενικού σκοπού, δομή δεδομένων για αποθήκευση μιας διατεταγμένης συλλογής στοιχείων Άμεσες εφαρμογές: Γενική αντικατάσταση για στοίβα, ουρά, διάνυσμα, ή λίστα Μικρή βάση δεδομένων (π.χ, βιβλίο διευθύνσεων) Έμμεσες εφαρμογές: Δημιουργία τμήματος(block) πιο περίπλοκων δομών δεδομένων Ακολουθίες 16

Υλοποίηση βασισμένη σε πίνακα Χρησιμοποιούμε έναν κυκλικό πίνακα που αποθηκεύει τις θέσεις Ένα αντικείμενο θέσης αποθηκεύει : Ένα στοιχείο Μία τάξη Οι δείκτες f και l δείχνουν την πρώτη και τελευταία θέση στοιχεία 0 1 2 3 θέσεις S f l Ακολουθίες 17

Υλοποιήσεις Ακολουθίας Λειτουργία Πίνακας Λίστα size, isempty 1 1 atrank, rankof, elematrank 1 n first, last, before, after 1 1 replaceelement, swapelements 1 1 replaceatrank 1 n insertatrank, removeatrank n n insertfirst, insertlast 1 1 insertafter, insertbefore n 1 remove n 1 Ακολουθίες 18

Iterators Ένας iterator αποτελεί μια γενίκευση της διαδικασία σαρώματος μιας συλλογής στοιχείων Μέθοδοι του ΑΤΔ του ObjectIterator : object object() boolean hasnext() object nextobject() reset() Αποτελεί μια προέκταση της ιδέας της Θέσης προσθέτοντας μία δυνατότητα διάσχισης Υλοποίηση με πίνακα ή απλά συνδεδεμένη λίστα Ένας iterator σχετίζεται τυπικά με μία άλλη δομή δεδομένων Μπορούμε να ενδυναμώσουμε τον ΑΤΔ της στοίβας, της ουράς, του διανύσματος, της λίστας και της ακολουθίας με τη μέθοδο: ObjectIterator elements() Δύο οπτικές του iterator: στιγμιότυπο: παγώνει τα περιεχόμενα της δομής δεδομένων σε μια δεδομένη χρονική στιγμή δυναμικό: ακολουθεί τις αλλαγές στη δομή δεδομένων Ακολουθίες 19

Τέλος Ενότητας