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

Σχετικά έγγραφα
Βασικές Έννοιες Δοµών Δεδοµένων

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

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

Ευσταθές ταίριασμα. (υλικό βασισμένο στο βιβλίο. Slides by Kevin Wayne. Copyright 2005 Pearson-Addison Wesley. All rights reserved.

1.1 Ένα πρώτο πρόβληµα: Ευσταθές Ταίριασµα

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 2. Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.1, 12/05/2010

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

Κεφάλαιο 3. Γραφήματα. v1.3 ( ) Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Κεφάλαιο 3. Γραφήµατα v1.1 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 3. Γραφήματα. ver. 21/12/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Κεφάλαιο 4. Άπληστοι Αλγόριθµοι (Greedy Algorithms) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 1. Εισαγωγή: Ευσταθές Ταίριασμα και άλλα Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.5, 30/10/2014

ιαφάνειες παρουσίασης #11

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης. Βασίζεται στις διαφάνειες των R. Sedgewick K.


Αναζήτηση Κατά Πλάτος

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

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

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

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

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

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

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

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

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

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

Αλγόριθµοι Γραφηµάτων

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

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

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Κεφάλαιο 1. Ε. Μαρκάκης Επικ. Καθηγητής

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

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

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

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

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

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

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

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

Standard Template Library (STL) C++ library

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 2η: Στοίβες Ουρές - Λίστες Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

Κεφάλαιο 1. Εισαγωγή: Κάποια Αντιπροσωπευτικά Προβλήµατα. Έκδοση 1.3, 29/02/2012. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 2. Βασικά στοιχεία ανάλυσης αλγορίθµων. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

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

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

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

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

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

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

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

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (1) Διαφάνειες του Γ. Χ. Στεφανίδη

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

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Αναζήτηση Κατά Πλάτος

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

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

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

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

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

Συνδετικότητα γραφήματος (graph connectivity)

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

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

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

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

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

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

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

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων

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

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

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Αλγόριθμοι. Μάρθα Σιδέρη. epl333 lect

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1

Transcript:

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

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

Αλγόριθµος Propose-And-Reject Ας θυµηθούµε τον αλγόριθµο των Gale-Shapley για το ευσταθές ταίριασµα. Αλγόριθµος Propose-and-Reject. [Gale-Shapley 1962] Μια µέθοδος που βρίσκει ένα ευσταθές ταίριασµα. 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 whom m has not yet proposed if (w is free) assign m and w to be engaged else if (w prefers m to her fiancé m') assign m and w to be engaged, and m' to be free else w rejects m } 3

Πλήθος επαναλήψεων του αλγορίθµου Gale-Shapley Ο αλγόριθµος των Gale-Shapley εκτελεί συνεχώς την ακόλουθη ενέργεια: Επιλέγεται ένας µη-δεσµευµένος άντρας (εάν όλοι οι άντρες είναι δεσµευµένοι ο αλγόριθµος τερµατίζει) Από τις γυναίκες στις οποίες δεν έχει προτείνει ακόµα ο άντρας αυτός, επιλέγει και προτείνει σε αυτή µε την υψηλότερη προτίµηση Μπορούµε να υπολογίσουµε ένα άνω όριο στο πλήθος των επαναλήψεων που εκτελεί ο αλγόριθµος στη χειρότερη περίπτωση; Πόσο χρόνο απαιτεί η εκτέλεση κάθε επανάληψης στη χειρότερη περίπτωση και πόσο χρόνο χρειάζεται συνολικά η εκτέλεση του αλγορίθµου στη χειρότερη περίπτωση; 4

Υλοποίηση του αλγορίθµου του ευσταθούς ταιριάσµατος Πως µπορούµε να υλοποιήσουµε τον αλγόριθµο Gale-Shapley; Θα εξετάσουµε πρώτα ορισµένες απλές δοµές δεδοµένων που θα µας χρειαστούν. 5

Βασικές Έννοιες Δοµών Δεδοµένων Λίστες (Lists) και Πίνακες (Arrays)

Πίνακας (Array) Μια ακολουθία αντικειµένων του ιδίου τύπου Συνήθως περιλαµβάνει ένα προκαθορισµένο πλήθος στοιχείων Είναι µια στοιχειώδης Δοµή Δεδοµένων

Παραδείγµατα Πινάκων Πίνακας Διαστάσεων 1x6 µε αριθµούς κινητής υποδιαστολής: 2,45 0,15 3,20 15,85 6,33 2,67 Πίνακας Διαστάσεων 3x4 µε χαρακτήρες: a f e u b r d s k w r t

Πράξεις σε Πίνακες Προσπέλαση στοιχείου: Σε σταθερό χρόνο Ο(1) µπορούµε να διαβάσουµε το περιεχόµενο οποιασδήποτε θέσης του πίνακα (εφόσον µας δίνεται ο αύξων αριθµός του στοιχείου, πχ. το 12ο στοιχείο) Τροποποίηση στοιχείου: Σε Ο(1) όπως και η προσπέλαση Εισαγωγή/Διαγραφή στοιχείου: Μπορεί να απαιτήσει χρόνο Εισαγωγή/Διαγραφή στοιχείου: Μπορεί να απαιτήσει χρόνο έως και Ο(Ν) εάν πρέπει να µετακινηθούν στοιχεία του πίνακα ή να τροποποιηθεί το µέγεθος του πίνακα

Πίνακες στην Java // ορισµός µιας αναφοράς σε πίνακα ακεραίων int [] A; // ηµιουργία ενός αντικειµένου-πίνακα ακεραίων // µε 10 ακέραιους και καταχώρηση της διεύθυνσής // του πίνακα στην αναφορά A A = new int[10]; // Η παραπάνω διαδικασία σε µία γραµµή int [] B = new int[15];

Λίστα (List) Με τη δοµή δεδοµένων λίστα εννοούµε γραµµικές ακολουθίες οποιονδήποτε αντικειµένων Κάθε στοιχείο της λίστας έχει ένα δείκτη (ή µια αναφορά) στο επόµενο στοιχείο της λίστας (διασυνδεδεµένη λίστα) ή έχει ένα δείκτη προς το επόµενο και ένα δείκτη προς το προηγούµενο στοιχείο (διπλά διασυνδεδεµένη λίστα) Δεν υποστηρίζεται η κατευθείαν προσπέλαση τυχαίων θέσεων της λίστας Οι θέσεις µνήµης στις αποθηκεύονται τα στοιχεία της λίστας δεν αντιστοιχούν απαραίτητα στη σειρά που έχουν τα στοιχεία µέσα στη λίστα Αλγόριθµοι

Παράδειγµα Λίστας Μια λίστα µε 4 στοιχεία: 8 5 12 9 Μια πιθανή υλοποίηση της παραπάνω λίστας µέσα σε ένα πίνακα: 8 9 12 5

Πράξεις σε Λίστα Εύρεση ενός στοιχείου: Εάν µας δίνεται ο αύξων αριθµός του στοιχείου, πχ. το 12ο στοιχείο, τότε απαιτείται να διατρέξουµε τη λίστα µέχρι να φτάσουµε στο στοιχείο: χρόνος Ο(Ν) Προσπέλαση/τροποποίηση στοιχείου: Σε σταθερό χρόνο Ο(1) εάν έχουµε αναφορά προς το στοιχείο Εισαγωγή/διαγραφή στοιχείου: Σε χρόνο Ο(1) εάν γίνει στην αρχή της λίστας στο τέλος της λίστας (διπλή λίστα) σε σηµείο της λίστας για το οποίο µας δίνεται αναφορά σε γειτονικό στοιχείο

Βασικές Έννοιες Δοµών Δεδοµένων Ουρές στοίβες (stacks) ή ουρές LIFO ουρές FIFO

Στοίβα (Stack) Στοίβα: Είναι µια ουρά LIFO (Last In First Out) Βασικές Πράξεις: push: εισαγωγή στοιχείου στην κορυφή της λίστας σε χρόνο Ο(1) pop: αφαίρεση του κορυφαίου στοιχείου από τη στοίβα σε χρόνο Ο(1)

Παράδειγµα Στοίβας 2 9 4

Ουρά FIFO Ουρά FIFO (First In First Out) Βασικές Πράξεις: Εισαγωγή στοιχείου στο τέλος της ουράς Αφαίρεση στοιχείου από την αρχή της ουράς Και οι δύο πράξεις µπορούν να υλοποιηθούν σε Ο(1) χρόνο

Παράδειγµα Ουράς 3 9 4

Γραφήµατα

Γράφηµα (Graph) Γράφηµα ή Γράφος : Αποτελείται από ένα σύνολο από κόµβους ένα σύνολο από ακµές µεταξύ ζευγών κορυφών Θα εξετάσουµε τα γραφήµατα και αλγόριθµους γραφηµάτων πιο αναλυτικά παρακάτω στην ύλη

Παράδειγµα Γραφήµατος

Ένα µη-κατευθυνόµενο γράφηµα Μη-κατευθυνόµενο γράφηµα. G = (V, E) V = κόµβοι. E = ακµές µεταξύ ζευγών κόµβων. Κάθε ακµή αναπαριστά τη διµερή σχέση µεταξύ αντικειµένων. Παράµετροι µεγέθους του γραφήµατος: n = V, m = E. V = { 1, 2, 3, 4, 5, 6, 7, 8 } E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 } n = 8 m = 11 22

Δέντρο Δέντρο: Απλό συνδεδεµένο άκυκλο γράφηµα

Παράδειγµα Δυαδικού Δέντρου 9 5 12 2 7 10 15 Αλγόριθµοι

Εγγραφές (Records)

Εγγραφές (record ή struct) Κώστας Παπαδόπουλος ιεύθυνση Πραξιτέλους 25, Ξάνθη Ονοµατεπώνυµο Ηλικία Τηλέφωνο 28 25410-12345 Παράδειγµα (Java) class Employee { String Name; String Address; int Age; String Telephone; }

Υλοποίηση αλγορίθµου Gale-Shapley Πλήθος επαναλήψεων που εκτελεί ο αλγόριθµος Gale- Shapley Τι δοµές δεδοµένων να χρησιµοποιήσουµε για την αποθήκευση των προτιµήσεων των αντρών; Τι δοµές δεδοµένων να χρησιµοποιήσουµε για την αποθήκευση των προτιµήσεων των γυναικών; Ποια η πολυπλοκότητα χρόνου κάθε επανάληψης;

πηγές/αναφορές Κεφάλαιο 2, Σχεδίαση Αλγορίθµων, J. Kleinberg and E. Tardos, Ελληνική έκδοση από τις Εκδ. Κλειδάριθµος Κεφάλαιο 3, Εισαγωγή στους αλγόριθµους, T. Cormen, C. Leiserson, R. Rivest and C. Stein, Ελληνική έκδοση από τις Πανεπιστηµιακές Εκδ. Κρήτης 28