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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ"

Transcript

1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Δρ. Δημήτριος Συνδουκάς Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

2 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης CreativeCommons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2

3 Περιεχόμενα 1. Σκοποί μαθήματος Περιεχόμενα μαθήματος Τύποι και δομές δεδομένων Κατηγορίες Δομών Εύρεση του μικρότερου στοιχείου σε πίνακα Πολυπλοκότητα αλγορίθμων Πίνακες Αναζήτηση σε πίνακες Γραμμική αναζήτηση Γραμμική αναζήτηση σε διατεταγμένο πίνακα Δυαδική αναζήτηση Διάταξη σε πίνακες Διάταξη επιλογής Διάταξη φυσαλίδας Λίστες Πράξεις σε απλά συνδεδεμένη λίστα Διαπέραση Εισαγωγή Διαγραφή Αναζήτηση Άλλες κατηγορίες συνδεδεμένης λίστας Διπλά συνδεδεμένη λίστα Κυκλική συνδεδεμένη λίστα Δέντρα Δυαδικά δέντρα Συνεχόμενη αναπαράσταση Συνδεδεμένη αναπαράσταση Διαπεράσεις δυαδικού δέντρου Δυαδικά δέντρα Αναζήτησης Σύνδεση δραστηριοτήτων Διαγραφή Πολυπλοκότητα Δέντρα Σωροί

4 Εισαγωγή σε δέντρο-σωρό Διαγραφή ρίζας από δέντρο-σωρό Άλλες κατηγορίες δέντρων Ειδικές λίστες Στοίβα Ορισμός της στοίβας και αναπαραστάσεις της Πράξεις σε στοίβα Συνεχόμενη αναπαράσταση Συνδεδεμένη αναπαράσταση Ουρά Ορισμός και αναπαράσταση ουράς Πράξεις σε ουρά Ειδικοί τύποι ουράς Γραφήματα ή γράφοι Ορισμοί Εύρεση μήκους του μικρότερου μονοπατιού Βιβλιογραφία Παράρτημα Σημείο αναφοράς Σημείωμα Αδειοδότησης Διατήρηση Σημειωμάτων

5 Περιεχόμενα Εικόνων Εικόνα 1: Βασικές έννοιες - Παραδείγματα α) Ψευδοκώδικα και β) διαγράματος ροής... 8 Εικόνα 2: Γραμμική και μη-γραμμική δομή Εικόνα 3: Αλγόριθμος 3.1, Εύρεση μικρότερου στοιχείου Πίνακα Εικόνα 4: Αλγόριθμος 3.2, Εύρεση μικρότερου στοιχείου Πίνακα Εικόνα 5: Εύρεση πολυπλοκότητας ενός αλγορίθμου Εικόνα 6: Αλγόριθμος 5.1 Γραμμική αναζήτηση σε πίνακα Εικόνα 7: Αλγόριθμος 5.2 Γραμμική αναζήτηση σε διατεταγμένο πίνακα Εικόνα 8: Αλγόριθμος 5.3 Δυαδική Αναζήτηση Εικόνα 9: Παράδειγμα Δυαδικής Αναζήτησης Εικόνα 10: Παράδειγμα διάταξης πίνακα Εικόνα 11: Αλγόριθμος 5.4, Αλγόριθμος έυρεσης θέσης μικρότερου στοιχείου Εικόνα 12: Αλγόριθμος 5.5 Διάταξη Επιλογής Εικόνα 13: Παράδειγμα Διάταξης φυσαλίδας Εικόνα 14: Αλγόριθμος 5.6 Αλγόριθμος Διάταξης Φυσαλίδας Εικόνα 15: Παράδειγμα συνεχόμενης αναπαράστασης στοιχείων λίστας Εικόνα 16: Συνδεδεμένη αναπαράσταση λίστας: Κάθε κόμβος Ν i της λίστας περιέχει την τιμή τ i και έναν δείκτη p i στον επόμενο κόμβο Εικόνα 17:Παράδειγμα Διαπέρασης Εικόνα 18: Αλγόριθμος 6.1 Διαπέραση απλά συνδεδεμένης λίστας Εικόνα 19: Αλγόριθμος 6.2, Εισαγωγή κόμβου σε απλά συνδεδεμένη λίστα Εικόνα 20: Παράδειγμα Εικόνα 21: Παράδειγμα Διαγραφής Εικόνα 22: Αλγόριθμος 6.3 Διαγραφή κόμβου σε απλά συνδεδεμένη Λίστα Εικόνα 23: Αλγόριθμος 6.4 Διαγραφή του κόμου Κ σε συνδεδεμένη Λίστα Εικόνα 24: Αλγόριθμος 6.5, Εύρεση μηδενικών σε συνδεδεμένη λίστα Εικόνα 25: Διπλά συνδεδεμένη λίστα Εικόνα 26: Κυκλικά συνδεδεμένη λίστα Εικόνα 27: Δέντρα Εικόνα 28: Παράδειγμα Δέντρου Εικόνα 29: Δυαδικά Δέντρα Εικόνα 30: Παράδειγμα πλήρους δέντρου Εικόνα 31: Συνεχόμενη Αναπαράσταση Δέντρου Εικόνα 32: Συνδεδεμένη Αναπαράσταση Δέντρου Εικόνα 33: Διαπεράσεις δυαδικού Δέντρου Εικόνα 34: Σχήμα άσκησης δυαδικών δέντρων Εικόνα 35: Δυαδικά δέντρα αναζήτησης Εικόνα 36: Αλγόριθμος 7.1 Αναζήτηση σε δυαδικό δέντρο Εικόνα 37: Αλγόριθμος 7.2 Εισαγωγή σε δυαδικό δέντρο Αναζήτησης Εικόνα 38: Παράδειγμα διαγραφής δέντρου Εικόνα 39: Δέντρα σωροί Εικόνα 40: Παραδειγμά εισαγωγής σε δέντρο σωρό Εικόνα 41: Αλγόριθμος 7.3 Εισαγωγή σε δέντρο σωρό Εικόνα 42: Διαγραφή ρίζας από δέντρο σωρό

6 Εικόνα 43: Αλγόριθμος 7.4 Διαγραφή σε δέντρο σωρό Εικόνα 44: Σχήμα άσκησης Εικόνα 45: Ορισμοί στοίβας και αναπαραστάσεις Εικόνα 46: Αλγόριθμος 8.1 Εισαγωγή σε συνεχόμενη στοίβα Εικόνα 47: Αλγόριθμος 8.2 Διαγραφή σε συνεχόμενη στοίβα Εικόνα 48: Αλγόριθμος 8.3 Εισαγωγή σε συνδεδεμένη στοίβα Εικόνα 49: Αλγόριθμος 8.4 Διαγραφή σε συνδεδεμένη στοίβα Εικόνα 50: Παράδειγμα αναπαράστασης ουράς Εικόνα 51: Αλγόριθμος 8.5 Εισαγωγή σε συνεχόμενη ουρά Εικόνα 52: Αλγόριθμος 8.6 Διαγραφή σε συνεχόμενη ουρά Εικόνα 53: Αλγόριθμος 8.7 Εισαγωγή σε συνδεδεμένη ουρά Εικόνα 54: Αλγόριθμος 8.6 Διαγραφή σε συνδεδεμένη ουρά Εικόνα 55: Ειδικοί τύποι ουράς Εικόνα 56: μη κατευθυνόμενοςγράφος Εικόνα 57: Κατευθυνόμενο γράφημα Εικόνα 58: Παράδειγμα μη κατευθυνόμενου γραφήματος Εικόνα 59: Μη συνδεόμενος γράφος Εικόνα 60: Μήκος διαδρομής γράφου Εικόνα 61: Αλγόριθμος 9.1 Αλγόριθμος του Dijkstra Εικόνα 62: Παράδειγμα Αλγορίθμου του Dijkstra Εικόνα 63: Σχήμα άσκησης για τον αλγόριθμο του Dijkstra Εικόνα 64: Σημείωμα Χρήσης Έργων Τρίτων

7 Περιεχόμενα Πινάκων Πίνακας 1: Πίνακας ορισμών δέντρων

8 1. Σκοποί μαθήματος Οι Σκοποί του μαθήματος είναι: Η εξοικείωση των σπουδαστών με τις δομές δεδομένων, τους πίνακες και τις λίστες. Κατανόηση των βασικών εννοιών των δέντρων. Εξοικείωση των σπουδαστών με έννοιες όπως είναι οι λίστες και οι γράφοι. 2. Περιεχόμενα μαθήματος Γίνεται μια παρουσίαση του χώρου των δομών δεδομένων, δείχνεται στους σπουδαστές ο τρόπος με τον οποίο λειτουργούν οι δομές δεδομένων, και οι πίνακες και γίνεται μια πρώτη αναφορά σχετικά με έννοιες όπως είναι τα δέντρα, οι λίστες και οι γράφοι. 3. Τύποι και δομές δεδομένων Αλγόριθμος είναι μια σαφής, δομημένη περιγραφή του τρόπου λύσης ενός (γενικού) προβλήματος μέσω Η/Υ, συνήθως σε μορφή κατανοητή από τον άνθρωπο. Τα βήματά του (λέγονται οδηγίες) πρέπει να είναι πεπερασμένα σε πλήθος και εκτελούνται σειριακά με μια συγκεκριμένη σειρά. Κάθε αλγόριθμος δέχεται κάποια δεδομένα σαν είσοδο και παράγει κάποια αποτελέσματα (λύση) σαν έξοδο. Επιπλέον, εκτελείται για συγκεκριμένο χρόνο (όχι ατελείωτα). Η περιγραφή ενός αλγόριθμου γίνεται με κάποια αλγοριθμική γλώσσα. Σαν τέτοια μπορεί να χρησιμοποιηθεί είτε η φυσική μας γλώσσα, είτε μια γλώσσα προγραμματισμού, είτε μια διαγραμματική γλώσσα (όπως το διάγραμμα ροής), είτε μια γλώσσα ψευδοκώδικα. Μια γλώσσα ψευδοκώδικα είναι μια αυστηρά καθορισμένη γλώσσα που μας αποδεσμεύει από τις λεπτομέρειες μιας γλώσσας προγραμματισμού. Η μεταφορά ενός αλγόριθμου από τη μορφή ψευδοκώδικα στη μορφή μιας γλώσσας προγραμματισμού είναι εύκολη υπόθεση. Όταν ένας αλγόριθμος εκφράζεται σε μια γλώσσα προγραμματισμού, τότε αυτό συνιστά ένα πρόγραμμα. Εικόνα 1: Βασικές έννοιες - Παραδείγματα α) Ψευδοκώδικα και β) διαγράμματος ροής. 8

9 Διάγραμμα ροής (program flowchart) είναι γραφική τεχνική αναπαράστασης της ροής εκτέλεσης και των βημάτων ενός αλγόριθμου. Χρησιμοποιεί ένα σύνολο τυποποιημένων συμβόλων για την αναπαράσταση του είδους της κάθε οδηγίας ενός αλγορίθμου, καθένα από τα οποία επιγράφεται με το περιεχόμενο της οδηγίας. Δομημένος προγραμματισμός (structured programming) είναι τεχνική προγραμματισμού, σύμφωνα με την οποία κάθε πρόγραμμα μπορεί να συντεθεί από τρεις βασικές προγραμματιστικές δομές (ακολουθία, απόφαση/επιλογή, επανάληψη) ή άλλες δομές, οι οποίες όμως προκύπτουν από σύνθεση των βασικών. Επιπλέον, πρέπει να ισχύουν δύο αρχές: Κάθε δομή προγραμματισμού (και κατ επέκταση ολόκληρο το πρόγραμμα) έχει μόνο ένα σημείο εισόδου και ένα σημείο εξόδου. Η ροή μεταξύ της εισόδου και της εξόδου μιας δομής προγραμματισμού ξεκινά από την είσοδο, τελειώνει στη έξοδο, είναι απρόσκοπτη και δεν τερματίζεται απότομα. Ένα πρόγραμμα αποτελείται κυρίως από μια ακολουθία εντολών, διατυπωμένων σε μια γλώσσα προγραμματισμού, οι οποίες εκτελούνται διαδοχικά από έναν Η/Υ. Κατά την εκτέλεση ενός προγράμματος γίνεται επεξεργασία κάποιων αρχικών πληροφοριών που ονομάζονται δεδομένα (data) από τις οποίες παράγονται τελικά πιο χρήσιμες πληροφορίες που ονομάζονται αποτελέσματα. Κατά την εκτέλεση ενός προγράμματος μπορεί να παραχθούν και ενδιάμεσα αποτελέσματα, τα οποία αποθηκεύονται προσωρινά. Μια μεταβλητή, σε εννοιολογικό επίπεδο, αντιπροσωπεύει ένα σύνολο δεδομένων που σχετίζονται με μια οντότητα συγκεκριμένη ή αφηρημένη. Σε φυσικό όμως επίπεδο, αντιπροσωπεύει ένα χώρο στην μνήμη του Η/Υ. Τα δεδομένα, άρα και οι μεταβλητές που τα αντιπροσωπεύουν, χαρακτηρίζονται από κάποιους τύπους δεδομένων. Ο τύπος δεδομένων καθορίζει (α) τις τιμές που μπορεί να πάρει μια μεταβλητή και (β) τους τρόπους επεξεργασίας και διαχείρισης των τιμών αυτών, δηλαδή τις πράξεις. Οι τύποι δεδομένων διακρίνονται σε ατομικούς ή πρωτογενείς και σε δομημένους τύπους. Οι ατομικοί τύποι (atomic types) είναι εκείνοι που οι τιμές τους είναι απλές, δηλαδή δεν αποτελούνται από άλλες επιμέρους τιμές, και άρα δεν μπορούν να αναλυθούν περαιτέρω. Ατομικοί είναι οι βασικοί τύποι δεδομένων που υπάρχουν σε όλες τις γλώσσες προγραμματισμού υψηλού επιπέδου, όπως ο ακέραιος (integer), ο πραγματικός (real), ο λογικός (boolean), ο χαρακτήρας (character). Οι δομημένοι τύποι (structured types) είναι εκείνοι των οποίων οι τιμές είναι σύνθετες, δηλαδή αποτελούνται από επιμέρους τιμές, και καλούνται στοιχεία (elements) ή κόμβοι (nodes), και σχετίζονται μεταξύ τους με βάση κάποιο σχήμα το οποίο ονομάζουμε οργανωτικό σχήμα. Αυτό το οργανωτικό σχήμα έχει σχέση με τον τρόπο παράστασης της δομής στη μνήμη του Η/Υ. Οι δομημένοι τύποι δεδομένων αποκαλούνται συνήθως δομές δεδομένων (data structures). Το πλήθος των στοιχείων ή κόμβων μια δομής ονομάζεται μέγεθος της δομής.μετά από αυτή τη σύντοµη αναφορά στην ετυµολογία της λέξης ας 9

10 δούµε μαζί πώς από μερικές βασικές έννοιες που περιγράφουν τη "συµπεριφορά" του νερού προχωρούµε στη μελέτη και στην κατασκευή υδραυλικών έργων, τα οποία µας εξυπηρετούν σε πολλούς τοµείς της καθηµερινής ζωής και είναι απαραίτητα στην προσπάθεια των κοινωνιών για ανάπτυξη και ευημερία. 4. Κατηγορίες Δομών Δομές δεδομένων είναι: οι πίνακες, οι εγγραφές, οι γενικές λίστες (συνεχόμενες, συνδεδεμένες), οι ειδικές λίστες (στοίβες, ουρές) και τα δέντρα. Επίσης είναι και οι γράφοι (ή γραφήματα) και τα αρχεία. Οι πιο απλές δομές είναι οι πίνακες και οι εγγραφές και ονομάζονται θεμελιώδεις δομές (fundamental structures). Αυτές υπάρχουν συνήθως ενσωματωμένες στις γλώσσες υψηλού επιπέδου. Συνήθως, το μέγεθος αυτών των δομών καθώς και το οργανωτικό τους σχήμα παραμένουν αμετάβλητα στη διάρκεια εκτέλεσης ενός προγράμματος, γι αυτό ονομάζονται και στατικές δομές (static structures). Οι διάφορες λίστες (συνεχόμενες, συνδεδεμένες, στοίβες και ουρές) και τα δέντρα θεωρούνται ανώτερες δομές (higher-level structures) γιατί είναι πιο πολύπλοκες και χρησιμοποιούν θεμελιώδεις δομές για την υλοποίησή τους. Το μέγεθός τους μεταβάλλεται κατά την εκτέλεση του προγράμματος, γι αυτό αποκαλούνται και δυναμικές δομές (dynamic structures). Οι δομές δεδομένων διακρίνονται ακόμη και σε γραμμικές (linear) και μη-γραμμικές (nonlinear). Μια δομή είναι γραμμική αν το οργανωτικό της σχήμα μπορεί να απεικονισθεί σαν μια γραμμή, βλέπε σχήμα (α) παρακάτω. Αυτό είναι δυνατό όταν κάθε στοιχείο σχετίζεται μόνο με ένα άλλο στοιχείο της, δηλαδή υπάρχει μια σχέση ένα-προς-ένα μεταξύ των στοιχείων της δομής. Αντιθέτως, σε μια μη-γραμμική δομή υπάρχουν σχέσεις ένα-προςπολλά ή πολλά-προς-πολλά μεταξύ των στοιχείων της. Στο σχήμα (β) παρακάτω, για παράδειγμα, ένας κόμβος μπορεί να σχετίζεται με άλλους κόμβους με τη σχέση «παιδιά» (σχέση ένα-προς-πολλά). Γραμμικές δομές είναι οι πίνακες και οι λίστες, ενώ μη-γραμμικές είναι οι εγγραφές και τα δέντρα. Εικόνα2: Γραμμική και μη-γραμμική δομή. Οι ανώτερες δομές δεδομένων δεν υπάρχουν ενσωματωμένες στις γλώσσες προγραμματισμού, αλλά υλοποιούνται από τους προγραμματιστές χρησιμοποιώντας τις 10

11 θεμελιώδεις δομές τους. Η υλοποίηση μιας δομής δεδομένων έχει δύο πτυχές: (α) την αναπαράσταση της δομής της στον Η/Υ και (β) την υλοποίηση των πράξεών της. Από τις πράξεις στις δομές δεδομένων μας ενδιαφέρουν οι παρακάτω: (α) διαπέραση (traversal): προσπέλαση και επεξεργασία κάθε στοιχείου ή κόμβου, (β) αναζήτηση (search): εύρεση στοιχείου ή κόμβου με κάποια δεδομένη τιμή, (γ) εισαγωγή (insertion): πρόσθεση ενός νέου στοιχείου ή κόμβου, (δ) διαγραφή (deletion): αφαίρεση ενός υπάρχοντος στοιχείου ή κόμβου, (ε) διάταξη (sorting): τακτοποίηση των στοιχείων ή κόμβων σε κάποια σειρά. Παρατηρήστε ότι οι δύο πρώτες πράξεις δεν επιφέρουν μεταβολή στις δομές, σε αντίθεση με τις υπόλοιπες. Στη συνέχεια, η υλοποίηση των δομών θα γίνει σε μια γλώσσα ψευδοκώδικα. 5. Εύρεση του μικρότερου στοιχείου σε πίνακα Θα περιγράψουμε το πρόβλημα: «Να γραφεί αλγόριθμος που να βρίσκει τη θέση και την τιμή του μικρότερου στοιχείου ενός πίνακα που περιέχει Ν αριθμούς». Αν θέλαμε να περιγράψουμε τη διαδικασία λύσης αυτού του προβλήματος σε φυσική γλώσσα, θα λέγαμε: «Θεωρούμε το πρώτο στοιχείο του πίνακα σαν το μικρότερο και κρατούμε στη μνήμη την τιμή του και την θέση του. Στη συνέχεια συγκρίνουμε την τιμή που κρατήσαμε με την τιμή του δεύτερου στοιχείου του πίνακα. Αν η τιμή του δεύτερου στοιχείου είναι μικρότερη, τότε κρατούμε στη μνήμη αυτή και τη θέση του, αλλιώς προχωρούμε και κάνουμε το ίδιο με το τρίτο στοιχείο και ούτω καθεξής ως το τελευταίο. Η τελευταία τιμή και θέση που κρατήσαμε στη μνήμη είναι τα ζητούμενα». Τώρα θα περιγράψουμε τον αλγόριθμο με ψευδοκώδικα: Εικόνα 3: Αλγόριθμος 3.1, Εύρεση μικρότερου στοιχείου Πίνακα. Τώρα θα δούμε πως μπορούμε να λύσουμε το ίδιο πρόβλημα με ένα ελαφρώς διαφορετικό αλγόριθμο που χρησιμοποιεί την εντολή επανάληψης while (ενόσω) αντί της for (για). 11

12 Εικόνα 4: Αλγόριθμος 3.2, Εύρεση μικρότερου στοιχείου Πίνακα. 6. Πολυπλοκότητα αλγορίθμων Η αποδοτικότητα ενός αλγόριθμου έχει δύο παραμέτρους: (α) την αποδοτικότητα χρόνου και (β) την αποδοτικότητα χώρου. Η αποδοτικότητα χρόνου σχετίζεται με τον χρόνο επεξεργασίας που απαιτεί η εκτέλεση ενός αλγορίθμου. Η αποδοτικότητα χώρου σχετίζεται με την ποσότητα μνήμης που απαιτείται κατά την εκτέλεση του αλγόριθμου. Η αποδοτικότητα χώρου είναι ευκολότερο να εκτιμηθεί και συνήθως είναι λιγότερο σημαντική. Η πολυπλοκότητα χρόνου όμως εκτιμάται δυσκολότερα και είναι πιο σημαντική. Και πως μετράμε την αποδοτικότητα χρόνου; Ένας τρόπος θα ήταν να υλοποιήσουμε τον αλγόριθμο σε μια γλώσσα προγραμματισμού, να τον εκτελέσουμε και να μετρήσουμε τον χρόνο εκτέλεσής του. Μια τέτοια μέτρηση όμως επηρεάζεται από: (α) τη γλώσσα που θα χρησιμοποιήσουμε, (β) τις ικανότητες του προγραμματιστή και (γ) τις δυνατότητες του Η/Υ στον οποίο θα τρέξει το πρόγραμμα. Εμείς χρειαζόμαστε ένα τρόπο μέτρησης ανεξάρτητο από αυτούς τους παράγοντες. Για να υπολογίσουμε λοιπόν την αποδοτικότητα ενός αλγόριθμου, στηριζόμαστε σ αυτές που ονομάζουμε βασικές υπολογιστικές πράξεις (basic operations) του αλγόριθμου, χωρίς να μας ενδιαφέρει ο πραγματικός χρόνος εκτέλεσής τους. Βασικές υπολογιστικές πράξεις είναι αυτές που χαρακτηρίζουν τη χρονική εκτέλεση ενός αλγόριθμου. Πολλές φορές επιλέγουμε μία σαν βασική υπολογιστική πράξη. Για παράδειγμα, στους αλγόριθμους αναζήτησης και διάταξης θεωρούμε συνήθως σαν βασική υπολογιστική πράξη τη σύγκριση δύο στοιχείων, και επομένως η αποδοτικότητα αυτών των αλγόριθμων εκτιμάται από τον αριθμό των συγκρίσεων που γίνονται κατά την εκτέλεσή τους. Σε ένα αλγόριθμο διαγραφής 12

13 θεωρούμε σαν βασική υπολογιστική πράξη τη μετακίνηση ενός στοιχείου, οπότε η αποδοτικότητα εκτιμάται από τον αριθμό των μετακινήσεων που πραγματοποιούνται. Είναι φανερό ότι η αποδοτικότητα εξαρτάται και από το πλήθος των δεδομένων εισόδου. Η εκτίμηση της αποδοτικότητας ενός αλγόριθμου αναφέρεται ως πολυπλοκότητα του αλγόριθμου και εκφράζεται με μια συνάρτηση πολυπλοκότητας f(n), όπου n το μέγεθος ή πλήθος των δεδομένων εισόδου. Αυτή η f(n) εκφράζει την απαίτηση του αλγόριθμου σε χρόνο εκτέλεσης. Συνήθως μας ενδιαφέρει η εύρεση της τιμής της f(n) στις εξής περιπτώσεις: καλύτερη περίπτωση (δηλαδή η ελάχιστη τιμή της f(n)), χειρότερη περίπτωση (δηλαδή μέγιστη τιμή της f(n)) και μέση περίπτωση (δηλαδή η αναμενόμενη τιμή της f(n)). Η πολυπλοκότητα της μέσης περίπτωσης είναι πολύ δύσκολο να βρεθεί και συνήθως στηρίζεται σε κάποια υπόθεση που κάνουμε για την κατανομή πιθανοτήτων των δεδομένων εισόδου. Στον αλγόριθμο 3.2, για να βρούμε τη συνάρτηση πολυπλοκότητας, θα θεωρήσουμε σαν κύρια υπολογιστική πράξη την ενημέρωση, δηλαδή την καταχώρηση νέων τιμών στις μεταβλητές x και min. Επειδή ο αριθμός των συγκρίσεων είναι σταθερός και ίσος με Ν-1 σε όλες τις περιπτώσεις, δεν διαφοροποιεί την εκτίμηση πολυπλοκότητας. (α) Η καλύτερη περίπτωση συμβαίνει όταν το μικρότερο στοιχείο είναι πρώτο. Τότε γίνονται μόνο οι αρχικοποιήσεις των x και min (βήμα 1) και επομένως είναι f(n)=2. (β) Η χειρότερη περίπτωση συμβαίνει όταν τα στοιχεία του πίνακα είναι διατεταγμένα κατά φθίνουσα σειρά, οπότε κάθε σύγκριση στο βήμα 3, έχει σαν αποτέλεσμα την ενημέρωση των x και min. Αφού γίνονται συνολικά Ν-1 συγκρίσεις, θα έχουμε Ν-1 ενημερώσεις για καθένα από τα x και min (εκτός από τις αρχικοποιήσεις τους). Άρα έχουμε f(n) = 2(Ν-1) + 2 = 2Ν. Στην εύρεση της πολυπλοκότητας ενός αλγόριθμου δεν μας ενδιαφέρει τόσο η ακριβής τιμή της όσο η τάξη μεγέθους της σε σχέση με το πλήθος των δεδομένων εισόδου. Η τάξη μεγέθους της πολυπλοκότητας δηλώνεται με το σύμβολο Ο ως εξής: f(n) = O(g(n)) όπου g(n) ονομάζεται η συνάρτηση τάξης μεγέθους, όπως π.χ. στις εκφράσεις f(n)=o(1), f(n)=o(nlogn), f(n)=o(n 2 ), κλπ. Οι σπουδαιότερες συναρτήσεις τάξης μεγέθους φαίνονται στο παρακάτω σχήμα, όπου το logn παριστάνει τον δυαδικό αλγόριθμο του n. Εικόνα 5: Εύρεση πολυπλοκότητας ενός αλγορίθμου. Η τάξη μεγέθους εξαρτάται από την επικρατούντα όρο της αναλυτικής έκφρασης. Οι δευτερεύοντες όροι δεν μπορούν να αλλάξουν το μέγεθος της πολυπλοκότητας. Επικρατών όρος είναι αυτός που έχει μεγαλύτερη τάξη μεγέθους, δηλαδή δίνει μεγαλύτερες τιμές καθώς το n αυξάνει. Οι αριθμητικοί συντελεστές ουσιαστικά αγνοούνται. 13

14 Παράδειγμα: Ας υποθέσουμε ότι μεγέθους της. n( n 1) f ( n) και θέλουμε να υπολογίσουμε την τάξη 2 Αναλύουμε την f(n) ως εξής: f(n) = ½ n 2 + ½ n. Παρατηρούμε ότι ο επικρατών όρος είναι ο ½ n 2 και επομένως είναι f(n) = Ο(n 2 ). Παράδειγμα: Έστω ότι μεγέθους της. f 8log n 4n n) και θέλουμε να υπολογίσουμε την τάξη 3n log n ( 2 Αναλύουμε την f(n) ως εξής: f 8log n 4n 8 1 n) 2 3n log n 3n log n 3 n 4 3 ( 2 2 n 1 log n Εδώ ο επικρατών όρος είναι ο δεύτερος, αφού nlogn<n 2. Οπότε καταλήγουμε ότι: f(n) = Ο( 1 nlog n ). 7. Πίνακες Ένας μονοδιάστατος πίνακας ορίζεται από ένα σύνολο Α με πεπερασμένο πλήθος Ν στοιχείων κοινού τύπου δεδομένων (τύπος βάσης) και από ένα σύνολο δεικτών Ι κοινού τύπου δεδομένων (τύπος δείκτη), τέτοιο ώστε υπάρχει αμφιμονοσήμαντη αντιστοιχία μεταξύ των στοιχείων του Ι και των στοιχείων του Α. Το μέγεθος ενός πίνακα συνήθως παραμένει σταθερό κατά τη διάρκεια εκτέλεσης ενός προγράμματος (στατική δομή). Βασικό χαρακτηριστικό ενός πίνακα είναι ότι είναι μια δομή τυχαίας προσπέλασης, δηλαδή ο χρόνος εντοπισμού (προσπέλασης) ενός στοιχείου είναι ανεξάρτητος από τη θέση του στοιχείου στον πίνακα. 7.1 Αναζήτηση σε πίνακες Η αναζήτηση (search) σ έναν πίνακα αναφέρεται στο πρόβλημα όπου δίνεται μια τιμή και ζητείται η θέση του στοιχείου ενός πίνακα που έχει την ίδια τιμή με τη δοθείσα (εφόσον βρεθεί) ή να τυπωθεί έναν μήνυμα αποτυχίας (αν δεν βρεθεί). Υπάρχουν διάφοροι μέθοδοι αναζήτησης σε έναν πίνακα, αλλά εδώ θα αναφερθούμε στη σειριακή ή γραμμική αναζήτηση (sequential ή linear search) και στη δυαδική αναζήτηση (binary search) Γραμμική αναζήτηση Στη γραμμική αναζήτηση συγκρίνεται η δοθείσα τιμή με την τιμή κάθε στοιχείου του πίνακα, ξεκινώντας από το πρώτο στοιχείο. Εάν βρεθεί κάποιο στοιχείο με τιμή ίση με τη δοθείσα, τότε σταματά η αναζήτηση και τυπώνεται η θέση του στοιχείου, αλλιώς τυπώνεται ένα μήνυμα αποτυχίας. Ο παρακάτω αλγόριθμος 5.1 υλοποιεί αυτή την αναζήτηση: 14

15 Εικόνα 6: Αλγόριθμος 5.1 Γραμμική αναζήτηση σε πίνακα. Η πολυπλοκότητα του αλγόριθμου υπολογίζεται με βάση τον αριθμό των συγκρίσεων που γίνονται στο βήμα 2. Στη χειρότερη περίπτωση, δηλαδή όταν το στοιχείο που ψάχνουμε είναι το τελευταίο στον πίνακα ή δεν υπάρχει, είναι f(n) = n, αφού θα γίνουν τόσες συγκρίσεις όσα και τα στοιχεία του πίνακα. Αποδεικνύεται ότι στη μέση περίπτωση είναι 1 f ( n) n. 2 Άσκηση: Πιθανόν να υπάρχουν σε έναν πίνακα περισσότερα από ένα στοιχεία με τιμή ίδια με αυτή που αναζητούμε. Μπορείτε να τροποποιήσετε τον αλγόριθμο 5.1 ώστε να βρίσκει και να τυπώνει τις θέσεις όλων των στοιχείων με τιμή ίση με τη ζητούμενη; Γραμμική αναζήτηση σε διατεταγμένο πίνακα Διατεταγμένος πίνακας σημαίνει ότι τα στοιχεία του είναι τοποθετημένα κατά αύξουσα (ή αλφαβητική) σειρά. Όταν έχουμε έναν διατεταγμένο πίνακα, δεν χρειάζεται να συνεχίσουμε την αναζήτηση πέρα από το πρώτο στοιχείο που θα έχει τιμή μεγαλύτερη από τη δοθείσα, αφού δεν έχει νόημα. Καταλαβαίνετε ότι η αναζήτηση γίνεται αποδοτικότερη λόγω της διάταξης. Παρατηρήστε τη διαφορά του αλγόριθμου 5.2 σε σχέση με τον 5.1: 15

16 Εικόνα 7: Αλγόριθμος 5.2 Γραμμική αναζήτηση σε διατεταγμένο πίνακα. Παρατηρείστε ότι στον μη-διατεταγμένο πίνακα η while επαναλαμβάνει όσο (a[i] x), δηλαδή όσο το ζητούμενο στοιχείο δεν έχει βρεθεί. Στον διατεταγμένο πίνακα επαναλαμβάνει όσο (a[i] <x), δηλαδή όσο τα στοιχεία του πίνακα είναι ακόμη μικρότερα από αυτό που ψάχνουμε. Άσκηση 1: Να γράψετε τον αλγόριθμο σε μορφή ψευδοκώδικα που να βρίσκει σε ένα πίνακα τους άρτιους αριθμούς (εφόσον υπάρχουν) και να τυπώνει την θέση τους. Άσκηση 2: Να γράψετε τον αλγόριθμο σε μορφή ψευδοκώδικα που να προσθέτει τα στοιχεία ενός πίνακα. Έπειτα να τροποποιήσετε τον ψευδοκώδικα ώστε να προσθέτει μόνο εκείνα τα στοιχεία που είναι μεγαλύτερα του μηδενός Δυαδική αναζήτηση Στη δυαδική αναζήτηση θεωρούμε ότι ο πίνακας έχει τα στοιχεία του διατεταγμένα, δηλαδή ότι βρίσκονται κατά αύξουσα (ή αλφαβητική) σειρά. Σύμφωνα με αυτόν τον αλγόριθμο συγκρίνουμε την τιμή του στοιχείου που ψάχνουμε με την τιμή του μεσαίου στοιχείου του πίνακα. Αν το στοιχείο είναι αυτό που ψάχνουμε, τότε τερματίζεται η αναζήτηση με επιτυχία. Αν όχι, τότε αν το στοιχείο που ψάχνουμε έχει τιμή μεγαλύτερη από του μεσαίου στοιχείου, συνεχίζουμε (επικεντρώνουμε) το ψάξιμο με τον ίδιο τρόπο στο δεξί μισό του πίνακα, διαφορετικά στο αριστερό μισό. Και αυτό συνεχίζεται μέχρι να εντοπίσουμε το στοιχείου που ψάχνουμε ή να εξαντληθούν τα στοιχεία του πίνακα. Στον αλγόριθμο που δίνεται παρακάτω οι μεταβλητές NL (n-lower) και NU (n-upper) αντιστοιχούν στο κάτω και πάνω όριο, αντίστοιχα, του τμήματος του πίνακα όπου έχουμε 16

17 επικεντρώσει το ψάξιμο (αρχικοποιούνται στο βήμα 1 και ανανεώνονται στα βήματα 5 και 6 με κάθε επανάληψη). Η μεταβλητή Μ αντιπροσωπεύει τη μέση τιμή τους (αρχικοποιείται στο βήμα 2 και ανανεώνεται στο βήμα 7 με κάθε επανάληψη). Οι τετράγωνες παρενθέσεις [] σημαίνουν «το ακέραιο μέρος» της διαίρεσης που περικλείουν (βήματα 2 και 7). Η εντολή ΕΝΟΣΩ ψάχνει επαναληπτικά το ένα από τα δύο μισά που επιλέξαμε στην προηγούμενη επανάληψη (βήματα 3-7). Η εντολή ΕΑΝ, που περιέχεται στην ΕΝΟΣΩ, καθορίζει τα όρια (κάτω και πάνω) του μισού, από το τρέχον τμήμα του πίνακα, όπου και θα ψάξουμε κατά την επόμενη επανάληψη (βήματα 4-6). Όπως φαίνεται από τις συνθήκες της εντολής ΕΝΟΣΩ, οι επαναλήψεις σταματούν είτε όταν δεν υπάρχει άλλο στοιχείο προς εξέταση (NL>NU), άρα αποτύχαμε να βρούμε το στοιχείο, είτε όταν βρεθεί το στοιχείο που ψάχνουμε (a[m] = x), δηλαδή επιτυχία. Η εντολή ΕΑΝ (βήματα 8-10) τυπώνει το ανάλογο αποτέλεσμα. Σημειώστε ότι η πολυπλοκότητα της δυαδικής αναζήτησης, στη χειρότερη περίπτωση είναι καλύτερη από αυτή της γραμμικής, αφού σε κάθε επανάληψη ο αριθμός των συγκρίσεων μειώνεται στο μισό. Αποδεικνύεται ότι είναι f(n) = O(logn) τόσο στη χειρότερη, όσο και στη μέση περίπτωση. Εικόνα 8: Αλγόριθμος 5.3 Δυαδική Αναζήτηση. Για παράδειγμα, ας θεωρήσουμε τον παρακάτω πίνακα a με τα στοιχεία του διατεταγμένα, και ας δοκιμάσουμε να βρούμε το στοιχείο με τιμή 40 στον πίνακα αυτόν. 17

18 Εικόνα 9: Παράδειγμα Δυαδικής Αναζήτησης. Με 3 λοιπόν συγκρίσεις βρέθηκε η ζητούμενη τιμή 40, ενώ με τον αλγόριθμο γραμμικής αναζήτησης θα απαιτούνταν 5 συγκρίσεις, δηλαδή όσα είναι και τα στοιχεία του πίνακα μέχρι αυτό που ψάχνουμε. Πάντως όσο πιο κοντά στην αρχή του πίνακα βρίσκεται το ζητούμενο στοιχείο, τόσο πλεονεκτικότερη γίνεται η γραμμική αναζήτηση. 7.2 Διάταξη σε πίνακες Διάταξη ή ταξινόμηση (sorting) σημαίνει την τακτοποίηση μιας ακολουθίας δεδομένων σε κάποια σειρά, αύξουσα ή φθίνουσα αν πρόκειται για αριθμητικά δεδομένα ή αλφαβητική ή αντίστροφη αλφαβητική, αν πρόκειται για αλφαβητικά δεδομένα. Υπάρχουν διάφοροι αλγόριθμοι διάταξης, όπως η διάταξη φυσαλίδας (bubble sort), η διάταξη επιλογής (selection sort), η γρήγορη διάταξη (quicksort), κλπ, καθώς και παραλλαγές τους. Αυτοί οι αλγόριθμοι χαρακτηρίζονται ως αλγόριθμοι εσωτερικής διάταξης αφού αναφέρονται στη διάταξη στοιχείων αποθηκευμένων στην κύρια μνήμη του υπολογιστή, σε αντίθεση με τους αλγόριθμους εξωτερικής διάταξης που αναφέρονται σε δεδομένα αποθηκευμένα σε αρχεία. Οι βασικές υπολογιστικές πράξεις που συναντάμε σε αλγόριθμους διάταξης είναι οι συγκρίσεις, οι εναλλαγές ή αντιμεταθέσεις και οι καταχωρίσεις τιμών. Ένας αλγόριθμος διάταξης θεωρείται τόσο καλύτερος όσο λιγότερες τέτοιες ενέργειες απαιτεί. Ως κριτήριο πολυπλοκότητας θεωρούμε κυρίως τις συγκρίσεις και τις εναλλαγές στην πράξη, οπότε f(n) = αριθμός συγκρίσεων + αριθμός εναλλαγών. Επειδή όμως ο αριθμός των εναλλαγών (και των καταχωρήσεων) είναι ανάλογος του αριθμού των συγκρίσεων, είναι ικανοποιητική η προσέγγιση: f(n) = αριθμός συγκρίσεων. 18

19 7.2.1 Διάταξη επιλογής Στον αλγόριθμο διάταξης επιλογής ακολουθούμε τα εξής βήματα: (α) Βρίσκουμε το μικρότερο στοιχείο του πίνακα και τα εναλλάσσουμε με το πρώτο στοιχείο του. (β) Τώρα ψάχνουμε τον υπόλοιπο πίνακα (εκτός του 1 ου στοιχείου) για το μικρότερο στοιχείο, το οποίο εναλλάσσουμε με το δεύτερο στοιχείο του πίνακα. (γ) Τώρα ψάχνουμε τον υπόλοιπο πίνακα (εκτός του 1 ου και 2 ου στοιχείου) για το μικρότερο στοιχείο, το οποίο εναλλάσσουμε με το τρίτο στοιχείο του πίνακα, κ.ο.κ. Η διαδικασία σταματά μετά από Ν-1 περάσματα του πίνακα (όπου Ν το μέγεθος του πίνακα), αφού το τελευταίο στοιχείο του πίνακα θα είναι στη σωστή θέση και δεν χρειάζεται να το εναλλάξουμε με κάποιο άλλο. Σαν παράδειγμα, θεωρείστε τον παρακάτω πίνακα a, του οποίου τα στοιχεία θέλουμε να διατάξουμε σε αύξουσα σειρά. Σε κάθε πέρασμα σημειώνεται με κύκλο το μικρότερο στοιχείο που βρέθηκε και μέσα σε τετράγωνο το στοιχείο με το οποίο θα εναλλαχθεί. Με έντονο χρώμα φαίνεται το τμήμα του πίνακα που έχει μπει σε διάταξη. Εικόνα 10: Παράδειγμα διάταξης πίνακα. Για να απλοποιήσουμε τον αλγόριθμο διάταξης, θα φτιάξουμε και χρησιμοποιήσουμε βοηθητικά και έναν αλγόριθμο εύρεσης της θέσης του μικρότερου σε έναν υπο- πίνακα, τον οποίο θα ονομάσουμε MIN_THESH. Παρόμοιο αλγόριθμο έχουμε κάνει ήδη. Ο αλγόριθμος αυτός αντιπροσωπεύει μια συνάρτηση η οποία επιστρέφει την θέση του μικρότερου στοιχείου ενός υπο-πίνακα. 19

20 Εικόνα 11: Αλγόριθμος 5.4, Αλγόριθμος εύρεσης θέσης μικρότερου στοιχείου Και τώρα μπορούμε να γράψουμε τον αλγόριθμο διάταξης επιλογής, στον οποίο θα καλείται η συνάρτηση MIN_THESH, η οποία θα επιστρέφει το μικρότερο στοιχείο του τμήματος του πίνακα a που θα της ζητάμε. Προσέξτε ότι για έναν πίνακα μεγέθους Ν απαιτούνται Ν-1 περάσματα, όπως ήδη αναφέρθηκε. Άρα η εντολή ΓΙΑ θα έπρεπε να μετρήσει από 1 μέχρι και το Ν-1. Όμως επειδή στην γλώσσα C οι πίνακες αριθμούνται από το μηδέν, εδώ θα έχουμε από 0 μέχρι και Ν-2. Ακόμη, το σύμβολο σε μια εντολή της μορφής: a[i] a[j], αντιπροσωπεύει την εναλλαγή των τιμών των στοιχείων a[i] και a[j]. Κανονικά, αυτό γίνεται με τη χρήση μιας βοηθητικής μεταβλητής temp, ως εξής: temp a[i], a[i] a[j], a[j] temp Εικόνα 12: Αλγόριθμος 5.5 Διάταξη Επιλογής. 20

21 Ο αλγόριθμος επιλογής γίνεται εύκολα κατανοητός, όμως δεν έχει καλή πολυπλοκότητα χρόνου. Επιπλέον, ο αριθμός των συγκρίσεων δεν εξαρτάται από την αρχική διάταξη των στοιχείων του πίνακα. Σε κάθε κλήση του αλγόριθμου MIN_THESH γίνονται n-nl συγκρίσεις, όπου n είναι το μέγεθος του πίνακα και nl είναι η θέση (ο δείκτης) του 1 ου στοιχείου του τρέχοντα υπο-πίνακα όπου ψάχνουμε το ελάχιστο. Δηλαδή έχουμε n-1 συγκρίσεις στο 1 ο πέρασμα, n-2 συγκρίσεις το 2 ο πέρασμα, κοκ. Έτσι έχουμε για τη συνάρτηση πολυπλοκότητας (η οποία βασίζεται στον αριθμό συγκρίσεων): f(n) = αριθμός συγκρίσεων = n( n 1) (n-1) + (n-2) = = 2 2 n n. Άρα καταλήγουμε ότι: f(n) = O(n2 ) Διάταξη φυσαλίδας Ο αλγόριθμος διάταξης φυσαλίδας διαπερνά έναν πίνακα ξεκινώντας από το τελευταίο του στοιχείο, συγκρίνοντας ανά δύο γειτονικά και αντιμεταθέτοντας αν δεν είναι στη σειρά που θέλουμε. Κατά τη διάρκεια της ταξινόμησης το μικρότερο στοιχείο του πίνακα «αναδύεται» στην πρώτη θέση του πίνακα (αν ταξινομούμε σε αύξουσα σειρά), εξ ου και ο όρος «φυσαλίδα». Στο δεύτερο πέρασμα ξεκινάμε πάλι από το τελευταίο στοιχείο, συγκρίνουμε ανά δύο γειτονικά και κάνουμε αντιμεταθέσεις όπου απαιτείται έτσι ώστε το επόμενο μικρότερο στοιχείο να βρεθεί στην δεύτερη θέση του πίνακα. Το ίδιο κάνουμε για το τρίτο πέρασμα, κοκ. Ο αριθμός των διαπεράσεων του πίνακα είναι κατά ένα μικρότερος από τον αριθμό των στοιχείων του, δηλαδή Ν-1. Σε κάθε διαπέραση επαναλαμβάνεται η σύγκριση γειτονικών στοιχείων, από την τελευταία θέση του πίνακα (θέση Ν-1 σε πίνακες της γλώσσας C) προς τη θέση i, όπου i είναι ο αριθμός της τρέχουσας διαπέρασης. Στο παρακάτω παράδειγμα, όπου γίνεται αύξουσα ταξινόμηση, φαίνονται μέσα σε κύκλους τα στοιχεία του πίνακα 5 θέσεων που συγκρίνονται μεταξύ τους κάθε φορά, ενώ με διπλό βέλος υποδεικνύεται μια εναλλαγή όταν απαιτείται. 21

22 Εικόνα 13: Παράδειγμα Διάταξης φυσαλίδας. Παρατηρήστε ότι σε κάθε διαπέραση όχι μόνο μετατοπίζεται (αναδύεται) το μικρότερο στοιχείο στην κορυφή του τρέχοντα υπο-πίνακα, αλλά γίνονται κι άλλες μετατοπίσεις στοιχείων με αποτέλεσμα να μην απαιτείται να γίνουν πάντα όλες οι διαπεράσεις. Στο παραπάνω παράδειγμα με την 2 η διαπέραση ο πίνακας είχε ταξινομηθεί. Ερώτημα: Πως γίνεται να αποφύγουμε τις περιττές διαπεράσεις; 22

23 Εικόνα 14: Αλγόριθμος 5.6 Αλγόριθμος Διάταξης Φυσαλίδας 8. Λίστες Λίστες χρησιμοποιούμε σε πολλές περιπτώσεις στη ζωή μας, όπως για παράδειγμα μια λίστα με ψώνια, με δουλειές, κλπ. Ας υποθέσουμε ότι έχουμε μια λίστα με φακέλους εργαζομένων σε μια εταιρεία. Τι μπορεί να χρειαστεί να κάνουμε μ αυτή; Μπορεί να τη διαπεράσουμε, δηλαδή να δούμε τους φακέλους έναν-έναν με τη σειρά. Μπορεί να εισάγουμε έναν νέο φάκελο κάπου στη λίστα (και όχι απαραίτητα στην αρχή ή το τέλος της) ή να αφαιρέσουμε έναν από αυτή. Μπορεί ακόμη να αναζητήσουμε έναν συγκεκριμένο φάκελο στη λίστα. Μια λίστα είναι λοιπόν μια πεπερασμένη ακολουθία στοιχείων του ίδιου τύπου. Η ακολουθία ορίζεται στα μαθηματικά ως μια συλλογή θεωρητικά άπειρων στοιχείων. Μπορεί να έχουμε όμως και μια πεπερασμένη ακολουθία Ν στοιχείων, όπου L 1 είναι το πρώτο και L N το τελευταίο της στοιχείο. Κάθε στοιχείο της λίστας έχει ένα προηγούμενο στοιχείο (εκτός του πρώτου) και ένα επόμενο (εκτός του τελευταίου). Το πρώτο στοιχείο μιας λίστας ονομάζεται κεφαλή (head). Όταν μια λίστα δεν έχει κανένα στοιχείο, ονομάζεται κενή λίστα (null list). Μια λίστα έχει κάποιες σημαντικές διαφορές από έναν πίνακα: 1. Ο πίνακας είναι μια δομή τυχαίας προσπέλασης ενώ μια λίστα είναι μια δομή ακολουθιακής ή σειριακής προσπέλασης. Αυτό σημαίνει ότι για να φτάσουμε σε ένα στοιχείο της λίστας πρέπει να περάσουμε από όλα τα προηγούμενά του πρώτα. 2. Ο πίνακας είναι μια στατική δομή, δηλαδή έχει συγκεκριμένο και σταθερό μήκος, ενώ η λίστα είναι μια δυναμική δομή, δηλαδή το μέγεθός της μπορεί να αυξομειώνεται καθώς προστίθενται ή αφαιρούνται στοιχεία της. Τις λίστες χωρίζουμε σε δύο μεγάλες κατηγορίες, τις γενικές και τις ειδικές λίστες, ανάλογα με τον βαθμό ελευθερίας εφαρμογής των πράξεων σε αυτές. Για παράδειγμα, οι γενικές 23

24 λίστες επιτρέπουν την εισαγωγή και διαγραφή οποιουδήποτε στοιχείου τους ενώ οι ειδικές (όπως η στοίβα και η ουρά) μόνο από ορισμένα σημεία. Μια λίστα, γενική ή ειδική, μπορεί να αναπαρασταθεί ως συνεχόμενη (contiguous) ή ως συνδεδεμένη (linked). Στη συνεχόμενη αναπαράσταση τα στοιχεία της λίστας καταλαμβάνουν διαδοχικές θέσεις στη μνήμη, δηλαδή τοποθετούνται σε έναν πίνακα. Η χρήση πίνακα μας δίνει τη δυνατότητα άμεσης προσπέλασης των στοιχείων της λίστας. Είπαμε όμως ότι το μέγεθος μιας λίστας μπορεί να αυξομειώνεται, άρα ο πίνακας πρέπει να έχει μέγεθος τέτοιο ώστε να υπάρχει περιθώριο για προσθήκη στοιχείων στη λίστα και να μη συμβεί υπερχείλιση (overflow). Αυτό όμως συνεπάγεται σπατάλη μνήμης. Επιπλέον, πρέπει να υπάρχει μια μεταβλητή που να δείχνει κάθε φορά στο τελευταίο στοιχείο της λίστας, ώστε να ξέρουμε που είναι το τέλος της. Εικόνα 15: Παράδειγμα συνεχόμενης αναπαράστασης στοιχείων λίστας. Στη συνδεδεμένη αναπαράσταση τα στοιχεία δεν καταλαμβάνουν διαδοχικές θέσεις στη μνήμη του υπολογιστή, οπότε για να μεταβούμε από ένα στοιχείο της λίστας στο επόμενο χρησιμοποιούμε έναν σύνδεσμο (link) που τα συνδέει. Άρα, μαζί με την τιμή κάθε στοιχείου αποθηκεύεται και ένας σύνδεσμος ή δείκτης ο οποίος δείχνει στο επόμενο στοιχείο της λίστας. Τα στοιχεία μιας συνδεδεμένης λίστας είναι πιο σύνθετα από μιας συνεχόμενης (δεδομένα + δείκτης στο επόμενο στοιχείο) και αποκαλούνται κόμβοι (nodes). Μια τέτοια λίστα ονομάζεται απλά συνδεδεμένη λίστα (one-way ή singly linked list), ωστόσο υπάρχουν και άλλοι τύποι συνδεδεμένης λίστας όπως η διπλά συνδεδεμένη λίστα, η κυκλική συνδεδεμένη λίστα, η συνδεδεμένη λίστα με κεφαλίδα, κ.α. Στο επόμενο σχήμα παριστάνεται γραφικά μια απλά συνδεδεμένη λίστα τεσσάρων κόμβων Ν 1 ως Ν 4, οι οποίοι παριστάνονται σαν κουτάκια με δύο τμήματα. Το αριστερό τμήμα περιέχει την τιμή (το δεδομένο) τ i του κόμβου ενώ το δεξί τον δείκτη p i που δείχνει στον επόμενο κόμβο (δηλαδή που περιέχει τη διεύθυνσή του). Αυτό υποδεικνύεται παραστατικά με ένα βέλος. Ο τελευταίος κόμβος δεν έχει επόμενο, οπότε ο δείκτης του περιέχει την διεύθυνση (ή τιμή) NIL. Αυτό αναπαρίσταται με μια κουκίδα χωρίς βέλος. Επιπλέον, υπάρχει πάντα ένας δείκτης L που δείχνει στον πρώτο κόμβο N 1 και αντιπροσωπεύει στην ουσία ολόκληρη τη λίστα. Εικόνα 16: Συνδεδεμένη αναπαράσταση λίστας: Κάθε κόμβος Ν i της λίστας περιέχει την τιμή τ i και έναν δείκτη p i στον επόμενο κόμβο. 24

25 Μια απλά συνδεδεμένη λίστα μπορεί να υλοποιηθεί με δύο τρόπους. Σε γλώσσες προγραμματισμού όπως η FORTRAN, BASIC και COBOL οι οποίες δεν διαθέτουν δείκτες, χρησιμοποιούνται συνήθως δύο πίνακες. Ο ένας περιέχει τα δεδομένα των κόμβων ενώ ο άλλος τους δείκτες. Ο δεύτερος τρόπος χρησιμοποιεί μεταβλητές τύπου δείκτη (pointer variables). Ένας δείκτης είναι ένας τύπος μεταβλητής που έχει σαν πεδίο τιμών του το σύνολο των διευθύνσεων του υπολογιστή. Αυτός ο τρόπος χρησιμοποιείται σε γλώσσες όπως η C και η Pascal. Σ αυτές τις γλώσσες κάθε κόμβος ορίζεται σαν μια εγγραφή (record) ή δομή (structure) με δύο πεδία, όπου το ένα περιέχει την τιμή του κόμβου (το δεδομένο) και το άλλο, δηλαδή ο δείκτης, περιέχει τη διεύθυνση του επόμενου κόμβου. 8.1 Πράξεις σε απλά συνδεδεμένη λίστα Οι γλώσσες προγραμματισμού που χρησιμοποιούν δείκτες έχουν και διαδικασίες με τις οποίες μπορούν να δεσμεύουν και να αποδεσμεύουν μνήμη στην οποία δείχνει ένας δείκτης, όπως οι malloc και free της C. Στους αλγόριθμους που ακολουθούν θα θεωρούμε ότι αυτό έχει ήδη συμβεί. Ακόμη, με τον όρο ΤΙΜΗ θα εννοούμε τη μεταβλητή που περιέχει την τιμή (το δεδομένο) ενός κόμβου και με τον όρο ΔΕΙΚΤΗΣ θα εννοούμε τον δείκτη του κόμβου, ο οποίος περιέχει τη διεύθυνση του επόμενού του κόμβου. Ο δείκτης L θεωρούμε ότι περιέχει τη διεύθυνση του 1 ου κόμβου της λίστας Διαπέραση Στον αλγόριθμο που περιγράφεται παρακάτω χρησιμοποιούμε ένα βοηθητικό δείκτη P με τη βοήθεια του οποίου θα κάνουμε τη διαπέραση και ο οποίος κάθε στιγμή περιέχει τη διεύθυνση του τρέχοντα κόμβου, άρα αντιπροσωπεύει τον τρέχοντα κόμβο. Έτσι, ο συμβολισμός P->TIMH αντιπροσωπεύει την τιμή του τρέχοντα κόμβου, ενώ το P->ΔΕΙΚΤΗΣ αντιπροσωπεύει τη διεύθυνση που περιέχει ο τρέχοντας κόμβος (η οποία είναι η διεύθυνση του επόμενού του κόμβου). Εικόνα 17:Παράδειγμα Διαπέρασης. Με τον όρο «ΕΠΕΞΕΡΓΑΣΙΑ» στην γραμμή 3 του αλγόριθμου εννοούμε ότι χρησιμοποιούμε την τιμή του τρέχοντα κόμβου για να κάνουμε κάποια πράξη με αυτήν ή να την εμφανίζουμε στην οθόνη ή να την αλλάξουμε, κλπ. 25

26 Εικόνα 18: Αλγόριθμος 6.1 Διαπέραση απλά συνδεδεμένης λίστας. Όπως βλέπετε, πρώτα ο δείκτης P αρχικοποιείται με τη διεύθυνση του πρώτου κόμβου της λίστας. Έπειτα αρχίζει μια επαναληπτική διαδικασία, η οποία θα σταματήσει όταν ο δείκτης P πάρει την τιμή NIL, δηλαδή δεν υπάρχει άλλος κόμβος (φτάσαμε στο τέλος της λίστας). Μέσα στην επαναληπτική διαδικασία γίνεται επεξεργασία της τιμής του τρέχοντα κόμβου και στη συνέχεια η δείκτης P παίρνει τη διεύθυνση του επόμενου κόμβου Εισαγωγή Στον αλγόριθμο εισαγωγής κόμβου σε λίστα, υποθέτουμε: ότι η λίστα υπάρχει ήδη (κάτι που υποθέσαμε και στους προηγούμενους αλγόριθμους). ότι ο δείκτης PI περιέχει τη διεύθυνση του κόμβου μετά από τον οποίο θα εισάγουμε τον νέο κόμβο. ότι ο κόμβος που θα εισαχθεί στην λίστα (δηλαδή ο νέος κόμβος) υπάρχει ήδη και τη διεύθυνσή του περιέχει ο δείκτης P. Εικόνα 19: Αλγόριθμος 6.2, Εισαγωγή κόμβου σε απλά συνδεδεμένη λίστα. 26

27 Όπως βλέπετε στον παραπάνω αλγόριθμο, αρχικά (βήμα 1) γίνεται έλεγχος για το αν οι δείκτες που αποτελούν την είσοδο του αλγόριθμου περιέχουν την τιμή NIL, οπότε και δεν δείχνουν σε κανέναν κόμβο. Σ αυτήν την περίπτωση η όλη διαδικασία σταματά με ένα μήνυμα λάθους (βήμα 2). Αν όμως οι δείκτες είναι εντάξει, εκτελούνται τα βήματα 3 και 4. Στο βήμα 3 ο δείκτης του προς εισαγωγή κόμβου P δείχνει στον κόμβο μετά τον PI. Στο βήμα 4 ο δείκτης του κόμβου PI δείχνει στον προς εισαγωγή κόμβο P. Τα βήματα 3 και 4 φαίνονται παραστατικά στα παρακάτω σχήματα. Εικόνα 20: Παράδειγμα Διαγραφή Το επόμενο σχήμα δείχνει παραστατικά τι συμβαίνει κατά τη διαγραφή ενός κόμβου από μια συνδεδεμένη λίστα. Εικόνα 21: Παράδειγμα Διαγραφής. 27

28 Ουσιαστικά εκείνο που γίνεται είναι να παρακαμφθεί ο προς διαγραφή κόμβος (στο παραπάνω σχήμα ο Ν 3). Ο αλγόριθμος που υλοποιεί τη διαγραφή φαίνεται παρακάτω, ωστόσο ας συζητήσουμε κάποια πράγματα πριν τον αναλύσουμε. Όπως καταλαβαίνετε, πρέπει να πούμε στον αλγόριθμο ποιόν κόμβο να διαγράψει. Αυτό μπορεί να γίνει με δύο τρόπους: είτε χρησιμοποιώντας ένα δείκτη ο οποίος θα δείχνει στον προς διαγραφή κόμβο (θα διαφωνήσουμε όμως μ αυτό παρακάτω), είτε λέγοντας στον αλγόριθμο τον αριθμό του κόμβου που θέλουμε να διαγράψει (π.χ. διέγραψε τον τρίτο κόμβο). Θα χρησιμοποιήσουμε αρχικά τον πρώτο τρόπο, αυτόν με τον δείκτη, ωστόσο υπάρχει ένα πρόβλημα. Αν κοιτάξετε το προηγούμενο σχήμα όπου ο προς διαγραφή κόμβος είναι ο Ν 3, θα δείτε ότι αν έχουμε έναν δείκτη να δείχνει σ αυτόν τον κόμβο θα είναι αδύνατο να βρούμε τον προηγούμενό του κόμβο (τον Ν 2) ώστε να κάνουμε την παράκαμψη, δηλαδή να τον κάνουμε να δείξει στον Ν 4. Θυμηθείτε ότι μια συνδεδεμένη λίστα είναι σαν ένα κουβάρι που ξετυλίγεται: από ένα κόμβο μπορούμε να βρούμε τον επόμενό του, όχι όμως τον προηγούμενό του. Άρα αν είναι να δώσουμε στον αλγόριθμο ένα δείκτη, αυτός δεν πρέπει να δείχνει στον προς διαγραφή κόμβο αλλά στον προηγούμενό του κόμβο. Και τώρα ο αλγόριθμος: Εικόνα 22: Αλγόριθμος 6.3 Διαγραφή κόμβου σε απλά συνδεδεμένη Λίστα. Στο βήμα 1 γίνεται έλεγχος αν δεν υπάρχει ο προηγούμενος του προς διαγραφή κόμβος (PI = NIL), καθώς και ο ίδιος ο προς διαγραφή κόμβος (PI->ΔΕΙΚΤΗΣ = NIL). Αν έστω και ένας από τους δύο δεν υπάρχει, εμφανίζεται μήνυμα λάθους και ο αλγόριθμος δεν προχωρά παρακάτω. Αν όμως υπάρχουν, εκτελούνται τα βήματα 3 και 4. Σ αυτά γίνεται η παράκαμψη του κόμβου που διαγράφεται. Συγκεκριμένα, στο βήμα 3 ένας βοηθητικός δείκτης που χρησιμοποιούμε σ αυτό το σημείο, ο P, δείχνει στον προς διαγραφή κόμβο. Γιατί θέλουμε να φτάσουμε σ αυτόν τον κόμβο; Μα γιατί αυτός δείχνει στον επόμενό του κόμβο και εμείς, για να παρακάμψουμε έναν οποιοδήποτε κόμβο θα πρέπει να κάνουμε τον 28

29 προηγούμενό του κόμβο να δείξει στον επόμενό του κόμβο. Στο βήμα 4 γίνεται αυτό ακριβώς. Διαγραφή της κεφαλής της λίστας. Τώρα, αν θέλουμε να διαγράψουμε την κεφαλή μιας λίστας, δηλαδή τον πρώτο κόμβο της, τα πράγματα διαφοροποιούνται λίγο. Συγκεκριμένα, θα πρέπει: 1. ο δείκτης PI τώρα να είναι ο L. 2. ο έλεγχος στο βήμα 1 να περιλαμβάνει μόνο τον L (δηλαδή έλεγχος αν υπάρχει ένας τουλάχιστον κόμβος στη λίστα) και 3. αντί για τα βήματα 3 και 4, τώρα έχουμε το: L L->ΔΕΙΚΤΗΣ (νέα κεφαλή της λίστας γίνεται ο κόμβος που βρίσκεται έπειτα από την τωρινή κεφαλή). Διαγραφή του κόμβου νούμερο K. Όπως όμως αναφέρθηκε παραπάνω, μπορεί να θέλουμε να διαγράψουμε τον κόμβο νούμερο Κ από την λίστα, (π.χ. τον κόμβο νούμερο 3) πως θα γίνει αυτό χωρίς όμως να δώσουμε έναν δείκτη στον αλγόριθμο αλλά μόνο τον αριθμό του κόμβου; Για να βρούμε τον προς διαγραφή κόμβο τώρα θα πρέπει ο αλγόριθμος να ξεκινήσει από την αρχή της λίστας και μετρώντας τους κόμβους να φτάσει μέχρι εκείνον που θέλουμε να διαγραφεί. Αυτό μοιάζει με διαπέραση της λίστας, η οποία όμως θα σταματήσει μόλις βρούμε τον κόμβο που θα διαγραφεί, κατά τη διάρκεια της οποίας ένας μετρητής αυξάνει κατά ένα για κάθε κόμβο από τον οποίο περνάμε. Ο αλγόριθμος φαίνεται στη συνέχεια και αποτελείται από δύο τμήματα. Ο αλγόριθμος χρειάζεται να ξέρει μόνο που αρχίζει η λίστα, δηλαδή τον δείκτη L και ποιο στοιχείο της λίστας θέλουμε να διαγραφεί, δηλαδή το K. Στο βήμα 1 αρχικοποιείται ο δείκτης PK ώστε να δείχνει στον πρώτο κόμβο της λίστας, και ο μετρητής Ι στην τιμή 1. Ο βοηθητικός δείκτης PK θα χρησιμοποιηθεί για να δείχνει κάθε φορά στον τρέχοντα κόμβο, και ο μετρητής Ι θα μετρά το πλήθος των κόμβων από τους οποίους έχουμε περάσει. Στο πρώτο τμήμα του αλγόριθμου (βήματα 2-5) διακρίνεται η εντολή «ενόσω», με την οποία διαπερνάται η λίστα μέχρι να φτάσουμε στον Κ-στό κόμβο (I K) ή το τέλος της λίστας (PK = NIL), οπότε και σταματά. Παρατηρήστε ότι χρησιμοποιούμε και ακόμη έναν δείκτη, τον PI, ο οποίος σε κάθε επανάληψη δείχνει στον προηγούμενο, του τρέχοντα, κόμβο. Θυμηθείτε ότι πρέπει να υπάρχει δείκτης που να δείχνει στον προηγούμενο κόμβο από εκείνον που θα διαγράψουμε, αλλιώς δεν μπορεί να γίνει η διαγραφή. Ο Ι αυξάνει την τιμή του κατά 1 σε κάθε επανάληψη, μετρώντας έτσι τα στοιχεία της λίστας. 29

30 Εικόνα 23: Αλγόριθμος 6.4 Διαγραφή του κόμβου Κ σε συνδεδεμένη Λίστα. Τα βήματα 6-8 αποτελούν το δεύτερο μέρος του αλγόριθμου. Το γεγονός ότι ο αλγόριθμος περνά στο δεύτερο μέρος σημαίνει ότι μια από τις συνθήκες της «ενόσω» στο βήμα 2 σταμάτησε τις επαναλήψεις, αλλά ποια από τις δύο συνθήκες; Δηλαδή φτάσαμε στον κόμβο Κ ή μήπως φτάσαμε στο τέλος της λίστας και κόμβος Κ δεν υπάρχει; Το βήμα 6 ελέγχει αυτό ακριβώς, δηλαδή αν δεν φτάσαμε στο τέλος της λίστας (PK NIL), οπότε και κάνει τη διαγραφή. Αν όμως η «ενόσω» σταμάτησε γιατί φτάσαμε στο τέλος της λίστας, τότε τυπώνεται μήνυμα αποτυχίας Αναζήτηση Αναζήτηση ενός στοιχείου μιας απλά συνδεδεμένης λίστας μπορεί να γίνει μόνο με τη μέθοδο της γραμμικής αναζήτησης, δηλαδή ψάχνοντας ένα-ένα τα στοιχεία της λίστας από την αρχή. Ακόμη κι αν η λίστα είναι διατεταγμένη, και πάλι θα χρησιμοποιηθεί η γραμμική αναζήτηση, αφού για παράδειγμα στη δυαδική αναζήτηση πρέπει να βρεθεί το μεσαίο στοιχείο, κι αυτό δεν μπορεί να γίνει εύκολα. Φυσικά, αν η λίστα είναι διατεταγμένη, η αναζήτηση μπορεί να σταματήσει πριν φτάσουμε στο τέλος της λίστας. Ο παρακάτω αλγόριθμος δίνεται σαν παράδειγμα αναζήτησης των μηδενικών σε μια λίστα και καταμέτρησής τους. Στο τέλος ο αλγόριθμος θα μας πει πόσες μηδενικές τιμές περιέχει η λίστα. Παρατηρείστε πόσα στοιχεία δανείζεται από τον αλγόριθμο διαπέρασης, που είδαμε σε προηγούμενη παράγραφο. 30

31 Εικόνα 24: Αλγόριθμος 6.5, εύρεση μηδενικών σε συνδεδεμένη λίστα. Τα βήματα 2-5 διαμορφώνουν έναν επαναληπτικό κύκλο, ο οποίος σταματά όταν φτάσουμε στο τέλος της λίστας (P = NIL), άρα συνεχίζεται όσο (P NIL). Ο δείκτης P δείχνει στον τρέχοντα κόμβο κάθε φορά. Αν η τιμή στον τρέχοντα κόμβο είναι το μηδέν (βήμα 3), τότε ο μετρητής Ι αυξάνει κατά ένα (βήμα 4). Έπειτα, στο βήμα 5, ο δείκτης P δείχνει στον επόμενο κόμβο (δηλαδή ο επόμενος κόμβος γίνεται τώρα τρέχοντας) και ξεκινά η επόμενη επανάληψη. Όταν οι επαναλήψεις σταματήσουν γιατί φτάσαμε στο τέλος της λίστας, τυπώνεται η τιμή του μετρητή Ι (βήμα 6). 8.2 Άλλες κατηγορίες συνδεδεμένης λίστας Υπάρχουν κι άλλοι τύποι συνδεδεμένης λίστας, απ τους οποίους οι δύο που περιγράφονται παρακάτω είναι ίσως οι πιο σημαντικοί Διπλά συνδεδεμένη λίστα Στη διπλά συνδεδεμένη λίστα (ονομάζεται και two-way ή doubly linked list) κάθε κόμβος έχει δύο δείκτες, εκτός από την τιμή του, άρα συνολικά 3 τμήματα. Ο ένας, που ονομάζεται αριστερός δείκτης (left pointer), δείχνει στον προηγούμενο κόμβο, ενώ ο άλλος, που ονομάζεται δεξιός δείκτης (right pointer) δείχνει στον επόμενο κόμβο. Εικόνα 25: Διπλά συνδεδεμένη λίστα. 31

32 Συνέπεια του παραπάνω είναι, έχοντας έναν δείκτη που δείχνει σε κάποιο κόμβο μιας τέτοιας λίστας, να μπορούμε να κινηθούμε είτε προς τη μια μεριά είτε προς την άλλη και να προσπελάσουμε οποιοδήποτε στοιχείο της λίστας. Συγκρίνετε αυτό με την απλά συνδεδεμένη λίστα, όπου ξεκινώντας από έναν κόμβο μπορούσαμε να κινηθούμε μόνο προς τους επόμενούς του κόμβους και όχι τους προηγούμενους Κυκλική συνδεδεμένη λίστα Στην κυκλική συνδεδεμένη λίστα (circular linked list), ο δείκτης του τελευταίου κόμβου δεν είναι NIL, αλλά δείχνει στον πρώτο κόμβο της λίστας. Και εδώ, αν το σκεφτείτε λίγο, μπορείτε να δείτε ότι ξεκινώντας από οποιονδήποτε κόμβο είναι δυνατό να φτάσουμε σε οποιονδήποτε άλλο. Εικόνα 26: Κυκλικά συνδεδεμένη λίστα. 9. Δέντρα Όπως ήδη αναφέρθηκε, τα δέντρα (trees) είναι μη-γραμμικές δομές, σε αντίθεση με τους πίνακες και τις λίστες, οι οποίες είναι γραμμικές. Αποτελούνται από ένα σύνολο στοιχείων (κόμβων) του ίδιου τύπου, που όμως σχετίζονται μεταξύ τους με πιο πολύπλοκο τρόπο απ ότι στις γραμμικές δομές. Τα δέντρα πήραν το όνομά τους από τον τρόπο που αναπαρίστανται γραφικά (δες το παρακάτω σχήμα), ο οποίος μοιάζει με δέντρο. Εικόνα 27: Δέντρα. Από το σχήμα μπορείτε να δείτε ότι ένα δέντρο αποτελείται από κόμβους (nodes) και ακμές (edges), οι οποίες είναι οι γραμμές που συνδέουν τους κόμβους μεταξύ τους. Ο πρώτος κόμβος ενός δέντρου ονομάζεται ρίζα του (root) και είναι μοναδική. Από τη ρίζα μπορούν μόνο να ξεκινούν ακμές και όχι να καταλήγουν. Τερματικοί κόμβοι (terminal nodes) ή φύλλα (leaves) ονομάζονται εκείνοι οι κόμβοι στους οποίους μόνο καταλήγουν ακμές. 32

33 Εσωτερικοί κόμβοι (internal) ή μη-τερματικοί κόμβοι (nonterminal) είναι εκείνοι στους οποίους καταλήγουν αλλά και ξεκινούν ακμές. Στο παραπάνω σχήμα ρίζα είναι ο κόμβος Ν 1, οι κόμβοι Ν 2, Ν 3, Ν 4, Ν 8, και Ν 9 είναι εσωτερικοί, ενώ οι υπόλοιποι τερματικοί. Ένα δέντρο που δεν έχει κανέναν κόμβο ούτε και ακμές ονομάζεται κενό δέντρο (null tree). Εάν θεωρήσουμε σαν ρίζα έναν (οποιοδήποτε) κόμβο ενός δέντρου, τότε το τμήμα του δέντρου αυτού που υπάρχει από κάτω ονομάζεται υποδέντρο του (subtree). Εικόνα 28: Παράδειγμα Δέντρου. Οι κόμβοι ενός δέντρου έχουν «οικογενειακές» σχέσεις μεταξύ τους! Ένας κόμβος ονομάζεται γονέας (parent) ενός άλλου κόμβου ο οποίος θα ονομάζεται παιδί του (child), όταν από τον πρώτο κόμβο ξεκινά μια ακμή που καταλήγει στον δεύτερο. Για παράδειγμα, οι κόμβοι Ν 2 και Ν 5 στο παραπάνω σχήμα έχουν σχέση γονέα-παιδιού, αντίστοιχα. Είναι φανερό ότι τα φύλλα δεν έχουν παιδιά. Τα παιδιά ενός κόμβου λέμε ότι είναι αδέρφια (siblings) μεταξύ τους, όπως είναι οι Ν 5, Ν 6, Ν 7. Παρομοίως, ένας κόμβος μπορεί να είναι πρόγονος (ancestor) ή απόγονος (descendant) ενός άλλου. Έτσι, ο Ν 12 είναι απόγονος του Ν 4, αφού είναι παιδί του παιδιού του. Αντίστροφα, ο Ν 4 είναι πρόγονος του Ν 12.Επιπρόσθετα με τα παραπάνω, στα δέντρα ορίζουμε και τα παρακάτω: 33

34 Πίνακας 1: Πίνακας ορισμών δέντρων. 34

35 9.1 Δυαδικά δέντρα Δυαδικό (binary) είναι ένα δέντρο με βαθμό 2. Για τον ορισμό του δυαδικού δέντρου χρησιμοποιείται επίσημα ο επόμενος αναδρομικός ορισμός: Ένα δυαδικό δέντρο είναι είτε το κενό δέντρο, είτε αποτελείται από ένα στοιχείο (κόμβο), που ονομάζεται ρίζα του δέντρου, και από δύο υποδέντρα, που ονομάζονται αριστερό και δεξιό υποδέντρο, τα οποία αποτελούνται από στοιχεία (κόμβους) του ίδιου τύπου με τη ρίζα και που είναι με τη σειρά τους το καθένα δυαδικά δέντρα. Άρα, σ ένα δυαδικό δέντρο ο κάθε κόμβος μπορεί να έχει το πολύ 2 παιδιά, το αριστερό και το δεξί. Αν κάποιο από τα παιδιά είναι το κενό δέντρο, λέμε ότι το αντίστοιχο παιδί δεν υπάρχει ή είναι κενό. Φυσικά, οι τερματικοί κόμβοι έχουν ως δεξί και αριστερό παιδί το κενό δέντρο. Εικόνα 29: Δυαδικά Δέντρα. Μπορούμε να διαπιστώσουμε εύκολα ότι στο επίπεδο 0 (στη ρίζα) ο μέγιστος αριθμός κόμβων είναι 2 0 =1, στο επίπεδο 1 είναι 2 1 =2, στο επίπεδο 2 είναι 2 2 =4, κοκ, άρα στο επίπεδο (βάθος ) k είναι 2 k. Άρα, ένα δυαδικό δέντρο ύψους h μπορεί να έχει το πολύ h h k = 2 = 2 h+1 1 κόμβους. k 0 Ένα δυαδικό δέντρο λέγεται πλήρες (complete) αν: σε όλα τα επίπεδά του, εκτός ίσως από το τελευταίο, έχει το μέγιστο δυνατό αριθμό κόμβων. όλοι οι κόμβοι στο τελευταίο επίπεδο βρίσκονται όσο το δυνατό στα αριστερά του δέντρου. Καταλαβαίνετε ότι μπορεί να υπάρχει μόνο ένα πλήρες δέντρο με ακριβώς n κόμβους. Στο παρακάτω σχήμα το δέντρο (α) είναι πλήρες, όχι όμως το (β) αφού οι κόμβοι του τελευταίου του επιπέδου (τερματικοί) δε βρίσκονται όσο το δυνατό αριστερότερα, ούτε το (γ) αφού στο δεύτερο επίπεδό του δεν έχει το μέγιστο αριθμό κόμβων ενώ δεν είναι το τελευταίο. 35

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Διαβάστε περισσότερα

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

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

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

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα 7: Αφαίρεση δεδόμενων Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

Διαβάστε περισσότερα

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Πληροφορική II Ενότητα 2 : Αλγόριθμοι Δρ. Γκόγκος Χρήστος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Χρηματοοικονομικής & Ελεγκτικής

Διαβάστε περισσότερα

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

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η Μονοδιάστατοι Πίνακες Τι είναι ο πίνακας γενικά : Πίνακας είναι μια Στατική Δομή Δεδομένων. Δηλαδή συνεχόμενες θέσεις μνήμης, όπου το πλήθος των θέσεων είναι συγκεκριμένο. Στις θέσεις αυτές καταχωρούμε

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6β: Ταξινόμηση με εισαγωγή και επιλογή Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creatve

Διαβάστε περισσότερα

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

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 6α: Αναζήτηση Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commos. Για εκπαιδευτικό

Διαβάστε περισσότερα

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ 2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,

Διαβάστε περισσότερα

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Γιάννης Κουτσονίκος Επίκουρος Καθηγητής Οργάνωση Δεδομένων Δομή Δεδομένων: τεχνική οργάνωσης των δεδομένων με σκοπό την

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα

Δομές Δεδομένων. Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Ενότητα 4: Ο ΑΤΔ Λίστα & Υλοποίηση Λίστας με σειριακή αποθήκευση- Ο ΑΤΔ Συνδεδεμένη Λίστα- Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με πίνακα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό,

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

Διαβάστε περισσότερα

Δομές Δεδομένων Ενότητα 2

Δομές Δεδομένων Ενότητα 2 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 2: Θέματα Απόδοσης Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 3: Ασυμπτωτικός συμβολισμός Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής 2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών 3. Ο αλγόριθμος

Διαβάστε περισσότερα

Προγραµµατιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

Διαβάστε περισσότερα

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

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΔΕΔΟΜΕΝΑ ΑΛΓΟΡΙΘΜΟΙ -ΠΛΗΡΟΦΟΡΙΑ: Δεδομένα: Αναπαράσταση της Πραγματικότητας Μπορούν να γίνουν αντιληπτά με μια από τις αισθήσεις μας Πληροφορία: Προκύπτει από

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 6. Δυαδικά Δέντρα 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 18/11/2016 Εισαγωγή Τα

Διαβάστε περισσότερα

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

Διαβάστε περισσότερα

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

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Η συλλογή των ακατέργαστων δεδομένων και ο συσχετισμός

Διαβάστε περισσότερα

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

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

Διαβάστε περισσότερα

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

Διαβάστε περισσότερα

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 5: Αναδρομικές σχέσεις - Υπολογισμός Αθροισμάτων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη) ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Διαβάστε περισσότερα

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: ΑΕσΠΠ 1 / 8 I. ΑΛΓΟΡΙΘΜΟΣ 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: i. Είσοδος : χρήση μιας μεταβλητής που δεν έχει πάρει προηγουμένως τιμή. ii. Έξοδος : ο αλγόριθμος δεν εμφανίζει

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 1: Εισαγωγή στη C - Αλγόριθμοι Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε

Διαβάστε περισσότερα

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

Αλγόριθμοι Ταξινόμησης Μέρος 4 Αλγόριθμοι Ταξινόμησης Μέρος 4 Μανόλης Κουμπαράκης Δομές Δεδομένων και Τεχνικές 1 Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Οι αλγόριθμοι ταξινόμησης που είδαμε μέχρι τώρα αποφασίζουν πώς να

Διαβάστε περισσότερα

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

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

Διαβάστε περισσότερα

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

Διαβάστε περισσότερα

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Διαβάστε περισσότερα

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Προγραμματισμός Ι Ενότητα 8 : Πίνακες IΙ Αλέξανδρος Τζάλλας 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής Τ.Ε

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων Ενότητα 13: B-Δέντρα/AVL-Δέντρα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 13: Αλγόριθμοι-Μεγάλων ακεραίων- Εκθετοποίηση- Πολλαπλασιασμός πινάκων -Strassen Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

ΠΡΟΣ: Τηλέφωνο: 210-3443422 Ινστιτούτο Εκπαιδευτικής Πολιτικής ΚΟΙΝ.: ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ, ΕΡΕΥΝΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ----- Βαθμός Ασφαλείας: Να διατηρηθεί μέχρι: Βαθ. Προτεραιότητας: ΓΕΝΙΚΗ ΔΙΕΥΘΥΝΣΗ ΣΠΟΥΔΩΝ Π/ΘΜΙΑΣ ΚΑΙ Δ/ΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΔΙΕΥΘΥΝΣΗ ΣΠΟΥΔΩΝ,

Διαβάστε περισσότερα

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

Διαβάστε περισσότερα

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 5.1 Επίδοση αλγορίθμων Μέχρι τώρα έχουμε γνωρίσει διάφορους αλγόριθμους (αναζήτησης, ταξινόμησης, κ.α.). Στο σημείο αυτό θα παρουσιάσουμε ένα τρόπο εκτίμησης της επίδοσης (performance) η της αποδοτικότητας

Διαβάστε περισσότερα

ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα

ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα ΑΕΠΠ 7o Επαναληπτικό Διαγώνισμα Ονοματεπώνυμο: ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμίας από τις παρακάτω προτάσεις 1-5 και, δίπλα, τη λέξη ΣΩΣΤΟ, αν η πρόταση είναι σωστή, ή τη λέξη ΛΑΘΟΣ,

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2015-2016 Θέμα Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις προτάσεις 1-4 και δίπλα τη λέξη ΣΩΣΤΟ,

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

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

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

Διαβάστε περισσότερα

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

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Σχετικές έννοιες 8.3 Υλοποίηση δοµών δεδοµένων 8.4 Μια σύντοµη µελέτη περίπτωσης 8.5 Προσαρµοσµένοι τύποι δεδοµένων 1 Βασικές δοµές

Διαβάστε περισσότερα

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας ΚΕΦΑΛΑΙΟ 8: Αφηρηµένοι τύποι δεδοµένων 8.1 οµές δεδοµένων (data structures) 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας Αδόµητα δεδοµένα οδός Ζέας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

Διαβάστε περισσότερα

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής ΚΕΦΑΛΑΙΟ 8: Αφαιρετικές έννοιες δεδομένων 8.1 Βασικές έννοιες δομών δεδομένων 8.2 Σχετικές έννοιες 8.3 Υλοποίηση δομών δεδομένων 8.4 Μια σύντομη μελέτη περίπτωσης 8.4 Προσαρμοσμένοι τύποι δεδομένων 8.6

Διαβάστε περισσότερα

Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch

Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch Bubble Hack Οπτικοποίηση του αλγορίθμου ταξινόμησης Bubble Sort στο Scratch 1 Καλαμποκάς Ιάσων, 2 Καραστάθη Μαρία, 3 Καραστάθη Ουρανία, 4 Χαλβατσιώτης Γεώργιος, 5 Κωνσταντίνου Ζωή, 6 Καρόγλου Νικόλαος,

Διαβάστε περισσότερα

5.1. Προσδοκώμενα αποτελέσματα

5.1. Προσδοκώμενα αποτελέσματα 5.1. Προσδοκώμενα αποτελέσματα Όταν θα έχεις ολοκληρώσει τη μελέτη αυτού του κεφαλαίου θα έχεις κατανοήσει τις τεχνικές ανάλυσης των αλγορίθμων, θα μπορείς να μετράς την επίδοση των αλγορίθμων με βάση

Διαβάστε περισσότερα

Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής

Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής Κεφάλαιο 3: Εισαγωγή στους αλγορίθμους - διαγράμματα ροής Αλγόριθμος (algorithm) λέγεται μία πεπερασμένη διαδικασία καλά ορισμένων βημάτων που ακολουθείται για τη λύση ενός προβλήματος. Το διάγραμμα ροής

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Εισαγωγή Η τακτοποίηση των δεδομένων με ιδιαίτερη σειρά είναι πολύ σημαντική λειτουργία που ονομάζεται

Διαβάστε περισσότερα

Αναζήτηση. 1. Σειριακή αναζήτηση 2. Δυαδική Αναζήτηση. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Μαθηματικά. Ενότητα 2: Διαφορικός Λογισμός. Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)

Μαθηματικά. Ενότητα 2: Διαφορικός Λογισμός. Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη) Μαθηματικά Ενότητα 2: Διαφορικός Λογισμός Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Ερώτημα 1. Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n.

Ερώτημα 1. Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n. Πρώτο Σύνολο Ασκήσεων 2014-2015 Κατερίνα Ποντζόλκοβα, 5405 Αθανασία Ζαχαριά, 5295 Ερώτημα 1 Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n. Ο αλγόριθμος εύρεσης

Διαβάστε περισσότερα

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 9: Πίνακες στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Εισαγωγή στην πληροφορική Ενότητα 5: ΑΛΓΟΡΙΘΜΟΙ Πασχαλίδης Δημοσθένης Τμήμα Διαχείρισης Εκκλησιαστικών Κειμηλίων Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο Ενότητα 4: Τελεστές - Αλγόριθμος Διδάσκουσα: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος του συγγραφέα... 13 Πρόλογος του καθηγητή Τιμολέοντα Σελλή... 15 ΚΕΦΑΛΑΙΟ 1: Εργαλεία γλωσσών προγραμματισμού...17 1.1 Γλώσσες προγραμματισμού τρίτης γεννεάς... 18 τι είναι η γλώσσα

Διαβάστε περισσότερα

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Ταξινόμηση. Ταξινόμηση με Εισαγωγή. Ταξινόμηση με Επιλογή Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Ταξινόμηση Η ταξινόμηση sortg τοποθετεί ένα σύνολο κόμβων ή εγγραφών σε μία συγκεκριμένη διάταξη

Διαβάστε περισσότερα

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

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 ο Α. Δίνεται η εντολή εκχώρησης: τ κ < λ Ποιες από τις παρακάτω προτάσεις είναι σωστές και ποιες λάθος. Να δικαιολογήσετε

Διαβάστε περισσότερα

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ Πίνακες και βασικές επεξεργασίες αυτών Σκοπιές από τις οποίες μελετά η πληροφορική τα δεδομένα Γλωσσών προγραμματισμού Υλικού Δομών δεδομένων Ανάλυσης δεδομένων 22/11/08 Παρουσιάσεις

Διαβάστε περισσότερα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου

Διαβάστε περισσότερα

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

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

Διαβάστε περισσότερα

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

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων κλειδί από ολικά διατεταγμένο σύνολο όπου το κάθε στοιχείο έχει ένα Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου με

Διαβάστε περισσότερα

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Εισαγωγικές Έννοιες ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

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

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, ορισμοί, πράξεις και αναπαράσταση στη μνήμη ΔυαδικάΔένδρακαιΔυαδικάΔένδραΑναζήτησης ΕΠΛ 231 Δομές

Διαβάστε περισσότερα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 24: Μη Ντεντερμινιστικές Μηχανές Turing Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως

Διαβάστε περισσότερα

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2 Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής Α2. Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών Α3. Ο αλγόριθμος

Διαβάστε περισσότερα

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων;

Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1. Τι είναι δυναµική δοµή δεδοµένων; Μονάδες 3 2. Τι είναι στατική δοµή δεδοµένων; ΦΡΟΝΤΙΣΤΗΡΙΑΚΟΣ ΟΡΓΑΝΙΣΜΟΣ ΘΕΜΑ Α ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ 01/03/2015 Α1. Στον προγραµµατισµό χρησιµοποιούνται δοµές δεδοµένων. 1.

Διαβάστε περισσότερα

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 3 1. Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή 2. Δυναμικές είναι οι δομές που αποθηκεύονται σε συνεχόμενες θέσεις μνήμης 3. Ένας πίνακας

Διαβάστε περισσότερα

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Εισαγωγή ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Όπως για όλες τις επιστήμες, έτσι και για την επιστήμη της Πληροφορικής, ο τελικός στόχος της είναι η επίλυση προβλημάτων. Λύνονται όμως όλα τα προβλήματα;

Διαβάστε περισσότερα

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2018-2019 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 3-4 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητες 3 & 4: ένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε

Διαβάστε περισσότερα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 8: Πεπερασμένα Αυτόματα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

Αναδρομή Ανάλυση Αλγορίθμων

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

Διαβάστε περισσότερα

Πληροφορική ΙΙ Ενότητα 1

Πληροφορική ΙΙ Ενότητα 1 Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Πληροφορική ΙΙ Ενότητα 1: Εισαγωγή Θεματική Ενότητα: Εισαγωγή στον Προγραμματισμό Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός

Διαβάστε περισσότερα

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

Διαβάστε περισσότερα

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα 2 Βήματα Επεξεργασίας Τα βασικά βήματα στην επεξεργασία

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα