Δυναμικοί πίνακες Πολλές δομές δεδομένων υλοποιούνται με χρήση πινάκων π.χ. Στοίβες κάτω όριο άνω όριο α β γ δ τρέχουσα κορυφή tail head % N Ουρές Ν-1 … 1 5 2 4 3
Δυναμικοί πίνακες Πολλές δομές δεδομένων υλοποιούνται με χρήση πινάκων π.χ. Ουρές Προτεραιότητας Αναπαράσταση ως πλήρες δυαδικό δένδρο: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 20 η ρίζα έχει το μέγιστο κλειδί. [2] [3] ύψος lgN 18 12 Υλοποίηση με πίνακα: το στοιχείο στη θέση i είναι ο γονέας των στοιχείων στις θέσεις 2i και 2i+1. [4] [5] [6] [7] 11 15 9 5 [8] [9] [10] [11] [12] 4 2 7 13 6 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 20 18 12 11 15 9 5 4 2 7 13 6
Δυναμικοί πίνακες Πολλές δομές δεδομένων υλοποιούνται με χρήση πινάκων π.χ. Πίνακες Διασποράς (Πίνακες Κατακερματισμού) T U k2 K k1 k3 m-1
Δυναμικοί πίνακες Πολλές δομές δεδομένων υλοποιούνται με χρήση πινάκων Πίνακες στη C Δυναμική κατανομή μνήμης void initialize(int *a, int N) { *a = malloc(N*sizeof(int)); for (i=0; i<N; i++) a[i]=0; } void main() int *a; initialize(a,Ν);
Δυναμικοί πίνακες Πολλές δομές δεδομένων υλοποιούνται με χρήση πινάκων Πίνακες στη C Δυναμική κατανομή μνήμης void initialize(int *a, int N) { *a = malloc(N*sizeof(int)); for (i=0; i<N; i++) a[i]=0; } void main() int *a; initialize(a,Ν); Τι γίνεται αν δε γνωρίζουμε εκ των προτέρων τη τιμή του N;
Δυναμικοί πίνακες T k4 k7 k6 k2 k1 k3 7 k5
Δυναμικοί πίνακες T k4 k7 ο πίνακας είναι γεμάτος k6 k2 k8 k1 k3 7 k5
Δυναμικοί πίνακες T ο πίνακας είναι γεμάτος k4 k7 k6 k2 k9 k8 k1 k3 k5 k7 ο πίνακας είναι γεμάτος k6 k2 k9 k8 k1 k3 7 k5
Δυναμικοί πίνακες T ο πίνακας είναι γεμάτος k4 k7 ο πίνακας είναι γεμάτος k6 k2 k9 k8 k1 k3 7 k5 Λύση : Δημιουργούμε ένα μεγαλύτερο πίνακα Τ΄ και αντιγράφουμε τα στοιχεία του Τ. Τι μέγεθος πρέπει να έχει ο T’;
Δυναμικοί πίνακες Ακραία λύση 1: T T’ 7 7 8 νέο στοιχείο
Δυναμικοί πίνακες Ακραία λύση 1: T T’ αξιοποιούμε όλο το χώρο του Τ’ κάθε νέα εισαγωγή παίρνει Ο(n) χρόνο 7 7 8 νέο στοιχείο
Δυναμικοί πίνακες Ακραία λύση 2: T T’ εισαγωγή νέου στοιχείου σε Ο(1) χρόνο αξιοποιούμε ελάχιστο από το χώρο του Τ’ 7 7 8 νέο στοιχείο
Δυναμικοί πίνακες Ενδιάμεση λύση : T T’ εισαγωγή νέου στοιχείου σε αντισταθμιστικό Ο(1) χρόνο αξιοποιούμε πάνω από το μισό χώρο του Τ’ 7 7 8 νέο στοιχείο 15
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την αθροιστική μέθοδο όταν το i-1 είναι δύναμη του 2 Το κόστος της i-οστής εισαγωγής είναι: διαφορετικά
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την αθροιστική μέθοδο όταν το i-1 είναι δύναμη του 2 Το κόστος της i-οστής εισαγωγής είναι: διαφορετικά Επομένως για ακολουθία n εισαγωγών έχουμε συνολικό κόστος
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την χρεωπιστωτική μέθοδο Σε κάθε πράξη εισαγωγής αποδίδουμε 3 μονάδες πίστωσης T 1 1 1 νέο στοιχείο 7
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την χρεωπιστωτική μέθοδο Σε κάθε πράξη εισαγωγής αποδίδουμε 3 μονάδες πίστωσης T 1 1 1 νέο στοιχείο 7
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την χρεωπιστωτική μέθοδο Σε κάθε πράξη εισαγωγής αποδίδουμε 3 μονάδες πίστωσης T 1 νέο στοιχείο 1 1 7
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την χρεωπιστωτική μέθοδο Σε κάθε πράξη εισαγωγής αποδίδουμε 3 μονάδες πίστωσης T T’ 1 1 πριν το διπλασιασμό του πίνακα κάθε θέση έχει 1 μονάδα πίστωσης 1 1 1 1 1 1 7 7 8 15
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την χρεωπιστωτική μέθοδο Σε κάθε πράξη εισαγωγής αποδίδουμε 3 μονάδες πίστωσης T T’ 1 1 πριν το διπλασιασμό του πίνακα κάθε θέση έχει 1 μονάδα πίστωσης στον Τ’ δεν υπάρχει καμία πίστωση 1 1 1 1 1 αποπληρώνει τη μετακίνηση του στοιχείου 1 7 7 8 15
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την χρεωπιστωτική μέθοδο Σε κάθε πράξη εισαγωγής αποδίδουμε 3 μονάδες πίστωσης T T’ 7 7 8 1 νέο στοιχείο 1 1 15
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την χρεωπιστωτική μέθοδο Σε κάθε πράξη εισαγωγής αποδίδουμε 3 μονάδες πίστωσης T T’ 1 μέχρι τον επόμενο διπλασιασμό κάθε θέση του Τ’ θα έχει 1 μονάδα πίστωσης 7 7 1 8 1 νέο στοιχείο 15
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε όπου πλήθος αποθηκευμένων στοιχείων στον Τ μέγεθος του Τ Αρχικά, πριν την πρώτη εισαγωγή
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε όπου πλήθος αποθηκευμένων στοιχείων στον Τ μέγεθος του Τ Έστω ότι η i-οστή εισαγωγή δεν προκαλεί διπλασιασμό του πίνακα τότε και επομένως έχουμε αντισταθμιστικό κόστος
Δυναμικοί πίνακες Ενδιάμεση λύση : Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε όπου πλήθος αποθηκευμένων στοιχείων στον Τ μέγεθος του Τ Έστω ότι η i-οστή εισαγωγή προκαλεί διπλασιασμό του πίνακα Τότε και επομένως έχουμε αντισταθμιστικό κόστος
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Συντελεστής πληρότητας πίνακα Τ : όπου πλήθος αποθηκευμένων στοιχείων στον Τ μέγεθος του Τ Επιθυμητές ιδιότητες : α) περιορισμένη σπατάλη χώρου : σταθερά β) μικρό αντισταθμιστικό κόστος ανά πράξη
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Συντελεστής πληρότητας πίνακα Τ : όπου πλήθος αποθηκευμένων στοιχείων στον Τ μέγεθος του Τ Επιθυμητές ιδιότητες : α) περιορισμένη σπατάλη χώρου : σταθερά β) μικρό αντισταθμιστικό κόστος ανά πράξη Για να πετύχουμε την ιδιότητα (α) πρέπει να αντιγράφουμε τα στοιχεία σε μικρότερο πίνακα μετά από αρκετές διαγραφές
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Δοκιμάζουμε να επεκτείνουμε την προηγούμενη λύση διπλασιασμός υποδιπλασιασμός εισαγωγή με διαγραφή με 7 7 7 8 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Δοκιμάζουμε να επεκτείνουμε την προηγούμενη λύση διπλασιασμός υποδιπλασιασμός εισαγωγή με διαγραφή με 7 7 7 8 επιτυγχάνει 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Δοκιμάζουμε να επεκτείνουμε την προηγούμενη λύση διπλασιασμός υποδιπλασιασμός εισαγωγή με διαγραφή με 7 7 7 8 επιτυγχάνει Ο(n) αντισταθμιστικό κόστος ανά πράξη 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ο(n) αντισταθμιστικό κόστος ανά πράξη Π.χ. εισαγωγή 7 7 8 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ο(n) αντισταθμιστικό κόστος ανά πράξη Π.χ. εισαγωγή διαγραφή 7 7 7 8 8 15 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ο(n) αντισταθμιστικό κόστος ανά πράξη Π.χ. εισαγωγή διαγραφή διαγραφή 7 7 7 7 8 8 15 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ο(n) αντισταθμιστικό κόστος ανά πράξη Π.χ. γωγή εισαγωγή διαγραφή διαγραφή εισα 7 7 7 7 8 8 Μπορούμε να επαναλάβουμε την ίδια διαδικασία πολλές φορές 15 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Βελτιωμένη λύση διπλασιασμός υποδιπλασιασμός εισαγωγή με διαγραφή με 7 7 7 8 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Βελτιωμένη λύση διπλασιασμός υποδιπλασιασμός εισαγωγή με διαγραφή με 7 7 7 8 επιτυγχάνει Ο(1) αντισταθμιστικό κόστος ανά πράξη 15
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Ιδιότητες
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Ιδιότητες Το δυναμικό αρκεί για να καλύψει την αντιγραφή των αντικειμένων
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Αρχικά, πριν την πρώτη εισαγωγή και μετά από κάθε πράξη ισχύει Επομένως το συνολικό αντισταθμιστικό κόστος είναι
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Πρέπει να δείξουμε ότι η i-οστή πράξη (εισαγωγή ή διαγραφή) έχει αντισταθμιστικό κόστος Πρέπει να αναλύσουμε διάφορες περιπτώσεις ανάλογα με το είδος της πράξης και αν προκαλείται διπλασιασμός ή υποδιπλασιασμός του πίνακα
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Έστω ότι η i-οστή πράξη είναι εισαγωγή. Εάν και έχουμε
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Έστω ότι η i-οστή πράξη είναι εισαγωγή. Εάν και έχουμε
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Έστω ότι η i-οστή πράξη είναι διαγραφή. Εάν και δεν προκαλείται υποδιπλασιασμός έχουμε
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Έστω ότι η i-οστή πράξη είναι διαγραφή. Εάν και προκαλείται υποδιπλασιασμός έχουμε και οπότε
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Έστω ότι η i-οστή πράξη είναι διαγραφή. Εάν και προκαλείται υποδιπλασιασμός έχουμε και , άρα
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Ανάλυση με την ενεργειακή μέθοδο Επιλέγουμε , Με όμοιο τρόπο αναλύονται και οι υπόλοιπες περιπτώσεις. Έτσι λαμβάνουμε σταθερό αντισταθμιστικό κόστος για κάθε πράξη.
Δυναμικοί πίνακες Δυναμικοί πίνακες με εισαγωγές και διαγραφές Εγχειρίδιο της C++ στη διεύθυνση http://www.cplusplus.com/ Vector Vectors are a kind of sequence containers. As such, their elements are ordered following a strict linear sequence. Vector containers are implemented as dynamic arrays; Just as regular arrays, vector containers have their elements stored in contiguous storage locations, which means that their elements can be accessed not only using iterators but also using offsets on regular pointers to elements. But unlike regular arrays, storage in vectors is handled automatically, allowing it to be expanded and contracted as needed. Vectors are good at: Accessing individual elements by their position index (constant time). Iterating over the elements in any order (linear time). Add and remove elements from its end (constant amortized time).