Περιγραφή μαθήματος - Στόχοι
Περιγραφή Μαθήματος: Eισαγωγή στη Σχεδίαση και Ανάλυση Δομών Δεδομένων. Θεμελιώδη σχήματα καταχώρησης (πίνακες, αλυσίδες,δένδρα). Βασικές λειτουργίες μιας δομής (εισαγωγή, διαγραφή, απαρίθμηση, εντοπισμός). Υλοποίηση λειτουργιών εντοπισμού: απλοί κατάλογοι, στοίβες, ουρές αναμονής, ουρές προτεραιότητας, ευρετήρια, πίνακες διασποράς (hashing). Eισαγωγή σε ζητήματα κοστολόγησης (ανάλυση χειρίστης περιπτώσεως, μέση και χρεωλυτική ανάλυση, αναμενόμενη επίδοση). Προχωρημένα ζητήματα υλοποίησης (διωνυμικά δένδρα, αρθρωτά δένδρα, δένδρα Fibonacci). Ζητήματα καταχώρησης σχέσης δεδομένων: κλάσεις ισοδυναμίας, γενικές διμελείς σχέσεις (γράφοι). Ισχυρή και Ασθενής Συνδεσιμότητα γράφων. Κατά βάθος και κατά πλάτος αρίθμηση δένδρων και γράφων. Αφηρημένες δομές δεδομένων και οντοκεντρικός προγραμματισμός. Ασκήσεις υλοποίησης δομών με οντοκεντρικό προγραμματισμό.
Περιεχόμενα μαθήματος:
Introduction / Εισαγωγή
Time Complexity / Χρονική Πολυπλοκότητα
Basic Data Types / Βασικοί τύποι δομών δεδομένων
Basic Data Types: Lists, Stacks,Queues / Βασικές δομές δεδομένων: Λίστες, Στοίβες, Ουρές
Trees / Δέντρα
Dictionaries / Ευρετήρια
Hashing / Κατακερματισμός
Priority Queues / Ουρές Προτεραιότητας
Directed and Undirected Graphs / Κατευθυνόμενοι και μη κατυεθυνόμενοι γράφοι
Selected Topics on Graphs / Επιλεγμένα Θέματα σε γράφους
Selected Topics on Sorting / Επιλεγμένα Θέματα σε ταξινόμηση
Algorithm Design Techniques / Τεχνικές Σχεδίασης Αλγορίθμων
Μαθησιακοί στόχοι μαθήματος: Ο στόχος αυτού του μαθήματος είναι οι φοιτητές να μελετήσουν διαφορες δομές δεδομένων, να μάθουν τεχνικές για τη σχεδίαση τους, και να αναλύουν χρόνους εκτέλεσης πραξεων σε αυτες.