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

Σχετικά έγγραφα
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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

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

Στοιχειώδεις Δομές Δεδομένων

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

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

ιαφάνειες παρουσίασης #6 (α)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

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

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

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

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

4. Συνδεδεμένες Λίστες

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

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

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

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

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

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

ιαφάνειες παρουσίασης #5 (β)

IsEmptyList(L): επιστρέφει true αν L = < >, false

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

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

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

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

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

Ενότητα 2 Στοίβες Ουρές - Λίστες. ΗΥ240 - Παναγιώτα Φατούρου 1

Στοίβες Ουρές - Λίστες

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


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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

public class ArrayStack implements Stack {

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

Αναδρομικοί Αλγόριθμοι

POINTERS, AGGREGATION, COMPOSITION

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Διάλεξη 08: ΛίστεςΙΙ Κυκλικές Λίστες. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

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

Transcript:

Δοµές Δεδοµένων

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

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

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

Πίνακας (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) εάν γίνει στην αρχή της λίστας στο τέλος της λίστας (διπλή λίστα) σε σηµείο της λίστας για το οποίο µας δίνεται αναφορά σε γειτονικό στοιχείο

κώδικας Java για µια λίστα ακεραίων Οι κλάσεις: µια κλάση ListNode για τους κόµβους της λίστας µια κλάση LinkedList για την ίδια τη λίστα public class ListNode { public ListNode next; public ListNode prev; public int data; public ListNode(int pardata) { data = pardata; } } 12

κλάση LinkedList public class LinkedList { private ListNode head; private ListNode tail; public LinkedList() { head = null; tail = null; } public boolean isempty() { //... return true; } public void add(int index, int data) { //... } public void addfirst(int data) { //... } public void addlast(int data) { //... } public int countnodes() { int num = 0; //... return num; } public int remove(int index) { //... return -1; } public int removefirst() { //... return -1; } } 13

παράδειγµα χρήσης της λίστας public class ListDemo { } public static void main(string[] args) { } LinkedList list = new LinkedList(); System.out.println("List empty? : " + list.isempty()); list.addfirst(10); list.addfirst(2); list.addfirst(8); System.out.println("List empty? : " + list.isempty()); 14

Ουρές 15

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

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

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

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

Γραφήµατα 20

Γράφηµα (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 23

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

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

Εγγραφές (Records) 26

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

Υλοποίηση αλγορίθµου Gale-Shapley 28

Αλγόριθµος 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 } 29

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

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

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