Προηγµένες Υπηρεσίες Τηλεκπαίδευσης στο ΤΕΙ Σερρών

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

Download "Προηγµένες Υπηρεσίες Τηλεκπαίδευσης στο ΤΕΙ Σερρών"

Transcript

1 Προηγµένες Υπηρεσίες Τηλεκπαίδευσης στο ΤΕΙ Σερρών Το εκπαιδευτικό υλικό που ακολουθεί αναπτύχθηκε στα πλαίσια του έργου «Προηγµένες Υπηρεσίες Τηλεκπαίδευσης στο Τ.Ε.Ι. Σερρών», του Μέτρου «Εισαγωγή και Αξιοποίηση των νέων Τεχνολογιών στην Εκπαίδευση» του Επιχειρησιακού Προγράµµατος Κοινωνία της Πληροφορίας

2 Αλγόριθµοι και οµές εδοµένων Το εκπαιδευτικό υλικό βασίζεται στο εγκεκριµένο από το Τµήµα Πληροφορικής και Επικοινωνιών περίγραµµα τουµαθήµατος Αλγόριθµοι και οµές εδοµένων Συντάκτης: Ευάγγελος Γ. Ούτσιος

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

4 Περιγραφή και αναπαράσταση αλγορίθµων Ελεύθερο κείµενο. Φυσική γλώσσα κατά βήµατα. ιάγραµµα ροής. Ψευδοκώδικας.

5 ΒΑΣΙΚΕΣ ΑΛΓΟΡΙΘΜΙΚΕΣ ΟΜΕΣ οµή Ακολουθίας οµή Eπιλογής οµή Επανάληψης

6 οµή επιλογής Απλή επιλογή ΑΝ συνθήκη ΤΟΤΕ Εντολές ΤΕΛΟΣ ΑΝ if (expression) Statements; Σύνθετη επιλογή ΑΝ συνθήκη ΤΟΤΕ if (expression) Εντολές 1 Statements 1; ΑΛΛΙΩΣ else Εντολές 2 Statements 2; ΤΕΛΟΣ ΑΝ

7 οµή επιλογής Eµφωλευµένη επιλογή ΑΝ συνθήκη 1 ΤΟΤΕ if (expression 1) ΑΝ συνθήκη 2 ΤΟΤΕ if (expression 2) Εντολές 1 Statements 1; ΑΛΛΙΩΣ else Εντολές 2 Statements 2; ΤΕΛΟΣ ΑΝ else ΑΛΛΙΩΣ if (expression 3) ΑΝ συνθήκη 3 ΤΟΤΕ Statements 3; Εντολές 3 else ΑΛΛΙΩΣ Statements 4; Εντολές 4 ΤΕΛΟΣ ΑΝ ΤΕΛΟΣ ΑΝ

8 οµή Επανάληψης Επαναληπτικό σχήµα µε έλεγχο επανάληψης στην αρχή ΟΣΟ συνθήκη ΕΠΑΝΕΛΑΒΕ while (expression) Εντολές Statements; ΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣ Επαναληπτικό σχήµα µε έλεγχο επανάληψης στο τέλος ΑΡΧΗ ΕΠΑΝΑΛΗΨΗΣ do Εντολές Statements; ΜΕΧΡΙΣ ΟΤΟΥ συνθήκη while (expression);

9 οµή Επανάληψης Επαναληπτικό σχήµα ορισµένων φορών επανάληψης ΓΙΑ µεταβλητή ΑΠΟ αρχική τιµή ΜΕΧΡΙ τελική τιµή Εντολές ΤΕΛΟΣ ΕΠΑΝΑΛΗΨΗΣ for (variable = initial value; variable<= final value; step) Statements;

10 ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Η καταγραφή των µεγεθών που επηρεάζουν την επίδοση ενός αλγορίθµου είναι µια σηµαντική ενέργεια για την κατανόηση της αποδοτικότητας ενός αλγορίθµου. Για το λόγο αυτό, είναι απαραίτητο να βρεθεί η βασική λειτουργία και η δοµή του αλγορίθµου όπου κυρίως δαπανώνται οι υπολογιστικοί πόροι. Επίδοση αλγορίθµων Ορθότητα αλγορίθµων Πολυπλοκότητα αλγορίθµων

11 οµές εδοµένων Αλγόριθµοι + οµές εδοµένων = Προγράµµατα Ορισµός οµή εδοµένων είναι ένα σύνολο αποθηκευµένων δεδοµένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών.

12 οµές εδοµένων Βασικές λειτουργίες επί των δοµών δεδοµένων: Προσπέλαση (access) Εισαγωγή (insertion) ιαγραφή (deletion) Αναζήτηση (searching) Ταξινόµηση (sorting) Αντιγραφή (copying) Συγχώνευση (merging) ιαχωρισµός (separation)

13 ΑΝΑ ΡΟΜΗ Αναδροµή είναιηµέθοδος κατά την οποία, σε µία γλώσσα προγραµµατισµού, µία διαδικασία ή συνάρτηση έχει την δυνατότητα να καλεί τον εαυτό της. Η υλοποίηση της αναδροµής βασίζεται στην έννοια της στοίβας. Η χρήση της αναδροµής διευκολύνει πολύ τον προγραµµατιστή στην ανάπτυξη και τον έλεγχο ενός προγράµµατος.

14 ΑΝΑ ΡΟΜΗ Παράδειγµα: ΥΠΟΛΟΓΙΣΜΟΣ ΠΑΡΑΓΟΝΤΙΚΟΥ Επαναληπτικός ορισµός: 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;

15 ΑΝΑ ΡΟΜΗ Αναδροµικός ορισµός: n! = 1 αν n= 0, = n*(n-1)! αν n> 0 Συνάρτηση µε αναδροµή: int factorial(int n) int f; if (n = = 0) f = 1; else f = n*factorial(n-1); return f;

16 ΑΝΑΖΗΤΗΣΗ Αναζήτηση (searching) είναι η διεργασία της εύρεσης κάποιας συγκεκριµένης τιµής ανάµεσα από ένα σύνολο τιµών. Το πρόβληµα της αναζήτησης είναι ένα από τα πιο ενδιαφέροντα προβλήµατα της Επιστήµης των Υπολογιστών λόγω της µεγάλης πρακτικότητάς του.

17 ΑΝΑΖΗΤΗΣΗ ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ Ηπιοαπλήµέθοδος αναζήτησης ενός στοιχείου σε µία δοµή δεδοµένων είναι η σειριακή αναζήτηση. Γίνεται προσπέλαση των στοιχείων της δοµής από το πρώτο µέχρι το τελευταίο. Κάθε φορά ελέγχεται το στοιχείο της τρέχουσας θέσης αν είναι το ζητούµενο, οπότε και τελειώνει η αναζήτηση. Αν προσπελασθεί όλη η δοµή καιδενβρεθείτο ζητούµενο στοιχείο, τότε η αναζήτηση θεωρείται ανεπιτυχής.

18 ΑΝΑΖΗΤΗΣΗ 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

19 ΑΝΑΖΗΤΗΣΗ 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 ΑΛΛΙΩΣ ΕΜΦΑΝΙΣΕ εν υπάρχει ΤΕΛΟΣ ΑΝ

20 ΑΝΑΖΗΤΗΣΗ ΥΑ ΙΚΗ ΑΝΑΖΗΤΗΣΗ Όταν τα στοιχεία του πίνακα είναι ταξινοµηµένα, τότε είναι δυνατόν να επιταχυνθεί η διαδικασία αναζήτησης, εφαρµόζοντας τη δυαδική αναζήτηση. Πιο συγκεκριµένα, συγκρίνεται η τιµή του ζητούµενου στοιχείου µε τοµεσαίο στοιχείο του πίνακα. Αν είναι ίσα, τότε η αναζήτηση έχει τελειώσει. Αν όχι, τότε µπορεί ο µισός πίνακας να εξαιρεθεί από τις επόµενες αναζητήσεις γιατί αποκλείεται να περιέχει το ζητούµενο στοιχείο, εφόσον αυτός είναι ταξινοµηµένος. Η διαδικασία αυτή επαναλαµβάνεται µέχρις ότου βρεθεί το στοιχείο ή διαπιστωθεί ότι δεν υπάρχει.

21 ΑΝΑΖΗΤΗΣΗ 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

22 ΑΝΑΖΗΤΗΣΗ 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 ΤΕΛΟΣ ΑΝ

23 ΤΑΞΙΝΟΜΗΣΗ Ταξινόµηση είναι η διαδικασία της τοποθέτησης ενός συνόλου στοιχείων σε µία ιδιαίτερη σειρά. Ησειράαυτήείναισυνήθωςαύξουσα(ascending) ή φθίνουσα (descending). Σκοπός της ταξινόµησης είναι η διευκόλυνση της αναζήτησης στοιχείων του ταξινοµηµένου συνόλου.

24 ΤΑΞΙΝΟΜΗΣΗ ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΑΠΕΥΘΕΙΑΣ ΕΠΙΛΟΓΗ (Straight Selection) Η µέθοδος έχει ως εξής: Επιλέγουµε τοµικρότερο στοιχείο Το ανταλλάσσουµε µε τοπρώτοστοιχείο Επαναλαµβάνουµε για τα υπόλοιπα στοιχεία, µέχρι να µείνει ένα Π.χ

25 Ο αλγόριθµος σε 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; ΤΑΞΙΝΟΜΗΣΗ

26 ΤΑΞΙΝΟΜΗΣΗ ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΑΠΕΥΘΕΙΑΣ ΕΙΣΑΓΩΓΗ (Straight Insertion) Η µέθοδος είναι πολύ δηµοφιλής στους χαρτοπαίχτες και έχει ως εξής: Κάθε στοιχείο, ξεκινώντας από το δεύτερο, τοποθετείται στη σωστή του θέση µετακινώντας, αν χρειαστεί, τα στοιχεία δεξιά του κατά µία θέση. Π.χ

27 Ο αλγόριθµος σε C: 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 ; ΤΑΞΙΝΟΜΗΣΗ

28 ΤΑΞΙΝΟΜΗΣΗ ΤΑΞΙΝΟΜΗΣΗ ΦΥΣΑΛΙ ΑΣ (Bubble Sort) Ο αλγόριθµος βασίζεται στην αρχή της σύγκρισης και ανταλλαγής ζευγών από γειτονικά στοιχεία, µέχρις ότου ταξινοµηθούν όλα τα στοιχεία. Κάθε φορά µετακινείται το µικρότερο στοιχείο της ακολουθίας προς το αριστερό άκρο. Π.χ

29 Οαλγόριθµος σε 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 ; ΤΑΞΙΝΟΜΗΣΗ

30 ΤΑΞΙΝΟΜΗΣΗ ΓΡΗΓΟΡΗ ΤΑΞΙΝΟΜΗΣΗ (Quick Sort) Ο αλγόριθµος βασίζεται στην αρχή της αντιµετάθεσης και είναι η καλύτερη γνωστή µέθοδος ταξινόµησης για τυχαία στοιχεία. Η γρήγορη ταξινόµηση στηρίζεται στην παρατήρηση ότι είναι προτιµότερο οι αντιµεταθέσεις να γίνονται µεταξύ αποµακρυσµένων στοιχείων. Στην αρχή λαµβάνεται το µεσαίο στοιχείο του πίνακα και µετακινείται στη θέση όπου τελικά θα αποθηκευτεί στο ταξινοµηµένο διάνυσµα. Μετά τον προσδιορισµό της τελικής αυτής θέσης, γίνεται αναδιάταξη των υπόλοιπων στοιχείων έτσι ώστε να µην υπάρχει κανένα µικρότερο στοιχείο προς τα αριστερά του και κανένα µεγαλύτερο στοιχείο προς τα δεξιά του.

31 ΤΑΞΙΝΟΜΗΣΗ Έτσι, το µεσαίοαυτόστοιχείοπαίζειτορόλοτουάξονα(pivot) και ο πίνακας έχει διαµεριστεί κατά τέτοιο τρόπο ώστε το αρχικό πρόβληµα έχει αναχθεί σε δύο απλούστερα προβλήµατα, στην ανεξάρτητη δηλαδή ταξινόµησητωνδύουποπινάκων. Μετά τον διαµερισµό του πίνακα, η ίδια διαδικασία εφαρµόζεται στους δύο υποπίνακες, ύστερα στους υποπίνακες των υποπινάκων, κοκ., µέχρις ότου ο κάθε υποπίνακας να αποτελείται από ένα µόνο στοιχείο. Στο σηµείο αυτό ο αρχικός πίνακας έχει ταξινοµηθεί.

32 ΤΑΞΙΝΟΜΗΣΗ Οαλγόριθµος σε 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--; else temp = p[i]; p[i] = p[j]; p[j] = temp; quicksort(left,j-1,p); quicksort(j+1,right,p);

33 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ Γραµµική λίστα (linear list) είναι ένα πεπερασµένο σύνολο από κόµβους x 1, x 2,..., x n όπου το στοιχείο x k προηγείται του στοιχείου x k+1 καιέπεταιτουx k-1. Κατατάσσονται συνήθως σε δύο κατηγορίες: Σειριακές γραµµικές λίστες (sequential linear lists) Συνδεδεµένες γραµµικές λίστες (linked linear lists) Επίσης, οι γραµµικές λίστες χαρακτηρίζονται σαν: Στατικές δοµές δεδοµένων (static data structures) υναµικές δοµές δεδοµένων (dynamic data structures)

34 ΣΕΙΡΙΑΚΕΣ ΛΙΣΤΕΣ Στοίβα (stack) Μπορούµε να την παραλληλίσουµε σανµία στοίβα από πιάτα. Κάθε νέο στοιχείο τοποθετείται στην κορυφή (top). Το στοιχείο που βρίσκεται στην κορυφή της στοίβας εξέρχεται πρώτο. Αυτή η µέθοδος επεξεργασίας ονοµάζεται LIFO (Last In First Out)

35 ΣΕΙΡΙΑΚΕΣ ΛΙΣΤΕΣ Μία στατική στοίβα υλοποιείται µε τηχρήσηενόςµονοδιάστατου πίνακα και ενός δείκτη. ύο είναι οι κύριες λειτουργίες στη στοίβα: Ώθηση (push) στοιχείου στην κορυφή της στοίβας Απώθηση (pop) στοιχείου από τη στοίβα 4 3 top

36 ΣΕΙΡΙΑΚΕΣ ΛΙΣΤΕΣ Υλοποίηση στοίβας σε 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(); abort(); else stack[++(*t)] = obj; int pop(int stack[],int *t) int r ; if (*t < 0) printf("stack empty...\n"); getch(); abort(); else r = stack[(*t)--]; return r;

37 Ουρά (queue) ΣΕΙΡΙΑΚΕΣ ΛΙΣΤΕΣ Την έννοια της ουράς την συναντάµε συχνά στην καθηµερινή µας ζωή, π.χ. ουρά αναµονής µε ανθρώπους. Το άτοµο που είναι πρώτο στην ουρά, εξυπηρετείται και εξέρχεται. Το άτοµο πουµόλις καταφθάνει, τοποθετείται στο τέλος της ουράς. Η µέθοδος αυτή επεξεργασίας ονοµάζεται FIFO (First In First Out)

38 ΣΕΙΡΙΑΚΕΣ ΛΙΣΤΕΣ ύο βασικές λειτουργίες: Εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς Εξαγωγή (dequeue) στοιχείου από το εµπρός άκρο της ουράς Εποµένως, για την υλοποίηση της ουράς χρειάζονται ένας πίνακας και δύο δείκτες ο εµπρός (front) και οπίσω(rear) front rear

39 ΣΕΙΡΙΑΚΕΣ ΛΙΣΤΕΣ Υλοποίηση ουράς σε C: #define N 100 int q[n], front = -1, rear = -1; void enqueue(int q[], int *r, int obj) if (*r = = N-1) printf("queue is full..."); getch(); else q[++(*r)] = obj; void dequeue(int q[], int *f, int r) int x; if (*f = = r) printf("queue is empty...\n"); else x = q[++(*f)]; printf("%d has been deleted...",x);

40 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ Οι στατικές δοµές που µελετήθηκαν, παρουσιάζουν προβλήµατα στην εισαγωγή και διαγραφή κόµβων και στην αποδοτική εκµετάλλευση της διαθέσιµης µνήµης. Κύριο χαρακτηριστικό των συνδεδεµένων λιστών είναι ότι οι κόµβοι τους βρίσκονται σε αποµακρυσµένες θέσεις µνήµης και η σύνδεσή τους γίνεται µε δείκτες.

41 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ Κάθε κόµβος της λίστας υλοποιείται µε µία δοµή (structure) µε δύο στοιχεία. Το ένα µέλος (data) περιέχει τα δεδοµένα (οποιουδήποτε τύπου) του κόµβου και το άλλο µέλος (next) είναι δείκτης προς τον επόµενο κόµβο. Τοποθετείται ένας δείκτης (head) στον πρώτο κόµβο για να προσπελάζεται ηλίστα, ενώ ο δείκτης του τελευταίου κόµβου δείχνει στο NULL για να εντοπίζεται το τέλος της λίστας. data next data next data next data next head NULL

42 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ Παράδειγµα υλοποίησης λίστας ακεραίων στην C: struct node int data; struct node *next; ; typedef struct node * PTR;

43 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ ηµιουργία λίστας PTR list_create(ptr head) PTR current; int x; printf( Give an integer, 0 to stop: ); scanf( %i,&x); if (x = = 0) return NULL; else head = malloc(sizeof(struct node)); head->data = x; current = head; printf( Give an integer, 0 to stop: ); scanf( %i,&x); while (x!=0) current->next = malloc(sizeof(struct node)); current = current->next; current->data = x; printf( Give an integer, 0 to stop: ); scanf( %i,&x); current->next = NULL; return head;

44 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ Εισαγωγή στοιχείου PTR insert_to_list(ptr head, int x) PTR current, previous, newnode; int found; newnode = malloc(sizeof(struct node)); newnode->data = x; newnode->next = NULL; if (head = = NULL) head = newnode; else if (newnode->data < head->data) newnode->next = head; head = newnode; else previous = head; current = head->next; found = 0; while (current!= NULL && found = = 0) if (newnode->data < current->data) found = 1; else previous = current; current = current->next; previous->next = newnode; newnode->next = current; return head;

45 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ ιαγραφή στοιχείου από λίστα PTR delete_from_list(ptr head, int x) PTR current, previous; int found; current = head; if (current = = NULL) printf("empty list...nothing to delete.\n"); getch(); else if (x = = head->data) head = head->next; free(current); else previous = current; current = head->next; found = 0; while (current!= NULL && found = = 0) if (x = = current->data) found = 1; else previous = current; current = current->next; if (found = = 1) previous->next = current->next; free(current); else printf("\nthe character is not in the list."); getch(); return head;

46 Εκτύπωση λίστας void print_list(ptr head) PTR current; current = head; if (current = = NULL) printf("the list is empty.\n"); else while (current!= NULL) printf("%i ", current->data); current = current->next; ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ

47 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ Στοίβα ως Συνδεδεµένη Λίστα Η στοίβα υλοποιείται µε έναν δείκτη top που αρχικοποιείται στο NULL, και δείχνει ότι η στοίβα είναι άδεια. Ηλειτουργίαpush δεν ελέγχει για υπερχείλιση γιατί θεωρητικά η στοίβα µπορεί να έχει όσους κόµβους θέλουµε (αφού δηµιουργείται δυναµικά). Επίσης, η λειτουργίαpop, µε τη βοήθεια της εντολής free επιστρέφει στη διαθέσιµη µνήµη τουη/υ τοχώροπου καταλαµβάνονταν από τον κόµβο που διαγράφηκε.

48 PTR top = NULL; PTR push(int obj, PTR t) PTR newnode; newnode = malloc(sizeof(struct node)); newnode->data = obj; newnode->next = t; t = newnode; return t; ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ PTR pop(ptr t, int *obj) PTR p; if (t = = NULL) printf("stack empty.\n"); getch(); else p = t; t = t->next; *obj = p->data; free(p); return t;

49 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ Ουρά ως Συνδεδεµένη Λίστα Η ουρά υλοποιείται µε τηχρήσηδύοδεικτώνfront και rear που αρχικοποιούνται στην τιµή NULL. Η άδεια ουρά εκφράζεται µε front = NULL. Όπως και στην περίπτωση της στοίβας, δεν χρειάζεται να γίνεται έλεγχος υπερχείλισης από τη στιγµή που η ουρά αυξάνεται δυναµικά.

50 ΣΥΝ Ε ΕΜΕΝΕΣ ΛΙΣΤΕΣ PTR front = NULL, rear = NULL; void enqueue(int obj, PTR *pf, PTR *pr) PTR newnode; newnode = malloc(sizeof(struct node)); newnode->data = obj; newnode->next = NULL; if ((*pf) = = NULL) *pf = newnode; *pr = newnode; else (*pr)->next = newnode; *pr = newnode; void dequeue(ptr *pf, PTR *pr) PTR p; if ((*pf) = = NULL) printf("\nqueue empty. No elements to delete.\n"); else p = *pf; *pf = (*pf)->next; if ((*pf) = = NULL) *pr = *pf; printf("\n%d has been deleted...\n",p->data); free(p); getch();

51 ΕΝ ΡΑ Ορισµός (αναδροµικός) Ένα δένδρο Τ είναι ένα πεπερασµένο σύνολο από έναν ή περισσότερους κόµβους. Ο πρώτοςκόµβος του δένδρου ονοµάζεται ρίζα (root), ενώ οι υπόλοιποι κόµβοι απαρτίζουν άλλα υποσύνολα που µε τη σειρά τους είναι δένδρα και ονοµάζονται υποδένδρα (subtrees).

52 ΕΝ ΡΑ Π.χ. T = (A, B, C, D, E, F, G) A ρίζα Α. B C D E F T1 = (B) T2 = (C, D, E, F, G) G

53 ΕΝ ΡΑ Βαθµός του κόµβου (node degree) Είναι ο αριθµός των υποδένδρων που αρχίζουν από ένα κόµβο. π.χ. Οκόµβος Α έχει βαθµό 2. Οκόµβος C έχει βαθµό 3. Βαθµός του δένδρου (tree degree) Είναι ο µέγιστος βαθµός από όλους τους βαθµούς κόµβων. Τα δένδρα που χρησιµοποιούνται περισσότερο στην πράξη είναι τα δυαδικά δένδρα (binary trees), µε βαθµό 2.

54 ΕΝ ΡΑ Όταν έχει σηµασία η διάταξη των κλαδιών ενός δένδρου, τότε αυτό λέγεται διατεταγµένο(ordered). Μία ενδιαφέρουσα µορφή διατεταγµένου δένδρου είναι το δυαδικό δένδρο αναζήτησης (binary search tree). Ένα δυαδικό δένδρο αναζήτησης είναι οργανωµένο έτσι ώστε για κάθε κόµβο t, όλα τα κλειδιά του αριστερού υποδένδρου να έχουν τιµή µικρότερη από την τιµή τουκόµβου t και όλα τα κλειδιά του δεξιού υποδένδρου να έχουν τιµή µεγαλύτερη από την αντίστοιχη του κόµβου t.

55 ΕΝ ΡΑ ΥΑ ΙΚΑ ΕΝ ΡΑ (Binary trees) Ορισµός Ένα δυαδικό δένδρο αποτελείται από ένα πεπερασµένο σύνολο κόµβων. Το δένδρο είναι είτε άδειο, είτε αποτελείται από δύο άλλα δυαδικάδένδραπουονοµάζονται αριστερό και δεξιό υποδένδρο. Ορισµός στην C: struct treenode char data; struct treenode * left; struct treenode * right; ; typedef struct treenode * PTR;

56 ΕΝ ΡΑ Μία σπουδαία λειτουργία σε ένα δένδρο είναι η διάσχισή του (traversal) ή διέλευση, η επίσκεψη δηλ. όλων των κόµβων του µία φορά. Υπάρχουν τρεις διαφορετικές µέθοδοι διάσχισης: α) Προδιατεταγµένη µέθοδος (preorder traversal) β) Ενδοδιατεταγµένη µέθοδος (inorder traversal) γ) Μεταδιατεταγµένη µέθοδος (postorder traversal)

57 ΕΝ ΡΑ preorder 1. Επίσκεψη της ρίζας 2. Επίσκεψη του αριστερού υποδένδρου 3. Επίσκεψη του δεξιού υποδένδρου inorder 1. Επίσκεψη του αριστερού υποδένδρου 2. Επίσκεψη της ρίζας 3. Επίσκεψη του δεξιού υποδένδρου postorder 1. Επίσκεψη του αριστερού υποδένδρου 2. Επίσκεψη του δεξιού υποδένδρου 3. Επίσκεψη της ρίζας

58 ΕΝ ΡΑ Υλοποίηση στην C: void preorder_traversal(ptr t) if (t!=null) printf("%c ",t->data); preorder_traversal(t->left); preorder_traversal(t->right); void inorder_traversal(ptr t) if (t!=null) inorder_traversal(t->left); printf("%c ",t->data); inorder_traversal(t->right); void postorder_traversal(ptr t) if (t!=null) postorder_traversal(t->left); postorder_traversal(t->right); printf("%c,t->data);

59 Εισαγωγή κόµβου σε υαδικό ένδρο Αναζήτησης: void insert_node(ptr *pt, char x) PTR t; t= *pt; ΕΝ ΡΑ if (t= =NULL) t = malloc(sizeof (struct treenode)); t->data = x; t->left = NULL; t->right = NULL; else if (x<t->data) insert_node(&(t->left),x); else insert_node(&(t->right),x); *pt = t;

60 ΕΝ ΡΑ ιαγραφή κόµβουαπό υαδικό ένδροαναζήτησης: Η διαδικασία της διαγραφής είναι πιο σύνθετη από τη διαδικασία της εισαγωγής. Αν ο κόµβος είναι τερµατικός, τότε είναι εύκολο. Επίσης εύκολη είναι η περίπτωση που ο διαγραφόµενος κόµβος έχει µόνον ένα απόγονο. ύσκολη είναι η περίπτωση που ο κόµβος έχει δύο απογόνους. Σ αυτή την περίπτωση ο κόµβος πρέπει να αντικατασταθεί είτε από τον πιο δεξιό κόµβο του αριστερού υποδένδρου, ή απότονπιο αριστερό κόµβο του δεξιού υποδένδρου.

61 ΕΝ ΡΑ Ισορροπηµένα δένδρα Ένα δυαδικό δένδρο λέγεται ισορροπηµένο κατά ύψος (height balanced tree) αν το ύψος του αριστερού και του δεξιού υποδένδρου κάθε κόµβου διαφέρει το πολύ κατά ένα. Ένα δυαδικό δένδρο λέγεται τέλεια ισορροπηµένο (perfectly balanced tree) αν το πλήθος των κόµβων του αριστερού και του δεξιού υποδένδρου κάθε κόµβου διαφέρει το πολύ κατά ένα.

62 ΕΝ ΡΑ Π.χ. α) Εκφυλισµένο δένδρο β) Ισορροπηµένο κατά ύψος γ) Τέλεια ισορροπηµένο δένδρο δένδρο

63 B-trees Το όνοµα µάλλον προέρχεται από τον όρο balanced tree (ισορροπηµένο δένδρο) και όχι από το binary tree. B-tree τάξης (ή βαθµού) n είναι το δένδρο µε ταεξής χαρακτηριστικά: Η ρίζα έχει το λιγότερο ένα κλειδί και το περισσότερο 2n κλειδιά. Κάθε εσωτερικός κόµβος (εκτός της ρίζας) έχει το λιγότερο n κλειδιά και το περισσότερο 2n κλειδιά. Ένας κόµβος µε m (1<= m <= 2n) κλειδιά έχει m+1 παιδιά. Όλαταφύλλαβρίσκονταιστοίδιοεπίπεδο.

64 B-trees Π.χ

65 B-trees Εισαγωγή σε B-tree Γίνεται πάντα σε έναν κόµβο που είναι φύλλο. Αν ο κόµβος που θα δεχθεί το κλειδί έχει λιγότερα από 2n κλειδιά, η εισαγωγή είναι εύκολη. Αν ο κόµβος έχει 2n κλειδιά, η εισαγωγή είναι αδύνατη γιατί δηµιουργείται υπερχείλιση. Τότε ο κόµβος διασπάται σε δύο άλλους κόµβους. Το µεσαίο κλειδί ανεβαίνει στον κόµβο πρόγονο των δύο διασπασθέντων και τα υπόλοιπα κλειδιά διαµοιράζονται σ αυτούς τους δύο κόµβους. Μία διάσπαση µπορεί να έχει ως αποτέλεσµα τη διάσπαση ενός κόµβου που βρίσκεται στο πιο πάνω επίπεδο κ.ο.κ. Στην πιο ακραία περίπτωση υπάρχει το ενδεχόµενο διάσπασης της ρίζας, οπότε το ύψος του δένδρου αυξάνει κατά ένα.

66 ΓΡΑΦΟΙ Ορισµοί Ένας γράφος G χαρακτηρίζεται από δύο σύνολα V και E. Το σύνολο V είναι ένα πεπερασµένο διάφορο του κενού σύνολο που περιέχει ως στοιχεία τις κορυφές (vertices) του γράφου. Το σύνολο E έχει ως στοιχεία τα ζευγάρια κορυφών του γράφου που ορίζουν τις ακµές (edges). Τα σύµβολα V(G), E(G) και G(V,E) χρησιµοποιούνται αντίστοιχα για την αναπαράσταση των συνόλων V, E και του γράφου G.

67 ΓΡΑΦΟΙ Π.χ G1 G2 G3

68 ΓΡΑΦΟΙ Ένας γράφος ονοµάζεται µη-κατευθυνόµενος (undirected) όταν τα ζευγάρια των κορυφών που ορίζουν τις ακµές δεν είναι διατεταγµένα. ηλαδή, τα ζευγάρια (v1,v2) και (v2,v1) ορίζουν την ίδια ακµή. Οι γράφοι G1, G2 του προηγούµενου σχήµατος είναι µηκατευθυνόµενοι. Ένας γράφος ονοµάζεται κατευθυνόµενος (directed graph) όταν κάθε ακµή του ορίζεται από ένα διατεταγµένο ζευγάρι κορυφών. Συµβολίζουµε τοζευγάρι αυτό <v1,v2> και θεωρούµε την κατεύθυνση από την κορυφή v1, που ονοµάζεται ουρά (tail), προς την v2, που ονοµάζεται κεφαλή (head). Ο γράφοςg3 του σχήµατος είναι κατευθυνόµενος.

69 ΓΡΑΦΟΙ Τα σύνολα V των γράφων G1, G2, G3 είναι: V(G1) = (1,2,3,4) V(G2) = (1,2,3,4,5,6,7) V(G3) = (1,2,3) Τα σύνολα E ορίζονται ως εξής: E(G1) = ( (1,2), (1,3), (1,4), (2,3), (2,4), (3,4) ) E(G2) = ( (1,2), (1,3), (2,4), (2,5), (3,6), (3,7) ) E(G3) = ( <1,2>, <2,1>, <2,3> ) Ένας µη-κατευθυνόµενος γράφος µε n κορυφές λέγεται πλήρης (complete) αν έχει ακριβώς ακµές. π.χ. ογράφοςg1 του σχήµατος είναι πλήρης.

70 ΓΡΑΦΟΙ Αν (v1,v2) είναι µία ακµή του συνόλου E(G), τότε οι κορυφές v1 και v2 λέγονται διπλανές (adjacent). H ακµή (v1,v2) ονοµάζεται στιγµιότυπο (incident) των κορυφών v1 και v2 και αν δύο κορυφές v1 και v2 δεν συνδέονται µεταξύ τους ονοµάζονται ανεξάρτητες (independent). Μονοπάτι (path) από µία κορυφή vm προς µία άλλη κορυφή vn ορίζεται η λίστα των διαδοχικών κορυφών [vm,...,vn] που συνδέονται µε ακµές που ανήκουν στο E(G). Για παράδειγµα, το [1,2,3,4] είναι ένα µονοπάτι από την κορυφή 1 στην κορυφή 4 στο γράφο G1 του σχήµατος. Μήκος (length) µονοπατιού είναι ο αριθµός των ακµών που υπάρχουν στο µονοπάτι. Στο προηγούµενο παράδειγµα τοµήκος του µονοπατιού είναι 3. Ένα µονοπάτι ονοµάζεται απλό (simple) όταν καµία κορυφή δεν εµφανίζεται παραπάνω από µία φορά σ αυτό.

71 ΓΡΑΦΟΙ Π.χ. Το [1,2,3,4] είναι απλό µονοπάτι, ενώ το [1,2,4,2] δεν είναι. Το [1,2,3,2] δεν είναι µονοπάτι του G3 γιατί η ακµή <3,2> δεν ανήκει στο E(G3). Κύκλος (cycle) είναι ένα απλό µονοπάτι όπου ταυτίζεται η πρώτη και η τελευταία κορυφή. Π.χ. το µονοπάτι [1,2,3,1] του G1 είναι κύκλος. Απ αυτό συµπεραίνουµε ότι ένα δένδρο είναι ένας γράφος που δεν έχει καθόλου κύκλους. Βαθµός (degree) κορυφής λέγεται ο αριθµός των ακµών που είναι στιγµιότυπα της κορυφής.

72 ΓΡΑΦΟΙ ΜΕΘΟ ΟΙ ΑΝΑΠΑΡΑΣΤΑΣΗΣ ΓΡΑΦΩΝ Πίνακες διπλανών κορυφών (adjacency matrices) Λίστες διπλανών κορυφών (adjacency lists)

73 ΓΡΑΦΟΙ Αναπαράσταση γράφου µε Πίνακα ιπλανών Κορυφών Ένας γράφος G µε n κορυφές µπορεί να αναπαρασταθεί µε τη βοήθεια ενός δισδιάστατου πίνακα N*N. To στοιχείο (i, j) του πίνακα παίρνει την τιµή 1 αν η ακµή (vi, vj) ανήκει στο E(G), αλλιώς παίρνει την τιµή 0. Για παράδειγµα, οι πίνακες διπλανών κορυφών για τους γράφους G1, G3 του προαναφερθέντος σχήµατος είναι: G1 G3 Υλοποίηση στην C: int graph[n][n];

74 ΓΡΑΦΟΙ Αναπαράσταση γράφου µε Λίστες ιπλανώνκορυφών Σ αυτή την αναπαράσταση του γράφου που αποτελείται από n κορυφές, ορίζεται ένας πίνακας n θέσεων τα στοιχεία του οποίου είναι συνδεδεµένες λίστες. Κάθε κόµβος της λίστας στη θέση i του πίνακα αναπαριστά κορυφή του γράφου, η οποία συνδέεται µε την κορυφή i.

75 ΓΡΑΦΟΙ Π.χ NULL NULL NULL NULL 1 NULL 2 2 NULL NULL

76 ΓΡΑΦΟΙ ΜΕΘΟ ΟΙ ΙΑΣΧΙΣΗΣ ΓΡΑΦΩΝ Τα προβλήµατα που συνήθως αντιµετωπίζουµε στους γράφους, καταλήγουν σε αλγορίθµους που σχετίζονται µε την εύρεση ενός µονοπατιού, το οποίο να συνδέει µία αρχική κορυφή (κόµβος εκκίνησης) µε µία τελική κορυφή (κόµβος άφιξης). Από τους βασικότερους αλγόριθµους γράφων είναι αυτοί που µας διασφαλίζουν τρόπους επίσκεψης όλων των κορυφών ενός γράφου. Αναζήτηση µε προτεραιότητα βάθους (depth first search) Αναζήτηση µε προτεραιότητα πλάτους (breadth first search)

77 Αναζήτηση µε Προτεραιότητα Βάθους Υλοποιείται µε τη χρήση στοίβας. ΓΡΑΦΟΙ α) Επισκεπτόµαστε την κορυφή. β) Τοποθετούµε (push) την κορυφή σε µίαστοίβαγιανατηθυµόµαστε. γ) Τη µαρκάρουµε, ώστε να µη την επισκεφθούµε ξανά. Κανόνας 1 Αν είναι δυνατόν, επισκεπτόµαστε µία διπλανή κορυφή που δεν την έχουµε ξανα-επισκεφθεί, τη µαρκάρουµε και την τοποθετούµε στη στοίβα. Κανόνας 2 Αν δεν µπορούµε ναακολουθήσουµε τον Κανόνα 1, τότε, αν είναι δυνατόν, εξάγουµε (pop) µία κορυφή από τη στοίβα. Κανόνας 3 Αν δεν µπορούµε ναακολουθήσουµε τον Κανόνα 1 ή τονκανόνα2, τότε έχουµε τελειώσει.

78 ΓΡΑΦΟΙ Π.χ. A B C D E F H G I H σειρά είναι A,B,F,H,C,D,G,I, E.

79 ΓΡΑΦΟΙ Αναζήτηση µε Προτεραιότητα Πλάτους Yλοποιείται µε τη χρήση µίας ουράς. Επισκεπτόµαστε την κορυφή και την κάνουµε τρέχουσα κορυφή. Ύστερα, ακολουθούµε τουςεξήςκανόνες: Κανόνας 1 Επίσκεψη της επόµενης (αν υπάρχει) κορυφής, που είναι διπλανή στην τρέχουσα κορυφή και δεν την έχουµε ακόµα επισκεφθεί, τη µαρκάρουµε και την εισάγουµε στην ουρά(enqueue). Κανόνας 2 Αν δεν µπορούµε ναεφαρµόσουµε τον Κανόνα 1, επειδή δεν υπάρχουν άλλες κορυφές που δεν έχουµε ακόµα επισκεφθεί, εξάγουµε (dequeue) µία κορυφή από την ουρά (αν αυτό είναι εφικτό) και την κάνουµε τρέχουσακορυφή. Κανόνας 3 Αν δεν µπορούµε ναεφαρµόσουµε τον Κανόνα 2, επειδή η ουρά είναι άδεια, τότε έχουµε τελειώσει. Άρα, η σειρά επίσκεψης είναι A, B, C, D, E, F, G, H, I.

80 ΠΙΝΑΚΕΣ ΚΑΤΑΚΕΡΜΑΤΙΣΜΟΥ Ένας πίνακας κατακερµατισµού (hash table) είναι µία δοµή που προσφέρει πολύ γρήγορη εισαγωγή και αναζήτηση. Ενα σηµαντικό θέµα είναι πώς ένα πλήθος από κλειδιά θα µετασχηµατισθεί σε ένα πλήθος από θέσεις πίνακα. Σε ένα πίνακα κατακερµατισµού αυτό επιτυγχάνεται µε µία συνάρτηση κατακερµατισµού (hashing function).

81 ΠΙΝΑΚΕΣ ΚΑΤΑΚΕΡΜΑΤΙΣΜΟΥ ΣΥΓΚΡΟΥΣΕΙΣ (Collisions) Όταν δύο διαφορετικά κλειδιά διεκδικούν την ίδια θέση του πίνακα. Αυτή η κατάσταση ονοµάζεται σύγκρουση (collision). Τα δύο στοιχεία που διεκδικούν την ίδια θέση στον πίνακα ονοµάζονται συνώνυµα (synonyms). Μία προσέγγιση για τη λύση στο πρόβληµα αυτό, είναι να εξετάσουµε τον πίνακα, να βρούµε µία άδεια θέση και να εισάγουµε εκεί το νέο στοιχείο. Αυτή η τεχνική ονοµάζεται ανοιχτή διευθυνσιοδότηση (open addressing). Μία δεύτερη προσέγγιση είναι η δηµιουργία ενός πίνακα που αποτελείται από συνδεδεµένες λίστες. Έτσι, όταν συµβεί σύγκρουση, το νέο στοιχείο εισάγεται στη λίστα της συγκεκριµένης θέσης του πίνακα. Αυτή η τεχνική ονοµάζεται ξεχωριστή σύνδεση (separate chaining).

82 Πίνακας χαρακτηριστικών οµών εδοµένων οµή εδοµένων Πλεονεκτήµατα Μειονεκτήµατα ΠΙΝΑΚΑΣ Γρήγορη εισαγωγή, πολύ γρήγορη προσπέλαση αν η θέση είναι γνωστή Αργή αναζήτηση, αργή διαγραφή, προκαθορισµένο µέγεθος ΣΤΟΙΒΑ LIFO λειτουργία Αργή προσπέλαση σε άλλα στοιχεία ΟΥΡΑ FIFO λειτουργία Αργή προσπέλαση σε άλλα στοιχεία ΣΥΝ Ε ΕΜΕΝΗ ΛΙΣΤΑ ΥΑ ΙΚΟ ΕΝ ΡΟ Γρήγορη εισαγωγή και διαγραφή Γρήγορη αναζήτηση, εισαγωγή και διαγραφή Αργή αναζήτηση Αλγόριθµος διαγραφής πολύπλοκος ΓΡΑΦΟΣ Απεικονίζει καταστάσεις πραγµατικού κόσµου Μερικοί αλγόριθµοι είναι αργοί και πολύπλοκοι

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 Εισαγωγή ΕΦΑΡΜΟΣΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Αναδροµή είναι η µέθοδος κατά την οποία, σε µία γλώσσα προγραµµατισµού, µία διαδικασία ή συνάρτηση έχει την δυνατότητα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ιαφάνειες παρουσίασης #11 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα

Διδάσκων: Κωνσταντίνος Κώστα Διάλεξη Ε4: Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Δυαδικά Δένδρα Αναζήτησης Ισοζυγισμένα Δένδρα & 2-3 Δένδρα Διδάσκων: Κωνσταντίνος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v. ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος

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

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

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035). Βασικές Δοµές Δεδοµένων Σύντοµη επανάληψη (ΕΠΛ 035). Περίληψη Γραµµικές Δοµές Δεδοµένων Πίνακες Λίστες Στοίβες Ουρές Γράφοι Δέντρα Γραµµικές Δοµές Πίνακας (array) A[0] A[1] A[2] A[ ] A[n-1] Προκαθορισµένη

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

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

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

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

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

υναµικές οµές εδοµένων υναµικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων Γενικά υναµική έσµευση Μνήµης οµή τύπου structure αυτοαναφορικές δοµές Η δήλωση typedef στη C Αναπαράσταση

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 23: οµές εδοµένων και Αλγόριθµοι Ενδιάµεση Εξέταση Ηµεροµηνία : ευτέρα, 3 Νοεµβρίου 2008 ιάρκεια : 2.00-4.00 ιδάσκουσα : Άννα Φιλίππου Ονοµατεπώνυµο: ΣΚΕΛΕΤΟΙ

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

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (path) o Πρόγονος απόγονος (ancestor, descendant)

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

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

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

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

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

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα #2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα ηµήτρης Ν. Σερπάνος Εργαστήριο Συστηµάτων Υπολογιστών Τµήµα Ηλεκτρολόγων Μηχ. & Τεχνολογίας Υπολογιστών Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα Αλγόριθµοι:

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, Γράφοι Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Γράφοι - ορισµοί και υλοποίηση Τοπολογική Ταξινόµηση ιάσχιση Γράφων ΕΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 26 - Γράφοι Ηπιο

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 10: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

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

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

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

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

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ 1 ένδρα εσωτερικός κόµβος u το δένδρο έχει ύψος 4 u έχει ύψος 3 w έχει βάθος 2 κόµβος ένδρο: γράφηµα χωρίς κύκλους o Ρίζα (root) o Κόµβος (node) o Ακµή (edge) o Γονέας (parent) Παιδί (child)

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

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

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα ιοικητικής Επιστήµης & Τεχνολογίας ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Κεφάλαιο 9 οµές εδοµένων σε C Γιώργος Γιαγλής Περίληψη Κεφαλαίου 9 οµές εδοµένων υναµικές

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

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

Βασικές οµές εδοµένων Βασικές οµές εδοµένων Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αφηρηµένοι Τύποι εδοµένων Οι ΑΤ Στοίβα και Ουρά Υλοποίηση των ΑΤ Στοίβα και Ουρά µε ιαδοχική και υναµική Χορήγηση Μνήµης

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

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

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

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

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

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 10 ο Γράφοι Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Γράφοι Ορισµός Αφηρηµένος τύπος δεδοµένων Υλοποίηση Αναζήτηση έντρο

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

Insert(K,I,S) Delete(K,S)

Insert(K,I,S) Delete(K,S) ΕΝΟΤΗΤΑ 5 ΣΥΝΟΛΑ & ΛΕΞΙΚΑ Φατούρου Παναγιώτα 1 Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενα από έναν αριθµό και

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

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

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

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις Άσκηση 1 Γράψτε μία αναδρομική συνάρτηση που θα παίρνει ως παράμετρο ένα δείκτη στη ρίζα ενός δυαδικού δένδρου και θα επιστρέφει το βαθμό του

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

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

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

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

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1 ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ ΗΥ240 - Παναγιώτα Φατούρου 1 ένδρα Κόµβοι (nodes) Ακµές (edges) Ουρά και κεφαλή ακµής (tail, head) Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) Μονοπάτι (path) Πρόγονος απόγονος

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 16 Δένδρα (Trees) 1 / 42 Δένδρα (Trees) Ένα δένδρο είναι ένα συνδεδεμένο γράφημα χωρίς κύκλους Για κάθε

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

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

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

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

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

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

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

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1 Γράφοι Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Γράφοι - ορισµοί και υλοποίηση Διάσχιση Γράφων Τοπολογική Ταξινόµηση ΕΠΛ 23 Δοµές Δεδοµένων και Αλγόριθµοι - Γράφοι Η πιο γενική µορφή δοµής

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης 1. Στόχος του εργαστηρίου Στόχος του δέκατου εργαστηρίου

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

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων

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

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

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

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

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση

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

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

ΚΕΦΑΛΑΙΟ 3 Ο ΟΜΕΣ Ε ΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 27 ΚΕΦΑΛΑΙΟ 3 Ο ΟΜΕΣ Ε ΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΕΡΙΕΧΟΜΕΝΑ Η έννοια της δοµής δεδοµένων Βασικές λειτουργίες επί των δοµών δεδοµένων Κατηγορίες δοµών δεδοµένων Πίνακες Στοίβες Ουρές Αρχεία Λίστες ένδρα -

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

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

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

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

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

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

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

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

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

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

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

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V Γράφοι Ορολογία γράφος ή γράφηµα (graph) Ορισµός: G = (V, E) όπου V:ένα σύνολο E:µια διµελής σχέση στο V Ορολογία (συνέχεια) κάθε v V ονοµάζεται κορυφή (vertex) ή κόµβος (node) κάθε (v 1, v 2 ) Ε ονοµάζεται

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

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

6η Διάλεξη Διάσχιση Γράφων και Δέντρων ΘΕΩΡΙΑ ΓΡΑΦΩΝ 6 η Διάλεξη Διάσχιση Γράφων και Δέντρων Αλγόριθμος αναζήτησης σε Βαθος Αλγόριθμος αναζήτησης κατά Πλάτος Αλγόριθμοι για Δένδρα Εύρεση ελαχίστων Γεννητορικών (Επικαλύπτοντα) Δένδρων Διάσχιση

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

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

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

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

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

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

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

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου Ορισµοί κεφαλαίου Τα δεδοµένα είναι η αφαιρετική αναπαράσταση της πραγµατικότητας και συνεπώς µια απλοποιηµένη όψη της οµή εδοµένων είναι ένα σύνολο αποθηκευµένων δεδοµένων που υφίστανται επεξεργασία από

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εύρεση, εισαγωγή, διαγραφή) - Σύγκριση Συνδεδεμένων Λιστών με Πίνακες

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

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

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

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

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

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

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

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

Οι δομές δεδομένων στοίβα και ουρά Καθηγητής Πληροφορικής Απαγορεύεται η αναπαραγωγή των σημειώσεων χωρίς αναφορά στην πηγή Βίντεο: https://youtu.be/j8petzztqty Οι δομές δεδομένων στοίβα και ουρά Εισαγωγή Στα πλαίσια του μαθήματος της Ανάπτυξης

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

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

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

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

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

IsEmptyList(L): επιστρέφει true αν L = < >, false ΕΝΟΤΗΤΑ 3 ΓΡΑΜΜΙΚΕΣ ΛΙΣΤΕΣ Ορισµός Γραµµικές Λίστες Γραµµική λίστα (linear list) είναι ένα σύνολο από n 0 κόµβους L 0, L 1,..., L n-1, όπου το στοιχείο L 0 είναι το πρώτο στοιχείο (ή ο πρώτος κόµβος),

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

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

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

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

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

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

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

(Εργασίες Μελέτες περιπτώσεων)

(Εργασίες Μελέτες περιπτώσεων) Τμήμα Μηχανικών Πληροφορικής Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Head node Data Next node Data Next Δεδομένο 2 Δεδομένο 1 Δομές Δεδομένων (Εργασίες Μελέτες περιπτώσεων) Δρ. Πάρις Μαστοροκώστας Καθηγητής

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

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

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί

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

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

Δομές Δεδομένων & Αλγόριθμοι - Δυαδικά Δένδρα (binary trees) - Δυαδικά Δένδρα Αναζήτησης (binary search trees) 1 Δυαδικά Δένδρα Ορισμοί Λειτουργίες Υλοποιήσεις ΑΤΔ Εφαρμογές 2 Ορισμοί (αναδρομικός ορισμός) Ένα δένδρο t είναι ένα πεπερασμένο

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

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ταξινοµηµένες Λίστες µε δυναµική δέσµευση µνήµης Αναδροµκές συναρτήσεις ΕΠΛ 12 Αρχές Προγραµµατισµού ΙΙ 1 Λίστες

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

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

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

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

Κεφάλαιο 3 : εδοµένα. Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση. Προγράµµατα

Κεφάλαιο 3 : εδοµένα. Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση. Προγράµµατα εδοµένα Αλγόριθµοι + οµές εδοµένων = Προγράµµατα Πίνακες Στοίβα Ουρά Αναζήτηση Ταξινόµηση Κεφάλαιο 3 : οµές εδοµένων και Αλγόριθµοι Στοίβα Στη δοµή δεδοµένων στοίβα τα δεδοµένα στοιβάζονται το ένα πάνω

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

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

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

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

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

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

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

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

Βασικές Δομές Δεδομένων Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση

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

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

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

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Φεβρουαρίου 0 / ένδρα Ενα δένδρο είναι

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

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

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη

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

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS) ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS) Ταχεία Αναζήτηση Σε πίνακα: δυαδική αναζήτηση (binary search) σε ταξινοµηµένο πίνακα O(log n) Σε δένδρο: αναζήτηση σε ισοζυγισµένο δένδρο O(log n) Σε λίστα: Μπορούµε

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

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

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές

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

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research ΑΛΓΟΡΙΘΜΟΙ ΜΕ C ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής CMOR Lab Computational Methodologies and Operations Research Δέντρα (5) Τ ένα δέντρο i ένας κόμβος στο επίπεδο k j ένας κόμβος στο επίπεδο k+1 } :

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:

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

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

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

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

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

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 Δοµές Δεδοµένων Ι Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Δοµές Δεδοµένων Ι Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 9-1 Σωροί Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθµος ταξινόµησης HeapSort Παραλλαγές Σωρών ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι

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

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες)

Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 15: Δομές Δεδομένων IV (Διπλά Συνδεδεμένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 15-1 Περιεχόμενο

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

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης Δοµές Δεδοµένων 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων Ε. Μαρκάκης Περίληψη Quicksort Χαρακτηριστικά επιδόσεων Μη αναδροµική υλοποίηση Δέντρα Μαθηµατικές ιδιότητες Δοµές Δεδοµένων 11-2

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

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL

Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL Υλικό από τις σηµειώσεις Ν. Παπασπύρου, 2006 Δέντρα δυαδικής αναζήτησης Δενδρικές δοµές δεδοµένων στις οποίες Όλα τα στοιχεία στο αριστερό υποδέντρο της ρίζας είναι

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

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

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

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

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

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

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

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή σε δενδρικές δομές δεδομένων, Ορισμοί και πράξεις Αναπαράσταση δενδρικών δομών

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