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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

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

Ταξινόμηση με συγχώνευση Merge Sort

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

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

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

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

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

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

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

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

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

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

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

Πρόβλημα 37 / σελίδα 207


ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

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

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

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

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ Α.Ε.Π.Π. Γ ΤΕΧΝΟΛΟΓΙΚΗΣ. Όνομα:.. Βαθμός: /100

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

Εργαστηριακή Άσκηση 1

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

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

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

Α2. Δίνεται το επόμενο τμήμα προγράμματος σε ΓΛΩΣΣΑ:

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

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Οι εντολές ελέγχου της ροής ενός προγράμματος.

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

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

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

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

Διάλεξη 5η: Εντολές Επανάληψης

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 17

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

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

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

Υπολογισμός - Εντολές Επανάληψης

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

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

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

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

Περιεχόμενα. Πρόλογος... 21

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

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

Transcript:

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

Πηγές - Βιβλιογραφία Διαφάνειες http://www.dbnet.ece.ntua.gr/~stefanak/geocomp/ Βιβλιογραφία Ε. Στεφανάκη, (2003). Βάσεις Γεωγραφικών Δεδομένων και Συστήματα Γεωγραφικών Πληροφοριών, Εκδόσεις Παπασωτηρίου

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

Αλγόριθμοι Αλγόριθμος... Η περιγραφή της επίλυσης ενός προβλήματος π.χ., εύρεση των ριζών ενός πολυωνύμου (x 2-3x-4) Η περιγραφή είναι κατανοητή από τους ανθρώπους (όχι από τους Η/Υ) Στην πληροφορική... Ένας αλγόριθμος αποτελεί την περιγραφή της μεθόδου επίλυσης ενός προβλήματος, η οποία μπορεί να υλοποιηθεί σε έναν Η/Υ

Αλγόριθμοι Ένας αλγόριθμος περιλαμβάνει... Δεδομένα και Υπολογισμούς Οι περισσότεροι αλγόριθμοι... εμπλέκουν μεθόδους οργάνωσης των δεδομένων που εμπλέκονται στους υπολογισμούς οι μέθοδοι αυτές καλούνται Δομές Δεδομένων Λόγω της παραπάνω σχέσης... Αλγόριθμοι και δομές δεδομένων... πάνε μαζί...

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

Αλγόριθμοι Ένα παράδειγμα... Έστω ο έντυπος τηλεφωνικός κατάλογος των συνδρομητών του ΟΤΕ Ζητάµε ένα αλγόριθμο αναζήτησης του τηλεφώνου ενός συνδρομητή Τα δεδομένα (ονόματα, τηλέφωνα συνδρομητών) δομούνται είτε τυχαία ή αλφαβητικά Αν δομούνται τυχαία... Πρέπει να ξεκινήσουμε από την πρώτη σελίδα και να ψάξουµε τα ονόματα ένα προς ένα μέχρι να βρούμε αυτό που ζητάµε Διαφορετικά (αν δομούνται αλφαβητικά ταξινομημένα) Μπορούμε να εφαρμόζουμε πιο έξυπνη αναζήτηση (αλγόριθμο), π.χ., να ανοίξουµε τη μεσαία σελίδα του καταλόγου και να περιορίσουµε την αναζήτηση στο μισό κατάλογο, κοκ.

Δομή ενός αλγορίθμου Ένας αλγόριθμος περιλαμβάνει τρία τμήματα... Κεφαλή Περιλαμβάνει το όνοµα και τον κατάλογο των δεδομένων (εισόδου/εξόδου) Τμήμα δηλώσεων των μεταβλητών Περιγραφή των εσωτερικών μεταβλητών (δεδομένων) του αλγορίθμου Κυρίως τμήμα Περιγραφή των πράξεων (υπολογισμών) που εκτελούνται πάνω στα δεδομένα

Περιγραφή ενός Αλγορίθμου Ένας αλγόριθμος περιγράφεται... Με λεκτική περιγραφή... Ψευδοκώδικας Πλησιάζει στη φυσική γλώσσα Κατανοητός και από µη προγραμματιστές Γλώσσα προγραμματισμού Τυποποιημένη γλώσσα Κατανοητή από προγραμματιστές και Η/Υ Διαγραμματικά... Διάγραμμα ροής Εφαρμόζει γραφικά δομικά στοιχεία Εύκολη οπτικοποίηση της ροής του αλγορίθμου

Περιγραφή ενός Αλγορίθμου Παράδειγμα αλγορίθμου... Εύρεση του μέσου όρου των θετικών αριθμών ενός πίνακα Ν ακεραίων P -4 8-2 5 4-6 2 N = 7 (πλήθος ακεραίων) Κ = 4 (πλήθος θετικών) MO = (8+5+4+2)/4 = 4.75

Περιγραφή ενός Αλγορίθμου Παράδειγμα Ψευδοκώδικα ΑΛΓΟΡΙΘΜΟΣ ΕΥΡΕΣΗΣ ΜΕΣΟΥ ΟΡΟΥ ΤΩΝ ΘΕΤΙΚΩΝ ΑΡΙΘΜΩΝ ΕΝΟΣ ΠΙΝΑΚΑ Ν ΑΚΕΡΑΙΩΝ ΔΕΔΟΜΕΝΑ P:ΠΙΝΑΚΑΣ[1,...,Ν] ΑΚΕΡΑΙΩΝ Ν,Ι,K,Μ ΑΚΕΡΑΙΟΙ ΜΟ ΠΡΑΓΜΑΤΙΚΟΣ ΑΡΧΗ Μ:=0 /*ΑΡΧΙΚΟΠΟΙΗΣΗ ΜΕΤΑΒΛΗΤΩΝ */ K:=0 ΓΙΑ Ι:=1 ΕΩΣ Ν ΕΠΑΝΕΛΑΒΕ ΕΑΝ P[I]>0 TOTE /* ΕΛΕΓΧΟΣ ΑΝ ΕΙΝΑΙ ΘΕΤΙΚΟΣ */ Μ:=Μ+P[I] K:=K+1 ΕΑΝ-ΤΕΛΟΣ ΓΙΑ-ΤΕΛΟΣ ΜΟ:=Μ/Κ /* ΥΠΟΛΟΓΙΜΣΟΣ ΜΕΣΟΥ ΟΡΟΥ */ ΕΚΤΥΠΩΣΕ(ΜΟ) ΤΕΛΟΣ

Περιγραφή ενός Αλγορίθμου Παράδειγμα γλώσσας προγ/σμού C #include <stdio.h> void find_mean(int P[N], int N) { int I,K,M; /* ΗΛΩΣΗ ΜΕΤΑΒΛΗΤΩΝ */ float MO; Μ=0; K=0; /*ΑΡΧΙΚΟΠΟΙΗΣΗ ΜΕΤΑΒΛΗΤΩΝ */ for (I=0; I<N; I++) { if (P[I]>0) /* ΕΛΕΓΧΟΣ ΑΝ ΕΙΝΑΙ ΘΕΤΙΚΟΣ */ { Μ=Μ+P[I]; K=K+1; } } ΜΟ:=Μ/Κ; /* ΥΠΟΛΟΓΙΜΣΟΣ ΜΕΣΟΥ ΟΡΟΥ */ printf( MO = %f\n, ΜΟ); }

Περιγραφή ενός Αλγορίθμου Παράδειγμα διαγράμματος ροής ΑΡΧΗ I<=N ΟΧΙ MO=M/K ΔΙΑΒΑΣΕ P, N P[I]>0 ΝΑΙ ΟΧΙ ΤΥΠΩΣΕ ΜΟ M=0, K=0 ΝΑΙ M=M+P[I] K=K+1 ΤΕΛΟΣ I=1 I=I+1

Βασικές Δομές Δεδομένων Δομές Δεδομένων... (οι τρόποι οργάνωσης των δεδομένων για επεξεργασία από προγράμματα Η/Υ) Πίνακες (arrays) Εγγραφές (records) Συνδεδεμένες λίστες (linked lists) Ουρές (queues) Στοίβες (stacks) Δένδρα (trees)

Πίνακες Μονοδιάστατος Πίνακας Ένας καθορισμένος αριθμός από στοιχεία του ίδιου τύπου (ακέραιοι, χαρακτήρες, κά.) που αποθηκεύονται στη σειρά Η πρόσβαση σε κάθε στοιχείο επιτυγχάνεται µε ένα δείκτη π.χ., ένας πίνακας ακεραίων 7 θέσεων... P 1ο στοιχείο 2ο στοιχείο -4 8-2 5 4-6 2 Η ανάκτηση του i στοιχείου του πίνακα επιτυγχάνεται µέσω της αναφοράς P[i] (π.χ., P[4] = 5) (άμεση!) Τα στοιχεία του πίνακα αποθηκεύονται σε γειτονικές θέσεις μνήμης (αυτό εξασφαλίζει την άμεση πρόσβαση)

Πίνακες Δυσδιάστατος Πίνακας 1η γραμμή 2η γραμμή Ένας καθορισμένος αριθμός από στοιχεία του ίδιου τύπου που οργανώνονται σε γραμμές/στήλες Η πρόσβαση σε κάθε στοιχείο επιτυγχάνεται µε ένα ζεύγος δεικτών (γραμμή, στήλη του πίνακα) π.χ., ένας πίνακας ακεραίων 3 γραμμών /7 στηλών... P 1η στήλη 2η στήλη -4 8-2 5 4-6 2 7 2 1-8 3-9 1 1-3 3-7 1-1 6

Πίνακες Δυσδιάστατος Πίνακας Η ανάκτηση του i,j στοιχείου του πίνακα επιτυγχάνεται µέσω της αναφοράς P[i][j] (π.χ., P[2][3] = 1) Η αναπαράσταση του πίνακα στη µνήµη επιτυγχάνεται µε γραμμικοποίησή του είτε κατά γραμμές ή κατά στήλες -4 8-2 5 4-6 2 7 2 1-8 3-9 1 1-3 3-7 1-1 6-4 8-2 5 4-6 2 7 2 1-8 3-9 1 1-3 3-7 1-1 6

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

Εγγραφές Ορισμός Μια συλλογή ενός καθορισμένου πλήθους αλληλοσυσχετιζόμενων στοιχείων (πεδίων) διαφορετικού τύπου π.χ., η εγγραφή ενός συνδρομητή του ΟΤΕ Επώνυμο Όνομα Διεύθυνση Τηλέφωνο ΑΑΑ ΒΒΒ ΓΓΓ 111

Εγγραφές Πίνακας εγγραφών Αποτελεί ένα συνδυασμό των δομών: πίνακα και εγγραφής π.χ., ο πίνακας εγγραφών των συνδρομητών του ΟΤΕ Επώνυμο Όνομα Διεύθυνση Τηλέφωνο ΑΑΑ ΒΒΒ ΓΓΓ 111 ΔΔΔ ΕΕΕ ΖΖΖ 222 ΗΗΗ ΘΘΘ ΚΚΚ 333 Παράδειγμα πρόσβασης σε ένα στοιχείο του πίνακα εγγραφών Εγγραφή[i].Στοιχείο_εγγραφής π.χ., Εγγραφή[2].Διεύθυνση= ΖΖΖ

Συνδεδεμένες Λίστες Συνδεδεμένη λίστα... Μια πεπερασμένη ακολουθία στοιχείων του ίδιου τύπου (όμοια με τους πίνακες) Κάθε στοιχείο αποτελεί τμήμα ενός κόμβου, ο οποίος διαθέτει ένα δείκτη σε επόμενο κόμβο Βασικό στοιχείο ορισμού της λίστας είναι ο κεφαλή δείκτης στον πρώτο κόμβο (κεφαλή) Α. Β. Γ. Δ. Σε αντίθεση με τους πίνακες οι κόμβοι μιας λίστας αποθηκεύονται σε τυχαίες θέσεις στη μνήμη

Συνδεδεμένες Λίστες Πλεονεκτήματα σε σχέση µε τους πίνακες Όχι προκαθορισμένο μέγιστο μέγεθος Ανάγκες σε χωρητικότητα ανάλογα µε το πλήθος των στοιχείων Επέκταση της λίστας ανάλογα με το διαθέσιμο χώρο (αποφυγή overflow) Εύκολη (γρήγορη) ενημέρωση της λίστας Απλή αναδιάταξη των στοιχείων µε αναδιάταξη των δεικτών Απλή εισαγωγή/διαγραφή στοιχείων (αποφυγή των πολλαπλών μεταθέσεων στοιχείων)

Συνδεδεμένες Λίστες κεφαλή Παράδειγμα αναδιάταξης ([ΑΒΓ ] [ΑΓΒ ]) Α. Β. Γ. Δ. κεφαλή Παραδείγματα εισαγωγής/διαγραφής στοιχείων Α. Β. Γ. Δ. κεφαλή Ε. Α. Β. Γ. Δ.

Συνδεδεμένες Λίστες κεφαλή Βασικό μειονέκτημα σε σχέση µε πίνακες Η πρόσβαση σε ένα στοιχείο της λίστας γίνεται σειριακά... ξεκινώντας από την κεφαλή κι ακολουθώντας τους κόμβους μέσω των δεικτών οπότε επίσκεψη 4 κόμβων για την ανάκτηση του Α. Β. Γ. Δ. P Σε μια αναπαράσταση πίνακα η πρόσβαση είναι άμεση P[4] Α Β Γ Δ

Συνδεδεμένες Λίστες Άλλοι τύποι... κεφαλή Διπλά συνδεδεμένη λίστα. Α.. Β.. Γ.. Δ. κεφαλή Κυκλική συνδεδεμένη λίστα Α. Β. Γ. Δ.

Στοίβες Η στοίβα... Αποτελεί έναν ειδικό τύπο λίστας/πίνακα με περιορισμένες δυνατότητες λειτουργιών (πράξεων) Επιτρέπει μόνο εισαγωγές και διαγραφές κόμβων στο ένα της άκρο (κορυφή ή ελεύθερο άκρο) Κάθε στιγμή επιτρέπεται είτε η εισαγωγή (push) ενός στοιχείου στην κορυφή ή η διαγραφή (pop) ενός στοιχείου από την κορυφή Λογική... LIFO (Last-In-First-Out) Η υλοποίηση επιτυγχάνεται είτε με συνδεδεμένη λίστα ή με πίνακα

Στοίβες Εικονική αναπαράσταση (σε πίνακα) ένας δείκτης: κορυφή Push(A) Push(B) Push(Γ) Pop() κορυφή Β κορυφή Γ Β κορυφή Β κορυφή κορυφή Α Α Α Α

Στοίβες Παράδειγμα (εφαρμογή) 5 x ( ( ( 7 + 3 ) x ( 6-4 ) ) + 12 ) =? Η στοίβα αποτελεί ιδανική δομή για την επίλυση η σειρά εκτέλεσης των πράξεων καθορίζεται από τις παρενθέσεις η επεξεργασία αρχίζει από αριστερά προς τα δεξιά (ή αντίστροφα)

Στοίβες Παράδειγμα (εφαρμογή) 5 x ( ( ( 7 + 3 ) x ( 6-4 ) ) + 12 ) =? Push(5) Push(7) Push(3) Push(Pop() + Pop()) Push(6) Push(4) Push(Pop() - Pop()) Push(Pop() x Pop()) Push(12) Push(Pop() + Pop()) Push(Pop() x Pop()) Print(Pop())

Ουρές Η ουρά Παρόμοια δομή µε τη στοίβα Δύο βασικές πράξεις εισαγωγές και διαγραφές κόμβων Όμως οι εισαγωγές (push) στο ένα άκρο της λίστας (την ουρά) οι διαγραφές (pop) από το άλλο (την κορυφή) Λογική FIFO (First-In-First-Out) ανάλογο της εξυπηρέτησης πελατών στην τράπεζα

Ουρές Εικονική αναπαράσταση (σε πίνακα) δύο δείκτες: κορυφή, ουρά Push(A) Push(B) Push(Γ) Pop() ουρά κορυφή ουρά κορυφή Α ουρά κορυφή Β Α ουρά κορυφή Γ Β Α ουρά κορυφή Γ Β Α

Δένδρα Όλες οι προηγούμενες δομές είναι γραμμικές (ή μονοδιάστατες) όλα τα στοιχεία τοποθετούνται διαδοχικά το ένα μετά το άλλο Τα δένδρα αποτελούν μη-γραμμικές (ή δυσδιάστατες) δομές έστω μια συνδεδεμένη λίστα στην οποία κάθε κόμβος μπορεί να δείχνει σε περισσότερους από έναν κόμβους...

Δένδρα Το δένδρο αποτελείται από κόμβους (nodes) μπορεί να έχει ένα όνομα και να φιλοξενεί σχετικές πληροφορίες ακμές (edges) μια κατευθυνόμενη σύνδεση μεταξύ δύο κόμβων ο κόμβος εκκίνησης καλείται πατέρας (πρόγονος) και ο κόμβος τερματισμού παιδί (απόγονος)

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

Δένδρα Κάθε δένδρο έχει κόμβους φύλλα στους οποίους καταλήγουν ακμές, ενώ από αυτούς δεν ξεκινάνε ακμές ενδιάμεσους κόμβους στους οποίους καταλήγουν ακμές και από τους οποίους ξεκινάνε ακμές

Δένδρα Βαθμός κόμβου καλείται το πλήθος των παιδιών του Ύψος δένδρου το μεγαλύτερο (σε πλήθος κόμβων) μονοπάτι από τη ρίζα σε ένα φύλλο του δένδρου Κάθε κόμβος του δένδρου αποτελεί τη ρίζα ενός υποδένδρου το οποίο φιλοξενεί όλους τους απογόνους του

Δένδρα ρίζα Α επίπεδο = 0 ΒΔΙΜ = μονοπάτι Β Γ υποδένδρο βαθμός = 3 Δ Ε Ζ ύψος = 5 Η Θ Ι Κ Λ Μ επίπεδο = 4 Κόμβοι φύλλα: {Η, Θ, Μ, Ε, Κ, Λ}

Δένδρα Δυαδικό δένδρο... ένα δένδρο με βαθμό 2 για κάθε κόμβο Β Α Γ Δομή κόμβου Α Δ Ε Ζ Η Δείκτης στο αριστερό παιδί Δείκτης στο δεξιό παιδί

Δένδρα Πλήρες δένδρο όλα τα επίπεδα (ίσως εκτός από το τελευταίο) έχουν το μέγιστο δυνατό αριθμό κόμβων Πλήρες δυαδικό δένδρο Β Α Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο

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

Δομημένος Προγραμματισμός Πλεονεκτήματα: Δημιουργία απλούστερων προγραμμάτων Άμεση μεταφορά των αλγορίθμων σε προγράμματα Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους Ευκολότερη διόρθωση και συντήρηση

Δομή Ακολουθίας χρησιμοποιείται πρακτικά για την αντιμετώπιση απλών προβλημάτων όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών scanf( %d,&a); scanf( %b,&b); c = a + b; printf( %d,c);

Δομή Επιλογής περιλαμβάνει τον έλεγχο κάποιας συνθήκης που μπορεί να έχει δύο τιμές (Αληθής ή Ψευδής) και ακολουθεί η απόφαση εκτέλεσης κάποιας ενέργειας με βάση την τιμή της λογικής αυτής συνθήκης διακρίνεται σε: απλή σύνθετη εμφωλευμένη

Δομή Επιλογής απλή επιλογή if (x > 0) printf( x is positive ); σύνθετη επιλογή if (x > 0) else printf( x is positive ); printf( x negative or zero );

Δομή Επιλογής εμφωλευμένη επιλογή if (x > 0) printf( x is positive ); else if (x == 0) printf( x is zero ); else printf( x negative );

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

Δομή Επανάληψης επαναληπτικό σχήμα με έλεγχο επανάληψης στην αρχή είναι το πιο γενικό σχήμα επαναληπτικής δομής (while) και μπορεί να εκτελεσθεί από καθόλου μέχρι όσες φορές θέλουμε sum = 0; scanf( %i,&x); while (x!= 0) { sum = sum + x; scanf( %i,&x); } printf( %i,sum);

Δομή Επανάληψης επαναληπτικό σχήμα με έλεγχο επανάληψης στο τέλος το σχήμα αυτής της επαναληπτικής δομής (do-while) έχει το χαρακτηριστικό να εκτελείται οπωσδήποτε μία φορά, επειδή ο έλεγχος της συνθήκης τερματισμού γίνεται στο τέλος do { printf( 1. ΕΙΣΑΓΩΓΗ\n ); printf( 2. ΔΙΑΓΡΑΦΗ\n ); printf( 3. ΕΜΦΑΝΙΣΗ\n ); printf( 4. ΕΞΟΔΟΣ\n ); printf( Δώσε επιλογή: ); scanf( %i,&x); switch (x) { case 1: printf( ΕΙΣΑΓΩΓΗ ); break; case 2: printf( ΔΙΑΓΡΑΦΗ ); break; case 3: printf( ΕΜΦΑΝΙΣΗ ); break; } }while (x!= 4);

Δομή Επανάληψης επαναληπτικό σχήμα ορισμένων φορών επανάληψης Το τρίτο σχήμα επαναληπτικής δομής (for) χρησιμοποιείται όταν το πλήθος των επαναλήψεων είναι εκ των προτέρων γνωστό άθροισμα = 0; Για i=0 έως i=9 Διάβασε x άθροισμα = άθροισμα + x; i = i + 1 Τέλος για Εκτύπωσε x

Αναδρομή Η αναδρομή αποτελεί µια βασική έννοια... στα μαθηματικά και την πληροφορική Ορισμός... Ένα πρόγραμμα (αλγόριθμος ή συνάρτηση) είναι αναδρομικό όταν... καλεί τον εαυτό του Είναι απαραίτητη η παρουσία... μιας συνθήκης τερματισμού, η οποία διακόπτει την επόμενη κλήση (όταν ικανοποιηθεί)...

Αναδρομή Παράδειγμα... Η συνάρτηση προσδιορισμού του παραγοντικού ακεραίου Ν! = Ν x (N-1)!, για Ν 1 µε 0! = 1 π.χ., 5! = 5 x 4! = = 5 x 4 x 3! = = 5 x 4 x 3 x 2! = = 5 x 4 x 3 x 2 x 1!= = 5 x 4 x 3 x 2 x 1 x 0! = = 5 x 4 x 3 x 2 x 1 x 1 = 120

Αναδρομή Ο αναδρομικός αλγόριθμος σε C int factorial(int N) { if ( N == 0) return 1; return N * factorial(n-1); } Η υλοποίηση όμως μπορεί να γίνει χωρίς αναδρομή int factorial(int N) { int I, K = 1; for (I = 2; I <= N; I++) { K = K * I; } return K; }

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

Ανάλυση Αλγορίθμων Συνήθως, η λύση ενός προβλήματος δεν «κοστίζει» πάντοτε το ίδιο... π.χ., σε μια σειριακή αναζήτηση ενός αριθμού από ένα πίνακα Ν αριθμών έχουμε... Στην καλύτερη περίπτωση μία πράξη (αν ο αριθμός που ψάχνουμε βρίσκεται στην αρχή) Στη δυσμενέστερη περίπτωση Ν πράξεις (αν ο αριθμός βρίσκεται στο τέλος του πίνακα) Στη μέση περίπτωση Ν/2 πράξεις (συγκρίσεις) Επικεντρώνουμε το ενδιαφέρον µας... Στη δυσμενέστερη περίπτωση...

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

Ανάλυση Αλγορίθμων Οι αλγόριθμοι που εξετάζουμε... έχουν χρόνο εκτέλεσης (χειρότερη περίπτωση) ανάλογο των ακόλουθων συναρτήσεων... Κ σταθερός χρόνος και ανεξάρτητος των δεδομένων logn λογαριθμικός χρόνος των δεδομένων Ν γραμμικός χρόνος ανάλογος των δεδομένων ΝlogN Ν φορές λογαριθμικός αλγόριθμος Ν2 τετραγωνικός αλγόριθμος Ν3 κυβικός αλγόριθμος 2Ν εκθετικός αλγόριθμος

Αλγόριθμοι Ταξινόμησης Το πρόβλημα... Δίνεται... ένα πλήθος στοιχείων σε τυχαία διάταξη αποθηκευμένα σε ένα γραμμικό πίνακα Ζητείται... η ταξινόμησή τους με βάση κάποιο κανόνα (π.χ., αύξουσα τάξη μεγέθους) Βέλτιστη πολυπλοκότητα... Ο(ΝlogN)

Αλγόριθμοι Ταξινόμησης Ταξινόμηση με καταμέτρηση... Αλγόριθμος... Σύγκριση κάθε στοιχείου µε όλα τα υπόλοιπα Καταμέτρηση του πλήθους αυτών που προηγούνται Υπολογισμός της θέσης του στοιχείου στην ταξινομημένη διάταξη 9 8 1 5 7 6 2 Πολυπλοκότητα: Ο(Ν 2 ) σε μια αύξουσα διάταξη το 3ο στοιχείο (μετά τα 1,2) 1 2 5 6 7 8 9

Αλγόριθμοι Ταξινόμησης Ταξινόμηση με επιλογή... Αλγόριθμος... Σαρώνουμε επανειλημμένα τα στοιχεία από την αρχή μέχρι το τέλος Κατά τη σάρωση K... Επιλέγουµε τον ελάχιστο ακέραιο από τους Α[K],,A[N] Τον αντιμεταθέτουμε µε τον Α[Κ] Αποτέλεσμα της σάρωσης Κ: οι Α[1], Α[2],..., Α[Κ] είναι ταξινομημένοι

Αλγόριθμοι Ταξινόμησης Ταξινόμηση με επιλογή... Παράδειγμα... 9 8 1 5 7 6 2 Πολυπλοκότητα: Ο(Ν 2 ) 1 8 9 5 7 6 2 1 2 9 5 7 6 8 1 2 5 9 7 6 8 1 2 5 6 7 9 8 1 2 5 6 7 9 8 1 2 5 6 7 8 9 Κ=1 Κ=2 Κ=3 Κ=4 Κ=5 Κ=6

Αλγόριθμοι Ταξινόμησης Γρήγορη Ταξινόμηση (quick sort) Βασίζεται στην ιδέα του «διαίρει και βασίλευε» (divide and conquer) Το πρόβλημα «σπάει» σε μικρότερα προβλήματα, το καθένα από τα οποία «σπάει» σε ακόμη μικρότερα, κοκ. Η λύση του αρχικού προβλήματος προκύπτει από κατάλληλο συνδυασμό των λύσεων των μικρότερων προβλημάτων

Αλγόριθμοι Ταξινόμησης Γρήγορη Ταξινόμηση (quick sort) Αλγόριθμος... Επιλέγουµε ένα στοιχείο, το στοιχείο άξονα (pivot) Αναδιατάσσουμε τα υπόλοιπα στοιχεία έτσι ώστε» Αριστερά του άξονα να βρίσκονται τα μικρότερα Δεξιά του άξονα τα μεγαλύτερα Επαναλαμβάνουμε τη διαδικασία για τα δύο υποσύνολα (αναδρομικά) Πολυπλοκότητα: Ο(ΝLog2N) (ό,τι καλύτερο εφικτό)

Αλγόριθμοι Ταξινόμησης Γρήγορη Ταξινόμηση (quick sort) Αλγόριθμος... Πώς επιλέγεται ο άξονας σε κάθε σύνολο ; Τυχαία (ή µε κάποιο άλλο κανόνα, ανάλογα µε το σύνολο) Στην τυχαία επιλογή παίρνουμε το 1ο στοιχείο του κάθε συνόλου Πώς υλοποιείται ο διαχωρισμός κάθε συνόλου σε δύο υποσύνολα (βάσει του άξονα) ; Διαπέραση του συνόλου από τα δύο άκρα προς το κέντρο με τη βοήθεια δύο δεικτών Ο αριστερός (δεξιός) δείκτης σταµατά όταν συναντήσει στοιχείο μεγαλύτερο (μικρότερο) από τον άξονα Όταν σταματήσουν και οι δύο δείκτες τους εναλλάσουμε Η διαπέραση συνεχίζει µε επανάληψη των 2 προηγούμενων βημάτων μέχρι τη διασταύρωση των δεικτών

Αλγόριθμοι Ταξινόμησης Γρήγορη Ταξινόμηση (quick sort) Παράδειγμα... Βήμα Α1 Α2 Α3 Α4 Α5 Α6 Α7 Α8 1 22 76 30 14 71 19 7 41 2 22 76 30 14 71 19 7 41 3 22 7 30 14 71 19 76 41 4 22 7 19 14 71 30 76 41 14 7 19 22 71 30 76 41 αριστερό υποσύνολο δεξιό υποσύνολο

Αλγόριθμοι Αναζήτησης Σειριακή Αναζήτηση... Το πρόβλημα... Σε ένα σύνολο Ν στοιχείων σε τυχαία διάταξη αναζητάµε την παρουσία του στοιχείου C Επίλυση... Εξετάζουμε διαδοχικά τα στοιχεία του πίνακα μέχρι την εύρεση του ζητούμενου (στοιχείο C) π.χ., C = 5 9 8 1 5 7 6 2 Πολυπλοκότητα: Ο(Ν) [καλύτερη Ο(1), μέση Ο(Ν/2)]

Αλγόριθμοι Αναζήτησης Δυαδική Αναζήτηση (binary search) Αν τα στοιχεία είναι ταξινομημένα Μπορεί να εφαρμοστεί μια πιο έξυπνη λύση... Ανάλογο της αναζήτησης ενός τηλεφώνου στον κατάλογο του ΟΤΕ Τακτική του «διαίρει και βασίλευε» Ο αλγόριθμος... (για αύξουσα διάταξη) Ανάκτηση του μεσαίου στοιχείου (Μ) του συνόλου Αν αυτό που αναζητάµε (C) ισούται µε το Μ... Η λύση Αν αυτό που αναζητάµε (C) είναι μικρότερο (C<M) αγνοούμε το υποσύνολο δεξιά του Μ και επαναλαμβάνουμε τη διαδικασία στο αριστερό υποσύνολο Αν αυτό που αναζητάµε (C) είναι μεγαλύτερο (C >M) αγνοούμε το υποσύνολο αριστερά του Μ και επαναλαμβάνουμε τη διαδικασία στο δεξιό υποσύνολο

Αλγόριθμοι Αναζήτησης Δυαδική Αναζήτηση (binary search) Παράδειγμα... C=9, N=11 1 2 3 6 7 8 9 11 13 15 17 Βήμα 1ο Βήμα 2ο Βήμα 3ο 1 2 3 6 7 8 9 11 13 15 17 9 11 13 15 17 9 11 Πολυπλοκότητα: O(log 2 N) (ότι καλύτερο εφικτό)