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

Μέγεθος: 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/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ιαφάνειες παρουσίασης #10 (β)

ιαφάνειες παρουσίασης #10 (β) ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr)

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

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

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

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

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόμενα στο αριστερό υποδέντρο του t είναι

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

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

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

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

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr 1 η ΑΣΚΗΣΗ ΣΤΗΝ

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

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

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

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

Δομές δεδομένων. Ενότητα 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) Ένα δένδρο είναι ένα συνδεδεμένο γράφημα χωρίς κύκλους Για κάθε

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

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

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

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

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

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

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

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος

ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος ΗΥ240: Δομές Δεδομένων Εαρινό Εξάμηνο Ακαδημαϊκό Έτος 2017 Διδάσκουσα: Παναγιώτα Φατούρου Προγραμματιστική Εργασία - 2o Μέρος Ημερομηνία Παράδοσης: Δευτέρα, 15 Μαΐου 2017, ώρα 23:59. Τρόπος Παράδοσης:

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Εξεταστική Ιανουαρίου 2014 Διδάσκων : Ευάγγελος Μαρκάκης 20.01.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες και

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

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

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

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

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

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

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

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών Ενότητα 7 Ουρές Προτεραιότητας ΗΥ240 - Παναγιώτα Φατούρου 2 Ουρές

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

AVL-trees C++ implementation

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

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

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

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

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

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: υαδικά έντρα Αναζήτησης (Binary Search Trees) Ορισµός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε: (i) όλα τα περιεχόµενα στο αριστερό υποδέντρο του t είναι

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών Αναζήτηση και ταξινόµηση 7 Αναζήτηση (search) Πρόβληµα: αναζήτηση της καταχώρησης key στη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Ενότητα 4η: Σύνολα - Λεξικά Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ ΗΥ240 - Παναγιώτα Φατούρου 2 Σύνολα (Sets) Τα

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

Διάλεξη 13: Δέντρα ΙΙΙ Ισοζυγισμένα Δέντρα, AVL Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

Κεφάλαιο 10 Ψηφιακά Λεξικά Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή... 213 10.2 Ψηφιακά Δένδρα... 214 10.3 Υλοποίηση σε Java... 222 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα... 223 Ασκήσεις... 225 Βιβλιογραφία...

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

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

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

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

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

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

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

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό 1 Εισαγωγή Σκεφτείτε έναν αριθμό από το 1 έως το 1000 και απαντήστε στην ερώτηση: Ο αριθμός που σκεφτήκατε είναι μεγαλύτερος

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

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ Ενότητα 5 Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας

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

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

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

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ 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 } :

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

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

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

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

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

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

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (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 Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

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

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

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης

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

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

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος HY240 : Δομές Δεδομένων Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος Εισαγωγή Στο 2 ο μέρος της εργασίας θα πρέπει να γίνουν τροποποιήσεις στο πρόγραμμα που προέκυψε κατά την υλοποίηση του

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

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

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

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

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

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

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

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

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

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

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα Δένδρα Δένδρα Ειδική κατηγορία γραφημάτων: συνεκτικά γραφήματα που δεν περιέχουν απλά κυκλώματα [1857] Arthur Cayley: για απαρίθμηση ορισμένων ειδών χημικών ενώσεων Χρησιμοποιούνται σε πληθώρα προβλημάτων,

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

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

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

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

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

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

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

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

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

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών,, τα οποίo είναι υποσύνολο του. Υποστηριζόμενες λειτουργίες αναζήτηση(s,x): εισαγωγή(s,x): διαγραφή(s,x): διάδοχος(s,x): προκάτοχος(s,x):

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων Προγραμματισμός Η/Υ Ενότητα 8: Ειδικά Θέματα Αλγορίθμων Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 2 Αλγόριθμοι Ταξινόμησης Μέρος 2 Μανόλης Κουμπαράκης 1 Προχωρημένοι Αλγόριθμοι Ταξινόμησης Στη συνέχεια θα παρουσιάσουμε τρείς προχωρημένους αλγόριθμους ταξινόμησης: treesort, quicksort και mergesort. 2

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

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

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

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

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

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

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

Ενότητα 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): επιστρέφει

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

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

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

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

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

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

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