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

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

Transcript

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

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

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

4 Σκοποί ενότητας[1] Να γνωρίζουν τους αλγορίθμους που επιλύουν το πρόβλημα της αναζήτησης είτε με γραμμική αναζήτηση είτε με δυαδική αναζήτηση. Η αποθήκευση των δεδομένων γίνεται με πίνακα ή με συνδεδεμένη λίστα διατεταγμένη ή μη διατεταγμένη. Με βάση τη δυαδική αναζήτηση προτείνεται ως αποθηκευτική δομή το δυαδικό δένδρο αναζήτησης. 4

5 Σκοποί ενότητας[2] Nα εισάγει τις Βασικές έννοιες για τα δένδρα, τα Δυαδικά δέντρα, τα Πλήρη δέντρα και τη Χρήση συνδεδεμένων δομών Να κατανοήσουν τη δδ Δυαδικό Δένδρο Αναζήτησης Τις πράξεις σε ΔΔΑ (εισαγωγή κόμβου, διαγραφή, αναζήτηση) και τις αντίστοιχες υλοποιήσεις του 5

6 Περιεχόμενα ενότητας[1] Εισαγωγή Γραμμική αναζήτηση &Διαδικασία γραμμικής αναζήτησης πίνακα Διαδικασία γραμμικής αναζήτησης συνδ. Λίστας Ανάλυση αλγορίθμου γραμμικής αναζήτησης Αλγόριθμος γραμ. αναζήτησης διατεταγμένης λίστας & Ανάλυση αλγορίθμου Αναδρομική δυαδική αναζήτηση 6

7 Περιεχόμενα ενότητας[2] Βασικές έννοιες Βασικές έννοιες: παράδειγμα Δυαδικά δέντρα Πλήρη δέντρα Χρήση συνδεδεμένων δομών 7

8 Περιεχόμενα ενότητας[3] Δυαδικά δέντρα αναζήτησης Δυαδικά δέντρα αναζήτησης: παράδειγμα Διαδικασία αναζήτησης σε ΔΔΑ Κατασκευή ΔΔΑ Διαδικασία εισαγωγής στοιχείου σε ΔΔΑ Εισαγωγή στοιχείων σε ΔΔΑ: παράδειγμα Διαγραφή κόμβου από ΔΔΑ Διαδικασία διαγραφής Διαδικασία αναζήτησης σε ΔΔΑ (2) 8

9 Γραμμική Αναζήτηση και Δυαδική Αναζήτηση 9

10 Εισαγωγή -1- Σε πολλές εφαρμογές, όταν πρόκειται να αναζητήσουμε ένα στοιχείο μέσα σε μια συλλογή στοιχείων δεδομένων, μπορούμε να οργανώσουμε αυτά τα δεδομένα σαν μια λίστα: L1, L2, L3,..., Ln Με αναζήτηση στη λίστα αυτή μπορούμε να δούμε αν κάποιο από τα στοιχεία Li έχει μια συγκεκριμένη τιμή. 10

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

12 Γραμμική αναζήτηση Όταν εκτελούμε γραμμική αναζήτηση (linear search), ξεκινάμε με το πρώτο στοιχείο της λίστας και ανιχνεύουμε τη λίστα σειριακά μέχρι να βρούμε το στοιχείο που αναζητάμε ή μέχρι να φτάσουμε στο τέλος της λίστας. Αν υποθέσουμε ότι χρησιμοποιείται η υλοποίηση λίστας με σειριακή αποθήκευση σε πίνακα, τότε η διαδικασία γραμμικής αναζήτησης μιας λίστας μπορεί να είναι η ακόλουθη. 12

13 Διαδικασία γραμμικής αναζήτησης πίνακα -1- void LinearSearch(ListType List, int, ListElementType Item, boolean *Found, int *Location) /*Δέχεται: Μια λίστα n στοιχείων αποθηκευμένα στον πίνακα L και ένα στοιχείο Item. Λειτουργία: Εκτελεί γραμμική αναζήτηση των στοιχείων L[1], L[2],..., L[n] για το στοιχείο Item. Επιστρέφει: Found=TRUE και στην Location την θέση του στοιχείου Item, αν η αναζήτηση είναι επιτυχής, διαφορετικά Found=FALSE *ης μιας λίστας μπορεί να είναι η ακόλουθη. 13

14 Διαδικασία γραμμικής αναζήτησης πίνακα -2- { } *Found = FALSE; *Location =1; while (!(*Found) && (*Location) <= n) if (Item == L[*Location]) Found = TRUE; else Location =++; Στη διαδικασία αυτή υποθέτουμε ότι το αναγνωριστικό ListType έχει δηλωθεί ως ένας πίνακας στοιχείων τύπου ListElementType και οι δείκτες του παίρνουν τιμές από 1 έως μια σταθερά ListLimit. 14

15 Διαδικασία γραμμικής αναζήτησης συνδ. Λίστας -1- void LinkedLinearSearch(ListPointer List, ListElementType Item, boolean * Found, ListPointer *LocPtr) /*Δέχεται: Μια συνδεδεμένη λίστα, με τον δείκτη L να δείχνει στον πρώτο κόμβο, και ένα στοιχείο Item. Λειτουργία: Εκτελεί γραμμική αναζήτηση σ' αυτήν την συνδεδεμένη λίστα για έναν κόμβο που να περιέχει το στοιχείο Item. Επιστρέφει: Found=TRUE και ο δείκτης LocPtr δείχνει στον κόμβο που περιέχει το στοιχείο Item, αν η αναζήτηση είναι επιτυχής, διαφορετικά Found=FALSE.*/ 15

16 Διαδικασία γραμμικής αναζήτησης συνδ. Λίστας -2- { *Found = FALSE; } *LocPtr = List; while (!(*Found) && (*LocPtr!= NULL) if (Item == LocPtr->Data) *Found = TRUE; else *LocPtr = LocPtr->Next; 16

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

18 Ανάλυση αλγορίθμου γραμμικής αναζήτησης -2- Παράδειγμα: έστω ότι αναζητούμε τον αριθμό 12 στην παρακάτω λίστα: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 Όταν φτάσουμε στον αριθμό 13, δεν υπάρχει λόγος να συνεχίσουμε την αναζήτηση, αφού ο 13 είναι μεγαλύτερος από τον 12 κι επομένως και οι αριθμοί που έπονται του 13 είναι επίσης μεγαλύτεροι του

19 Αλγόριθμος γραμ. αναζήτησης διατεταγμένης λίστας -1- /*Δέχεται: Μια διατεταγμένη λίστα L1, L2,..., Ln με τα στοιχεία σε αύξουσα διάταξη και ένα στοιχείο Item. Λειτουργία: Εκτελεί μια γραμμική αναζήτηση της διατεταγμένης λίστας για το στοιχείο Item. Επιστρέφει: Found=TRUE και η Location είναι ίση με τη θέση του στοιχείου Item, αν η αναζήτηση είναι επιτυχής, διαφορετικά Found=FALSE.*/ 19

20 Αλγόριθμος γραμ. αναζήτησης διατεταγμένης λίστας Found FALSE DoneSearching FALSE Location 1 20

21 Αλγόριθμος γραμ. αναζήτησης διατεταγμένης λίστας Όσο DoneSearching == FALSE επανάλαβε Αν Item == LLocation τότε Found TRUE DoneSearching TRUE Αλλιώς_αν Item < LLocation ή Location == n τότε DoneSearching TRUE Αλλιώς Location Location + 1 Τέλος_αν Τέλος_επανάληψης 21

22 Ανάλυση αλγορίθμου -1- Αν το στοιχείο Item είναι κάποιο από τα L1, L2,..., Ln, τότε κατά μέσο όρο θα γίνουν n/2 συγκρίσεις του Item με το Li μέχρι να τερματιστεί η επανάληψη. Αν, όμως, το ζητούμενο στοιχείο είναι μικρότερο από όλα τα Li, τότε η σύγκριση του Item με το LLocation στο πρώτο πέρασμα από το βρόχο θα θέσει την DoneSearching ίση με TRUE και ο βρόχος θα τερματιστεί. 22

23 Ανάλυση αλγορίθμου -2- Όπως είναι φανερό, η γραμμική αναζήτηση για διατεταγμένες λίστες μπορεί να απαιτεί λιγότερες συγκρίσεις από ό,τι για μη διατεταγμένες λίστες. Στην χειρότερη περίπτωση, το Item είναι μεγαλύτερο από το Ln, πράγμα που σημαίνει ότι πρέπει να συγκρίνουμε το Item με όλα τα στοιχεία τις λίστας, όπως και στην μη διατεταγμένη λίστα. 23

24 Αλγόριθμος δυαδικής αναζήτησης διατ. Λίστας -1- /*Δέχεται: Μια διατεταγμένη λίστα L1, L2,..., Ln με τα στοιχεία σε αύξουσα διάταξη και ένα στοιχείο Item. Λειτουργία: Εκτελεί μια δυαδική αναζήτηση της διατεταγμένης λίστας για το στοιχείο Item. Επιστρέφει: Found=TRUE και η Location είναι ίση με τη θέση του στοιχείου Item, αν η αναζήτηση είναι επιτυχής, διαφορετικά Found=FALSE.*/ 24

25 Αλγόριθμος δυαδικής αναζήτησης διατ. Λίστας Found FALSE DoneSearching FALSE Location 1 25

26 Αλγόριθμος δυαδικής αναζήτησης διατ. Λίστας Όσο Found == FALSE και First <= Last επανάλαβε α. Location (First + Last)/2 β. Αν Item < LLocation τότε Last Location - 1 Αλλιώς_αν Item > LLocation τότε First Location + 1 Αλλιώς Found TRUE Τέλος_αν Τέλος_επανάληψης 26

27 Ανάλυση αλγορίθμου δυαδικής αναζήτησης -1- Το στοιχείο που εξετάζεται πρώτα είναι το μεσαίο στοιχείο της λίστας. Αν το μεσαίο στοιχείο δεν είναι ίσο με το ζητούμενο στοιχείο, τότε η αναζήτηση συνεχίζεται στο πρώτο μισό της λίστας (αν το στοιχείο Item είναι μικρότερο από το μεσαίο) ή στο τελευταίο μισό της λίστας (αν το στοιχείο Item είναι μεγαλύτερο από το μεσαίο στοιχείο). 27

28 Ανάλυση αλγορίθμου δυαδικής αναζήτησης -2- Κάθε φορά, δηλαδή, που περνάμε από το βρόχο, το μέγεθος της υπολίστας στην οποία συνεχίζουμε την αναζήτηση μειώνεται στο μισό. Αυτό σημαίνει ότι κάνουμε το πολύ log2n συγκρίσεις κι επομένως η δυαδική αναζήτηση πλεονεκτεί έναντι της γραμμικής (εμπειρικά έχει αποδειχθεί ότι για λίστες με περισσότερα από 20 στοιχεία, η δυαδική αναζήτηση έχει καλύτερη απόδοση από την γραμμική).. 28

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

30 Αλγόριθμος αναδρομικής δυαδικής αναζήτησης-1- /*Δέχεται: Μια διατεταγμένη λίστα με τα στοιχεία σε αύξουσα διάταξη, ένα δείκτη Fisrt στο πρώτο στοιχείο της λίστας, ένα δείκτη Last στο τελευταίο στοιχείο της λίστας και ένα στοιχείο Item. Την πρώτη φορά που γίνεται κλήση του αλγορίθμου της δυαδικής αναζήτησης οι δείκτες First και Last έχουν τιμή 1 και n αντίστοιχα οπότε ανιχνεύεται η διατεταγμένη λίστα L1, L2,..., Ln. Σε κάθε επόμενη κλήση ο αλγόριθμος ανιχνεύει μια υπολίστα της αρχικής, η οποία προσδιορίζεται από τους δείκτες First και Last. 30

31 Αλγόριθμος αναδρομικής δυαδικής αναζήτησης-2- Λειτουργία: Ψάχνει στην διατεταγμένη λίστα για το στοιχείο Item χρησιμοποιώντας αναδρομική δυαδική αναζήτηση. Επιστρέφει: Found=TRUE και η Location είναι ίση με τη θέση του στοιχείου Item, αν η αναζήτηση είναι επιτυχής, διαφορετικά Found=FALSE.*/ 31

32 Αλγόριθμος αναδρομικής δυαδικής αναζήτησης-3- Αν First > Last τότε Found FALSE Αλλιώς α. Location (First + Last)/2 β. Αν Item < LLocation τότε Last Location

33 Αλγόριθμος αναδρομικής δυαδικής αναζήτησης-4- Εφάρμοσε τον αλγόριθμο της δυαδικής αναζήτησης Αλλιώς_αν Item > LLocation τότε First Location + 1 Εφάρμοσε τον αλγόριθμο της δυαδικής αναζήτησης Αλλιώς Found TRUE Τέλος_αν Τέλος_αν 33

34 Αποθήκευση διατεταγμένης λίστας σε συνδ. Δομή -1- Παρόλο που η δυαδική αναζήτηση συνήθως είναι πιο αποτελεσματική από τη γραμμική, απαιτεί ωστόσο υλοποίηση της λίστας των στοιχείων με σειριακή αποθήκευση, προκειμένου να εξασφαλίζεται άμεση πρόσβαση στα στοιχεία της λίστας. Δεν είναι κατάλληλη για συνδεδεμένες λίστες, γιατί ο εντοπισμός του μεσαίου στοιχείου προϋποθέτει διάσχιση της υπολίστας των στοιχείων που προηγούνται. 34

35 Αποθήκευση διατεταγμένης λίστας σε συνδ. Δομή -2- Ωστόσο, υπάρχει τρόπος να αποθηκεύσουμε τα στοιχεία μιας διατεταγμένης λίστας σε μια συνδεδεμένη δομή και να την ανιχνεύσουμε με δυαδικό τρόπο. 35

36 Παράδειγμα διατεταγμένης λίστας σε συνδ. δομή -1- Παράδειγμα: θεωρούμε την παρακάτω λίστα ακεραίων: 4, 9, 10, 17, 20, 45, 51 Αφού το πρώτο βήμα της δυαδικής αναζήτησης είναι να εξετάσουμε το μεσαίο στοιχείο της λίστας, μπορούμε να έχουμε άμεση πρόσβαση σ' αυτό το στοιχείο, διατηρώντας έναν δείκτη στον κόμβο που το περιέχει: 36

37 Παράδειγμα διατεταγμένης λίστας σε συνδ. δομή -2- Στο επόμενο βήμα, η αναζήτηση συνεχίζεται στο ένα από τα δύο μισά της λίστας, αφού εξετάζουμε το μεσαίο στοιχείο της μιας από τις δύο υπολίστες. Για να έχουμε πρόσβαση από τον αρχικά μεσαίο κόμβο σ' αυτά τα δύο στοιχεία, μπορούμε να διατηρούμε δύο δείκτες προς τους κόμβους αυτών των στοιχείων: 37

38 Αποθήκευση διατεταγμένης λίστας σε συνδ. Δομή -1- Κατά τον ίδιο τρόπο συνεχίζουμε την αναζήτηση στην επόμενη υπολίστα, πράγμα που σημαίνει ότι χρειαζόμαστε αντίστοιχους δείκτες. Η παραπάνω συνδεδεμένη λίστα μπορεί να σχεδιαστεί σε μορφή δέντρου, όπως δείχνει το ακόλουθο σχήμα. Ένα τέτοιο δέντρο ονομάζεται δυαδικό δέντρο αναζήτησης (binary search tree) και αποτελεί ειδικό είδος δυαδικού δέντρου (binary tree). 38

39 Αποθήκευση διατεταγμένης λίστας σε συνδ. Δομή -2-39

40 Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα 40

41 Βασικές έννοιες -1- Ένα δέντρο (tree) αποτελείται από: ένα πεπερασμένο σύνολο στοιχείων που ονομάζονται κόμβοι (nodes) ή κορυφές (vertices) και από ένα πεπερασμένο σύνολο κατευθυνόμενων τόξων (directed arcs), τα οποία συνδέουν ζεύγη κόμβων. 41

42 Βασικές έννοιες -2- Αν το δέντρο δεν είναι άδειο, τότε υπάρχει ένας κόμβος, ο οποίος δεν έχει εισερχόμενα τόξα. Αυτός ο κόμβος ονομάζεται ρίζα (root) του δέντρου και ξεκινώντας από αυτόν μπορούμε να καταλήξουμε σε οποιονδήποτε από τους υπόλοιπους κόμβους ακολουθώντας μια μοναδική διαδρομή από τόξα. Οι υπόλοιποι κόμβοι χωρίζονται σε n >= 0 ξένα μεταξύ τους υποσύνολα, Τ1, Τ2,..., Τn, κάθε ένα από τα οποία είναι ένα δέντρο και ονομάζεται υποδέντρο (subtree) της ρίζας. 42

43 Βασικές έννοιες -3- Οι κόμβοι που δεν έχουν εξερχόμενα τόξα ονομάζονται φύλλα (leaves), ενώ οι κόμβοι που δεν είναι ούτε φύλλα ούτε ρίζα ονομάζονται εσωτερικοί κόμβοι (internal nodes). Επίσης, οι κόμβοι που είναι άμεσα προσπελάσιμοι από έναν κόμβο (δηλαδή με χρήση ενός μόνο κατευθυνόμενου τόξου) ονομάζονται παιδιά (children) του κόμβου αυτού και ο ίδιος ο κόμβος ονομάζεται πατέρας (parent) των παιδιών του. 43

44 Βασικές έννοιες -4- Οι κόμβοι που είναι παιδιά του ίδιου κόμβουπατέρα ονομάζονται αδέρφια (siblings). Τέλος, όσον αφορά στους κόμβους ενός δέντρου, ο αριθμός των υποδέντρων ενός κόμβου ονομάζεται βαθμός του κόμβου αυτού. Ο μέγιστος βαθμός των κόμβων του δέντρου καθορίζει και τον βαθμό του δέντρου. 44

45 Βασικές έννοιες: παράδειγμα Στο συγκεκριμένο δέντρο που έχει βαθμό 3 ή αλλιώς είναι ένα τριαδικό δέντρο: ο κόμβος Α είναι η ρίζα του δέντρου, οι κόμβοι E, F και G είναι φύλλα και οι κόμβοι B, C, D είναι εσωτερικοί κόμβοι. Ο κόμβος Α είναι πατέρας των B, C, D, ο B είναι πατέρας των E και F και ο D είναι πατέρας του κόμβου G. Επίσης, οι κόμβοι B, C, D είναι αδέρφια μεταξύ τους και παιδιά του Α, οι E και F είναι αδέρφια μεταξύ τους και παιδιά του B, ενώ ο G είναι παιδί του D. 45

46 Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες 46

47 Δυαδικά δέντρα αναζήτησης Στο δυαδικό δέντρο η τιμή κάθε κόμβου είναι μεγαλύτερη από την τιμή του αριστερού παιδιού του (εφόσον υπάρχει) και μικρότερη από την τιμή του δεξιού παιδιού του (εφόσον υπάρχει). Ένα δέντρο με αυτήν την ιδιότητα ονομάζεται δυαδικό δέντρο αναζήτησης, ΔΔΑ, (binary search tree, BST), επειδή μπορούμε να αναζητήσουμε ένα στοιχείο σ' αυτό χρησιμοποιώντας έναν αλγόριθμο δυαδικής αναζήτησης. 47

48 Δυαδικά δέντρα αναζήτησης: παράδειγμα -1- Έστω, για παράδειγμα ότι αναζητούμε τον αριθμό 14. Ξεκινώντας από την ρίζα του δυαδικού δέντρου αναζήτησης, βλέπουμε ότι ο αριθμός 14 είναι μικρότερος του 30, επομένως συμπεραίνουμε ότι ο αριθμός που αναζητούμε βρίσκεται στα αριστερά της ρίζας ή αλλιώς στο αριστερό υποδέντρο (subtree) με ρίζα τον κόμβο 21: 48

49 Δυαδικά δέντρα αναζήτησης: παράδειγμα -2- Η αναζήτηση συνεχίζεται συγκρίνοντας το 14 με την τιμή 21, που βρίσκεται στη ρίζα του παραπάνω υποδέντρου. Επειδή το 14 είναι μικρότερο του 21, ο ζητούμενος αριθμός βρίσκεται στο αριστερό υποδέντρο με τιμή 14 στην ρίζα: Το παραπάνω υποδέντρο αποτελείται από έναν μόνο κόμβο με τιμή 14. Εξετάζοντας αυτήν την τιμή βλέπουμε ότι εντοπίσαμε τον κόμβο που αναζητούσαμε. 49

50 Δυαδικά δέντρα αναζήτησης: παράδειγμα -3- Έστω τώρα ότι αναζητούμε τον κόμβο με τιμή 43. Εξετάζοντας αυτήν την τιμή με την τιμή της ρίζας, οδηγούμαστε στο δεξί υποδέντρο με ρίζα τον κόμβο 52: Ο αριθμός 43 είναι μικρότερος από το 52, επομένως ο αντίστοιχος κόμβος πρέπει να βρίσκεται στο αριστερό υποδέντρο του παραπάνω υποδέντρου. Επειδή όμως δεν υπάρχει αριστερό υποδέντρο, συμπεραίνουμε ότι ο αριθμός 43 δεν υπάρχει στο δέντρο. 50

51 Αλγόριθμος αναζήτησης σε ΔΔΑ -1- Ο δείκτης LocPtr δείχνει αρχικά στην ρίζα του ΔΔΑ και αντικαθίσταται κάθε φορά από τον αριστερό ή δεξιό δεσμό του τρέχοντος κόμβου, ανάλογα με το αν το στοιχείο που αναζητούμε είναι μικρότερο ή μεγαλύτερο από την τιμή του κόμβου αυτού. Η διαδικασία συνεχίζεται μέχρι να βρεθεί το ζητούμενο στοιχείο ή μέχρι ο δείκτης LocPtr να πάρει τιμή NULL, υποδηλώνοντας ένα κενό υποδέντρο, οπότε το στοιχείο δεν βρίσκεται στο δέντρο. 51

52 Αλγόριθμος αναζήτησης σε ΔΔΑ -2- Θεωρούμε ότι το τμήμα δεδομένων (Data) κάθε κόμβου του ΔΔΑ είναι εγγραφή που περιέχει ένα πεδίο κλειδί. Η τιμή που αναζητούμε συγκρίνεται με τις τιμές των πεδίων κλειδιών των κόμβων και το αποτέλεσμα της σύγκρισης χρησιμοποιείται για να καθοριστεί αν η αναζήτηση θα συνεχιστεί με το αριστερό ή δεξί υποδέντρο ή αν θα τερματιστεί, επειδή βρέθηκε το στοιχείο.. 52

53 Συνάρτηση αναζήτησης σε ΔΔΑ -1- void BSTSearch(BinTreePointer Root, BinTreeElementType KeyValue, boolean *Found, BinTreePointer *LocPtr) /*Δέχεται: Ένα ΔΔΑ με το δείκτη Root να δείχνει στη ρίζα του και μια τιμή KeyValue. Λειτουργία: Αναζητά στο ΔΔΑ έναν κόμβο με τιμή KeyValue στο πεδίο κλειδί του. Επιστρέφει: Η Found έχει τιμή TRUE και ο δείκτης LocPtr δείχνει στον κόμβο που περιέχει την τιμή KeyValue, αν η αναζήτηση είναι επιτυχής. Διαφορετικά η Found έχει τιμή FALSE.*/ 53

54 Συνάρτηση αναζήτησης σε ΔΔΑ -2- { } *LocPtr = Root; *Found = FALSE; while (!(*Found) && (*LocPtr)!= NULL) if (KeyValue < LocPtr->Data) (*LocPtr) = LocPtr->LChild; else if (KeyValue > LocPtr->Data) (*LocPtr) = LocPtr->RChild else (*Found) = TRUE 54

55 Κατασκευή ΔΔΑ -1- Ένα δυαδικό δέντρο αναζήτησης μπορεί να κατασκευαστεί με επαναλαμβανόμενες κλήσεις μιας διαδικασίας εισαγωγής στοιχείων σε ένα ΔΔΑ που αρχικά είναι κενό, δηλαδή Root = NULL. Για να καθορίσουμε τη θέση στην οποία θα εισαχθεί ένα στοιχείο χρησιμοποιούμε παρόμοια μέθοδο με αυτήν που χρησιμοποιήσαμε για την αναζήτηση ενός ΔΔΑ. H μόνη αλλαγή που χρειάζεται να κάνουμε στην διαδικασία BSTSearch είναι να διατηρούμε έναν δείκτη προς τον πατέρα του τρέχοντος κόμβου που εξετάζεται, καθώς "κατεβαίνουμε" στο δέντρο αναζητώντας μια θέση για να εισάγουμε το στοιχείο. 55

56 Κατασκευή ΔΔΑ -2- Έστω ότι έχει ήδη κατασκευαστεί το ΔΔΑ και επιθυμούμε να εισάγουμε το γράμμα Μ. Ξεκινάμε από την ρίζα και συγκρίνουμε το γράμμα Ν, που βρίσκεται στη ρίζα, με το Μ, που αναζητούμε. 56

57 Κατασκευή ΔΔΑ -3- Οι δείκτες Root, Parent και LocPtr δείχνουν όπως φαίνεται στο ακόλουθο σχήμα: ο δείκτης Root θα δείχνει πάντα τη ρίζα του δέντρου, ο δείκτης LocPtr θα δείχνει τον τρέχοντα κόμβο και ο δείκτης Parent θα δείχνει τον πατέρα του τρέχοντος κόμβου. 57

58 Κατασκευή ΔΔΑ -4- Επειδή ισχύει Μ<Ν, συνεχίζουμε την αναζήτηση στο αριστερό υποδέντρο, που έχει ρίζα το γράμμα G, όπως φαίνεται και στο σχήμα: Τώρα συγκρίνουμε το Μ με το περιεχόμενο της ρίζας του παραπάνω υποδέντρου και, επειδή Μ>G, κατεβαίνουμε στο δεξί υποδέντρο με ρίζα το γράμμα Κ: 58

59 Κατασκευή ΔΔΑ -5- Επειδή Μ>Κ, πρέπει να κατεβούμε στο δεξί υποδέντρο του παραπάνω υποδέντρου, που είναι κενό: Επειδή αυτό το δεξί υποδέντρο είναι κενό (LocPtr= NULL), συμπεραίνουμε ότι το γράμμα Μ δεν βρίσκεται μέσα στο ΔΔΑ και ότι θα πρέπει να εισαχθεί ως δεξί παιδί του κόμβου πατέρα του, δηλαδή του κόμβου στον οποίο δείχνει ο δείκτης Parent: 59

60 Διαδικασία εισαγωγής στοιχείου σε ΔΔΑ -1- void BSTInsert(BinTreePointer *Root, BinTreeElementType Item) /*Δέχεται: Ένα ΔΔΑ με το δείκτη Root να δείχνει στη ρίζα του και ένα στοιχείο Item. Λειτουργία: Εισάγει το στοιχείο Item στο ΔΔΑ. Επιστρέφει:Το τροποποιημένο ΔΔΑ με τον δείκτη Root να δείχνει στη ρίζα του.*/ 60

61 Διαδικασία εισαγωγής στοιχείου σε ΔΔΑ -2- { BinTreePointer LocPtr Parent; boolean Found; /*δείκτης αναζήτησης δείκτης προς το πατέρα του τρέχοντος κόμβου*/ /* δείχνει αν το στοιχείο Item Υπάρχει ήδη στο ΔΔΑ LocPtr = *Root; Parent = NULL; Found = FALSE; 61

62 Διαδικασία εισαγωγής στοιχείου while (!Found) && (LocPtr!= NULL) { Parent = LocPtr; if (Item < LocPtr->Data) LocPtr = LocPtr->LChild; else if (Item > LocPtr->Data) LocPtr = LocPtr->RChild; else Found = TRUE; } σε ΔΔΑ -3-62

63 Διαδικασία εισαγωγής στοιχείου σε ΔΔΑ -4- if (Found) printf('το στοιχείο υπάρχει ήδη στο δέντρο\n'); else { LocPtr = (BinTreePointer)malloc(sizeof (struct BinTreeNode)); LocPtr ->Data = Item; LocPtr ->LChild = NULL; LocPtr ->RChild = NULL; 63

64 Διαδικασία εισαγωγής στοιχείου σε ΔΔΑ -5- if (Parent == NULL) /*κενό δέντρο*/ (*Root) = LocPtr; else if (Item < Parent ->Data) Parent ->LChild = LocPtr; else Parent -> RChild = LocPtr; } } 64

65 Εισαγωγή στοιχείων σε ΔΔΑ: παράδειγμα -1- Η σειρά με την οποία εισάγονται τα στοιχεία σε ένα ΔΔΑ καθορίζει και τη δομή του δέντρου. Αν για παράδειγμα θέλουμε να εισαγάγουμε τα γράμματα Ο, R, D, E, P, U, C, E, R με αυτήν την σειρά σε ένα ΔΔΑ, θα προκύψει το παρακάτω ισοζυγισμένο δέντρο (balanced tree): 65

66 Εισαγωγή στοιχείων σε ΔΔΑ: παράδειγμα -2- ενώ, αν η εισαγωγή γίνει με τη σειρά P, R, O, C, E, D, U, R, E, τότε προκύπτει το παρακάτω μη ισοζυγισμένο δέντρο 66

67 Εισαγωγή στοιχείων σε ΔΔΑ: παράδειγμα -3- Τέλος, αν τα εισάγουμε με αλφαβητική σειρά, δηλαδή C, D, E, E, O, P, R, R, U, τότε το δέντρο εκφυλίζεται σε συνδεδεμένη λίστα: 67

68 Διαγραφή κόμβου από ΔΔΑ -1- Για την διαγραφή ενός κόμβου n από ένα ΔΔΑ υπάρχουν τρεις περιπτώσεις: Ο n είναι φύλλο Ο n έχει ένα παιδί Ο n έχει δύο παιδιά 68

69 Διαγραφή κόμβου από ΔΔΑ -2- Όταν ο κόμβος που θέλουμε να διαγράψουμε είναι φύλλο, τότε απλά θέτουμε τον αριστερό ή δεξιό δείκτη του πατέρα του n, ανάλογα με το αν ο n είναι το αριστερό ή το δεξί παιδί του πατέρα του, ίσο με NULL. 69

70 Διαγραφή κόμβου από ΔΔΑ -3- Αν, για παράδειγμα, θέλουμε να διαγράψουμε τον κόμβο Η από το παρακάτω δέντρο. τότε θέτουμε απλά τον αριστερό δείκτη του κόμβου J ίσο με NULL και πετάμε τον κόμβο Η, όπως φαίνεται στο σχήμα που ακολουθεί: 70

71 Διαγραφή κόμβου από ΔΔΑ -4- Απλή είναι, επίσης, και η δεύτερη περίπτωση, όπου ο κόμβος n έχει ένα παιδί. Το μόνο που χρειάζεται να κάνουμε σ' αυτήν την περίπτωση είναι να θέσουμε τον δείκτη του πατέρα τού n να δείχνει στο παιδί τού n. 71

72 Διαγραφή κόμβου από ΔΔΑ -5- Αν δηλαδή θέλουμε να διαγράψουμε τον κόμβο N του ίδιου ΔΔΑ: τότε αρκεί να θέσουμε τον αριστερό δείκτη του κόμβου Ο να δείχνει στον κόμβο Μ: 72

73 Διαγραφή κόμβου από ΔΔΑ -6- Στην πραγματικότητα, οι δυο παραπάνω περιπτώσεις μπορούν να συνδυαστούν σε μία, κατά την οποία ο προς διαγραφή κόμβος n έχει το πολύ ένα μη κενό υποδέντρο: Αν ο αριστερός δείκτης του n είναι NULL, τότε θέτουμε τον κατάλληλο δείκτη του πατέρα του n να δείχνει στο δεξί υποδέντρο του n (το οποίο, αν είναι κενό, σημαίνει ότι ο n είναι φύλλο). Διαφορετικά τον θέτουμε να δείχνει στο αριστερό υποδέντρο του n. 73

74 Διαγραφή κόμβου από ΔΔΑ -7- SubTree = n->lchild; if (SubTree == NULL) SubTree = n->rchild; if (Parent == NULL) *Root = SubTree; else if (Parent->LChild == n) Parent->LChild = SubTree; else Parent->RChild = SubTree; free(n); 74

75 Διαγραφή κόμβου από ΔΔΑ -8- Η περίπτωση διαγραφής ενός κόμβου με δύο παιδιά, μπορεί να αναχθεί σε μια από τις δύο προηγούμενες, αν αντικαταστήσουμε το περιεχόμενο του κόμβου n με το αντίστοιχο του ενδοδιατεταγμένου επόμενού του και στη συνέχεια διαγράψουμε αυτόν τον επόμενο. Ο ενδοδιατεταγμένος επόμενος ενός κόμβου ενός ΔΔΑ είναι ο επόμενος σε μια ενδοδιατεταγμένη διάσχιση του ΔΔΑ. 75

76 Διαγραφή κόμβου από ΔΔΑ -9- Για παράδειγμα, αν πρόκειται να διαγράψουμε τον κόμβο Ο στο ΔΔΑ: μπορούμε να εντοπίσουμε τον ενδοδιατεταγμένο επόμενό του ξεκινώντας από το δεξί παιδί του κόμβου Ο και κατεβαίνοντας αριστερά μέχρι να συναντήσουμε κόμβο χωρίς αριστερό υποδέντρο. 76

77 Διαγραφή κόμβου από ΔΔΑ -10- Για τον κόμβο Ο ο ενδοδιατεταγμένος επόμενος είναι ο κόμβος Q: Αν αντικαταστήσουμε τα περιεχόμενα του κόμβου Ο με αυτά του κόμβου Q, όπως δείχνει το παρακάτω σχήμα: 77

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

79 Διαδικασία διαγραφής -1- void BSTDelete(BinTreePointer *Root, BinTreeElementType KeyValue) /*Δέχεται: Ένα ΔΔΑ με το δείκτη Root να δείχνει στη ρίζα του και μια τιμή KeyValue. Λειτουργία: Προσπαθεί να βρει έναν κόμβο στο ΔΔΑ που να περιέχει την τιμή KeyValue στο πεδίο κλειδί του τμήματος δεδομένων του και, αν τον βρει, τον διαγράφει από το ΔΔΑ. Επιστρέφει: Το τροποποιημένο ΔΔΑ με τον δείκτη Root να δείχνει στη ρίζα του.*/ 79

80 Διαδικασία διαγραφής -2- { BinTreePointer n, /*δείχνει το κόμβο που έχει τη τιμή keyvalue Parent, /*δείχνει το κόμβο πατέρα του n ή nnext nnext, /*ενδοδιατεταγμένος επομενος του n Subtree; /*δείκτης προς το υποδένδρο με ρίζα το n boolean Found; 80

81 Διαδικασία διαγραφής -3- BSTSearch2(*Root, KeyValue, &Found, n, Parent); if (! Found) printf('το στοιχείο δεν βρίσκεται στο ΔΔΑ') else { if (n->lchild!= NULL) && (n->rchild!= NULL) { } nnext =n->rchild; Parent =n; while (nnext->lchild!= NULL) { } Parent = nnext; nnext = nnext->lchild n->data = nnext->data; n = nnext 81

82 Διαδικασία διαγραφής -4- SubTree = n->lchild; if (SubTree == NULL) SubTree = n->rchild; if (Parent == NULL) *Root = SubTree; else if (Parent->LChild == n) Parent->LChild = SubTree; else Parent->RChild = SubTree; free(n); 82

83 Διαδικασία αναζήτησης σε ΔΔΑ (2) void BSTSearch2(BinTreePointer Root, BinTreeElementType KeyValue, boolean *Found, BinTreePointer *LocPtr, BinTreePointer *Parent) /*Δέχεται: Ένα ΔΔΑ με το δείκτη Root να δείχνει στη ρίζα του και μια τιμή KeyValue. Λειτουργία: Αναζητά στο ΔΔΑ έναν κόμβο με τιμή KeyValue στο πεδίο κλειδί του και τον πατέρα του κόμβου αυτού. Επιστρέφει: Η Found έχει τιμή TRUE, ο δείκτης LocPtr δείχνει στον κόμβο που περιέχει την τιμή KeyValue και ο Parent δείχνει στον πατέρα αυτού του κόμβου, αν η αναζήτηση είναι επιτυχής. Διαφορετικά η Found έχει τιμή FALSE.*/ 83

84 Διαδικασία αναζήτησης σε ΔΔΑ (2) { } *LocPtr = Root; *Parent=NULL; *Found = FALSE; while (!(*Found) && *LocPtr!= NULL) { if (KeyValue < (*LocPtr)->Data) { *Parent=*LocPtr; *LocPtr = (*LocPtr)->LChild; } else if (KeyValue > (*LocPtr)->Data) { *Parent=*LocPtr; *LocPtr = (*LocPtr)->RChild; } else *Found = TRUE; } 84

85 Εφαρμογή Ως παράδειγμα της χρήσης του ΑΤΔ Δυαδικό Δέντρο Αναζήτησης, θεωρούμε το πρόβλημα της οργάνωσης μιας συλλογής από κωδικούς χρηστών (user-ids) και συνθηματικά (passwords). Κάθε φορά που ένας χρήστης μπαίνει στο σύστημα εισάγοντας έναν κωδικό χρήστη και ένα συνθηματικό, πρέπει να γίνει έλεγχος των στοιχείων αυτών από το σύστημα για να επιβεβαιωθεί ότι είναι νόμιμος χρήστης. Επειδή αυτή η επιβεβαίωση χρήστη θα πρέπει να γίνεται πολλές φορές κάθε μέρα, χρειάζεται οι πληροφορίες αυτές να είναι δομημένες με τέτοιο τρόπο ώστε να μπορούν να ερευνηθούν εύκολα. Παράλληλα, πρέπει να είναι δυναμική δομή, επειδή νέοι χρήστες θα προστίθενται στο σύστημα. Επομένως, μια κατάλληλη δομή είναι ένα ΔΔΑ. 85

86 Τέλος Ενότητας

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

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

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

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

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

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

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

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

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

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

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

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

Δομές Δεδομένων. Ενότητα 9: Τα ΔΔΑ ως Αναδρομικές Δομές Δεδομένων-Εφαρμογή Δυαδικών Δέντρων: Κωδικοί Huffman. Καθηγήτρια Μαρία Σατρατζέμη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 8 Ξένα Σύνολα

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Δέντρα Αναζήτησης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Αναζήτηση Θέλουμε να διατηρήσουμε αντικείμενα με κλειδιά και να μπορούμε εκτός από

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

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

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

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

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

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

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

AVL-trees C++ implementation

AVL-trees C++ implementation Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η / Υ Κ Α Ι Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ AVL-trees C++ implementation Δομές Δεδομένων Μάριος Κενδέα 31 Μαρτίου 2015 kendea@ceid.upatras.gr Εισαγωγή (1/3) Δυαδικά Δένδρα Αναζήτησης:

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

Αλγόριθμοι Αναζήτησης

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Δένδρα (Trees) Βασικές Έννοιες. Δυαδικά Δένδρα. Δυαδικά Δένδρα Αναζήτησης. AVL Δένδρα. Δένδρα: Βασικές Έννοιες Ορισμοί Λειτουργίες Υλοποιήσεις ΑΤΔ Δένδρο: μοντέλο ιεραρχικής

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 (5.1-5.2 και 5.4-5.6) Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Δέντρα Βασικοί ορισµοί Μαθηµατικές ιδιότητες Διάσχιση δέντρων Preorder, postorder,

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

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

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

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

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

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

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

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

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

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

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ισοζυγισμένα Δέντρα Υλοποίηση AVL δέντρων Εισαγωγή Κόμβων και Περιστροφές σε AVL δέντρα

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Κατακερματισμός Τι αποθηκεύουμε στους κάδους; Στα παραδείγματα δείχνουμε μόνο την τιμή του πεδίου κατακερματισμού Την ίδια την εγγραφή

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

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

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

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο Δέντρα Δυαδικά Δέντρα Δυαδικά Δέντρα Αναζήτησης (inary Search Trees) http://aetos.it.teithe.gr/~demos/teaching_r.html Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

Πληροφορική II. Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι. τύποι δεδομένων. Δρ. Γκόγκος Χρήστος

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

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

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης

Δοµές Δεδοµένων. 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης. Ε. Μαρκάκης Δοµές Δεδοµένων 14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης Περίληψη Δέντρα Δυαδικής Αναζήτησης Υλοποιήσεις εισαγωγής και αναζήτησης Χαρακτηριστικά επιδόσεων ΔΔΑ Εισαγωγή στη ρίζα ΔΔΑ Υλοποιήσεις

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Διακριτά Μαθηματικά Ενότητα 3: Δένδρα Αν. Καθηγητής Κ. Στεργίου e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το

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

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 1 2 3 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει

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

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου Σύνολα (Sets) Τα µέλη ενός συνόλου προέρχονται από κάποιο χώρο U αντικειµένων/στοιχείων (π.χ., σύνολα αριθµών, λέξεων, ζευγών αποτελούµενων από έναν

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 9: ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΑΝΑΛΥΣΗΣ ΑΛΓΟΡΙΘΜΩΝ ΕΞΙΣΟΡΡΟΠΗΣΗ, ΔΙΑΙΡΕΙ ΚΑΙ ΒΑΣΙΛΕΥΕ

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

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

Δημιουργία Δυαδικών Δέντρων Αναζήτησης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 7 Ουρές Προτεραιότητας Ενότητα Ουρές Προτεραιότητας ΗΥ4 - Παναγιώτα Φατούρου Ουρές Προτεραιότητας Θεωρούµε ένα χώρο κλειδιών U και έστω ότι µε κάθε κλειδί Κ (τύπου Key) έχει συσχετισθεί κάποια πληροφορία Ι (τύπου Type). Έστω

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 17 Σωροί (Heaps) έκδοση 10 1 / 19 Heap Σωρός Ο σωρός είναι μια μερικά ταξινομημένη δομή δεδομένων που υποστηρίζει

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

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

Διάλεξη 14: Δέντρα IV B Δένδρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 14: Δέντρα IV B Δένδρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2 3 Δένδρα, Εισαγωγή και άλλες πράξεις Άλλα Δέντρα: Β δένδρα, Β+ δέντρα, R δέντρα Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ231

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

Δέντρα (Trees) - Ιεραρχική Δομή

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

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

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

Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα Αναζήτησης Πολλαπλής Διακλάδωσης Δένδρα στα οποία κάθε κόμβος μπορεί να αποθηκεύει ένα ή περισσότερα κλειδιά. Κόμβος με d διακλαδώσεις : k 1 k 2 k 3 k 4 d-1 διατεταγμένα κλειδιά d διατεταγμένα παιδιά

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

Εισαγωγή στους Αλγορίθμους Ενότητα 7η

Εισαγωγή στους Αλγορίθμους Ενότητα 7η Εισαγωγή στους Αλγορίθμους Ενότητα 7η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

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

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

4 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

4 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων 4 η Διάλεξη Ενδεικτικές λύσεις ασκήσεων 1 Περιεχόμενα 1 η Άσκηση... 3 2 η Άσκηση... 3 3 η Άσκηση... 4 4 η Άσκηση... 5 5 η Άσκηση... 6 6 η Άσκηση... 7 Χρηματοδότηση... 8 Σημείωμα Αναφοράς... 9 Σημείωμα

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

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

Δυναμική Διατήρηση Γραμμικής Διάταξης Διατηρεί μια γραμμική διάταξη δυναμικά μεταβαλλόμενης συλλογής στοιχείων. Υποστηρίζει τις λειτουργίες: Εισαγωγή νέου στοιχείου y αμέσως μετά από το στοιχείο x. x y Διαγραφή στοιχείου y. y Έλεγχος της σειράς

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

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης Creative Commons και

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

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

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

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

Φροντιστήριο 4 Σκελετοί Λύσεων

Φροντιστήριο 4 Σκελετοί Λύσεων Φροντιστήριο 4 Σκελετοί Λύσεων Άσκηση 1 Υποθέτουμε πως οι λίστες είναι υλοποιημένες χρησιμοποιώντας τις πιο κάτω δομές. typedef struct Node{ type data; struct node *next; node; node *top; list; Υλοποιούμε

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 18 Dijkstra s Shortest Path Algorithm 1 / 12 Ο αλγόριθμος εύρεσης της συντομότερης διαδρομής του Dijkstra

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

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

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

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ Ενότητα # 3: Αριθμητικά Περιγραφικά Μέτρα Εβελίνα Κοσσιέρη Τμήμα Λογιστικής και Χρηματοοικονομικής ΑΔΕΙΕΣ

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

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

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις Ουρές προτεραιότητας

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 23: Κλασική Ανάλυση Ευαισθησίας, Βασικές Έννοιες Γραφημάτων Σαμαράς Νικόλαος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 3 Δέντρα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 3 Δέντρα ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΑΣΚΗΣΗ 3 Δέντρα Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου Ημερομηνία Υποβολής: 19/03/2013 Ημερομηνία Παράδοσης:

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

Ουρά Προτεραιότητας (priority queue)

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 11: Minimum Spanning Trees Αλγόριθμος Prim Αλγόριθμος Kruskal Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

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

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Πληροφορική Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

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

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

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

Μαθηματικά. Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Μαθηματικά. Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής Μαθηματικά Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

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

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

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

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

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

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:

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

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

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

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

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

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

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

Μαθηματικά Ενότητα 11: Θεώρημα Μέσης Τιμής Μονοτονία Συνάρτησης

Μαθηματικά Ενότητα 11: Θεώρημα Μέσης Τιμής Μονοτονία Συνάρτησης Μαθηματικά Ενότητα 11: Θεώρημα Μέσης Τιμής Μονοτονία Συνάρτησης Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Εισαγωγή στους Αλγορίθμους Ενότητα 3η

Εισαγωγή στους Αλγορίθμους Ενότητα 3η Εισαγωγή στους Αλγορίθμους Ενότητα 3η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

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

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

Εργασία 3 Σκελετοί Λύσεων Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιμοποιούμε τη δομή typedef struct TNode{ int key; struct TNode *left; struct TNode *right; tnode; και υποθέτουμε πως ένα δυαδικό δένδρο είναι υλοποιημένο ως δείκτης

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

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

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

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

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

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

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

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

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

υαδικά δέντρα αναζήτησης

υαδικά δέντρα αναζήτησης υαδικά δέντρα αναζήτησης οµές εδοµένων 3 ο εξάµηνο Ορισµός δυαδικού δέντρου αναζήτησης Σ ένα δυαδικό δέντρο αναζήτησης, για κάθε κόµβο Χ, Όλα τα κλειδιά(αντικείµενα) στο αριστερό υποδέντρο του Χ έχουν

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

Δομημένος Προγραμματισμός

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Δέντρα Αναζήτησης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Αναζήτηση Θέλουμε να διατηρήσουμε αντικείμενα με κλειδιά και να μπορούμε εκτός από

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών

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

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

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

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

Ανάκτηση Πληροφορίας

Ανάκτηση Πληροφορίας Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Ανάκτηση Πληροφορίας Διδάσκων: Φοίβος Μυλωνάς fmylonas@ionio.gr Διάλεξη #11 Suffix Arrays Φοίβος Μυλωνάς fmylonas@ionio.gr Ανάκτηση Πληροφορίας 1 Άδεια χρήσης Το παρόν

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

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

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

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

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

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1 Ενότητα 3: Άλγεβρα Βοole και Λογικές Πράξεις Δρ. Φραγκούλης Γεώργιος Τμήμα Ηλεκτρολογίας Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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