Δομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr



Σχετικά έγγραφα
Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Πίνακες Συμβόλων. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Δομές Αναζήτησης. εισαγωγή αναζήτηση επιλογή. εισαγωγή. αναζήτηση

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

Δυναμικά Σύνολα. Δυναμικό σύνολο. Tα στοιχεία του μεταβάλλονται μέσω εντολών εισαγωγής και διαγραφής. διαγραφή. εισαγωγή

Standard Template Library (STL) C++ library

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

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

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

Περιεχόμενα. 2 Αριθμητικά συστήματα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

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

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

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

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

JDSL Java Data Structures Library

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

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

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

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

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

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

Σύνοψη Προηγούμενου (1/2) Στοίβες, Ουρές, Ουρές Προτεραιότητας. Σύνοψη Προηγούμενου (2/2) Σημερινό Μάθημα. Πίνακες. Εισαγωγή, σε χρόνο O(1).

επιφάνεια πυριτίου Αναφορά στο Εκπαιδευτικό Υλικό : 5. Αναφορά στο Εργαστήριο :

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Week. 6: Java Collections

Α.2 Μαθησιακά Αποτελέσματα Έχοντας ολοκληρώσει επιτυχώς το μάθημα οι εκπαιδευόμενοι θα είναι σε θέση να:

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

Προγραμματισμός Ι (HY120)

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

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

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

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Παύλος Εφραιμίδης Δομές Δεδομένων και Αλγόριθμοι

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

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

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

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

Standard Template Library (STL)

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

περιεχόμενα υπολογιστικό πρόβλημα αλγόριθμοι παράδειγμα ταξινόμησης ταξινόμηση αλγόριθμοι τεχνολογία αλγορίθμων Παύλος Εφραιμίδης

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

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

Μάθημα 22: Δυαδικά δέντρα (Binary Trees)

ΑΕΠΠ Ερωτήσεις θεωρίας

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

Διάλεξη 1: Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής. Ακαδημαϊκό Έτος

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Ουρά Προτεραιότητας: Heap

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Αντικειμενοστραφής Προγραμματισμός

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

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

υπολογιστικών συστημάτων. Παρουσίαση με τίτλο "Περιεχόμενο, διαδικασία μαθήματος και εισαγωγή"

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου

Επανάληψη για τις Τελικές εξετάσεις

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

κεφάλαιο Βασικές Έννοιες Επιστήμη των Υπολογιστών

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

Πληροφορική 2. Αλγόριθμοι

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07

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

Transcript:

Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr

Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δεδομένα: Σύνολο από πληροφορίες που αποθηκεύονται στον υπολογιστή για τη λύση ενός προβλήματος Δομή Δεδομένων: Μέθοδος αποθήκευσης και επεξεργασίας δεδομένων Niklaus Wirth : Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα

Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Ιστορικά στοιχεία Abū Abd Allāh Muhammad ibn Mūsā al-khwārizmī (780-850 μχ, περίπου)

Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Ιστορικά στοιχεία Abū Abd Allāh Muhammad ibn Mūsā al-khwārizmī (780-850 μχ, περίπου) Αλλά και παλαιότερα Ευκλείδης (300 πχ) Αλγόριθμος του Ευκλείδη για εύρεση μέγιστου κοινού διαιρέτη Βασίζεται στον κανόνα όπου είναι θετικοί ακέραιοι

Παραδείγματα: Internet

Παραδείγματα: Πλοήγηση (Navigation)

Παραδείγματα: Αναζήτηση/Ενημέρωση σε Βάση Δεδομένων

Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Παράδειγμα: Εύρεση ελαφρύτατων διαδρομών σε γράφημα 10 9 3 2 6 4 5 7 Παράδειγμα: Ουρά προτεραιότητας: επιστρέφει από μία συλλογή αντικειμένων το αντικείμενο με την ελάχιστη τιμή 2 Δομή Δεδομένων: Μέθοδος αποθήκευσης και επεξεργασίας δεδομένων

Δομή Δεδομένων: Μέθοδος αποθήκευσης και επεξεργασίας δεδομένων Γλώσσες προγραμματισμού όπως η C++ και η Java περιέχουν βιβλιοθήκες με χρήσιμες δομές δεδομένων C++ Standard Library: Standard Template Library (STL) bitset deque list map multimap multiset priority_queue queue set stack vector Bitset Double ended queue List Map Multiple-key map Multiple-key set Priority queue FIFO queue Set LIFO stack Vector

Δομή Δεδομένων: Μέθοδος αποθήκευσης και επεξεργασίας δεδομένων 0 1 2 3 seal wolf tiger vulture frog bat 4 5 koala elephant alligator horse 6 7 8 octopus mouse iguana dog lion 9 rabbit puma jaguar

Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή Δεδομένων: Μέθοδος αποθήκευσης και επεξεργασίας δεδομένων Μερικές εφαρμογές Ανάκτηση πληροφοριών: αναζήτηση, ευρετήρια, κατάταξη, Ασφάλεια: ασφαλής μετάδοση δεδομένων, πιστοποίηση, ηλεκτρονικό εμπόριο, Βιολογία: χαρτογράφηση ανθρώπινου γονιδιώματος, αναδίπλωση πρωτεϊνών, Βιομηχανία: κατανομή πόρων, βελτιστοποίηση παραγωγής, χρονοπρογραμματισμός, Επικοινωνίες: κωδικοποίηση, συμπίεση, μετάδοση, επεξεργασία σημάτων, Μεταφορές: συστήματα πλοήγησης, οργάνωση δρομολογίων, προσομοίωση, Υπολογιστές: σχεδιασμός κυκλωμάτων, μεταγλωττιστές, γραφικά,

Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή Δεδομένων: Μέθοδος αποθήκευσης και επεξεργασίας δεδομένων Οι αλγόριθμοι μπορούν να περιγραφούν σε φυσική γλώσσα με διαγράμματα ροής με ψευδο-κώδικα με κώδικα σε κάποια γλώσσα προγραμματισμού

Αλγόριθμος του Ευκλείδη για υπολογισμό του μέγιστου κοινού διαιρέτη Βασίζεται στον κανόνα όπου είναι θετικοί ακέραιοι. Περιγραφή αλγόριθμου : Αν τότε η απάντηση είναι. Διαφορετικά : Υπολόγισε. H απάντηση είναι. Ευκλείδης (300 πχ)

Αλγόριθμος του Ευκλείδη για υπολογισμό του μέγιστου κοινού διαιρέτη Βασίζεται στον κανόνα όπου είναι θετικοί ακέραιοι. Περιγραφή αλγόριθμου : Αν τότε η απάντηση είναι. Διαφορετικά : Υπολόγισε. H απάντηση είναι. Υλοποίηση σε Java : Ευκλείδης (300 πχ) public static int Euclid(int x, int y) { if (y==0) return x; int r = x % y; return Euclid(y, r); }

Αλγόριθμος του Ευκλείδη για υπολογισμό του μέγιστου κοινού διαιρέτη Βασίζεται στον κανόνα όπου είναι θετικοί ακέραιοι. Περιγραφή αλγόριθμου : Αν τότε η απάντηση είναι. Διαφορετικά : Υπολόγισε. H απάντηση είναι. Υλοποίηση σε Java : public static int Euclid(int x, int y) { if (y==0) return x; int r = x % y; return Euclid(y, r); } Ευκλείδης (300 πχ) Euclid (128,40)= Euclid (40,8)= Euclid (8,0)= 8

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. Π.χ.

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. Π.χ.

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. Π.χ.

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. Π.χ.

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. Π.χ.

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. Π.χ.

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. Π.χ. βρέθηκε!

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. public static int linearsearch(int a[], int v, int l, int r) { for (int i=l; i<=r; i++) if (v == a[i]) return i; return -1; }

Παράδειγμα: Ακολουθιακή (γραμμική) αναζήτηση Μας δίνεται μία ακολουθία από ακέραιους και ένας ακέραιος Θέλουμε να βρούμε ένα τέτοιο ώστε Ακολουθιακή αναζήτηση: εξετάζουμε τα στοιχεία της ακολουθίας ξεκινώντας από τη θέση 1, προχωρώντας στη θέση 2, θέση 3, κ.ο.κ. μέχρι να βρούμε το το ζητούμενο στοιχείο ή μέχρι να εξαντλήσουμε την ακολουθία. Ο χρόνος της αναζήτησης εξαρτάται από τα δεδομένα εισόδου: Επιτυχής αναζήτηση: Αν κάθε στοιχείο της ακολουθίας είναι εξίσου πιθανό να είναι το τότε ο αναμενόμενος αριθμός συγκρίσεων είναι Ανεπιτυχής αναζήτηση: o αριθμός των συγκρίσεων είναι

... Βασικές έννοιες και εφαρμογές Υπολογιστικό Μοντέλο Ένας επεξεργαστής και μεγάλος χώρος μνήμης Κάθε θέση μνήμης έχει μια αριθμητική διεύθυνση Η μνήμη είναι τυχαίας προσπέλασης: η πρόσβαση σε οποιαδήποτε θέση μνήμης (ανεξάρτητα από τη διεύθυνσή της) γίνεται με την ίδια ταχύτητα 0 1 2

Τύποι Δεδομένων Η πληροφορία κωδικοποιείται µε bits. Οι τύποι δεδομένων µας επιτρέπουν να ερμηνεύσουμε σωστά την κωδικοποίηση αυτή. Τύποι δεδομένων του υλικού αριθμοί, χαρακτήρες,, στο υλικό Ιδεατοί τύποι δεδομένων τύποι δεδομένων σε επίπεδο γλώσσας προγραμματισμού (π.χ. στη Java: int, double, boolean, char) Αφηρημένοι τύποι δεδομένων τύποι δεδομένων που ορίζονται από τον προγραμματιστή

Αφηρημένοι Τύποι Δεδομένων (Abstract Data Types) Τύπος δεδομένων Σύνολο τιμών και συλλογή πράξεων που εφαρμόζονται πάνω σε αυτές τις τιμές Αφηρημένος τύπος δεδομένων Τύπος δεδομένων τον οποίο ο χρήστης μπορεί να προσπελαστεί μόνο μέσω κάποιων διασυνδέσεων (interfaces). Πελάτης (client) Πρόγραμμα που χρησιμοποιεί έναν αφηρημένος τύπος δεδομένων Υλοποίηση (implementation) Πρόγραμμα που ορίζει έναν (αφηρημένο) τύπο δεδομένων Ο τρόπος αναπαράστασης ενός αφηρημένου τύπου δεδομένων δεν είναι ορατός από τους πελάτες

Αφηρημένοι Τύποι Δεδομένων Παράδειγμα : Διαχείριση σημείων στο επίπεδο Διασυνδέσεις εισαγωγή σημείου διαγραφή σημείου καταμέτρηση αριθμού σημείων εντός ορισμένου ορθογώνιου παραλληλόγραμμου

Αφηρημένοι Τύποι Δεδομένων Παράδειγμα : Διαχείριση δυναμικού συνόλου με ολική διάταξη Διασυνδέσεις εισαγωγή στοιχείου διαγραφή στοιχείου αναζήτηση στοιχείου ταξινόμηση διάδοχος προκάτοχος μέγιστο/ελάχιστο

Στόχοι του μαθήματος Κατανόηση της λειτουργίας βασικών δομών δεδομένων καθώς και των εφαρμογών τους. Εξοικείωση με βασικές τεχνικές σχεδίασης και ανάλυσης δομών δεδομένων. Εξάσκηση στην υλοποίηση αποδοτικών δομών δεδομένων και των αλγορίθμων χειρισμού τους.

Επιδιωκόμενα αποτελέσματα Οι φοιτητές που παρακολουθούν επιτυχώς το μάθημα θα μπορούν να: Αναλύσουν την επίδοση βασικών δομών δεδομένων. Εκτιμούν τον χρόνο εκτέλεσης των διαφόρων λειτουργιών μιας δομής δεδομένων. Συγκρίνουν την αποδοτικότητα και την καταλληλόλητα διαφορετικών δομών δεδομένων για την επίλυση κάποιου προβλήματος. Σχεδιάζουν σύνθετες δομές δεδομένων ή δομές δεδομένων προσαρμοσμένες σε κάποιο πρόβλημα. Υλοποιούν αποδοτικούς αλγόριθμους για την επίλυση διαφόρων προβλημάτων.

Αξιολόγηση Εργαστηριακές ασκήσεις ~7 εργαστηριακές ασκήσεις: Μελέτη αλγόριθμων και δομών δεδομένων - υλοποίηση σε γλώσσα προγραμματισμού Java Κάθε ομάδα αποτελείται από 1 έως 3 άτομα Ασκήσεις για το σπίτι ~3 σετ ασκήσεων (ατομικά): θεωρητική μελέτη-ανάλυση αλγόριθμων και δομών δεδομένων Πληροφορίες και ανακοινώσεις μέσω της ιστοσελίδας του μαθήματος

Βιβλία