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

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

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

Αλγόριθμοι. Χρυσόστομος Στύλιος. Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής. Δομές Δεδομένων & Αλγόριθμοι 1

Αλγοριθμικές Τεχνικές

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

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

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

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

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

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ ΑΛΓΟΡΙΘΜΟΙ Δ Ι ΑΛΕΞΗ / 02/2016 ΔΙΔΑΣΚΩΝ ΚΩΣΤΑΣ ΚΟΛΟΜΒΑΤΣΟΣ

viii 20 Δένδρα van Emde Boas 543

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

ΗΜΥ 325: Επαναληπτικές Μέθοδοι. Διδάσκων: Χρίστος Παναγιώτου

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

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

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

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

JDSL Java Data Structures Library

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

Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες

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

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

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

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

Δοµές Δεδοµένων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Φθινοπωρινό Εξάµηνο Ευάγγελος Μαρκάκης

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

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Αλγόριθμοι και Πολυπλοκότητα

Περιεχόμενα. 1. Εισαγωγή: Κάποια αντιπροσωπευτικά προβλήματα Βασικά στοιχεία ανάλυσης αλγορίθμων Γραφήματα...

Κεφάλαιο 1. Πέντε Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.4, 30/10/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Παύλος Εφραιμίδης V1.1,

Ταξινόμηση με συγχώνευση Merge Sort

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

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

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

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

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

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

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ

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

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

ΠΕΡΙΕΧΟΜΕΝΑ 1 ΚΕΦΑΛΑΙΟ ΟΙ ΥΠΟΛΟΓΙΣΤΕΣ ΑΠΟ ΤΗΝ ΑΡΧΑΙΟΤΗΤΑ ΜΕΧΡΙ ΣΗΜΕΡΑ Ιστορική αναδρομή Υπολογιστικές μηχανές

Εντολή Επίλεξε.. Στοίβα & Ουρά Διαίρει & Βασίλευε

- Επιστημονικός Υπεύθυνος Ενεργείας: Θεόδωρος Γ. Εξαρχάκος Καθηγητής του Πανεπιστημίου Αθηνών Πρόεδρος του Παιδαγωγικού Ινστιτούτου «Αναμόρφωση / εκ

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

Ενδεικτικές Ερωτήσεις Θεωρίας

I student. Μεθοδολογική προσέγγιση και απαιτήσεις για την ανάπτυξη των αλγορίθμων δρομολόγησης Χρυσοχόου Ευαγγελία Επιστημονικός Συνεργάτης ΙΜΕΤ

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

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

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

ΑΝΑΚΟΙΝΩΣΗ ΚΑΤΑΤΑΚΤΗΡΙΩΝ ΕΞΕΤΑΣΕΩΝ ΑΚ. ΈΤΟΥΣ

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

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

Ακέραιος Γραμμικός Προγραμματισμός

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Κεφάλαιο 4. Δυναµικός Προγραµµατισµός (Dynamic Programming) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

2. Αλγόριθμοι, δομές δεδομένων και πολυπλοκότητα

Πρόλογος. Πρόλογος 13. Πώς χρησιμοποείται αυτό το βιβλίο 17

xvi Προσέγγιση δομεσ δεδομενων και αλγοριθμοι

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

Επιµέλεια Θοδωρής Πιερράτος

SYLLABUS CHAPTER - 1 : INTRODUCTION TO ALGORITHMS CHAPTER - 2 : DIVIDE AND CONQUER CHAPTER - 3 : GREEDY METHOD

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 4

Ακέραιος Γραμμικός Προγραμματισμός

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

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

Μάθημα Επιλογής 8 ου εξαμήνου

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

ΓΕ0170 -Αλγόριθμοι και Προηγμένες Προγραμματικές Τεχνικές. Εισαγωγή. Νίκος Αθανάσης.

Αλγόριθµοι Brute-Force και Διεξοδική Αναζήτηση

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

Transcript:

Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 1 Εισαγωγή 1 / 14

Δομές Δεδομένων και Αλγόριθμοι Δομή Δεδομένων Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων τα οποία έχουν εσκεμμένα διαταχθεί με συγκεκριμένο τρόπο Αλγόριθμος Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών που αποσκοπεί στην εκτέλεση μιας εργασίας Οι αλγόριθμοι υπάρχουν μαζί με τις δομές δεδομένων πάνω στις οποίες επενεργούν Algorithms + Data Structures = Programs Σχετικά πεδία με τους αλγορίθμους και τις δομές δεδομένων από το χώρο της επιστήμης υπολογιστών είναι οι βάσεις δεδομένων, ο αντικειμενοστραφής προγραμματισμός, η τεχνολογία λογισμικού 2 / 14

Παραδείγματα Δομών Δεδομένων Πίνακες (arrays) Δομές (structs) Αντικείμενα (objects) Λίστες (lists) Σύνολα (sets) Στοίβες (stacks) Ουρές (queues) Λεξικά (dictionaries) Δένδρα (trees) Σωροί (heaps) Γραφήματα (graphs) Κατακερματισμένοι πίνακες (hash tables) 3 / 14

Βασικές αλγοριθμικές έννοιες Επανάληψη (iteration): Εκτέλεση των ίδιων εντολών πολλές φορές Πολυπλοκότητα αλγορίθμων (algorithmic complexity): Εκτίμηση για την απόδοση ενός αλγορίθμου Αντικείμενα (objects): Ενισχυμένη δομή δεδομένων με λειτουργίες που μπορούν να εφαρμοστούν πάνω της Αναδρομή (recursion): Κλήση του αλγορίθμου από τον ίδιο τον αλγόριθμο Κατακερματισμός (hashing): Μετασχηματισμός πληροφορίας σε ένα μικρού μεγέθους κλειδί που αναπαριστά το περιεχόμενο της πληροφορίας 4 / 14

Παραδείγματα Αλγορίθμων Mergesort Quicksort Binary Search Dijkstra s Shortest Path Huffman coding Hashing Bloom filters 5 / 14

Βασικές τεχνικές σχεδιασμού και επίλυσης προβλημάτων Ωμής δύναμης (Brute force) Άπληστη μέθοδος (Greedy method) Διαίρει και βασίλευε (Divide and conquer) Δυναμικός προγραμματισμός (Dynamic programming) Οπισθοδρόμησης (Backtracking) Διαμερισμός και φραγή (Branch and Bound) Τυχαιοποιημένοι αλγόριθμοι (Randomized algorithms) 6 / 14

Σημαντικές κατηγορίες προβλημάτων Ταξινόμηση Αναζήτηση Επεξεργασία αλφαριθμητικών Προβλήματα γραφημάτων Συνδυαστικά προβλήματα Γεωμετρικά προβλήματα Αριθμητικά προβλήματα 7 / 14

Ταξινόμηση Η ταξινόμηση αφορά την αναδιάταξη των στοιχείων μιας λίστας σε αύξουσα ή σε φθίνουσα σειρά Η ταξινόμηση μπορεί να αφορά αριθμούς, κείμενο ή εγγραφές Ο σημαντικότερος λόγος για τον οποίο κάνουμε ταξινόμηση είναι η αναζήτηση Δεν υπάρχει αλγόριθμος ταξινόμησης που να είναι καλύτερος όλων των άλλων για όλες τις περιπτώσεις Η επιλογή του καταλληλότερου αλγορίθμου ταξινόμησης εξαρτάται (μεταξύ άλλων): από το βαθμό στον οποίο τα δεδομένα είναι ήδη ταξινομημένα από το πλήθος των στοιχείων από το που βρίσκονται τα στοιχεία (στη μνήμη ή σε δευτερεύουσες μονάδες αποθήκευσης) Δύο σημαντικές ιδιότητες των αλγορίθμων ταξινόμησης είναι: η ιδιότητα της ευστάθειας: Ένας αλγόριθμος ταξινόμησης είναι ευσταθής (stable) αν η σχετική θέση δύο στοιχείων διατηρείται και μετά την ταξινόμηση η ιδιότητα σε θέση: Ένας αλγόριθμος είναι σε θέση (in place) αν δεν απαιτεί επιπλέον μνήμη για να ολοκληρώσει την ταξινόμηση 8 / 14

Αναζήτηση Αναζήτηση είναι η εύρεση ενός κλειδιού σε ένα σύνολο τιμών Δυο γνωστές περιπτώσεις αλγορίθμων αναζήτησης είναι η σειριακή αναζήτηση και η δυαδική αναζήτηση Ωστόσο συχνά χρησιμοποιούνται και αλγόριθμοι που διατηρούν τα δεδομένα σε μορφή που διευκολύνει την αναζήτηση και οι οποίοι είναι ιδιαίτερα χρήσιμοι για αναζήτηση σε μεγάλες βάσεις δεδομένων Σε εφαρμογές που τα δεδομένα αλλάζουν συχνά σε σχέση με τις αναζητήσεις που γίνονται, η αλγοριθμική προσέγγιση για την αναζήτηση, θα πρέπει να εξετάζεται σε σχέση και με δύο άλλες λειτουργίες, την εισαγωγή και την διαγραφή, έτσι ώστε να επέρχεται ισορροπία 9 / 14

Επεξεργασία αλφαριθμητικών Αλφαριθμητικό (string) είναι μια ακολουθία χαρακτήρων που λαμβάνονται από ένα αλφάβητο Ένα πρόβλημα που συχνά παρουσιάζεται στην επεξεργασία αλφαριθμητικών είναι η εύρεση ενός αλφαριθμητικού μέσα σε ένα άλλο αλφαριθμητικό 10 / 14

Προβλήματα γραφημάτων Ένα γράφημα αποτελείται από κορυφές και ακμές Μερικοί σημαντικοί αλγόριθμοι για γραφήματα είναι: η διάσχιση γραφήματος, η εύρεση της συντομότερης διαδρομής ανάμεσα σε δύο κορυφές, η τοπολογική ταξινόμηση, και το ελάχιστο συνεκτικό δένδρο Υπάρχουν πολλές εφαρμογές των γραφημάτων που συναντώνται σε δίκτυα μεταφορών, σε δίκτυα επικοινωνιών, στο προγραμματισμό έργων κα 11 / 14

Συνδυαστικά προβλήματα Συνδυαστικά προβλήματα είναι εκείνα στα οποία ζητείται να βρεθεί ένας συνδυασμός ή ένα υποσύνολο που να ικανοποιεί συγκεκριμένους περιορισμούς και να έχει κάποια επιθυμητή ιδιότητα Πρόκειται για δύσκολα προβλήματα στα οποία καθώς μεγαλώνει το πρόβλημα οι πιθανοί συνδυασμοί γίνονται υπερβολικά πολλοί έτσι ώστε να απαριθμηθούν όλοι Μερικά παραδείγματα συνδυαστικών προβλημάτων είναι: η δρομολόγηση στόλου οχημάτων, ο χρονοπρογραμματισμός προσωπικού και το πρόβλημα ανάθεσης εργασιών Δεν υπάρχουν αλγόριθμοι που να επιλύουν πλήρως (exactly) αυτά τα προβλήματα ανεξαρτήτως μεγέθους 12 / 14

Γεωμετρικά προβλήματα Τα γεωμετρικά προβλήματα αφορούν προβλήματα που μπορούν να μοντελοποιηθούν χρησιμοποιώντας σημεία, γραμμές και πολύγωνα Γεωμετρικά προβλήματα συναντώνται στα γραφικά με Η/Υ, στη ρομποτική, στην επεξεργασία ιατρικής εικόνας κα Δύο κλασικά παραδείγματα γεωμετρικών προβλημάτων είναι η εύρεση του ζεύγους σημείων που είναι πλησιέστερα επιλέγοντας από ένα σύνολο σημείων σε μια επιφάνεια (closest pair problem) και η εύρεση του μικρότερου κυρτού πολυγώνου που περιέχει όλα τα σημεία ενός συνόλου (convex hull problem) 13 / 14

Αριθμητικά προβλήματα Τα αριθμητικά προβλήματα αφορούν μαθηματικά αντικείμενα συνεχούς φύσεως Παραδείγματα τέτοιου είδους προβλημάτων είναι η επίλυση εξισώσεων ή συστημάτων εξισώσεων, ο υπολογισμός ολοκληρωμάτων κα Τα αριθμητικά προβλήματα συνήθως απαιτούν το χειρισμό μεγάλων αριθμών και θα θα πρέπει να λαμβάνεται πρόβλεψη έτσι ώστε να αντιμετωπίζονται λάθη στρογγυλοποίησης (round off errors) που υπεισέρχονται κατά τους υπολογισμούς 14 / 14