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

Σχετικά έγγραφα
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

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

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

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

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

Φίλη μαθήτρια, φίλε μαθητή,

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

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

1 Διάσχιση κατευθυνόμενων γραφημάτων

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

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

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

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

Οι δομές δεδομένων στοίβα και ουρά

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

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

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

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

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ ΚΕΦΑΛΑΙΟ 3 ΠΡΟΣΘΗΚΗ

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

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

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

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

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

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

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

ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 05/03/2012 ΑΠΑΝΤΗΣΕΙΣ. ΘΕΜΑ Α Α1. Α2. 1. ΣΩΣΤΟ 1 στ 2. ΛΑΘΟΣ 2 δ 3. ΣΩΣΤΟ 3 ε 4. ΛΑΘΟΣ 4 β 5. ΣΩΣΤΟ 5 γ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο. Πίνακες. Επικοινωνία:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ σε ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΑΕΠΠ) Σημειώσεις Θεωρίας

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

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

1 Το πρόβλημα της συντομότερης διαδρομής

Standard Template Library (STL) C++ library

Διαδικασιακός Προγραμματισμός

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΓΡΑΦΗΜΑΤΑ

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

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

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών

Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Θεωρία και Αλγόριθμοι Γράφων

ΘΕΜΑ 1 Ο Α1. Δίνονται οι παρακάτω εντολές από ένα τμήμα προγράμματος:

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

Τελικός Κύκλος Διαγωνισμάτων Γ ΛΥΚΕΙΟΥ Κυριακή 17 Απριλίου 2016 Μάθημα: Α.Ε.Π.Π. KTIΡΙΟ ΤΜΗΜΑΤΑ ΚΑΛΟΚΑΙΡΙΝΑ ΑΡΓΥΡΟΥΠΟΛΗΣ - ΗΛΙΟΥΠΟΛΗΣ - ΓΛΥΦΑΔΑΣ

ΠΡΟΣ: Τηλέφωνο: Ινστιτούτο Εκπαιδευτικής Πολιτικής ΚΟΙΝ.:

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

μεταβλητής Χ Χ ΑΛΗΘΗΣ Χ Χ 7 > 4 Χ ΨΕΥ ΗΣ Μονάδες 10 EKΠΑΙΔΕΥΣΗ: Με Οράματα και Πράξεις για την Παιδεία -1-

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

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

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

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

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

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

ΕΚΠΑΙΔΕΥΤΗΡΙΑ ΝΕΑ ΠΑΙΔΕΙΑ

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων)

Αναζήτηση στους γράφους. - Αναζήτηση η κατά βάθος Συνεκτικές Συνιστώσες - Αλγόριθμος εύρεσης συνεκτικών συνιστωσών

Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

μεταβλητής Χ Χ ΑΛΗΘΗΣ Χ Χ 7 > 4 Χ ΨΕΥ ΗΣ Μονάδες 10 ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ - ΕΣΠΕΡΙΝΩΝ

ΑΕΠΠ - ΗΜΕΡΗΣΙΑ ΛΥΚΕΙΑ ΘΕΜΑΤΑ ΚΑΙ ΛΥΣΕΙΣ

Δυναμική Διατήρηση Γραμμικής Διάταξης

4.4 Το πρόβλημα του ελάχιστου ζευγνύοντος δένδρου

Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο. Γραφήµατα. (Graphs)

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

JDSL Java Data Structures Library

μεταβλητής Χ Χ ΑΛΗΘΗΣ Χ Χ 7 > 4 Χ ΨΕΥ ΗΣ Μονάδες 10

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα

Αντισταθμιστική ανάλυση

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης

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

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

Διαχρονικές δομές δεδομένων

Περιεχόμενα. Τεχνικές σχεδίασης αλγορίθμων 57. Τεχνικές σχεδίασης αλγορίθμων...217

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ (ΝΕΟ ΣΥΣΤΗΜΑ) 27 ΜΑΪΟΥ 2016 ΕΚΦΩΝΗΣΕΙΣ

Στοχαστικές Στρατηγικές

Transcript:

Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Οι σημειώσεις, αν και βασίζονται στο διδακτικό πακέτο, αποτελούν προσωπική θεώρηση της σχετικής ύλης και όχι επίσημο υλικό. Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ Εισαγωγή Οι Δομές Δεδομένων που χρησιμοποιούν δείκτες αποκαλούνται δυναμικές (dynamic), γιατί κατά την υλοποίησή τους δεν απαιτείται εκ των προτέρων καθορισμός του μέγιστου πλήθους κόμβων (στοιχείων) που θα χρησιμοποιηθούν. O κόμβος αποτελείται από δυο μέρη: τα δεδομένα και το δείκτη (διπλανή εικόνα). Η σύνδεση των κόμβων μεταξύ τους πραγματοποιείται με τη χρήση δεικτών. Ο δείκτης (pointer) είναι ένα πεδίο του κόμβου, το οποίο δεν περιέχει δεδομένα αλλά δηλώνει κάποια διεύθυνση στην κύρια μνήμη, όπου εντοπίζεται το επόμενο στοιχείο της δομής. Για τη λειτουργία τους αξιοποιούν την τεχνική της δυναμικής παραχώρησης μνήμης. Α. Λίστες Η λίστα είναι δυναμική δομή δεδομένων. Κάθε κόμβος περιέχει σύνδεση (με δείκτη) με επόμενο (ή επόμενους). Η λίστα του παραπάνω σχήματος αποκαλείται και συνδεδεμένη. Άλλα παραδείγματα συνδεμένης λίστας ακολουθούν στη συνέχεια. Στη βιβλιογραφία εντοπίζονται πολλές υλοποιήσεις της λίστας (ταξινομημένες, διπλά συνδεδεμένες κ.α.), αλλά ξεφεύγει από το σκοπό της ΑΕΠΠ η παρουσίασή τους. Με τη χρήση δεικτών διευκολύνονται οι λειτουργίες της εισαγωγής και της διαγραφής δεδομένων στις λίστες. Στην εικόνα παρουσιάζεται η εισαγωγή ενός νέου κόμβου στη δεύτερη θέση της λίστας. 1

Αντίστοιχα, στη διπλανή εικόνα παρουσιάζεται η εισαγωγή ενός νέου κόμβου (με όνομα q) μεταξύ του δεύτερου και τρίτου κόμβου της προηγούμενης λίστας (μετά τον κόμβο p). Θεωρούμε ότι αν p είναι ένας δείκτης προς κάποιον κόμβο, τότε p.δεδομένα είναι το περιεχόμενο (δεδομένα) του κόμβου και p.δείκτης είναι ο δείκτης του ίδιου κόμβου προς τον επόμενο κόμβο. Oι απαιτούμενες ενέργειες για την εισαγωγή νέου κόμβου είναι ο δείκτης του δεύτερου κόμβου (p) να δείχνει το νέο κόμβο (q) και ο δείκτης του νέου κόμβου να δείχνει τον τρίτο κόμβο (δηλαδή να πάρει την τιμή που είχε πριν την εισαγωγή ο δείκτης του κόμβου p). Έτσι οι κόμβοι της λίστας διατηρούν τη λογική τους σειρά, αλλά οι φυσικές θέσεις στη μνήμη είναι τελείως διαφορετικές. Αντίστοιχα για τη διαγραφή ενός κόμβου αρκεί ν' αλλάξει τιμή ο δείκτης του προηγούμενου κόμβου και να δείχνει πλέον τον επόμενο αυτού που διαγράφεται, όπως φαίνεται στα σχήματα. Ο κόμβος που διαγράφηκε αποτελεί "άχρηστο δεδομένο" και ο χώρος μνήμης που καταλάμβανε αποδεσμεύεται και παραχωρείται για άλλη χρήση. Για την πρόσβαση σε κάποιο κόμβο της λίστας πρέπει να σαρωθούν όλοι οι κόμβοι μέχρι αυτόν, λειτουργία που αποκαλείται και διάσχιση (σε αντίθεση με τον πίνακα που μπορεί να προσπελαστεί απευθείας το επιθυμητό κελί). Ωστόσο, η ευελιξία των δυναμικών δομών δεδομένων έναντι των στατικών είναι φανερή. Για την προσθήκη μιας τιμής σε στατικό πίνακα, θα έπρεπε να μεταφερθούν τα στοιχεία σε νέο πίνακα με μετατόπιση σε νέες θέσεις, όπως παρουσιάζεται στη διπλανή εικόνα. Οι λίστες μπορούν να υλοποιηθούν χωρίς τη χρήση δεικτών, αλλά με τη βοήθεια πινάκων που θα περιέχουν τις απαιτούμενες πληροφορίες δεικτοδότησης. 2

Η αλγοριθμική υλοποίηση της εισαγωγής/διαγραφής στοιχείου σε λίστα (κωδικοποίηση), δεν είναι στην ύλη (σχολικό έτος 2015 16). Παρ όλα αυτά παρουσιάζονται στη συνέχεια σε φυσική γλώσσα κατά βήματα. Αλγόριθμος Εισαγωγή στοιχείου σε (συνδεμένη) Λίστα Είσοδος: Δείκτης κόμβου που θα προηγείται του νέου στοιχείου: Πριν (p) Τιμή που θα εισαχθεί: τιμή Έξοδος: Βήμα 1 Δέσμευση μνήμης για νέο κόμβο: Νέος (q) Βήμα 2 Νέος.δεδομένα τιμή! αποθήκευσε τη νέα τιμή Βήμα 3 Νέος.δείκτης Πριν.δείκτης! ο κόμβος Νέος θα δείχνει ό,τι έδειχνε ο Πριν Βήμα 4 Πριν.δείκτης Νέος! Ο κόμβος Πριν θα δείχνει τον κόμβο Νέος Αλγόριθμος Διαγραφή στοιχείου από (συνδεμένη) Λίστα Είσοδος: Δείκτης κόμβου που θα προηγείται αυτού που θα διαγραφεί: Πριν (p) Έξοδος: Δεδομένα κόμβου που θα διαγραφεί (Διαγραφή): τιμή Βήμα 1 Διαγραφή Πριν.δείκτης Βήμα 2 τιμή Διαγραφή.δεδομένα! κράτα τιμή Βήμα 3 Πριν.δείκτης Διαγραφή.δείκτης! ο κόμβος Πριν θα δείχνει τον μεθεπόμενο κόμβο Βήμα 4 Αποδέσμευση μνήμης για κόμβο: Διαγραφή (q) Αλγόριθμος Διάσχιση, δηλαδή σάρωση, (συνδεμένης) Λίστας Είσοδος: Δείκτης πρώτου κόμβου: Πρώτος Έξοδος: Τιμές δεδομένων λίστας Βήμα 1 ενεργός Πρώτος Βήμα 2 Αν ο ενεργός κόμβος (ενεργός) δεν είναι ο τελευταίος (έχει επόμενο), τότε πήγαινε στο Βήμα 3, αλλιώς ολοκλήρωση διαδικασίας Βήμα 3 τιμή ενεργός.δεδομένα! επεξεργάσου τα δεδομένα του ενεργού κόμβου Βήμα 3 ενεργός ενεργός.δείκτης! ενεργός κόμβος θα γίνει ο επόμενος Βήμα 4 Πήγαινε στο Βήμα 2 Πολλές φορές για τη διαχείριση των λιστών, χρησιμοποιούνται βοηθητικές δομές που αποθηκεύουν χρήσιμες πληροφορίες, όπως τη διεύθυνση στη μνήμη του πρώτου κόμβου, του τελευταίου κόμβου, το πλήθος των στοιχείων της δομής κ.λπ. Με τη βοήθεια δεικτών μπορούν να υλοποιηθούν ως δυναμικές δομές δεδομένων και οι δομές στοίβα και ουρά. Η προσθήκη και διαγραφή νέων κόμβων πραγματοποιείται όπως περιγράφηκε παραπάνω, ωστόσο πρέπει να τηρούνται οι επεξεργασίες FIFO και LIFO αντίστοιχα. Μια άλλη υλοποίηση των λιστών είναι οι δυναμικοί πίνακες, που έχουν τη δυνατότητα αυξομείωσης του πλήθους των στοιχείων τους σε χρόνο εκτέλεσης προγράμματος. 3

Β. Δένδρα Τα δένδρα (trees) είναι δομές δεδομένων που στις σύγχρονες γλώσσες προγραμματισμού υλοποιούνται με τη βοήθεια δεικτών, όπως περιγράφηκε παραπάνω (δείτε σχήματα που ακολουθούν). Πρέπει να επισημανθεί ότι τα δένδρα, μπορούν να υλοποιηθούν και με στατικές δομές (πίνακες). Το κύριο χαρακτηριστικό των δένδρων είναι, ότι από έναν κόμβο δεν υπάρχει ένας μόνο επόμενος κόμβος, αλλά περισσότεροι. Ο αρχικός κόμβος, που αποκαλείται ρίζα, είναι εκείνος από τον οποίο ξεκινούν όλοι οι άλλοι. Από τη ρίζα ξεκινούν δύο ή περισσότεροι κόμβοι που ονομάζονται παιδιά της ρίζας. Με την ίδια λογική, από κάθε παιδί ξεκινούν άλλα παιδιά κ.ο.κ. Στη βιβλιογραφία αναφέρεται μία τεράστια ποικιλία δομών δένδρων (δυαδικά, διατεταγμένα κ.λπ.), που η αναφορά σε αυτές βρίσκεται εκτός των ορίων του μαθήματος. Οι λίστες που εξετάστηκαν στην πρώτη παράγραφο, χαρακτηρίζονται γραμμικές δομές δεδομένων, διότι διαθέτουν τη σχέση της συνεχόμενης λογικής γειτονικότητας των στοιχείων τους. Τα δένδρα και οι γράφοι (επόμενη παράγραφος) ανήκουν στις μη γραμμικές δομές. Η δομή του δένδρου σε γενικές γραμμές δεν είναι τίποτε άλλο παρά η σύνδεση κόμβων με τρόπο ανάλογο ενός πραγματικού δένδρου. Τα δένδρα είναι ειδικές μορφές γράφων (graphs). Ένας ορισμός των δένδρων είναι ο ακόλουθος: Δένδρο είναι ένα σύνολο κόμβων που συνδέονται με ακμές. Υπάρχει ένας μόνο κόμβος που ονομάζεται ρίζα (root) και στον οποίο δεν καταλήγουν, αλλά μόνο ξεκινούν ακμές. Από κάθε κόμβο μπορούν να ξεκινούν καμία, μία ή περισσότερες ακμές. Σε κάθε κόμβο (εκτός της ρίζας) καταλήγει μία μόνο ακμή. Τα δένδρα υλοποιούνται με τη χρήση δεικτών (όπως οι λίστες) αλλά και με πίνακες. 4

Γ. Γράφοι Ένας γράφος (graph) αποτελείται από ένα σύνολο κόμβων (ή σημείων ή κορυφών) και ένα σύνολο γραμμών (ή ακμών ή τόξων) που ενώνουν κάποιους ή όλους τους κόμβους. Ο γράφος αποτελεί την πιο γενική δομή δεδομένων, με την έννοια ότι όλες οι δομές που παρουσιάστηκαν παραπάνω μπορούν να θεωρηθούν περιπτώσεις γράφων. Οι γράφοι υλοποιούνται με τη χρήση δεικτών (όπως οι λίστες) αλλά και με πίνακες. Πολλά προβλήματα και καταστάσεις της καθημερινής μας ζωής μπορούν να περιγραφούν με τη βοήθεια διαγράμματος, που αποτελείται από ένα σύνολο σημείων και ένα σύνολο γραμμών που ενώνουν ζεύγη σημείων. Για παράδειγμα, τα σημεία ενός γράφου μπορούν να παριστούν πόλεις και οι γραμμές τις οδικές συνδέσεις μεταξύ τους. Λόγω της μεγάλης πληθώρας και ποικιλίας των προβλημάτων που σχετίζονται με γράφους, έχει αναπτυχθεί ομώνυμη θεωρία, η Θεωρία Γράφων, η οποία συχνά αποτελεί αυτοδύναμο μάθημα σε πανεπιστημιακά τμήματα. Π.χ. (Παράδειγμα κεφαλαίου 4.1) Πρόβλημα κινέζου ταχυδρόμου Επιθυμούμε ο ταχυδρομικός διανομέας, να ξεκινήσει από ένα χωριό, να επισκεφθεί έναν αριθμό από γειτονικά χωριά, για να μοιράσει ένα σύνολο επιστολών και να επιστρέψει στο χωριό, από όπου ξεκίνησε περνώντας μόνο μία φορά από κάθε χωριό. Το πρόβλημα έγκειται στην εύρεση της καλύτερης διαδρομής, έτσι ώστε ο διανομέας να διανύσει το μικρότερο δυνατό αριθμό χιλιομέτρων. Π.χ. (Παράδειγμα 2.3, σχολικού βιβλίου Β Λυκείου). Δίνεται ο ακόλουθος χάρτης διαδρομών που συνδέει ορισμένες πόλεις. Ο χάρτης δείχνει το χρόνο που απαιτείται για τη μετακίνηση από πόλη σε πόλη. 1. Ποια διαδρομή είναι η συντομότερη από την πόλη Α στην πόλη Β; 2. Σε ποια πόλη θα συναντηθούν τρεις φίλοι ώστε κανένας να μην κινηθεί περισσότερο από δεκαπέντε λεπτά αν βρίσκονται στις πόλεις Γ, Δ και Ε αντίστοιχα και τα τρένα τους ξεκινούν όλα στις 19:00; 5