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

Σχετικά έγγραφα
Δομές Δεδομένων & Αλγόριθμοι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

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

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

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

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

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

Πληροφορική ΙΙ Θεματική Ενότητα 5

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

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

Δομημένος Προγραμματισμός

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

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

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Transcript:

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

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

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

7/9/2015 10:50 AM 4

Κύρια σημεία για μελέτη Ο ΑΤΔ της Ουράς ( 2.1.2) Υλοποίηση με ένα κυκλικό πινάκα ( 2.1.2) Επεκτάσιμη ουρά βασισμένη σε πίνακα Το Interface της Ουράς σε Java 7/9/2015 10:505 AM

Ο ΑΤΔ της Ουράς Ο ΑΤΔ της Ουράς αποθηκεύει αυθαίρετα αντικείμενα Οι Εισαγωγές και οι Διαγραφές ακολουθούν το σχήμα first-in firstout Οι εισαγωγές γίνονται στο τέλος της ουράς και οι διαγραφές από την αρχή της ουράς Κύριες λειτουργίες της ουράς: enqueue(αντικείμενο): εισάγει ένα στοιχείο στο τέλος της ουράς αντικείμενο dequeue(): διαγράφει και επιστρέφει το στοιχείο στην αρχή της ουράς Βοηθητικές εργασίες της ουράς: αντικείμενο front(): επιστρέφει το πρώτο στοιχείο χωρίς να το διαγράψει integer size(): επιστρέφει τον αριθμό των στοιχείων που είναι αποθηκευμένα boolean isempty(): δείχνει αν υπάρχουν ή όχι αποθηκευμένα στοιχεία Εξαιρέσεις Η προσπάθεια εκτέλεσης dequeue ή front σε μια άδεια ουρά προκαλεί μια EmptyueueException 7/9/2015 10:506 AM

Εφαρμογές των ουρών Άμεσες εφαρμογές Λίστες αναμονής, γραφειοκρατία Πρόσβαση σε μοιραζόμενους πόρους (π.χ, εκτυπωτής) Πολυπρογραμματισμός Έμμεσες εφαρμογές Βοηθητικές δομές δεδομένων για αλγόριθμους Συστατικό άλλων δομών δεδομένων 7/9/2015 10:507 AM

Ουρά βασισμένη σε πίνακα Χρησιμοποίηση ενός πίνακα μεγέθους N με ένα κυκλικό τρόπο Δύο μεταβλητές κρατάνε στοιχεία για το πρώτο και τελευταίο στοιχείο της ουράς f δείκτης του πρώτου στοιχείου r δείκτης του αμέσως επόμενου μετά το τελευταίο στοιχείο Η θέση του r στον πίνακα παραμένει άδεια Κανονική μορφή 0 1 2 f r wrapped-around μορφή 0 1 2 r f 7/9/2015 10:508 AM

Λειτουργίες της ουράς Χρησιμοποιούμε τον τελεστή modulo (υπόλοιπο της διαίρεσης) Algorithm size() return (N - f + r) mod N Algorithm isempty() return (f = r) 0 1 2 f r 0 1 2 r f 7/9/2015 10:509 AM

Λειτουργίες της ουράς (συνεχ.) Η λειτουργία enqueue προκαλεί μια exception όταν ο πίνακας είναι γεμάτος Αυτή η exception εξαρτάται από την υλοποίηση 0 1 2 f r Algorithm enqueue(o) if size() = N - 1 then throw FullueueException else [r] o r (r + 1) mod N 0 1 2 r f 7/9/2015 10:50 10AM

Λειτουργίες της ουράς (συνεχ.) Η λειτουργία dequeue προκαλεί μια exception όταν ο πίνακας είναι άδειος Αυτή η exception είναι καθορισμένη στον ΑΤΔ της ουράς Algorithm dequeue() if isempty() then throw EmptyueueException else o [f] f (f + 1) mod N return o 0 1 2 f r 0 1 2 r f 7/9/2015 10:50 11AM

Επεκτάσιμη ουρά βασισμένη σε πίνακα Σε μια λειτουργία enqueue, όταν ο πίνακας είναι γεμάτος, αντί να προκαλείται μια exception, μπορούμε να αντικαταστήσουμε τον πίνακα με ένα μεγαλύτερο Όμοια με ότι κάναμε για τη στοίβα βασισμένη σε πίνακα Η λειτουργία enqueue έχει ακαθόριστο χρόνο εκτέλεσης O(n) με τη στρατηγική προσαύξησης O(1) με τη στρατηγική διπλασιασμού 7/9/2015 10:50 12AM

Το Interface της Ουράς σε Java Το interface της Java που αντιστοιχεί στον ΑΤΔ της ουράς που περιγράψαμε Απαιτεί τον καθορισμό της κλάσης EmptyueueException Δεν υπάρχει αντίστοιχη ενσωματωμένη κλάση σε Java public interface ueue { } public int size(); public boolean isempty(); public Object front() throws EmptyueueException; public void enqueue(object o); public Object dequeue() throws EmptyueueException; 7/9/2015 10:50 13AM

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