Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

Σχετικά έγγραφα
ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Φροντιστήριο 4 Σκελετοί Λύσεων

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

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Φροντιστήριο 4 Σκελετοί Λύσεων

Στοίβες με Δυναμική Δέσμευση Μνήμης

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

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

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

ιαφάνειες παρουσίασης #5 (β)

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

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

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

Βασικές Δομές Δεδομένων

Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

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

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

Δείκτες και Δομές. Info. Link. typedef struct NodeTag { InfoField Info; struct NodeTag *Link; } NodeType;

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι

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

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

Προγραμματισμός Δομές Δεδομένων

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

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

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

1. ΕΙΣΑΓΩΓΗ-ΓΕΝΙΚΑ ΠΕΡΙ ΑΦΗΡΗΜΕΝΩΝ ΤΥΠΩΝ ΔΕΔΟΜΕΝΩΝ

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

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Σήμερα. Εργαστήρια Τεχνικών Προγραμματισμού. Διαδικαστικά 19/3/2015. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός

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

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

ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα

Περιεχόμενα. Περιεχόμενα

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

Οι δομές δεδομένων στοίβα και ουρά

Βασικές οµές εδοµένων

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

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

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

Περίγραμμα. Διαδικαστικά. Εργαστήρια Τεχνικών Προγραμματισμού 21/2/2017. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

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

Εργαστήριο 5: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Διπλά Συνδεδεμένη Λίστα

Standard Template Library (STL) C++ library

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Αντισταθμιστική ανάλυση

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

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

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

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

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

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

υναµικές οµές εδοµένων

ιαφάνειες παρουσίασης #6 (α)

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

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

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

Transcript:

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

Κύκλος (Ζωής) Λογισμικού (ΑΤΔ) Γενικά Ορισμός ΑΤΔ (Προδιαγραφές) Οργάνωση Δεδομένων Τι κάνει Υλοποίηση Σχεδιασμός (ανεξάρτητος από γλώσσα υλοποίησης) Πώς το κάνει (πίνακες, συνδεδεμένες λίστες, κλπ) Ανάπτυξη (σε Γλώσσα) Ενότητες στην C, java class Δοκιμή και πάλι Παράδειγμα Ορισμός ΑΤΔ Στοίβα Γραμμική Διάταξη Δημιουργία, κενή, ώθηση, εξαγωγή Υλοποίηση Σχεδιασμός πίνακα + κορυφή Συνδεδεμένη Λίστα Ανάπτυξη σε C Ενότητες της C με πλήρη Απόκρυψη Δοκιμή και πάλι

Τρεις Επιλογές Σχεδιασμού ΑΤΔ (Ανεξάρτητες Γλώσσας Υλοποίησης) 1. Με Πίνακα: Αντιστοιχούμε Στοιχεία του ΑΤΔ σε Πίνακα. 1. TyposStoixeiou List[N]; // ο πίνακας με τα δεδομένα 2. Συναρτήσεις πρόσβασης στα στοιχεία του πίνακα 2. Με Συνδεδεμένους Κόμβους typedef struct Node {TyposStoixeiou data; TyposLink next} Node; TyposLink Start; // τύπος κόμβου // η Αρχή των κόμβων a) Σύνδεση/διαχείριση με pointers-κόμβοι από heap i. typedef Node * TyposLink ; // η σύνδεση-δείκτης ii. Κόμβοι από Heap // διαθέσιμος χώρος iii. New=malloc(sizeof(Node)); free(new); // διαχείριση κόμβων b) Σύνδεση/διαχείριση με θέσεις πίνακα-κόμβοι στοιχεία πίνακα i. typedef int TyposLink; // η σύνδεση-int ii. Node List[Ν]; // όλοι οι κόμβοι σε πίνακα iii. πάρε-κόμβο και αποδέσμευση // διαχείριση

Σχεδιασμός με Διάταξη Πίνακα (ΔΠ) Πλεονεκτήματα Άμεση Πρόσβαση σε κάθε στοιχείο, π.χ. List[i] Οικονομία Μνήμης σε επίπεδο στοιχείου, το List[i] περιέχει μόνο δεδομένα Εισαγωγές και Διαγραφές στην αρχή ή τέλος υποστηρίζονται αποδοτικά σε σταθερό χρόνο O(1) Μειονεκτήματα Συγκεκριμένο μέγεθος (συντηρητική δήλωση δεν είναι αρκετή ή υπερβολική δήλωση με σπατάλη χώρου) Πολλά Ενδιάμεσα Κενά Στοιχεία, αραιές δομές (π.χ. πολυώνυμο, πίνακες) Εισαγωγές + Διαγραφές από την μέση κοστίζουν (Λίστα O(n))

Σχεδιασμός Με Συνδεδεμένους Κόμβους (ΣΚ) Πλεονεκτήματα Μόνο χρήσιμα στοιχεία, δεν έχουμε κενά στοιχεία (πολυώνυμο) Εισαγωγές/Διαγραφές σε σταθερό χρόνο σε/από οποιαδήποτε θέση Μειονεκτήματα Επιπλέον μνήμη σε επίπεδο στοιχείου λόγω σύνδεσης (π.χ. μονής ή διπλά συνδεδεμένης λίστας) Σειριακή Πρόσβαση στα στοιχεία. Η τυχαία πρόσβαση κοστίζει Ο(n).

Σχεδιασμός Με Συνδεδεμένους Κόμβους (ΣΚ) Struct+Pointers (SP) Πλεονεκτήματα Όλα τα γενικά των ΣΚ Δυναμικό μέγεθος δομής, όσοι κόμβοι απαιτούνται Μειονεκτήματα Όλα τα γενικά των ΣΚ Διαχείριση Heap με malloc + free ευθύνη του προγραμματιστή

Σχεδιασμός Με Συνδεδεμένους Κόμβους (ΣΚ) Πίνακα + Θέση (ΠΘ) Πλεονεκτήματα Όλα τα γενικά των ΣΚ Χρήσιμος σχεδιασμός όταν δεν έχουμε δυναμική ανάκτηση μνήμης Κάρτες SIM με συγκεκριμένο χώρο για επαφές Αποφεύγουμε δείκτες σε συστήματα ασφαλείας πολλές φορές οι δείκτες δεν συνιστώνται Μειονεκτήματα Όλα τα γενικά των ΣΚ Συγκεκριμένο μέγεθος πίνακα, αλλά με κάποια ευελιξία (π.χ. στα Δένδρα το μέγεθος του πίνακα καθορίζει τον μέγιστο αριθμό των κόμβων ανεξάρτητα βάθους)

Πώς Επιλέγουμε Διάταξη Πίνακα Γνωστό πλήθος στοιχείων Διάταξη στοιχείων χωρίς πολλά κενά, π.χ. πλήρη πολυώνυμα Όχι μετακινήσεις στοιχείων. Αλγόριθμοι με άμεση πρόσβαση στοιχείων (αναζήτηση, ταξινόμηση) Συχνές τυχαίες προσβάσεις σε σύγκριση με εισαγωγές και διαγραφές Συνδεδεμένοι Κόμβοι (ΣΚ-SP) (ΣΚ-ΠΘ είναι συμβιβασμός) Δεν γνωρίζουμε πλήθος στοιχείων Διάταξη έχει κενά, π.χ. μη πλήρη πολυώνυμα, αραιοί πίνακες, μη ισοζυγισμένα δένδρα Συχνές εισαγωγές και διαγραφές σε σύγκριση με τυχαίες προσβάσεις.

Υλοποιήσεις Στοίβας, Ουράς, Λίστας Στοίβα Ουρά Λίστα Διάταξη Πίνακα ΣΚ-ΠΘ ΣΚ-SP ΝΑΙ- Γνωστό μέγεθος ΝΑΙ- Γνωστό μέγεθος ΝΑΙ- Γνωστό μέγεθος, άμεση πρόσβαση στα στοιχεία, χωρίς (πολλές) διαγραφές και εισαγωγές. ΌΧΙ-μηδέν όφελος Δεν έχουμε μετακινήσεις, εισαγωγές, διαγραφές από την μέση. Πράξεις με βάσει την κορυφή. ΌΧΙ. Δεν έχουμε μετακινήσεις, εισαγωγές, διαγραφές από την μέση. Πράξεις βάσει εμπρός και πίσω. ΝΑΙ-Γνωστό μέγεθος. Εισαγωγές, διαγραφές από την μέση. Επιτρέπει παραλλαγές ανάλογα με τις απαιτήσεις (είδαμε μόνο μία παραλλαγήμονά συνδεδεμένη) ΝΑΙ- Δυναμικό μέγεθος ΝΑΙ- Δυναμικό μέγεθος ΝΑΙ-Δυναμικό μέγεθος Εισαγωγές, διαγραφές από την μέση Επιτρέπει παραλλαγές (πόσες;) ανάλογα με τις απαιτήσεις

Παραλλαγές Λίστας με ΣΚ ΠΘ ή SP Απλή ή Διπλά συνδεδεμένη; (κόστος μνήμης χρόνου) Απλή: βασική μνήμη σύνδεσης, Ο(n) για προηγούμενο κόμβο Διπλά: επιπλέον μνήμη σύνδεσης, Ο(1) για προηγούμενο κόμβο Με κεφαλή ή χωρίς; (κόστος ανάπτυξης- μνήμης) Χωρίς: απαιτούνται 2 πράξεις εισαγωγής και 2 διαγραφής Με κεφαλή: 1 πράξη εισαγωγής και 1 διαγραφής με κόστος έναν κόμβο επιπλέον Κυκλική ή μη; (κόστος χρόνου) αν απαιτούνται πράξεις που συνεχίζουμε από το τέλος. Με ένδειξη Τέλους Λίστας ή μη; (κόστος χρόνου μνήμης) Αν γίνονται συχνά εισαγωγές στο τέλος (π.χ. ουρά) 2x2x2x2=16 παραλλαγές (μόνο;) x2 (ΠΘ-SP)= 32 Όλες χρήσιμες υλοποιήσεις. Με πόσες διεπαφές; (1-2-16-32;)