ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Σημειώσεις Θεωρίας)

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

Download "ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Σημειώσεις Θεωρίας)"

Transcript

1 TEΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Σημειώσεις Θεωρίας) Ευάγγελος Γ. Ούτσιος Σέρρες 2015

2 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

3 ΠΕΡΙΕΧΟΜΕΝΑ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΕΙΣΑΓΩΓΗ Ανάλυση Σύνθεση προβλήματος 5 Κεφάλαιο 1 ΑΛΓΟΡΙΘΜΟΙ 1.1 Βασικές έννοιες αλγορίθμων Περιγραφή και αναπαράσταση αλγορίθμων Στοιχεία ψευδοκώδικα Βασικές αλγοριθμικές δομές Δομή Ακολουθίας Δομή Επιλογής Δομή Επανάληψης Ανάλυση αλγορίθμων Επίδοση αλγορίθμων Ορθότητα αλγορίθμων Πολυπλοκότητα αλγορίθμων Είδη αλγορίθμων 16 Κεφάλαιο 2 ΠΙΝΑΚΕΣ 2.1 Εισαγωγή Βασικές έννοιες πινάκων Αποθήκευση πινάκων Ειδικές μορφές πινάκων 26 Κεφάλαιο 3 ΑΝΑΔΡΟΜΗ 3.1 Εισαγωγή Υπολογισμός παραγοντικού Υπολογισμός δύναμης Υπολογισμός όρων ακολουθίας αριθμών Fibonacci Μέγιστος Κοινός Διαιρέτης (Αλγόριθμος Ευκλείδη) Πύργοι του Hanoi 34 Κεφάλαιο 4 ΑΝΑΖΗΤΗΣΗ 4.1 Εισαγωγή Σειριακή Αναζήτηση Δυαδική Αναζήτηση 39 Κεφάλαιο 5 ΤΑΞΙΝΟΜΗΣΗ 5.1 Εισαγωγή Ταξινόμηση με απευθείας επιλογή Ταξινόμηση με απευθείας εισαγωγή Ταξινόμηση φυσαλίδας Γρήγορη ταξινόμηση 46 3

4 Κεφάλαιο 6 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ 6.1 Εισαγωγή Σειριακές Λίστες Στοίβα Ουρά Συνδεδεμένες Λίστες Απλή συνδεδεμένη λίστα Στοίβα ως συνδεδεμένη λίστα Ουρά ως συνδεδεμένη λίστα 72 Κεφάλαιο 7 ΔΕΝΔΡΑ 7.1 Εισαγωγή Δυαδικά δένδρα B-trees Tries 85 Κεφάλαιο 8 ΓΡΑΦΟΙ 8.1 Εισαγωγή Μέθοδοι Αναπαράστασης γράφων Μέθοδοι Διάσχισης γράφων Αναζήτηση με προτεραιότητα Βάθους Αναζήτηση με προτεραιότητα Πλάτους Το πρόβλημα του συντομότερου μονοπατιού 104 Κεφάλαιο 9 ΠΙΝΑΚΕΣ ΚΑΤΑΚΕΡΜΑΤΙΣΜΟΥ 9.1 Εισαγωγή Συγκρούσεις Ανοιχτή διευθυνσιοδότηση Ξεχωριστή σύνδεση.111 ΠΑΡΑΡΤΗΜΑ Α Πίνακας χαρακτηριστικών Δομών Δεδομένων.115 ΒΙΒΛΙΟΓΡΑΦΙΑ.116 4

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

6 Θα πρέπει να δοθεί μεγάλη προσοχή στην ανίχνευση των δεδομένων ενός προβλήματος. Επισημαίνεται πως δεν είναι πάντοτε εύκολο να διακρίνει κάποιος τα δεδομένα. Υπάρχουν πολλές περιπτώσεις προβλημάτων που τα δεδομένα θα πρέπει να ανακαλυφθούν μέσα στα λεγόμενα του προβλήματος. Η διαδικασία αυτή απαιτεί προσοχή, συγκέντρωση και σκέψη. Μεθοδολογία προσδιορισμού των δεδομένων ενός προβλήματος δεν υπάρχει, ούτε και μεθοδολογία εντοπισμού και αποσαφήνισης των ζητούμενων ενός προβλήματος. Το ίδιο προσεκτικά θα πρέπει να αποσαφηνιστούν και τα ζητούμενα ενός προβλήματος. Δεν είναι πάντοτε ιδιαίτερα κατανοητό τι ακριβώς ζητάει ένα πρόβλημα. Σε μια τέτοια περίπτωση θα πρέπει να θέτονται μια σειρά από ερωτήσεις με στόχο την διευκρίνιση πιθανών αποριών σχετικά με τα ζητούμενα, τον τρόπο παρουσίασής τους, το εύρος τους κλπ. Οι ερωτήσεις αυτές μπορούν να απευθύνονται είτε στο δημιουργό του προβλήματος, είτε στον ίδιο μας τον εαυτό αν εμείς καλούμαστε να αντιμετωπίσουμε το πρόβλημα. Συμπερασματικά από όλα τα παραπάνω διαφαίνεται πως τα στάδια αντιμετώπισης ενός προβλήματος είναι τρία: Κατανόηση, όπου απαιτείται η σωστή και πλήρης αποσαφήνιση των δεδομένων και των ζητούμενων του προβλήματος Ανάλυση, όπου το αρχικό πρόβλημα διασπάται σε άλλα επιμέρους απλούστερα προβλήματα Επίλυση, όπου υλοποιείται η λύση του προβλήματος, μέσω της λύσης των επιμέρους προβλημάτων. Κατανόηση Ανάλυση Επίλυση 6

7 Κεφάλαιο 1 ΑΛΓΟΡΙΘΜΟΙ 1.1 Βασικές έννοιες αλγορίθμων Περιγραφή και αναπαράσταση αλγορίθμων Στοιχεία ψευδοκώδικα 1.2 Βασικές αλγοριθμικές δομές Δομή Ακολουθίας Δομή Επιλογής Δομή Επανάληψης 1.3 Ανάλυση αλγορίθμων Επίδοση αλγορίθμων Ορθότητα αλγορίθμων Πολυπλοκότητα αλγορίθμων Είδη αλγορίθμων 7

8 1.1 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος. Κάθε αλγόριθμος απαραίτητα ικανοποιεί τα επόμενα κριτήρια: Είσοδος (input). Kαμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο. Η περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη βοήθεια άλλων απλών εντολών. Έξοδος (output). Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το χρήστη ή προς έναν άλλο αλγόριθμο. Καθοριστικότητα (definiteness). Κάθε εντολή πρέπει να καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο εκτέλεσής της. Π.χ. η εντολή διαίρεσης πρέπει να θεωρεί και την περίπτωση, όπου ο διαιρέτης λαμβάνει μηδενική τιμή. Περατότητα (finiteness). Ο αλγόριθμος να τελειώνει μετά από πεπερασμένα βήματα εκτέλεσης των εντολών του. Αποτελεσματικότητα (effectiveness). Κάθε μεμονωμένη εντολή του αλγορίθμου να είναι απλή. Αυτό σημαίνει ότι μία εντολή δεν αρκεί να έχει ορισθεί, αλλά πρέπει να είναι και εκτελέσιμη Περιγραφή και αναπαράσταση αλγορίθμων Ελεύθερο κείμενο. Αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης αλγορίθμου. Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα να οδηγήσει σε μη εκτελέσιμη παρουσίαση παραβιάζοντας το τελευταίο χαρακτηριστικό των αλγορίθμων, δηλ. την αποτελεσματικότητα. Φυσική γλώσσα κατά βήματα. Στην περίπτωση αυτή χρειάζεται προσοχή, γιατί μπορεί να παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός αλγορίθμου, όπως προσδιορίσθηκε προηγουμένως, δηλ. το κριτήριο του καθορισμού. Διάγραμμα ροής. Αποτελείται από ένα σύνολο γεωμετρικών σχημάτων, όπου το καθένα δηλώνει μία συγκεκριμένη ενέργεια ή λειτουργία. Τα γεωμετρικά σχήματα ενώνονται μεταξύ τους με βέλη, που δηλώνουν τη σειρά εκτέλεσης 8

9 των ενεργειών αυτών. Τα κυριότερα χρησιμοποιούμενα γεωμετρικά σχήματα είναι τα εξής: Αρχή Τέλος Είσοδος Έξοδος Διεργασία Συνθήκη Ψευδοκώδικας. Χρησιμοποιείται μία δομημένη μορφή ψευδογλώσσας, που στηρίζεται στις βασικές αλγοριθμικές δομές και τις αρχές του δομημένου προγραμματισμού και μπορεί εύκολα σχετικά να προγραμματισθεί σε οποιαδήποτε γλώσσα προγραμματισμού Στοιχεία ψευδοκώδικα Σταθερές (constants). Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου. Μεταβλητές (variables). Μια μεταβλητή είναι ένα γλωσσικό αντικείμενο, που χρησιμοποιείται για να παραστήσει ένα στοιχείο δεδομένου. Στη μεταβλητή εκχωρείται μια τιμή, η οποία μπορεί να αλλάζει κατά τη διάρκεια εκτέλεσης ενός αλγορίθμου. Ανάλογα με το είδος της τιμής που μπορούν να λάβουν, οι μεταβλητές διακρίνονται σε 9

10 o Αριθμητικές o αλφαριθμητικές o και λογικές. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Τελεστές (operators). Πρόκειται για τα γνωστά σύμβολα που χρησιμοποιούνται σε διάφορες πράξεις. Οι τελεστές διακρίνονται σε o Αριθμητικούς: +, -, *, /, % o Συγκριτικούς: >, <, =, >=, <=,!= o Λογικούς: και (&&), ή ( ), όχι (!) Εκφράσεις (expressions). Οι εκφράσεις διαμορφώνονται από τους τελεστέους (operands), που είναι σταθερές και μεταβλητές και από τους τελεστές. Η διεργασία αποτίμησης μιας έκφρασης συνίσταται στην απόδοση τιμών στις μεταβλητές και στην εκτέλεση των πράξεων. Η τελική τιμή μιας έκφρασης εξαρτάται από την ιεραρχία των πράξεων και τη χρήση των παρενθέσεων. Μια έκφραση μπορεί να αποτελείται από μια μόνο μεταβλητή ή σταθερά μέχρι μια πολύπλοκη μαθηματική παράσταση. 1.2 ΒΑΣΙΚΕΣ ΑΛΓΟΡΙΘΜΙΚΕΣ ΔΟΜΕΣ Δομή Ακολουθίας Η ακολουθιακή δομή εντολών (σειριακών βημάτων) χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών προβλημάτων, όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών. Εντολές της δομής της ακολουθίας είναι συνήθως οι εντολές εισόδου, εντολές εξόδου και εντολές υπολογισμού και εκχώρησης τιμής. Π.χ. Να διαβασθούν δυο αριθμοί, να υπολογισθεί και να εκτυπωθεί το άθροισμά τους. ΑΛΓΟΡΙΘΜΟΣ Άθροισμα C: ΑΡΧΗ ΔΙΑΒΑΣΕ a scanf( %d,&a); ΔΙΑΒΑΣΕ b scanf( %d,&b); c = a + b c = a + b; ΕΜΦΑΝΙΣΕ c printf( %d,c); ΤΕΛΟΣ 10

11 Μετά την ανάγνωση των τιμών των μεταβλητών a και b γίνεται ο υπολογισμός του αθροίσματος με την εντολή: c = a + b Η εντολή αυτή αποκαλείται εντολή εκχώρησης τιμής (assignment statement). Η γενική μορφή της είναι: Μεταβλητή = Έκφραση και η λειτουργία της είναι «γίνονται οι πράξεις στην έκφραση και το αποτέλεσμα αποδίδεται, μεταβιβάζεται, εκχωρείται στη μεταβλητή» Δομή επιλογής Στην πραγματικότητα λίγα προβλήματα μπορούν να επιλυθούν με τον προηγούμενο τρόπο της σειριακής/ακολουθιακής δομής ενεργειών. Συνήθως τα προβλήματα έχουν κάποιες ιδιαιτερότητες και δεν ισχύουν τα ίδια βήματα για κάθε περίπτωση. Η πλέον συνηθισμένη περίπτωση είναι να λαμβάνονται κάποιες αποφάσεις με βάση κάποια δεδομένα κριτήρια που μπορεί να είναι διαφορετικά για κάθε διαφορετικό στιγμιότυπο ενός προβλήματος. Γενικά η διαδικασία της επιλογής περιλαμβάνει τον έλεγχο κάποιας συνθήκης που μπορεί να έχει δύο τιμές (Αληθής ή Ψευδής) και ακολουθεί η απόφαση εκτέλεσης κάποιας ενέργειας με βάση την τιμή της λογικής αυτής συνθήκης. Στην παράσταση αλγορίθμων με ψευδοκώδικα η επιλογή υλοποιείται με την εντολή ΑΝ ΤΟΤΕ. Η σύνταξη της εντολής είναι: Απλή επιλογή ΑΝ συνθήκη ΤΟΤΕ Εντολές ΤΕΛΟΣ ΑΝ if (expression) Statements; Σύνθετη επιλογή ΑΝ συνθήκη ΤΟΤΕ if (expression) Εντολές 1 Statements 1; ΑΛΛΙΩΣ Εντολές 2 Statements 2; ΤΕΛΟΣ ΑΝ 11

12 Eμφωλευμένη επιλογή ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΑΝ συνθήκη 1 ΤΟΤΕ if (expression 1) ΑΝ συνθήκη 2 ΤΟΤΕ if (expression 2) Εντολές 1 Statements 1; ΑΛΛΙΩΣ Εντολές 2 Statements 2; ΤΕΛΟΣ ΑΝ ΑΛΛΙΩΣ if (expression 3) ΑΝ συνθήκη 3 ΤΟΤΕ Statements 3; Εντολές 3 ΑΛΛΙΩΣ Statements 4; Εντολές 4 ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ ΑΝ Σε πολλές περιπτώσεις η συνθήκη εμπεριέχει αποφάσεις που πιθανόν βασίζονται σε περισσότερα από ένα κριτήρια. Ο συνδυασμός των κριτηρίων αυτών καθορίζει και τις λογικές πράξεις που μπορούν να γίνουν μεταξύ διαφορετικών συνθηκών. Πολύ συχνά στην καθημερινή ζωή κάποιες αποφάσεις βασίζονται σε συνδυασμούς κριτηρίων και λογικών πράξεων. Η λογική πράξη ή είναι αληθής όταν οποιαδήποτε από δύο προτάσεις είναι αληθής. Η λογική πράξη και είναι αληθής όταν και οι δύο προτάσεις είναι αληθείς, ενώ η λογική πράξη όχι είναι αληθής όταν η πρόταση που την ακολουθεί είναι ψευδής. Ο επόμενος πίνακας δίνει τις τιμές των τριών λογικών πράξεων για όλους τους συνδυασμούς τιμών: Πρόταση Α Πρόταση Β Α ή Β Α και Β όχι Α ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ Δομή Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερα συχνή, αφού πλήθος προβλημάτων μπορούν να επιλυθούν με κατάλληλες επαναληπτικές διαδικασίες. Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μια ακολουθία εντολών πρέπει να εφαρμοσθεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι κοινό. Οι επαναληπτικές διαδικασίες μπορεί να έχουν διάφορες μορφές και συνήθως εμπεριέχουν και συνθήκες επιλογών. Γενικά υπάρχουν τρία σχήματα δομών επανάληψης, που υποστηρίζονται από τις περισσότερες γλώσσες προγραμματισμού. 12

13 Επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή ΟΣΟ συνθήκη ΕΠΑΝΕΛΑΒΕ Εντολές ΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣ while (expression) Statements; Επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος ΑΡΧΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές ΜΕΧΡΙΣ ΟΤΟΥ συνθήκη do Statements; while (expression); Επαναληπτικό σχήμα ορισμένων φορών επανάληψης ΓΙΑ μεταβλητή ΑΠΟ αρχική τιμή ΜΕΧΡΙ τελική τιμή Εντολές ΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣ for (variable = initial value; variable<= final value; step) Statements; Το πρώτο σχήμα επαναληπτικής δομής (while) είναι το πιο γενικό και μπορεί να εκτελεσθεί από καθόλου μέχρι όσες φορές θέλουμε. Το δεύτερο σχήμα της επαναληπτικής δομής (do-while) έχει το χαρακτηριστικό να εκτελείται οπωσδήποτε μία φορά, επειδή ο έλεγχος της συνθήκης τερματισμού γίνεται στο τέλος, γι αυτό και δεν χρησιμοποιείται πολύ. Το τρίτο σχήμα επαναληπτικής δομής (for) χρησιμοποιείται όταν το πλήθος των επαναλήψεων είναι εκ των προτέρων γνωστό. 13

14 1.3 ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Η καταγραφή των μεγεθών που επηρεάζουν την επίδοση ενός αλγορίθμου είναι μια σημαντική ενέργεια για την κατανόηση της αποδοτικότητας ενός αλγορίθμου. Για το λόγο αυτό, είναι απαραίτητο να βρεθεί η βασική λειτουργία και η δομή του αλγορίθμου όπου κυρίως δαπανώνται οι υπολογιστικοί πόροι Επίδοση αλγορίθμων Η χειρότερη περίπτωση ενός αλγορίθμου αφορά στο μέγιστο κόστος εκτέλεσης του αλγορίθμου. Το κόστος αυτό πολλές φορές κρίνει την επιλογή και τον σχεδιασμό ενός αλγορίθμου. Για να εκφρασθεί αυτή η χειρότερη περίπτωση, χρειάζεται κάποιο μέγεθος σύγκρισης και αναφοράς που να χαρακτηρίζει τον αλγόριθμο. Μια συνηθισμένη πρακτική είναι το πλήθος των βασικών πράξεων που εκτελεί ο αλγόριθμος. Οι βρόγχοι επανάληψης αποτελούν το κρίσιμο σημείο για τον χαρακτηρισμό της επίδοσης ενός αλγορίθμου. Αν η λύση ενός προβλήματος επιτυγχάνεται με τη χρήση δύο ή περισσοτέρων αλγορίθμων, χρειάζεται να γίνει η επιλογή του καταλληλότερου με βάση την αποδοτικότητά τους. Βέβαια, όταν συγκρίνονται δύο αλγόριθμοι, θα πρέπει να συγκρίνονται με χρήση των ίδιων δεδομένων και κάτω από τις ίδιες συνθήκες. Γενικά, ο χρόνος εκτέλεσης κάθε αλγορίθμου εξαρτάται από ένα σύνολο παραγόντων, όπως: Τύπος Η/Υ που θα εκτελέσει το πρόγραμμα του αλγορίθμου Γλώσσα προγραμματισμού που θα χρησιμοποιηθεί Δομή προγράμματος και δομές δεδομένων που χρησιμοποιούνται Είδος συστήματος, ενός χρήστη ή πολλών χρηστών Ορθότητα αλγορίθμων Η επίλυση ενός προβλήματος με τη χρήση κάποιου αλγορίθμου, έχει μεγαλύτερη ισχύ, όταν υπάρχει κάποια τυποποιημένη ένδειξη ή απόδειξη για την ορθότητα του προτεινόμενου αλγορίθμου. Οι τεχνικές απόδειξης της ορθότητας ενός αλγορίθμου συνδέονται άμεσα με τον τρόπο της αρχικής σχεδίασης και ανάλυσης του συγκεκριμένου αλγορίθμου. Είναι λάθος να επιχειρείται ο έλεγχος των σφαλμάτων και της ορθότητας ενός αλγορίθμου μετά την σχεδίαση και την τυποποίησή του. Γενικά, δεν μπορεί να υπάρξει απόλυτη ασφάλεια στην εκτίμηση των πιθανών 14

15 σφαλμάτων ενός αλγορίθμου. Η απόδειξη της ορθότητας ενός αλγορίθμου θα πρέπει να περιλαμβάνει τις εξής δύο συνθήκες: Απόδειξη ότι σε κάθε περίπτωση ο τερματισμός της εκτέλεσης του αλγορίθμου οδηγεί σε αποδεκτά αποτελέσματα Απόδειξη ότι θα υπάρξει τερματισμός της εκτέλεσης του αλγορίθμου Πολυπλοκότητα αλγορίθμων Ο απλούστερος τρόπος μέτρησης της επίδοσης ενός αλγορίθμου είναι ο εμπειρικός. Δηλαδή, ο αλγόριθμος υλοποιείται και εφαρμόζεται σε ένα σύνολο δεδομένων, για να υπολογισθεί ο απαιτούμενος χρόνος επεξεργασίας (processing time) και η χωρητικότητα μνήμης (memory space). Ο τρόπος όμως αυτός παρουσιάζει τα εξής μειονεκτήματα: Είναι δύσκολο να προβλεφθεί η συμπεριφορά του αλγορίθμου για κάποιο άλλο σύνολο δεδομένων Ο χρόνος επεξεργασίας εξαρτάται από το υλικό, τη γλώσσα προγραμματισμού και τον μεταφραστή και φυσικά την ικανότητα του προγραμματιστή Έτσι, μπορεί να βγουν λανθασμένες εκτιμήσεις για την επίδοση του αλγορίθμου. Ένας άλλος τρόπος εκτίμησης της επίδοσης ενός αλγορίθμου είναι ο θεωρητικός. Εισάγεται μία μεταβλητή n, που εκφράζει το μέγεθος του προβλήματος, έτσι ώστε η μέτρηση της αποδοτικότητας του αλγορίθμου να ισχύει για οποιοδήποτε σύνολο δεδομένων και ανεξάρτητα από υποκειμενικούς παράγοντες. Η σημασία της μεταβλητής αυτής εξαρτάται από το πρόβλημα που πρόκειται να επιλυθεί. Στη συνέχεια, ο χρόνος επεξεργασίας και ο απαιτούμενος χώρος μνήμης εκτιμώνται με τη βοήθεια μιας συνάρτησης f(n), που εκφράζει τη χρονική πολυπλοκότητα (time complexity) και της g(n), που εκφράζει την πολυπλοκότητα χώρου (space complexity). Σε πολλές περιπτώσεις, όμως, δεν ενδιαφέρουν οι επακριβείς τιμές, αλλά μόνο η γενική συμπεριφορά των αλγορίθμων, δηλαδή η τάξη του αλγορίθμου. Για το λόγο αυτό, εισάγεται ο λεγόμενος συμβολισμός Ο (O notation), από την αγγλική λέξη order. Σχεδόν οι περισσότεροι αλγόριθμοι πρακτικού ενδιαφέροντος έχουν χρονική πολυπλοκότητα που ανήκει σε μία από τις επόμενες κατηγορίες: 15

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

17 ανάπτυξη παράλληλων (parallel) αλγορίθμων είναι μία σημαντική περιοχή που απασχολεί πλήθος επιστημόνων. Επειδή η βελτίωση των αλγορίθμων είναι ζωτικής σημασίας, στην Πληροφορική διερευνούνται οι αλγόριθμοι από την αναλυτική άποψη και ταξινομούνται ανάλογα με την επίδοσή τους. Έτσι, συνεχώς νέοι αλγόριθμοι αναπτύσσονται, ενώ άλλοι εγκαταλείπονται ως μη αποτελεσματικοί. Ένας αλγόριθμος λέγεται βέλτιστος (optimal) αν αποδειχθεί ότι είναι τόσο αποτελεσματικός, ώστε δεν μπορεί να κατασκευασθεί καλύτερος. Πολυωνυμικοί (polynomial) λέγονται οι αλγόριθμοι με πολυπλοκότητα που φράσσεται από επάνω με μία πολυωνυμική έκφραση. Για παράδειγμα, πολυωνυμικοί είναι οι αλγόριθμοι τάξης O(n), O(n 2 ), κλπ. Συνήθως αυτοί δεν απαιτούν μεγάλη υπολογιστική προσπάθεια σε αντίθεση με τους αλγορίθμους πολυπλοκότητας τάξης Ο(2 n ), O(n.2 n ), κλπ. που ονομάζονται μη πολυωνυμικοί ή εκθετικοί. Υπάρχουν πολλά προβλήματα που δεν μπορούν να επιλυθούν με κάποιο αποτελεσματικό (δηλαδή πολυωνυμικό) αλγόριθμο, αλλά πρέπει να δοκιμασθούν όλες οι δυνατές περιπτώσεις, για να επιλεγεί η καλύτερη. Τα προβλήματα αυτά ονομάζονται δυσχείριστα (intractable). Π.χ. το πρόβλημα της συντομότερης διαδρομής που πρέπει να ακολουθήσει ένας περιοδεύων πωλητής (traveling salesman), ώστε να περάσει μία μόνο φορά από κάθε πόλη και να επιστρέψει στην αρχική. Η αδυναμία της επιστήμης να προτείνει αποτελεσματικούς αλγορίθμους για πολλά δυσχείριστα προβλήματα, έχει αναγκαστικά οδηγήσει στην ανάπτυξη προσεγγιστικών (approximate) αλγορίθμων για την επίλυσή τους, έτσι ώστε να επιτυγχάνεται μία αποδεκτή λύση σε λογικό χρόνο. Ευριστικός (heuristic) είναι ο αλγόριθμος που είτε μπορεί να οδηγήσει σε μία καλή ή ακόμα και βέλτιστη λύση ενός προβλήματος ή στο άλλο ενδεχόμενο, σε μία λύση που απέχει πολύ από τη βέλτιστη. Οι ευριστικοί αλγόριθμοι δεν είναι τυποποιημένοι και στηρίζονται σε κάποιες τεχνικές ή εμπειρικές παρατηρήσεις ή εμπνεύσεις του προγραμματιστή. Συνήθως, οι προσεγγιστικοί αλγόριθμοι είναι ευριστικοί, αλλά όμως υπάρχουν πολλοί ευριστικοί αλγόριθμοι που δεν είναι προσεγγιστικοί. 17

18 18 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

19 Κεφάλαιο 2 ΠΙΝΑΚΕΣ 2.1 Εισαγωγή 2.2 Βασικές έννοιες πινάκων 2.3 Αποθήκευση πινάκων 2.4 Ειδικές μορφές πινάκων 19

20 2.1 ΕΙΣΑΓΩΓΗ Εκτός από τους αλγορίθμους, σημαντική έννοια για την Πληροφορική είναι και η έννοια των δεδομένων. Τα δεδομένα αποθηκεύονται στον υπολογιστή με τη βοήθεια των λεγόμενων δομών δεδομένων. Θεωρώντας τους αλγόριθμους και τις δομές δεδομένων μια αδιάσπαστη ενότητα μπορεί να λεχθεί, ότι η ενότητα αυτή τελικά αποτελεί τη βάση ενός προγράμματος που επιλύει ένα πρόβλημα. Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα Τα δεδομένα ενός προβλήματος αποθηκεύονται στον Η/Υ, είτε στην κύρια μνήμη του ή στη δευτερεύουσα μνήμη του. Η αποθήκευση αυτή δε γίνεται κατά ένα τυχαίο τρόπο αλλά συστηματικά, δηλαδή χρησιμοποιώντας μία δομή. Η έννοια της δομής δεδομένων (data structure) είναι σημαντική για την Πληροφορική και ορίζεται με τον ακόλουθο τυπικό ορισμό. Ορισμός Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο κόμβων (nodes). Οι βασικές λειτουργίες επί των δομών δεδομένων είναι οι ακόλουθες: Προσπέλαση (access) πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του Εισαγωγή (insertion) η προσθήκη νέων κόμβων σε μία υπάρχουσα δομή Διαγραφή (deletion) η αφαίρεση ενός κόμβου από μία υπάρχουσα δομή Αναζήτηση (searching) γίνεται προσπέλαση των κόμβων μίας δομής, προκειμένου να εντοπισθούν ένας ή περισσότεροι που έχουν μία δεδομένη ιδιότητα Ταξινόμηση (sorting) οι κόμβοι μίας δομής τοποθετούνται σε αύξουσα ή φθίνουσα σειρά Αντιγραφή (copying) 20

21 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής αντιγράφονται σε μία άλλη δομή Συγχώνευση (merging) δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή Διαχωρισμός (separation) αποτελεί την αντίστροφη πράξη της συγχώνευσης Στην πράξη σπάνια χρησιμοποιούνται όλες οι λειτουργίες για κάποια δομή. Παρατηρείται συχνά το φαινόμενο μία δομή δεδομένων να είναι αποδοτικότερη από μία άλλη δομή με κριτήριο κάποια λειτουργία, για παράδειγμα την αναζήτηση, αλλά λιγότερο αποδοτική για κάποια άλλη λειτουργία, για παράδειγμα την εισαγωγή. Αυτές οι παρατηρήσεις εξηγούν αφ ενός την ύπαρξη διαφορετικών δομών, και αφ ετέρου τη σπουδαιότητα της επιλογής της κατάλληλης δομής κάθε φορά. 2.2 ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΙΝΑΚΩΝ Με τον όρο στατική δομή δεδομένων εννοείται ότι το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους, και κατά συνέπεια κατά τη στιγμή της μετάφρασης του προγράμματος και όχι κατά τη στιγμή της εκτέλεσής του. Μία άλλη σημαντική διαφορά σε σχέση με τις δυναμικές δομές που θα περιγραφούν παρακάτω είναι ότι τα στοιχεία των στατικών δομών αποθηκεύονται σε συνεχόμενες θέσεις μνήμης. Στην πράξη, οι στατικές δομές υλοποιούνται με πίνακες που μας είναι γνωστοί από άλλα μαθήματα και υποστηρίζονται από κάθε γλώσσα προγραμματισμού. Μπορούμε να ορίσουμε τον πίνακα ως μια δομή που περιέχει στοιχεία του ίδιου τύπου (δηλαδή ακέραιους, πραγματικούς κλπ.). Η δήλωση των στοιχείων ενός πίνακα και η μέθοδος αναφοράς τους εξαρτάται από τη συγκεκριμένη γλώσσα υψηλού επιπέδου που χρησιμοποιείται. Όμως γενικά η αναφορά στα στοιχεία ενός πίνακα γίνεται με τη χρήση του συμβολικού ονόματος του πίνακα ακολουθούμενου από την τιμή ενός ή περισσοτέρων δεικτών (indexes) σε παρένθεση ή αγκύλη. Ένας πίνακας μπορεί να είναι μονοδιάστατος, αλλά γενικά μπορεί να είναι δισδιάστατος, τρισδιάστατος και γενικά ν-διάστατος πίνακας. 21

22 Παράδειγμα 1 Εύρεση του ελάχιστου στοιχείου ενός μονοδιάστατου πίνακα. 1 2 n. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αλγόριθμος Ελάχιστο_πίνακα Δεδομένα table[n], i, min min = table[1] Για i από 2 μέχρι n Aν table[i] < min τότε Τέλος επανάληψης Εμφάνισε min min = table[i] Τέλος Ελάχιστο_Πίνακα Υλοποίηση στην C: #define N main() int table[n] = 11, 23, 2, 34, 56, 65, 7, 9, 1, 25; int i, min; min = table[0]; for (i=1; i<n; i++) if (table[i]<min) min = table[i]; printf( Min = %d,min); Παράδειγμα 2 Εύρεση αθροίσματος στοιχείων δισδιάστατου πίνακα. Αλγόριθμος Άθροισμα_στοιχείων_Πίνακα Δεδομένα table[m][n], i, j, sum, row[m], col[n] Για i από 1 μέχρι m Για j από 1 μέχρι n Διάβασε table[i][j] Τέλος επανάληψης Τέλος επανάληψης 22

23 sum = 0; Για i από 1 μέχρι m row[i] = 0 Τέλος επανάληψης Για j από 1 μέχρι n col[j] = 0 Τέλος επανάληψης Για i από 1 μέχρι m Για j από 1 μέχρι n sum = sum + table[i][j] row[i] = row[i] + table[i][j] colo[j] = col[j] + table[i][j] Τέλος επανάληψης Τέλος επανάληψης Εμφάνισε sum Για i από 1 μέχρι m Εμφάνισε row[i] Tέλος επανάληψης Για j από 1 μέχρι n Εμφάνισε col[i] Tέλος επανάληψης Τέλος Άθροισμα_στοιχείων_Πίνακα Υλοποίηση στην C: #define M 5 #define N 5 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ main() int table[m][n], row[m], col[n]; int i, j, sum; for (i=0; i<m; i++) for (j=0; j<n; j++) scanf( %d,&table[i][j]); sum = 0; for (i=0; i<m; i++) row[i] = 0; for (j=0; j<n; j++) col[j] = 0; 23

24 for (i=0; i<m; i++) for (j=0; i<n; i++) sum = sum + table[i][j]; row[i] = row[i] + table[i][j]; col[j] = col[j] + table[i][j]; printf( sum = %d, sum); for (i=0; i<m; i++) printf( row[%d] = %d\n, i, row[i]); for (j=0; j<n; j++) printf( col[%j] = %d\n, j, col[j]); ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ table row col sum Παράδειγμα 3 Απόδοση τιμών σε πίνακα με τη συνάρτηση random #include <stdlib.h> #include <time.h> #define N int getuniquenumber(int p[n], int i); main() int i, p[n]; long t0, t1, dt; randomize(); printf("getting %i random numbers...",n); time(&t0); for (i=0; i<n; i++) p[i] = getuniquenumber(p,i); time(&t1); printf("complete.\n"); 24

25 dt = t1 - t0; printf("calc time = %i\n",dt); getch(); return 0; ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ int getuniquenumber(int p[n], int i) int x,j, found; do x = random(32768); found = 0; j = 0; while (j<=i && found = = 0) if (p[j] == x) found = 1; j++; while (found == 1); return x; Σημ.: Το προηγούμενο παράδειγμα χρησιμοποιεί την συνάρτηση random για να παράγει ένα πλήθος από τυχαίους αριθμούς στο διάστημα και τους αποδίδει σε ένα πίνακα προκαθορισμένου μεγέθους. Η συνάρτηση randomize χρησιμοποιείται για να παράγεται μία νέα σειρά τυχαίων αριθμών κάθε φορά. Η συνάρτηση getuniquenumber ελέγχει, με μία επαναλαμβανόμενη διαδικασία, αν κάποιος τυχαίος αριθμός έχει παραχθεί από πριν, έτσι ώστε οι τελικοί αριθμοί που θα καταχωρηθούν στον πίνακα να είναι μοναδικοί. Τέλος, η συνάρτηση time χρησιμοποιείται για να υπολογισθεί ο συνολικός χρόνος (σε δευτερόλεπτα) που διαρκεί η παραγωγή των ζητούμενων τυχαίων αριθμών. Το πρόγραμμα αυτό μπορεί να αποτελέσει τη βάση για την ανάπτυξη άλλων προγραμμάτων όπου είναι απαραίτητο να αποδοθεί ένα μεγάλο πλήθος αριθμών σε κάποιο αντίστοιχο πίνακα ή να υπολογισθεί ο συνολικός χρόνος εκτέλεσης ενός συγκεκριμένου αλγορίθμου ή ακόμα να συγκριθούν οι χρόνοι εκτέλεσης διαφόρων αλγορίθμων αναζήτησης, ταξινόμησης, κλπ. 25

26 2.3 ΑΠΟΘΗΚΕΥΣΗ ΠΙΝΑΚΩΝ Ένας μονοδιάστατος πίνακας p[n] απαιτεί Ν συνεχόμενες θέσεις μνήμης για να αποθηκευτεί. Η αρχική θέση του πίνακα στη μνήμη του Η/Υ θα αναφέρεται με το συμβολισμό loc(p[lowerbound]), όπου το lowerbound είναι το κάτω όριο του πίνακα πχ. 0. Η θέση του i-οστού στοιχείου του πίνακα p εκφράζεται ως loc(p[i]) = loc(p[lowerbound]) + i lowerbound Θεωρούμε ότι κάθε στοιχείο του πίνακα καταλαμβάνει μία λέξη της κύριας μνήμης του Η/Υ. Οι δύο πιο συνηθισμένοι τρόποι αποθήκευσης ενός δισδιάστατου πίνακα p[m][n] είναι η Διάταξη κατά γραμμές (row-major order) Διάταξη κατά στήλες (column-major order) Στην πρώτη μέθοδο φυλάγεται πρώτα η πρώτη γραμμή, ακολουθούμενη από τη δεύτερη γραμμή και τελευταία αποθηκεύεται η m-οστή γραμμή. Στη δεύτερη μέθοδο φυλάγεται πρώτα η πρώτη στήλη, ακολουθούμενη από τη δεύτερη στήλη και τελευταία αποθηκεύεται η n-οστή στήλη. Αν ο πίνακας έχει φυλαχθεί κατά στήλες τότε η θέση του στοιχείου p[i][j] είναι: loc(p[i][j]) = loc(p[0][0]) + i + M*j 2.4 ΕΙΔΙΚΕΣ ΜΟΡΦΕΣ ΠΙΝΑΚΩΝ Αν ο πίνακας έχει κάποια ειδική μορφή τότε είναι δυνατόν να χρησιμοποιηθεί κάποια ιδιαίτερη τεχνική για την ελάττωση του χώρου φύλαξής του. Αυτό γίνεται με την ευθύνη του προγραμματιστή που πρέπει να λάβει υπ όψη του τον τρόπο φύλαξης του πίνακα. Τέτοιες μορφές πινάκων είναι οι Συμμετρικοί πίνακες (symmetric) όπου τα στοιχεία είναι συμμετρικά ως προς την κύρια διαγώνιο. Εδώ απαιτούνται n(n+1)/2 θέσεις μνήμης. Τριγωνικοί πίνακες (triangular) όπου τα στοιχεία πάνω ή κάτω της κύριας διαγωνίου είναι 0. Εδώ επίσης απαιτούνται n(n+1)/2 θέσεις μνήμης Τριδιαγώνιοι πίνακες (tridiagonal) 26

27 όπου όλα τα στοιχεία πλην της κύριας διαγωνίου και των δύο διπλανών διαγωνίων είναι 0. Εδώ απαιτούνται 3*n-2 θέσεις μνήμης Αραιοί πίνακες (sparse) όπου ένα μεγάλο ποσοστό των στοιχείων του πίνακα έχουν την τιμή 0 (συνήθως > 80%). Υπάρχουν πολλοί τρόποι για την αποδοτική από πλευράς χώρου αποθήκευση αραιών πινάκων. Π.χ. ένας τρόπος είναι να αποθηκεύεται κάθε μη μηδενικό στοιχεί του πίνακα ως μία τριάδα αριθμών. Οι δύο πρώτοι αριθμοί δείχνουν τη θέση του στοιχείου στον πίνακα και ο τρίτος αριθμός την τιμή του στοιχείου. έτσι αν υπάρχουν n μη μηδενικά στοιχεία απαιτούνται 3*n θέσεις μνήμης. 27

28 28 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

29 Κεφάλαιο 3 ΑΝΑΔΡΟΜΗ 3.1 Εισαγωγή 3.2 Υπολογισμός παραγοντικού 3.3 Υπολογισμός δύναμης 3.4 Υπολογισμός όρων ακολουθίας αριθμών Fibonacci 3.5 Μέγιστος Κοινός Διαιρέτης (Αλγόριθμος Ευκλείδη) 3.6 Πύργοι του Hanoi 29

30 3.1 ΕΙΣΑΓΩΓΗ Αναδρομή είναι η μέθοδος κατά την οποία, σε μία γλώσσα προγραμματισμού, μία διαδικασία ή συνάρτηση έχει την δυνατότητα να καλεί τον εαυτό της. Η υλοποίηση της αναδρομής βασίζεται στη έννοια της στοίβας. Σε κάθε κλήση μίας υπορουτίνας πρέπει να φυλάγονται οι διευθύνσεις επιστροφής. Όταν μία υπορουτίνα καλεί τον εαυτό της θα πρέπει επίσης να φυλάγονται οι προηγούμενες τιμές των μεταβλητών και να χρησιμοποιούνται όταν τελειώσει η αναδρομική κλήση. Η χρήση της αναδρομής διευκολύνει πολύ τον προγραμματιστή στην ανάπτυξη και τον έλεγχο ενός προγράμματος. Θα πρέπει όμως να χρησιμοποιείται με μέτρο, γιατί η εκτέλεση ενός αναδρομικού προγράμματος έχει χρονικό κόστος. Γενικά, ανάμεσα σε ένα επαναληπτικό και ένα αναδρομικό πρόγραμμα θα πρέπει να προτιμάμε το πρώτο, εκτός και αν η ανάπτυξή του μας δυσκολεύει ιδιαίτερα. Η αναδρομή ενδείκνυται σε προβλήματα κάποιας σχετικής πολυπλοκότητας, που εξ ορισμού τα εκφράζουμε αναδρομικά. 3.2 ΥΠΟΛΟΓΙΣΜΟΣ ΠΑΡΑΓΟΝΤΙΚΟΥ Επαναληπτικός ορισμός: n! = 1*2*3*..(n-1)*n Συνάρτηση με επανάληψη: int factorial(int n) int i,f; f = 1; for (i=2; i<=n; i++) f = f*i; return f; Αναδρομικός ορισμός: n! = 1 αν n = 0, = n*(n-1)! αν n > 0 30

31 Συνάρτηση με αναδρομή: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ int factorial(int n) int f; if (n == 0) f = 1; f = n*factorial(n-1); return f; Ας παρακολουθήσουμε τις τιμές των μεταβλητών κατά την κλήση των δύο συναρτήσεων, π.χ. για n = 4: Επαναληπτική μέθοδος: f = 1 i = 2 f = 1*2 = 2 i = 3 f = 2*3 = 6 i = 4 f = 6*4 = 24 Αναδρομική μέθοδος: factorial(4) = 4*factorial(3) factorial(3) = 3*factorial(2) factorial(2) = 2*factorial(1) factorial(1) = 1*factorial(0) factorial(0) = 1 Ακολούθως, η τελευταία τιμή 1 μεταβιβάζεται στην προηγούμενη κλήση και έτσι υπολογίζεται το factorial(1) = 1. Κατά τον ίδιο τρόπο έχουμε factorial(2) = 2*1 = 2 factorial(3) = 3*2 = 6 factorial(4) = 4*6 = 24 31

32 3.3 ΥΠΟΛΟΓΙΣΜΟΣ ΔΥΝΑΜΗΣ Επαναληπτικός ορισμός: x n = x*x*x*..*x, n φορές ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Συνάρτηση με επανάληψη: int power(int x, int n) int i,p; p = 1; for (i=1; i<=n; i++) p = p*x; return p; Αναδρομικός ορισμός: x n = 1 αν n = 0, = x* x n-1 αν n > 0 Συνάρτηση με αναδρομή: int power(int x, int n) int p; if (n == 0) p = 1; p = x*power(x,n-1); return p; Εφαρμογές αναδρομής 3.4 ΥΠΟΛΟΓΙΣΜΟΣ ΟΡΩΝ ΑΚΟΛΟΥΘΙΑΣ ΑΡΙΘΜΩΝ FIBONACCI Αναδρομικός ορισμός: fi = 0 αν i = 0 1 αν i = 1 fi-1+fi-2 αν i>1 int fibonacci(int n) int fib ; if (n <= 1) fib = n ; fib = fibonacci(n-1)+fibonacci(n-2); 32

33 3.5 ΜΕΓΙΣΤΟΣ ΚΟΙΝΟΣ ΔΙΑΙΡΕΤΗΣ (Αλγόριθμος Ευκλείδη) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αν οι x και y είναι δύο ακέραιοι, όχι και οι δύο μηδέν, ορίζουμε ότι ο μέγιστος κοινός διαιρέτης (greatest common divisor) είναι ο μέγιστος ακέραιος που διαιρεί ακριβώς και τον x και τον y. Για παράδειγμα, gcd(1000, 600) = 200 gcd(-70, 90) = 10 gcd(0, 12) = 12 Σύμφωνα με τον Ευκλείδη ισχύει όμως gcd(x, y) = gcd(y, x%y) Αν τον κανόνα αυτό τον εφαρμόσουμε επαναλαμβανόμενα μέχρι το δεύτερο όρισμα να γίνει 0, τότε καταλήγουμε σε έναν ιδιαίτερα αποτεσματικό αλγόριθμο υπολογισμού του μέγιστου κοινού διαιρέτη. Π.χ. gcd(1900, 700) = gcd(700, 500) Επαναληπτικός αλγόριθμος int gcd(int x, int y) int r; r = y; while (r!= 0) r = x % y; x = y ; y = r ; return x ; Αναδρομικός αλγόριθμος int gcd(int x, int y) int r; if (y = = 0) r = x; r = gcd(y, x % y); return r; = gcd(500, 200) = gcd(200, 100) = gcd(100, 0) =

34 3.6 ΠΥΡΓΟΙ ΤΟΥ HANOI Η αναδρομή μπορεί να αποτελέσει ένα πολύ ισχυρό εργαλείο για τον προγραμματιστή. Μερικές φορές, κάποιο πρόβλημα που φαίνεται δύσκολο όταν το αντιμετωπίζουμε με άλλες προγραμματιστικές τεχνικές, αποδεικνύεται ιδιαίτερα εύκολο όταν σκεφτόμαστε αναδρομικά. Ένα τέτοιο χαρακτηριστικό παράδειγμα είναι ένα παιδικό παιχνίδι που ονομάζεται οι Πύργοι του Hanoi (Towers of Hanoi). Το παιχνίδι αποτελείται από τρεις στύλους και ένα πλήθος κυκλικών δίσκων που στοιβάζονται ο ένας πάνω στον άλλο. Οι δίσκοι είναι διαφορετικού μεγέθους και στοιβάζονται κατά φθίνουσα σειρά μεγέθους. Ο σκοπός του παιχνιδιού είναι να μετακινηθούν όλοι οι δίσκοι από τον 1 ο στον 2 ο στύλο, με βάση όμως τους παρακάτω κανόνες: Μόνο ένας δίσκος μπορεί να μετακινηθεί κάθε φορά Ένας δίσκος δεν μπορεί να τοποθετηθεί πάνω σε έναν άλλο μικρότερου μεγέθους Ο 3 ος στύλος μπορεί να χρησιμοποιηθεί σαν βοηθητικός start goal spare Το παιχνίδι αυτό έχει μία εντυπωσιακή και μακρά ιστορία. Ο θρύλος λέει ότι ανακαλύφθηκε από το Θεό κατά το χάραμα του χρόνου και δόθηκε στον άνθρωπο σαν ένα από τα μεγάλα καθήκοντα της ανθρωπότητας. Τελικά η λύση του ανατέθηκε στους μοναχούς ενός συγκεκριμένου μοναστηριού κάποιου ανατολίτικου χωριού με το όνομα Hanoi. Ο θρύλος επίσης λέει ότι, όταν το παιχνίδι ολοκληρωθεί, το τελευταίο καθήκον που ανατέθηκε στην ανθρωπότητα θα έχει ολοκληρωθεί και αυτό θα σημάνει το τέλος του κόσμου. Η έκδοση που υποτίθεται ότι ο Θεός παρουσίασε στο ανθρώπινο είδος είχε 64 δίσκους. Μπορούμε να θεωρήσουμε ότι ένας πύργος που αποτελείται από Ν δίσκους μπορεί να αποσυντεθεί σε δύο πύργους, ένα πύργο που αποτελείται από ένα μόνο δίσκο (το 34

35 μεγαλύτερο) και ένα πύργο που αποτελείται από τους υπόλοιπους Ν-1 δίσκους. Με βάση τη θεώρηση αυτή, το πρόβλημα της μετακίνησης Ν δίσκων μπορεί να αναχθεί αναδρομικά στη μετακίνηση Ν-1 δίσκων, ως εξής: 1. Μετακίνησε τους επάνω Ν-1 δίσκους από τον 1 ο στύλο (start) στον 3 ο στύλο (spare), χρησιμοποιώντας σαν βοηθητικό τον 2 ο στύλο (goal) 2. Μετακίνησε τον ένα δίσκο που έμεινε στον 1 ο στύλο, από τον 1 ο στύλο (start) στον 2 ο στύλο (goal) 3. Μετακίνησε τους Ν-1 δίσκους από τον 3 ο στύλο (spare) στον 2 ο στύλο (goal), χρησιμοποιώντας σαν βοηθητικό τον 1 ο στύλο (start) Η μετακίνηση των Ν-1 δίσκων στα βήματα 1 και 3 μπορεί να αναχθεί στη μετακίνηση Ν-2 δίσκων κλπ. Η κατανόηση του αλγορίθμου γίνεται ευκολότερη αν χρησιμοποιήσουμε 3 δίσκους. Τότε τα βήματα έχουν ως εξής: 1. Μετακίνησε ένα δίσκο από τον 1 ο στύλο στον 2 ο στύλο. 2. Μετακίνησε ένα δίσκο από τον 1 ο στύλο στον 3 ο στύλο. 3. Μετακίνησε ένα δίσκο από τον 2 ο στύλο στον 3 ο στύλο. 4. Μετακίνησε ένα δίσκο από τον 1 ο στύλο στον 2 ο στύλο. 5. Μετακίνησε ένα δίσκο από τον 3 ο στύλο στον 1 ο στύλο. 6. Μετακίνησε ένα δίσκο από τον 3 ο στύλο στον 2 ο στύλο. 7. Μετακίνησε ένα δίσκο από τον 1 ο στύλο στον 2 ο στύλο. Υλοποίηση στην C: // towers of Hanoi #include <stdio.h> #include <conio.h> void hanoitowers(int rings, int start, int goal, int spare); main() int n; printf("enter number of rings:"); scanf("%d",&n); printf("to move %d rings from peg 1 to peg 2, do the following:\n",n); hanoitowers(n, 1, 2, 3); getch(); return 0; 35

36 void hanoitowers(int rings, int start, int goal, int spare) if (rings == 1) printf("move from %d to %d \n", start, goal); hanoitowers(rings-1, start, spare, goal); printf("move from %d to %d \n", start, goal); hanoitowers(rings-1, spare, goal, start); ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 36

37 Κεφάλαιο 4 ΑΝΑΖΗΤΗΣΗ 4.1 Εισαγωγή 4.2 Σειριακή Αναζήτηση 4.3 Δυαδική Αναζήτηση 37

38 4.1 ΕΙΣΑΓΩΓΗ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Αναζήτηση (searching) είναι η διεργασία της εύρεσης κάποιας συγκεκριμένης τιμής ανάμεσα από ένα σύνολο τιμών. Το πρόβλημα της αναζήτησης είναι ένα από τα πιο ενδιαφέροντα προβλήματα της Επιστήμης των Υπολογιστών λόγω της μεγάλης πρακτικότητάς του. Το πρόβλημα γίνεται ακόμα πιο ενδιαφέρον αν ληφθεί υπόψη η μεγάλη ποικιλία των χαρακτηριστικών της δομής όπου αποθηκεύονται τα δεδομένα (π.χ. στατική ή δυναμική, τρόπος οργάνωσης, μέσο αποθήκευσης, κλπ.). Στη συνέχεια θα εξετασθούν δύο από τις πιο γνωστές μέθοδοι αναζήτησης πινάκων: Σειριακή αναζήτηση (Sequential search) Δυαδική αναζήτηση (Binary search) 4.2 ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ Η πιο απλή μέθοδος αναζήτησης ενός στοιχείου σε ένα πίνακα είναι η σειριακή αναζήτηση. Γίνεται προσπέλαση των στοιχείων του πίνακα από την πρώτη θέση μέχρι την τελευταία. Κάθε φορά ελέγχεται το στοιχείο της τρέχουσας θέσης αν είναι το ζητούμενο, οπότε και τελειώνει η αναζήτηση. Αν προσπελασθεί όλος ο πίνακας και δεν βρεθεί το ζητούμενο στοιχείο, τότε η αναζήτηση θεωρείται ανεπιτυχής. Παρακάτω δίνεται ο αλγόριθμος (σε ψευδοκώδικα) για τη σειριακή αναζήτηση, με δύο διαφορετικούς τρόπους, έναν επαναληπτικό και ένα αναδρομικό (για ευκολία θα θεωρούμε ότι η πρώτη θέση των πινάκων είναι η 0). 1) Επαναληπτική έκδοση Αλγόριθμος Σειριακή_αναζήτηση_1 Δεδομένα p[n], i, key, found, position found = false position = -1 i = 0 ΟΣΟ (found == false ) ΚΑΙ (i < N) AN p[i] == key TOTE found = true position = i ΑΛΛΙΩΣ i = i+1 ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣ AN found == true ΤΟΤΕ ΕΜΦΑΝΙΣΕ position ΑΛΛΙΩΣ ΕΜΦΑΝΙΣΕ Δεν υπάρχει ΤΕΛΟΣ Σειριακή_αναζήτηση_1 38

39 2) Αναδρομική έκδοση Αλγόριθμος Σειριακή_αναζήτηση_2 Δεδομένα p[n], i, key, found, position ΑΝ i > N ΤΟΤΕ found = false ΑΛΛΙΩΣ ΑN p[i] == key TOTE found = true position = i ΑΛΛΙΩΣ i = i+1 Σειριακή_αναζήτηση_2(p,key,found,position) ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ Σειριακή_αναζήτηση_2 AN found == true ΤΟΤΕ ΕΜΦΑΝΙΣΕ position ΑΛΛΙΩΣ ΕΜΦΑΝΙΣΕ Δεν υπάρχει ΤΕΛΟΣ ΑΝ 4.3 ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Όταν τα στοιχεία του πίνακα είναι ταξινομημένα, τότε είναι δυνατόν να επιταχυνθεί η διαδικασία αναζήτησης, εφαρμόζοντας επιλεκτικά και όχι σειριακά την αναζήτηση. Η μέθοδος που περιγράφεται παρακάτω είναι η πιο γνωστή σε αυτή την κατηγορία. Πιο συγκεκριμένα, συγκρίνεται η τιμή του ζητούμενου στοιχείου με το μεσαίο στοιχείο του πίνακα. Αν είναι ίσα, τότε η αναζήτηση έχει τελειώσει. Αν όχι, τότε μπορεί ο μισός πίνακας να εξαιρεθεί από τις επόμενες αναζητήσεις γιατί αποκλείεται να περιέχει το ζητούμενο στοιχείο, εφόσον αυτός είναι ταξινομημένος. Η διαδικασία αυτή επαναλαμβάνεται μέχρις ότου βρεθεί το στοιχείο ή διαπιστωθεί ότι δεν υπάρχει. Η μέθοδος αυτή είναι η δυαδική. Είναι φανερό ότι με τη μέθοδο αυτή μετά από κάθε σύγκριση το μέγεθος του πίνακα που θα ανιχνευθεί στη συνέχεια είναι το ½, ¼,... του αρχικού μεγέθους. Η μέγιστη τιμή των απαιτούμενων συγκρίσεων δίνεται από τη σχέση Μέγιστη τιμή απαιτούμενων συγκρίσεων = log2n Το πλεονέκτημα της μεθόδου αυτής είναι ότι είναι πολύ σταθερή, δηλαδή συνήθως η επίδοση είναι πολύ κοντά στη μέση τιμή των συγκρίσεων. Το μειονέκτημα είναι ότι ο πίνακας πρέπει να είναι ταξινομημένος. Παρακάτω δίνεται ο αλγόριθμος (σε ψευδοκώδικα) για τη δυαδική αναζήτηση, επίσης με δύο διαφορετικούς τρόπους, έναν επαναληπτικό και ένα αναδρομικό. 39

40 1) Επαναληπτική έκδοση Αλγόριθμος Δυαδική_αναζήτηση_1 Δεδομένα p[n], mid, left, right, key, found, position found = false position = -1 left = 0 right = N-1 ΟΣΟ (found == false ) ΚΑΙ (left <= right) mid = (left+right) / 2 AN key == p[mid] TOTE found = true position = mid ΑΛΛΙΩΣ AN key < p[mid] TOTE right = mid-1 AΛΛΙΩΣ left = mid+1 ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣ AN found == true ΤΟΤΕ ΕΜΦΑΝΙΣΕ position ΑΛΛΙΩΣ ΕΜΦΑΝΙΣΕ Δεν υπάρχει ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ Δυαδική_αναζήτηση_1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 2) Αναδρομική έκδοση Αλγόριθμος Δυαδική_αναζήτηση_2 Δεδομένα p[n], mid, left, right, key, position ΑΝ left > right ΤΟΤΕ position = -1 ΑΛΛΙΩΣ mid = (left + right) / 2 ΑN p[mid] == key TOTE position = mid ΑΛΛΙΩΣ AN key < p[mid] position = Δυαδική_αναζήτηση_2(left, mid-1, p, key) ΑΛΛΙΩΣ position = Δυαδική_αναζήτηση_2(mid+1, right, p, key) ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ Δυαδική_αναζήτηση_2 AN position == -1 ΤΟΤΕ ΕΜΦΑΝΙΣΕ Δεν υπάρχει ΑΛΛΙΩΣ ΕΜΦΑΝΙΣΕ position ΤΕΛΟΣ ΑΝ 40

41 Αριθμός συγκρίσεων με Δυαδική Αναζήτηση: Στοιχεία Ν Συγκρίσεις

42 42 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

43 Κεφάλαιο 5 ΤΑΞΙΝΟΜΗΣΗ 5.1 Εισαγωγή 5.2 Ταξινόμηση με απευθείας επιλογή 5.3 Ταξινόμηση με απευθείας εισαγωγή 5.4 Ταξινόμηση φυσαλίδας 5.5 Γρήγορη ταξινόμηση 43

44 5.1 ΕΙΣΑΓΩΓΗ Ταξινόμηση είναι η διαδικασία της τοποθέτησης ενός συνόλου στοιχείων σε μία ιδιαίτερη σειρά. Η σειρά αυτή είναι συνήθως αύξουσα (ascending) ή φθίνουσα (descending). Σκοπός της ταξινόμησης είναι η διευκόλυνση της αναζήτησης στοιχείων του ταξινομημένου συνόλου. Η χρησιμότητα της ταξινόμησης φαίνεται στην πράξη σε περιπτώσεις αναζήτησης σε τηλεφωνικούς καταλόγους, σε βιβλιοθήκες, σε λεξικά, σε διάφορες δημόσιες υπηρεσίες και οργανισμούς και γενικά παντού όπου υπάρχουν αποθηκευμένα δεδομένα και πρέπει να αναζητηθούν και να βρεθούν. Το θέμα της ταξινόμησης παρουσιάζει μεγάλο ενδιαφέρον και έχουν αναπτυχθεί αρκετοί αλγόριθμοι ταξινόμησης. Στο κεφάλαιο αυτό θα περιγραφούν κάποιοι απ αυτούς. Επίσης, θα πρέπει να λαμβάνεται υπόψη: Η επιλογή μίας συγκεκριμένης δομής δεδομένων επηρεάζει τους αλγορίθμους που εκτελούν ένα έργο. Η επιλογή ενός αλγορίθμου είναι μία δύσκολη διαδικασία που μπορεί να διευκολυνθεί με την ανάλυση της επίδοσης τους (performance analysis). Υπάρχει μία θεωρητικά βέλτιστη επίδοση που κανείς αλγόριθμος ταξινόμησης δεν μπορεί να ξεπεράσει. 5.2 ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΑΠΕΥΘΕΙΑΣ ΕΠΙΛΟΓΗ (Straight Selection) Η μέθοδος έχει ως εξής: Επιλέγουμε το μικρότερο στοιχείο Το ανταλλάσσουμε με το πρώτο στοιχείο Επαναλαμβάνουμε για τα υπόλοιπα στοιχεία, μέχρι να μείνει ένα Π.χ

45 Ο αλγόριθμος σε C: for (i=0; i<n-1; i++) k = i; min = p[i]; for (j = i+1; j<n; j++) if (p[j] < min) k = j; min = p[j]; p[k] = p[i] ; p[i] = min; 5.3 ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΑΠΕΥΘΕΙΑΣ ΕΙΣΑΓΩΓΗ (Straight Insertion) Η μέθοδος είναι πολύ δημοφιλής στους χαρτοπαίχτες και έχει ως εξής: Π.χ. Κάθε στοιχείο, ξεκινώντας από το δεύτερο, τοποθετείται στη σωστή του θέση μετακινώντας, αν χρειαστεί, τα στοιχεία δεξιά του κατά μία θέση Ο αλγόριθμος σε C: for(i=1; i<n; i++) x = p[i]; j = i -1; while(x<p[j] && j>=0) p[j+1] = p[j]; j = j-1; p[j+1] = x; 2 η Έκδοση: for (i=2; i<=n; i++) x = p[i]; p[0] = x; j = i -1; while (x < p[j]) p[j+1] = p[j] ; j = j-1 ; p[j+1] = x ; 45

46 5.4 ΤΑΞΙΝΟΜΗΣΗ ΦΥΣΑΛΙΔΑΣ (Bubble Sort) Ο αλγόριθμος βασίζεται στην αρχή της σύγκρισης και ανταλλαγής ζευγών από γειτονικά στοιχεία, μέχρις ότου ταξινομηθούν όλα τα στοιχεία. Κάθε φορά μετακινείται το μικρότερο στοιχείο της ακολουθίας προς το αριστερό άκρο. Π.χ Ο αλγόριθμος σε C: for (i=1; i<n; i++) for (j=n-1; j>=i; j--) if (p[j-1] > p[j]) temp = p[j-1]; p[j-1] = p[j] ; p[j] = temp ; 5.5 ΓΡΗΓΟΡΗ ΤΑΞΙΝΟΜΗΣΗ (Quick Sort) Ο αλγόριθμος βασίζεται στην αρχή της αντιμετάθεσης και είναι η καλύτερη γνωστή μέθοδος ταξινόμησης για τυχαία στοιχεία. Η γρήγορη ταξινόμηση στηρίζεται στην παρατήρηση ότι είναι προτιμότερο οι αντιμεταθέσεις να γίνονται μεταξύ απομακρυσμένων στοιχείων. Στην αρχή λαμβάνεται το μεσαίο στοιχείο του πίνακα και μετακινείται στη θέση όπου τελικά θα αποθηκευτεί στο ταξινομημένο διάνυσμα. Μετά τον προσδιορισμό της τελικής αυτής θέσης, γίνεται αναδιάταξη των υπόλοιπων στοιχείων έτσι ώστε να μην υπάρχει κανένα μικρότερο στοιχείο προς τα αριστερά του και κανένα μεγαλύτερο στοιχείο προς τα δεξιά του. Έτσι, το μεσαίο αυτό στοιχείο παίζει το ρόλο του άξονα (pivot) και ο πίνακας έχει διαμεριστεί κατά τέτοιο τρόπο ώστε το αρχικό πρόβλημα έχει αναχθεί σε δύο απλούστερα προβλήματα, στην ανεξάρτητη δηλαδή ταξινόμηση 46

47 των δύο υποπινάκων. Μετά τον διαμερισμό του πίνακα, η ίδια διαδικασία εφαρμόζεται στους δύο υποπίνακες, ύστερα στους υποπίνακες των υποπινάκων, κοκ., μέχρις ότου ο κάθε υποπίνακας να αποτελείται από ένα μόνο στοιχείο. Στο σημείο αυτό ο αρχικός πίνακας έχει ταξινομηθεί. Π.χ i x j j i j j j i j j j i j i [27 18] 32 [ ] i j i j i i i j i j i i i i [ ] 73 i j i j i j i i j i [ ] 51 i j i j i [36 41] 47 i j j

48 Ο αλγόριθμος σε C: void quicksort(int left, int right, int p[]) int i, j, mid, x, temp; if (left < right) i = left; j = right; mid = (left+right)/2; x = p[mid]; while (i < j) while (p[i] < x) i++; while (p[j] > x) j--; if (i < j) if (p[i] == p[j]) if (i<mid) i++; if (j>mid) j--; temp = p[i]; p[i] = p[j]; p[j] = temp; quicksort(left,j-1,p); quicksort(j+1,right,p); 48

49 Κεφάλαιο 6 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ 6.1 Εισαγωγή 6.2 Σειριακές Λίστες Στοίβα Ουρά 6.3 Συνδεδεμένες Λίστες Απλή συνδεδεμένη λίστα Στοίβα ως συνδεδεμένη λίστα Ουρά ως συνδεδεμένη λίστα 49

50 6.1 ΕΙΣΑΓΩΓΗ Γραμμική λίστα (linear list) είναι ένα πεπερασμένο σύνολο από κόμβους x1, x2,..., xn όπου το στοιχείο xk προηγείται του στοιχείου xk+1 και έπεται του xk-1. Κατατάσσονται συνήθως σε δύο κατηγορίες: Σειριακές γραμμικές λίστες (sequential linear lists) Συνδεδεμένες γραμμικές λίστες (linked linear lists) Στην πρώτη κατηγορία καταλαμβάνονται συνεχόμενες θέσεις μνήμης του Η/Υ για την αποθήκευση των κόμβων. Στην δεύτερη κατηγορία οι κόμβοι των λιστών βρίσκονται σε απομακρυσμένες θέσεις που είναι μεταξύ τους συνδεδεμένες. Επίσης, οι γραμμικές λίστες χαρακτηρίζονται σαν: Στατικές δομές δεδομένων (static data structures) Δυναμικές δομές δεδομένων (dynamic data structures) Στην πρώτη κατηγορία, κατά τον προγραμματισμό των λειτουργιών των λιστών, έχει προκαθορισθεί το μέγεθος της μνήμης που απαιτείται για την αποθήκευση των λιστών. Στην δεύτερη κατηγορία, μία λίστα μπορεί να αυξομειωθεί κατά την διάρκεια εκτέλεσης του προγράμματος. 6.2 ΣΕΙΡΙΑΚΕΣ ΛΙΣΤΕΣ Στοίβα (stack) Μπορούμε να την παραλληλίσουμε σαν μία στοίβα από πιάτα. Κάθε νέο στοιχείο τοποθετείται στην κορυφή (top). Το στοιχείο που βρίσκεται στην κορυφή της στοίβας εξέρχεται πρώτο. Αυτή η μέθοδος επεξεργασίας ονομάζεται LIFO (Last In First Out) 4 3 top

51 Μία στατική στοίβα υλοποιείται με τη χρήση ενός μονοδιάστατου πίνακα και ενός δείκτη. Δύο είναι οι κύριες λειτουργίες στη στοίβα: Ώθηση (push) στοιχείου στην κορυφή της στοίβας Απώθηση (pop) στοιχείου από τη στοίβα Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει μήπως η στοίβα είναι γεμάτη, οπότε έχουμε υπερχείλιση (overflow). Αντίστοιχα, η διαδικασία της απώθησης πρέπει να ελέγχει αν η στοίβα έχει αδειάσει, οπότε έχουμε υποχείλιση (underflow). Υλοποίηση στοίβας σε C: #define N 100 int stack[n], top = -1; void push(int stack[],int *t,int obj) if (*t == N-1) printf("stack overflow...\n"); getch(); stack[++(*t)] = obj; int pop(int stack[],int *t) int r ; if (*t < 0) printf("stack empty...\n"); getch(); r = stack[(*t)--]; return r; 51

52 ΕΦΑΡΜΟΓΕΣ ΣΤΟΙΒΩΝ Εφαρμογή 1 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μία εφαρμογή που μπορεί να χρησιμοποιήσει τη δομή της στοίβας για την υλοποίησή της, είναι ο έλεγχος σωστής χρήσης των παρενθέσεων στις αριθμητικές εκφράσεις. Για παράδειγμα η παράσταση (a*(b+c)+d) χρησιμοποιεί σωστά τις παρενθέσεις, ενώ η παράσταση (a*b+c)+d) δεν χρησιμοποιεί σωστά τις παρενθέσεις, γιατί πλεονάζει μία δεξιά παρένθεση. Το ίδιο και η παράσταση (a-b))*b+c). Επίσης η παράσταση (a*(b+c+d) δεν τις χρησιμοποιεί σωστά, γιατί πλεονάζει μία αριστερή παρένθεση. Υλοποίηση στη C: // Έλεγχος για σωστή χρήση παρενθέσεων #include <stdio.h> #include <conio.h> #include <stdlib> #define N 10 void push(char stack[],int *t, char obj); void pop(char stack[],int *t); main() char stack[n], top = -1; char expr[30]; int i, error; clrscr(); printf("input expression, ENTER to quit:\n"); gets(expr); error = 0; i = 0; while (expr[i]!='\0' && error == 0) switch (expr[i]) case '(': push(stack,&top,expr[i]); break; case ')': if (top == -1) error = 1; pop(stack,&top); break; 52

53 i++; if (top = = -1) if (error = = 0) printf("correct expression."); printf("error. Too many right parentheses."); printf("error. Too many left parentheses."); ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ getch(); return 0; void push(char stack[], int *t, char obj) if ((*t) = = N-1) printf("stack overflow...\n"); getch(); stack[++(*t)] = obj; void pop(char stack[],int *t) char c; if ((*t) < 0) printf("stack empty...\n"); printf("error in expression.\n"); getch(); c = stack[(*t)--]; Εφαρμογή 2 Μία κλασσική εφαρμογή που χρησιμοποιεί τη δομή της στοίβας, είναι η επεξεργασία αριθμητικών εκφράσεων, όπως 2+3 ή 2*(3+4) ή ακόμα ((2+4)*7)+3*(9-5), από τις γλώσσες προγραμματισμού. Αυτή η μορφή παράστασης ονομάζεται ένθετη (infix), και έχει το χαρακτηριστικό ότι οι τελεστές (operators) τοποθετούνται μεταξύ των τελεσταίων (operands). 53

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή 3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ 3.1 ΑΝΑ ΡΟΜΗ 3.1.1 Εισαγωγή ΕΦΑΡΜΟΣΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Αναδροµή είναι η µέθοδος κατά την οποία, σε µία γλώσσα προγραµµατισµού, µία διαδικασία ή συνάρτηση έχει την δυνατότητα

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

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

Αλγόριθμοι & Δομές Δεδομένων ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΕΝΤΡΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΣΧΟΛΗ ΤΜΗΜΑ Αλγόριθμοι & Δομές Δεδομένων Ευάγγελος Γ. Ούτσιος (BSc, MSc) Καθηγητής Εφαρμογών Τομέας Υπολογιστικών τεχνικών και Συστημάτων Σεπτέμβριος

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

Αλγόριθμοι και Δομές Δεδομένων(Θ) Ευάγγελος Γ. Ούτσιος

Αλγόριθμοι και Δομές Δεδομένων(Θ) Ευάγγελος Γ. Ούτσιος Αλγόριθμοι και Δομές Δεδομένων(Θ) Ενότητα 5: ΑΝΑΖΗΤΗΣΗ Ευάγγελος Γ. Ούτσιος ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

Κεφάλαιο 5 Ανάλυση Αλγορίθμων Κεφάλαιο 5 Ανάλυση Αλγορίθμων 5.1 Επίδοση αλγορίθμων Τα πρωταρχικά ερωτήματα που προκύπτουν είναι: 1. πώς υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 2. πώς μπορούν να συγκριθούν μεταξύ τους οι διάφοροι

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται

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

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

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

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

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

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

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

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

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

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

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

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

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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

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

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

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

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

Βασικές Έννοιες Αλγορίθμων. Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4) Βασικές Έννοιες Αλγορίθμων Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4) Δομές εντολών Υπάρχουν διάφορα είδη εντολών όπως, ανάθεσης ή εκχώρησης τιμής, εισόδου εξόδου, κ.ά., αλλά γενικά χωρίζονται σε τρείς

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Κεφάλαια 2,7,8 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Επιμέλεια : Δρεμούσης Παντελής Κεφάλαια 2,7,8 1. Τι είναι αλγόριθμος; Μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο

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

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο Εισαγωγή - Βασικές έννοιες Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος 2012-13 A Εξάμηνο Αλγόριθμος Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων

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

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

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

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

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

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

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

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

Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας Κάθε στοιχείο που γίνεται αντιληπτό με μία από τις πέντε αισθήσεις μας είναι ένα δεδομένο. Τα δεδομένα μπορούν να αναπαραστήσουν αφαιρετικά την πραγματικότητα δηλαδή να μας δείχνουν μία απλοποιημένη όψη

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

ΑΕΠΠ Ερωτήσεις θεωρίας

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

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

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

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Βασικές έννοιες αλγορίθμων Εισαγωγή Αρχικά εξηγείται ο όρος αλγόριθμος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληροί κάθε

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ο ΚΕΦΑΛΑΙΟ 1) Τι είναι πρόβλημα (σελ. 3) 2) Τι είναι δεδομένο, πληροφορία, επεξεργασία δεδομένων (σελ. 8) 3) Τι είναι δομή ενός προβλήματος (σελ. 8)

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

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο. Επικοινωνία: Επικοινωνία: spzygouris@gmail.com Να δοθεί ο ορισμός του Αλγορίθμου. Αλγόριθμος, σύμφωνα με το βιβλίο, είναι μια πεπερασμένη σειρά ενεργειών (όχι άπειρες), αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο

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

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε; Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε; Πως θα υπολογίσουμε το χρόνο εκτέλεσης ενός αλγόριθμου; Για να απαντήσουμε

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ100) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

Αρχές Προγραμματισμού Η/Υ Μέθοδοι παρουσίασης του αλγόριθμου και Βασικές έννοιες

Αρχές Προγραμματισμού Η/Υ Μέθοδοι παρουσίασης του αλγόριθμου και Βασικές έννοιες Αρχές Προγραμματισμού Η/Υ Μέθοδοι παρουσίασης του αλγόριθμου και Βασικές έννοιες Βελώνης Γεώργιος Καθηγητής Πληροφορικής ΠΕ20 Περιεχόμενα Μέθοδοι Παρουσίασης του αλγόριθμου Εισαγωγή Φραστική μέθοδος Ψευδοκώδικας

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

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

Εισαγωγή στις Αρχές της επιστήμης των Η/Υ. Β Λυκείου Εισαγωγή στις Αρχές της επιστήμης των Η/Υ Β Λυκείου Επιστήμη των υπολογιστών μελετά Θεωρητικά θεμέλια Φύση πληροφοριών Φύση αλγορίθμων Φύση υπολογισμών Και τις τεχνολογικές εφαρμογές τους Από τις σκοπιές

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

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

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

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ 1. Έστω ότι ο καθηγητής σας δίνει δύο αριθμούς και σας ζητάει να του πείτε πόσο είναι το άθροισμά τους. Διατυπώστε

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

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

3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 3 ΟΥ και 9 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΙΝΑΚΩΝ ΣΤΟΙΒΑΣ ΚΑΙ ΟΥΡΑΣ Α ΜΕΡΟΣ ΘΕΩΡΙΑ ΓΙΑ ΠΙΝΑΚΕΣ 3.1

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

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

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

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΑ 3 και 9 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΕΣ Δεδομένα αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της δηλαδή.

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

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο Πίνακες Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος 2012-13 A Εξάμηνο Πίνακες Η ποιο γνωστή και διαδεδομένη στατική δομή είναι ο πίνακας. Οι πίνακες αποτελούνται από στοιχεία

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 2.4 Βασικές συνιστώσες/εντολές ενός αλγορίθμου 2.4.1 Δομή ακολουθίας ΚΕΦΑΛΑΙΟ 7 7.1 7.9 Σταθερές (constants): Προκαθορισμένες τιμές που παραμένουν

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ00 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 01-15

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

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση

Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση Επίδοση Αλγορίθμων Για τις λύσεις των προβλημάτων υπάρχει τρόπος εκτίμησης της επίδοσης (performance) και της αποδοτικότητας (efficiency). Ερωτήματα για την επίδοση πώς υπολογίζεται ο χρόνος εκτέλεσης

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

ΑΛΓΟΡΙΘΜΟΙ & ΟΜΕΣ Ε ΟΜΕΝΩΝ (Σηµειώσεις Θεωρίας)

ΑΛΓΟΡΙΘΜΟΙ & ΟΜΕΣ Ε ΟΜΕΝΩΝ (Σηµειώσεις Θεωρίας) TEΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΑΛΓΟΡΙΘΜΟΙ & ΟΜΕΣ Ε ΟΜΕΝΩΝ (Σηµειώσεις Θεωρίας) Ευάγγελος Γ. Ούτσιος Σέρρες 2004 2 ΑΛΓΟΡΙΘΜΟΙ & ΟΜΕΣ

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

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1 Ενότητα 1 Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1 Τι είναι αλγόριθμος Σύμφωνα με το σχολικό βιβλίο: Ορισμός: Μια πεπερασμένη σειρά ενεργειών, αυστηρά

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

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

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

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

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

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

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

Επανάληψη Θεωρίας. Καστούμης Γιώργος

Επανάληψη Θεωρίας. Καστούμης Γιώργος ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΨΗ ΘΕΩΡΙΑΣ ΚΕΦΑΛΑΙΟ 1 Ορισµοί: Με τον όρο πρόβληµα εννοείται µια κατάσταση η οποία χρήζει αντιµετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή,

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

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

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

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

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

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

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

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

1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα.

1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα. 1. Τι ονομάζουμε αλγόριθμο; Δώστε παράδειγμα. ΑΠΑΝΤΗΣΗ Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός

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

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

Δομές δεδομένων και Αλγόριθμοι Κεφάλαιο 1 Ανάλυση Προβλήματος Η έννοια πρόβλημα Κατανόηση προβλήματος Δομή προβλήματος Καθορισμός απαιτήσεων Κατηγορίες προβλημάτων Πρόβλημα και υπολογιστής Κεφάλαιο 2 Βασικές Έννοιες Αλγορίθμων Τι είναι

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

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

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

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

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

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι Αραποστάθης Μάριος Καθηγητής Πληροφορικής Πειραματικού Λυκείου Βαρβακείου http://users.sch.gr/mariosarapostathis

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Μηχανικών ΤΕ και Μηχανικών Τοπογραφίας και Γεωπληροφορικής TE Διάλεξη στο μάθημα Εφαρμοσμένη Πληροφορική ΙΙ Δομές Δεδομένων και Αλγόριθμοι Πηγές - Βιβλιογραφία

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

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

ΑΛΓΟΡΙΘΜΟΙ & ΟΜΕΣ Ε ΟΜΕΝΩΝ (Σηµειώσεις Εργαστηρίου)

ΑΛΓΟΡΙΘΜΟΙ & ΟΜΕΣ Ε ΟΜΕΝΩΝ (Σηµειώσεις Εργαστηρίου) TEΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΑΛΓΟΡΙΘΜΟΙ & ΟΜΕΣ Ε ΟΜΕΝΩΝ (Σηµειώσεις Εργαστηρίου) Ευάγγελος Γ. Ούτσιος Σέρρες 2004 2 ΠΕΡΙΕΧΟΜΕΝΑ

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

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

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

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

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

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

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

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

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0. ΦΥΛΛΑΔΙΟ ΚΑΤΑΝΟΗΣΗΣ 6 ΛΥΣΕΙΣ 1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0. 2. Εντολή Αλγορίθμου Αριθμός Πράξεων Ανάθεση τιμών στα x,y 2 έλεγχος i 6 αύξηση i 5 εκτύπωση i 5

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

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

ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΒΑΣΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΜΟΝΟΔΙΑΣΤΑΤΩΝ ΚΑΙ ΔΙΣΔΙΑΣΤΑΤΩΝ ΠΙΝΑΚΩΝ ΟΙ ΠΙΟ ΣΗΜΑΝΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΕΥΡΕΣΗ ΜΕΓΑΛΥΤΕΡΟΥ/ΜΙΚΡΟΤΕΡΟΥ ΣΤΟΙΧΕΙΟΥ ΜΟΝΟΔΙΑΣΤΑΤΟΥ -1 Ολα τα στοιχεία του πίνακα είναι διαφορετικά μεταξύ τους.

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

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

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

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

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

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

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

Αλγόριθµοι + οµές εδοµένων = Προγράµµατα

Αλγόριθµοι + οµές εδοµένων = Προγράµµατα 2 ΟΜΕΣ Ε ΟΜΕΝΩΝ 2.1 ΕΙΣΑΓΩΓΗ Εκτός από τους αλγορίθµους, σηµαντική έννοια για την Πληροφορική είναι και η έννοια των δεδοµένων. Τα δεδοµένα αποθηκεύονται στον υπολογιστή µε τη βοήθεια των λεγόµενων δοµών

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

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

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

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

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

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

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

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια

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

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

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

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

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

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

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

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

Επιμέλεια: Γιακουμόγλου Βαγγέλης.

Επιμέλεια: Γιακουμόγλου Βαγγέλης. Επιμέλεια: Γιακουμόγλου Βαγγέλης. Κεφάλαιο 2 ο 2. 1 Τι ονομάζεται αλγόριθμος; Ορισμός: Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν

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

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

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

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

Θέματα Προγραμματισμού Η/Υ

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 1: Εισαγωγή Θεματική Ενότητα: Εισαγωγή στον Προγραμματισμό ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική

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

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΕΡΛΙΑΟΥΝΤΑΣ ΣΤΕΦΑΝΟΣ, ΠΕ19 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι 3. Αλγόριθμοι 2 3. Αλγόριθμοι 3.1 Η έννοια του αλγορίθμου 3.2 Χαρακτηριστικά αλγορίθμου 3.3 Ανάλυση αλγορίθμων

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ Κεφάλαια 2, 7, 8 1. Δώστε τον ορισμό του αλγόριθμου. Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης Στόχοι και αντικείμενο ενότητας Έλεγχος ροής προγράμματος (βλ. ενότητα #4) Δομή επανάληψης #5.. Εντολές Επανάληψης Προτάσεις επανάληψης Εντολές while, do while Εντολή for Περί βρόχων (loops) Τελεστές,

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. ΚΕΦΑΛΑΙΟ 2 Βασικές Έννοιες Αλγορίθμων

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. ΚΕΦΑΛΑΙΟ 2 Βασικές Έννοιες Αλγορίθμων Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΟ 2 Βασικές Έννοιες Αλγορίθμων 2.1 Τι είναι αλγόριθμος Ο όρος προέρχεται από μετάφραση του βιβλίο του Αμπού Αμπντουλάχ Μοχάμεντ Ιμπν Μούζα Αλ Χουαρίζμι

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

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 1 Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις

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

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Πληροφορική ΙΙ Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Πληροφορική ΙΙ», 2015-2016 Μάθημα 1: Εισαγωγή στους Αλγόριθμους Αλγόριθμος είναι μια πεπερασμένη

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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