ρίζα E F G H I J επίπεδο 1

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

Download "ρίζα E F G H I J επίπεδο 1"

Transcript

1 Δέντρα (Trees) Ορισµός: Ενα δέντρο είναι ένα πεπερασµένο µη κενό σύνολο κόµβων τέτοιο ώστε: 1.Yπάρχει ένας µοναδικός κόµβος, που καλείται ρίζα, ο οποίος δεν έχει προηγούµενο. 2.Οι υπόλοιποι κόµβοι χωρίζονται σε n>= 0 ξένα µεταξύ τους υποσύνολα, Τ 1, Τ 2,..., T n, κάθε ένα από τα οποία είναι ένα δέντρο. Τα Τ 1, Τ 2,..., T n καλούνται υπόδεντρα (subtrees) της ρίζας. Aς σηµειωθεί ότι χαρακτηριστική ιδιότητα του δέντρου είναι ότι η ρίζα είναι εκείνος ο κόµβος που δεν έχει εισερχόµενα τόξα και ξεκινώντας από αυτόν µπορούµε να καταλήξουµε σε ένα οποιοδήποτε κόµβο ακολουθώντας µια µοναδική διαδροµή από τόξα. Ο αριθµός των υποδέντρων ενός κόµβου καλείται βαθµός του κόµβου αυτού.

2 Ο αριθµός των υποδέντρων ενός κόµβου καλείται βαθµός του κόµβου αυτού. Ας θεωρήσουµε το δέντρο του παρακάτω Σχήµατος. Το δέντρο αποτελείται από 10 κόµβους {A, B, C, D, E, F, G, H, I, J}. ρίζα Α επίπεδο 1 Β C D 2 E F G H I J 3

3 βαθµός κόµβου βαθµός δέντρου τερµατικοί κόµβοι (φύλλα) εσωτερικοί κόµβοι παιδί, πατέρας πρόγονος, απόγονος ύψος, βάθος

4 Ενα δυαδικό δέντρο είναι ένα πεπερασµένο σύνολο κόµβων, το οποίο είτε είναι κενό ή : 1.Υπάρχει ένας ειδικός κόµβος που καλείται ρίζα, και 2.Οι υπόλοιποι κόµβοι χωρίζονται σε δύο ξένα µεταξύ τους υποσύνολα, Α και Δ, κάθε ένα από τα οποία είναι ένα δυαδικό δέντρο. Το Α είναι το αριστερό υπόδεντρο της ρίζας και το Δ είναι το δεξί υπόδεντρο της ρίζας. Κάθε δέντρο µπορεί να παρασταθεί σαν ένα δυαδικό δέντρο.

5 Α Β C D E F G H I J Μετατροπή του δέντρου του παραπάνω σχήµατος σε ένα δυαδικό δέντρο

6 Α Β Ε C F G D Στροφή κατά 45 ο των δεξιών τόξων στο δέντρο του παραπάνω Σχήµατος H I J

7 Πρόταση (i) Ο µέγιστος αριθµός κόµβων στο επίπεδο i ενός δέντρου βαθµού d είναι d i-1, i >= 1 και (ii) Ο µέγιστος αριθµός κόµβων ενός δέντρου βαθµού d και ύψους h είναι (d h - 1)/(d - 1). Απόδειξη (i) Η απόδειξη θα γίνει µε επαγωγή. Αν i = 1, τότε d i-1 = d 0 = 1 πράγµα που ισχύει. Εστω ότι ο µέγιστος αριθµός των κόµβων στο k επίπεδο είναι d k-1. Το µέγιστο πλήθος των κόµβων στο k + 1 επίπεδο είναι d d k-1 = d k. (ii) Ο µέγιστος αριθµός των κόµβων σε ένα δυαδικό δέντρο ύψους h είναι: h (µέγιστο αριθµόκόµβων στο επίπεδο i) = i= 1 h i= 1 d i 1 = 1+ d + d d h 1 = h d d 1 1

8 Πόρισµα (i) Ο µέγιστος αριθµός κόµβων στο επίπεδο i ενός δυαδικού δέντρου είναι 2 i-1, i >= 1 και (ii) Ο µέγιστος αριθµός κόµβων ενός δυαδικού δέντρου ύψους h είναι 2 h - 1. Πρόταση Ενα δυαδικό δέντρο µε n κόµβους έχει ύψος τουλάχιστον log 2 ( n + 1) Απόδειξη Αν h είναι το ύψος ενός δυαδικού δέντρου, τότε από το παραπάνω πόρισµα έχουµε 2 h - 1>= n ή h >= log 2 (n + 1). Αρα το ελάχιστο ύψος του δυαδικού δέντρου είναι log 2 ( n + 1)

9 Πρόταση Για ένα µη κενό δυαδικό δέντρο, Τ, αν n 0 είναι το πλήθος των τερµατικών κόµβων και n 2 είναι το πλήθος των εσωτερικών κόµβων βαθµού 2, τότε n 0 = n Απόδειξη n = n 0 + n 1 + n 2 (1) όπου Β είναι το πλήθος των κλαδιών. Επίσης n = B + 1. Αλλά B = n 1 + 2n 2 άρα n = 1 + n 1 + 2n 2 (2) Από τις (1) και (2) έχουµε : n 0 = n

10 Για τον πλήρη ορισµό του ΑΤΔ δυαδικό δέντρο αποµένει να ορισθούν οι βασικές πράξεις του που είναι: 1. Δηµιουργία 2. Κενό 3. Πατέρας 4. Αριστερό παιδί 5. Δεξί παιδί 6. Διαγραφή υποδέντρων 7. Αντικατάσταση υποδέντρων 8. Συγχώνευση 9. Ανάκτηση 10. Ενηµέρωση 11. Αναζήτηση

11 Υλοποίηση δυαδικών δέντρων µε πίνακα 1 Α 1 A 2 Β 3 C 2 B 4 D 5 E F 6 7 G 4 C 8 H 9 I 8 D

12 Πρόταση Αν ένα πλήρες δυαδικό δέντρο µε n κόµβους (δηλ. βάθος = log 2 ( n + 1) ) παριστάνεται ακολουθιακά όπως παραπάνω, τότε για οποιοδήποτε κόµβο µε δείκτη i, 1<= i<= n έχουµε: (1) O pateras(i) είναι στη θέση i / 2 αν i<>1. Οταν i = 1, τότε δεν υπάρχει πατέρας, γιατί το i είναι η ρίζα. (2) Το apaidi(i) είναι στη θέση 2i αν 2i <= n. Αν 2i > n, τότε ο κόµβος δεν έχει αριστερό παιδί. (3) To dpaidi(i) είναι στη θέση 2i + 1, αν 2i + 1 <= n. Αν 2i + 1 > n, τότε ο κόµβος δεν έχει δεξί παιδί.

13 Η παράσταση αυτή είναι ιδανική για ένα πλήρες δυαδικό δέντρο, ωστόσο αρκετός χώρος µνήµης παραµένει ανεκµετάλευτος στα µη πλήρη δυαδικά δέντρα. Α B C D E F G H I Α B D dentro dentro

14 apaidi dedomena dpaidi.. Αριστερό παιδί δεξί παιδί Ενα δυαδικό δέντρο τώρα µπορεί να παρασταθεί σαν ένας πίνακας τέτοιων εγγραφών. Εχουµε λοιπόν τις παρακάτω δηλώσεις :

15 #define plithos... typedef... typos_stoixeiou; typedef int typos_deikti; typedef struct {typos_stoixeiou dedomena; typos_deikti apaidi,dpaidi; } typos_komvou; typedef typos_komvou pinakas_komvou[plithos];

16 Συνδεδεµένη παράσταση δυαδικού δέντρου µε πίνακες : 1 A 2 B 3 C 4 D 5 E

17 τιµές δείκτη dedomena apaidi dpaidi Α Β C D E

18 Υλοποίηση δυαδικών δέντρων µε λίστες : typedef... typos_stoixeiou; typedef struct typos_komvou *typos_deikti; typedef struct typos_komvou { typos_stoixeiou dedomena; typos_deikti apaidi,dpaidi; }; typos_deikti riza;

19 void dimiourgia_dentro(typos_deikti *riza) /*Προ: Καµµία. Μετά: Εχει δηµιουργηθεί ένα κενό δυαδικό δέντρο στο οποίο δείχνει η riza.*/ { *riza = NULL; }

20 int keno_dentro(typos_deikti riza) /* Προ: Εχει δηµιουργηθεί το δέντρο στο οποίο δείχνει η riza Μετά: Το υποπρόγραµµα επιστρέφει την τιµή true ή false ανάλογα µε το αν το δέντρο είναι κενό ή όχι.*/ { return (riza == NULL); }

21 Συνδεδεµένη παράσταση δυαδικού δέντρου µε λίστες : Α.. Β.. C... D.. E.. F. G.. H.... I

22 Διαδροµή δυαδικού δέντρου Μια από τις βασικές επεξεργασίες ενός δυαδικού δέντρου είναι η επίσκεψη κάθε κόµβου του µια µόνο φορά. 1. Επίσκεψη της ρίζας. 2. Διαδροµή του αριστερού υποδέντρου της. 3. Διαδροµή του δεξιού υποδέντρου της. Τα τρία αυτά βήµατα µπορούν να εκτελεστούν µε οποιαδήποτε διάταξη. Αν συµβολίσουµε τα παραπάνω βήµατα µε: Κ : Επίσκεψη ενός κόµβου. Α : Διαδροµή αριστερού υποδέντρου του. Δ : Διαδροµή δεξιού υποδέντρου του.

23 Τότε υπάρχουν έξι διατάξεις για την επίσκεψη των κόµβων ενός δυαδικού δέντρου που είναι οι: ΚΑΔ ΑΚΔ ΑΔΚ ΚΔΑ ΔΚΑ ΔΑΚ ΚΑΔ : προδιατεταγµένη διαδροµή. ΑΚΔ : ενδοδιατεταγµένη διαδροµή. ΑΔΚ : µεταδιατεταγµένη διαδροµή.

24 Παράσταση των τριών διατάξεων ενός δυαδικού δέντρου: Μ Ε T A Z P προδιατεταγµένη : ΜΕΑΖΤΡΣ ενδοδιατεταγµένη : ΑΕΖΜΡΣΤ µεταδιατεταγµένη : ΑΖΕΣΡΤΜ Σ

25 Μεταδιατεταγµένη διαδροµή Μ Ε T Α Ζ P Σ

26 Ε Α Ζ Α

27 Τ P Σ P Σ Σ

28 Αναδροµικό Υποπρόγραµµα void endodiataksi(typos_deikti riza) { /* Aναδροµικό υποπρόγραµµα. Διατρέχει µε ενδοδιατεταγµένη διαδροµή ένα δυαδικό δέντρο. */ } if (!keno_dentro(riza)) {/* Eπίσκεψη αριστερού υπόδεντρου */ endodiataksi(riza->apaidi); /* Eπίσκεψη της ρίζας */ episkepsi(riza); /* Eπίσκεψη δεξιού υπόδεντρου */ endodiataksi(riza->dpaidi); }

29 Aς υποθέσουµε ότι έχουµε το δυαδικό δέντρο: riza Μ.. Ε.. C... Α.. Ζ.. P. Σ..

30 και ότι η episkeyi τυπώνει το περιεχόµενο ενός κόµβου. Η εντολή endodiataksi (riza) καλεί τη διαδικασία endodiataksi προκειµένου να εκτελέσει την ενδοδιατεταγµένη διαδροµή του παραπάνω δέντρου. Η ενέργεια αυτής της διαδικασίας εµφανίζεται αναλυτικά στον ακόλουθο πίνακα :

31 Περιεχόµενο κόµβου Ενέργεια Αποτέλεσµα Μ Ε Κλήση της διαδικασίας µε δείκτη στη ρίζα (Ε) του αριστερού υποδέντρου. Κλήση της διαδικασίας µε δείκτη στη ρίζα (Α) του αριστερού υποδέντρου. Α Κλήση της διαδικασίας µε δείκτη (NULL) στη ρίζα του αριστερού υποδέντρου. Κενό Κενό δέντρο, επιστροφή στον κόµβο-πατέρα. Α Εκτύπωση του περιεχοµένου του κόµβου Α

32 Περιεχόµενο κόµβου Ενέργεια Αποτέλεσµα Α Κενό Κλήση της διαδικασίας µε δείκτη NULL στη ρίζα του δεξιού υποδέντρου. Κενό δέντρο, επιστροφή στον κόµβο-πατέρα. Α Επιστροφή στον κόµβο πατέρα. Ε Εκτύπωση του περιεχοµένου του Ε του κόµβου. Ε Κλήση της διαδικασίας µε δείκτη στη ρίζα (Ζ) του δεξιού υποδέντρου.

33 Περιεχόµενο κόµβου Ενέργεια Αποτέλεσµα Ζ Κλήση της διαδικασίας µε δείκτη (NULL) στη ρίζα του αριστερού υποδέντρου. Κενό Κενό δέντρο, επιστροφή στον κόµβο-πατέρα. Ζ Εκτύπωση του περιεχοµένου του Ζ κόµβου. Ζ Κλήση της διαδικασίας µε δείκτη (NULL) στη ρίζα του δεξιού υποδέντρου.

34 Περιεχόµενο κόµβου Ενέργεια Αποτέλεσµα Κενό Κενό δέντρο, επιστροφή στον κόµβο πατέρα. Ζ Επιστροφή στον κόµβο-πατέρα. Ε Επιστροφή στον κόµβο-πατέρα. Μ Εκτύπωση του περιεχοµένου M του κόµβου. Μ Κλήση της διαδικασίας µε δείκτη στη ρίζα (Τ) του δεξιού υποδέντρου.

35 Περιεχόµενο κόµβου Ενέργεια Αποτέλεσµα Ζ Κλήση της διαδικασίας µε δείκτη στη ρίζα (P) του αριστερού υποδέντρου. P Κενό Κλήση της διαδικασίας µε δείκτη (NULL) στη ρίζα του αριστερού υποδέντρου. Κενό δέντρο, επιστροφή στον κόµβο πατέρα. P Εκτύπωση του περιεχοµένου του κόµβου P

36 Περιεχόµενο κόµβου Ενέργεια Αποτέλεσµα P Κλήση της διαδικασίας µε δείκτη στη ρίζα (Σ) του δεξιού υποδέντρου. Σ Κενό Κλήση της διαδικασίας µε δείκτη (NULLl) στη ρίζα του αριστερού υποδέντρου. Κενό δέντρο, επιστροφή στον κόµβο-πατέρα. Σ Εκτύπωση του περιεχοµένου του κόµβου Σ

37 Περιεχόµενο κόµβου Ενέργεια Αποτέλεσµα Σ Κλήση της διαδικασίας µε δείκτη (NULL) του δεξιού υποδέντρου. Κενό Κενό δέντρο, επιστροφή στον κόµβο πατέρα. Σ Επιστροφή στον κόµβο-πατέρα P Επιστροφή στον κόµβο-πατέρα Τ Εκτύπωση του περιεχοµένου του κόµβου. Τ

38 Περιεχόµενο κόµβου Ενέργεια Αποτέλεσµα T Κλήση της διαδικασίας µε δείκτη (NULL) του δεξιού υποδέντρου. Κενό Κενό δέντρο, επιστροφή στον κόµβο-πατέρα. Τ Επιστροφή στον κόµβο-πατέρα Μ Τέλος διαδικασίας

39 Eίναι φανερό ότι η προδιατεταγµένη και µεταδιατεταγµένη διαδροµή προκύπτουν αν απλά αλλάξουµε την σειρά των εντολών στη διαδικασία endodiataksi, όπως φαίνεται παρακάτω : void prodiataksi(typos_deikti riza) {/* προδιατεταγµένη διαδροµή */ } if (!keno_dentro(riza)) { episkepsi(riza); prodiataksi(riza->apaidi); prodiataksi(riza->dpaidi); } συνέχεια

40 void metadiataksi(typos_deikti riza) { /* µεταδιατεταγµένη διαδροµή */ if (!keno_dentro(riza)) { metadiataksi(riza->apaidi); metadiataksi(riza->dpaidi); episkepsi(riza); } }

41 Μη Αναδροµικά Υποπρογράµµατα riza A B C D E F G

42 Μη αναδροµικός αλγόριθµος για την ενδοδιατεταγµένη διαδροµή 1. trexon = riza; 2. Οσο η στοίβα δεν είναι κενή και trexon!= NULL να εκτελούνται: α. Να διατρέχονται οι κόµβοι του αριστερού υποδέντρου και να τοποθετούνται οι διευθύνσεις τους σε µια στοίβα. β. Αν η στοίβα δεν είναι κενή τότε {αριστερό υπόδεντρο κενό} (i) Εξαγωγή διεύθυνσης από στοίβα (ii) Επεξεργασία του περιεχοµένου του. (iii) Διαδροµή του δεξιού υποδέντρου του.

43 Η υλοποίηση του παραπάνω αλγορίθµου είναι η ακόλουθη: typedef typos_deiktitypos_stoixeiou_stoivas; typedef struct typos_komvou_stoivas *typos_deikti_stoivas; typedef struct typos_komvou_stoivas { typos_stoixeiou_stoivas dedomena; typos_deikti_stoivas epomenos; }; typedef typos_deikti_stoivas typos_stoivas; void endodiataksi (typos_deikti riza) {/* Eπαναληπτικό πρόγραµµα ενδοδιάταξης */ typos_stoivas stoiva; typos_deikti trexon; συνέχεια

44 dimiourgia(&stoiva); trexon = riza; do {/* Διατρέχονται οι κόµβοι των αριστερών κλαδιών */ while (trexon!=null) { othisi(&stoiva,trexon); trexon = trexon->apaidi; } /* Έλεγχος αν η στοίβα είναι κενή */ if (!keni(stoiva)) /* Tο αριστερό υπόδεντρο είναι κενό */ { exagogi(&stoiva,&trexon); /* Eπίσκεψη της ρίζας */ episkepsi(trexon); /* Eπίσκεψη δεξιού υπόδεντρου */ trexon = trexon->dpaidi; συνέχεια

45 } } } while ((!keni(stoiva)) (trexon!=null)); Ο χρόνος εκτέλεσης του παραπάνω υποπρογράµµατος είναι µεγαλύτερος από εκείνο του αναδροµικού, πράγµα που έρχεται σε αντίθεση µε το γεγονός ότι τα αναδροµικά υποπρογράµµατα είναι συνήθως αργότερα από τα µη αναδροµικά.

46 Δυαδικά Δέντρα µε κλωστές riza Α Β C D E F G H I

47 typedef... typos_stoixeiou; typedef struct typos_komvou *typos_deikti; typedef struct typos_komvou { typos_stoixeiou dedomena; typos_deikti apaidi,dpaidi; int aklosti,dklosti; }; typos_deikti riza;

48 riza f.. - f f. A. f. B. f.. C f.. f D f t E t t F t t G t t H t t I t

49 Το παραπάνω σχήµα αποτελεί την παράσταση δυαδικού δέντρου µε κλωστές, f = false, t = true. Ενα κενό δέντρο µε κλωστές παριστάνεται µε τον κόµβο κεφαλή του όπως δείχνει το ακόλουθο σχήµα: true - false Για ένα οποιοδήποτε κόµβο x ενός δυαδικού δέντρου µε κλωστές παρατηρούµε ότι αν x->dklosti = true, τότε το πεδίο x->dpaidi περιέχει τη διεύθυνση του ενδοδιατεταγµένου επόµενου του x. Διαφορετικά, ο ενδοδιατεταγµένος επόµενος του x βρίσκεται αν ακολουθηθεί το µονοπάτι των αριστερών κλαδιών του δεξιού παιδιού του x µέχρις ότου συναντηθεί ένας κόµβος για τον οποίο ισχύει aklosti = true. Το ακόλουθο υποπρόγραµµα εντοπίζει τον ενδοδιατεταγµένο επόµενο ενός κόµβου χωρίς τη χρήση στοίβας.

50 typos_deikti endo_epomenos(typos_deikti trexon) {/* Mετά: H συνάρ. επιστρέφει τον ενδοδιατεταγµένο επόµενο του κόµβου που δείχνει ο trexon σε ένα δυαδικό δέντρο µε κλωστές. */ typos_deikti prosorinos; if (trexon->dklosti) /* O κόµβος είναι φύλλο */ return trexon->dpaidi; συνέχεια

51 } else /* Aκολούθησε το αριστερό µονοπάτι του δεξιού παιδιού */ { prosorinos = trexon->dpaidi; while (!(prosorinos->aklosti)) prosorinos = prosorinos->apaidi; return prosorinos; }

52 void endo_diadromi(typos_deikti riza) {/* Mετά: Eπίσκεψη των κόµβων ενός δυαδικού δέντρου µε κλωστές µε την ενδοδιατεταγµένη διαδροµή. */ typos_deikti prosorinos; prosorinos=riza; /* κεφαλή, οχι πραγµατική ρίζα */ do { prosorinos=endo_epomenos(prosorinos); if (prosorinos!=riza) episkepsi(prosorinos); } while (prosorinos!= riza); } Πολυπλοκότης : Ο(n)

53 Ο s δεν έχει δεξί παιδί Ο s έχει δεξί παιδί s.. s 1. t 2 3 t. πριν µετά

54 s. s.. t πριν prosorinos µετά

55 int eisagogi_dexi(typos_deikti s,typos_deikti t) {/* Προ : O κόµβος s δεν είναι ο κόµβος κεφαλή του δυαδικού δέντρου µε κλωστές. Mετά: Aν ο κόµβος s δεν είναι ο κόµβος κεφαλή του δυαδικού δέντρου µε κλωστές, τότε ο κόµβος t εισάγεται σαν το δεξι παιδί του κόµβου s σε ένα δυαδικό δέντρο µε κλωστές και επιστρέφεται 1 αλλιώς επιστρέφεται O */ typos_deikti prosorinos; if (!kefali(s)) { t->dpaidi = s->dpaidi; t->dklosti = s->dklosti; συνέχεια

56 } } else t->apaidi = s; t->aklosti = 1; /* apaidi είναι µια κλωστή */ s->dpaidi = t; /* προσάρτηση του t στο s */ s->dklosti = 0; if (!(t->dklosti)) /* o s έχει δεξί παιδί */ { prosorinos = endo_epomenos(t); prosorinos->apaidi = t; } return 1; return 0;

57 Ανοµοιογενή δυαδικά δέντρα (δέντρα παράστασης) Συχνά τα δεδοµένα που περιέχονται σε διαφορετικούς κόµβους δεν είναι όλα του ίδιου τύπου. + - D A * Β C Παράσταση της A-B*C+D µε δυαδικό δέντρο

58 Για τη µετατροπή µιας ενδοδιατεταγµένης παράστασης στο αντίστοιχο δυαδικό δέντρο, το οποίο ονοµάζεται δέντρο παράστασης, θα πρέπει σε κάθε βήµα να αναζητείται ο τελεστής εκείνος ο οποίος θα εκτελεστεί τελευταίος (έχει τη µικρότερη ιεραρχία).

59 Δηµουργία δυαδικού δέντρου παράστασης της 12-6*(3+8)-4*12 1ο Βήµα *(3+8) 4*12

60 2ο Βήµα - - 4* *(3+8)

61 3ο Βήµα - - * 12 *

62 3ο Βήµα - - * 12 *

63 Για την υλοποίηση ενός τέτοιου δέντρου θα χρησιµοποιηθεί µια µεταβαλλόµενη εγγραφή για την παράσταση κάθε κόµβου του. Εχουµε λοιπόν τους ορισµούς : typedef enum { oros,telest } typos_dedomenon; typedef struct typos_komvou *typos_deikti; typedef struct typos_komvou { typos_dedomenon simadi; float arithmos; char xaraktiras; typos_deikti apaidi,dpaidi; }; typos_deikti riza;

64 Στους παραπάνω ορισµούς παρατηρούµε ότι µόνο οι κόµβοι που περιέχουν τελεστές έχουν πεδία δεικτών apaidi και dpaidi για τους υπόλοιπους δεν χρειάζονται γιατί είναι φύλλα. Στη συνέχεια παρουσιάζεται ένα αναδροµικό υποπρόγραµµα που υπολογίζει την τιµή της παράστασης. float ypologismos_dentrou(typos_deikti riza) {/* Eπιστρέφει την τιµή της παράστασης η οποία είναι καταχωρηµένη στο ανοµοιογενές δυαδικό δέντρο riza. */ float oros1,oros2; char symbolo; συνέχεια

65 } switch (riza->simadi) { case oros: /* Eνας µοναδικός όρος */ return riza->arithmos; case telest: oros1 = ypologismos_dentrou(riza->apaidi); oros2 = ypologismos_dentrou(riza->dpaidi); symbolo = riza->xaraktiras; return telestis(symbolo,oros1,oros2); }

66 Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισµός : Ενα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είναι κενό ή κάθε κόµβος του έχει ένα περιεχόµενο και: (i) όλα τα περιεχόµενα στο αριστερό υποδέντρο του t είναι µικρότερα (αριθµητικά ή αλφαβητικά) από το περιεχόµενο της ρίζας του t. (ii) όλα τα περιεχόµενα στο δεξί υποδέντρο του t είναι µεγαλύτερα από το περιεχόµενο της ρίζας του t. (iii) το αριστερό και το δεξί υποδέντρο του t είναι επίσης δυαδικά δέντρα αναζήτησης.

67 Οι βασικές πράξεις που ορίζουν τον ΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες: 1. Δηµιουργία : Δηµιουργεί ένα κενό ΔΔΑ. 2. Κενό : Ελέγχει αν το ΔΔΑ είναι κενό. 3. Αναζήτηση : Επιστρέφει τη θέση του κόµβου µε δεδοµένο περιεχόµενο. 4. Εισαγωγή : Εισάγει ένα κόµβο στο ΔΔΑ έτσι ώστε το προκυπτόµενο δέντρο να είναι ένα ΔΔΑ. 5. Διαγραφή : Διαγράφει ένα κόµβο µε δεδοµένο περιεχόµενο έτσι ώστε το προκυπτόµενο δέντρο να είναι ένα ΔΔΑ.

68 Αναδροµικό υποπρόγραµµα : Αναζήτηση void anazitisi_dentrou(typos_deikti riza, typos_stoixeiou stoixeio, typos_deikti *prosorinos, int *vrethike) {/* Mετά: Aν το περιεχόµενο ενός κόµβου του ΔΔA riza είναι ίσο µε stoixeio τοτε τo *prosorinos δείχνει τον κόµβο αυτό και η *vrethike είναι 1,αλλιώς το *vrethike είναι 0 και τo *prosorinos είναι NULL. */ συνέχεια

69 if (keno_dentro(riza)) { *prosorinos = NULL; *vrethike = 0; } else { if (riza->dedomena == stoixeio) { *prosorinos = riza; *vrethike = 1; } else { if ( stoixeio < riza->dedomena ) /* αναζήτηση αριστερού υπόδεντρου */ anazitisi_dentrou(riza->apaidi, stoixeio,prosorinos,vrethike); συνέχεια

70 } } } else /* αναζήτηση δεξιού υπόδεντρου */ anazitisi_dentrou(riza->dpaidi, stoixeio,prosorinos,vrethike);

71 Μη Αναδροµικό υποπρόγραµµα : void anazitisi_dentrou(typos_deikti riza, typos_stoixeiou stoixeio, typos_deikti *prosorinos,int *vrethike) { *prosorinos = riza; *vrethike = 0; while (!(*vrethike) && ((*prosorinos)!= NULL)) if (stoixeio<((*prosorinos)->dedomena)) *prosorinos = (*prosorinos)->apaidi; else if (stoixeio > ((*prosorinos)->dedomena)) *prosorinos=(*prosorinos)->dpaidi; else *vrethike = 1; } Πολυπλοκότης : Ο(n)

72 Εισαγωγή κόµβου int eisagogi_dentro(typos_deikti *riza,typos_stoixeiou stoixeio) {/* Mετά: Aν το stoixeio δεν ανήκει στο ΔΔA τότε εισάγεται και επιστρέφεται 1, αλλιώς επιστρέφεται 0. */ int eisagogi; if (keno_dentro(*riza)) {*riza = (typos_deikti) malloc(sizeof(struct typos_komvou)); (*riza)->dedomena = stoixeio; (*riza)->apaidi = NULL; (*riza)->dpaidi = NULL; eisagogi = 1; } συνέχεια

73 } else if (stoixeio < (*riza)->dedomena ) /* εισαγωγή στο αριστερό υπόδεντρο */ eisagogi = eisagogi_dentro( &((*riza)->apaidi),stoixeio); else if (stoixeio > (*riza)->dedomena ) /* εισαγωγή στο δεξιό υπόδεντρο */ eisagogi = eisagogi_dentro( &((*riza)->dpaidi),stoixeio); else /* O κόµβος είναι ήδη στο δέντρο */ eisagogi = 0; return eisagogi;

74 Ας υποθέσουµε ότι επιθυµούµε την εισαγωγή του Ν στο ακόλουθο δυαδικό δέντρο αναζήτησης : riza... K pateras prosorinos E P C G M R

75 riza.. K pateras E P. prosorinos C G M R

76 riza. K E P. pateras C G M R. prosorinos

77 riza. K E P C G M R. pateras. prosorinos

78 K E P C G M R. pateras N. prosorinos

79 typos_deikti anazitisi_patera(typos_deikti riza, typos_stoixeiou stoixeio, typos_deikti *pateras, int *vrethike) { /* Mετά: Aν το ΔΔA riza δεν είναι κενό και το stoixeio δεν ανήκει σε αυτό τοτε το *vrethike είναι 0 και το *pateras είναι η διεύθυνση του κόµβου που θα ήταν πατέρας του stoixeio. Aν το riza δεν είναι κενό και το stoixeio ανήκει στο δέντρο και δεν βρίσκεται στη ρίζα του,τότε το *vrethike είναι 1 και το *pateras είναι η διεύθυνση του κόµβου πατέρα του. Aν το stoixeio βρίσκεται στη ρίζα του δέντρου τότε το *vrethike είναι 1 και το *pateras είναι NULL. Aν το δέντρο είναι κενό τότε το *vrethike είναι 0 και το *pateras είναι NULL. Aν το stoixeio ανήκει στο δέντρο τότε η συνάρτηση επιστρέφει τη διεύθυνση του κόµβου που περιέχει το stoixeio, αλλιώς η συνάρτηση επιστρέφει NULL. */ συνέχεια

80 } typos_deikti prosorinos; prosorinos = riza; *pateras = NULL;*vrethike = 0; while (!(*vrethike) && (prosorinos!=null)) { if ( stoixeio < prosorinos->dedomena ) { *pateras = prosorinos; prosorinos = prosorinos->apaidi;} else if ( stoixeio > prosorinos->dedomena ) { *pateras = prosorinos; prosorinos = prosorinos->dpaidi;} else *vrethike = 1; /* ο κόµβος υπάρχει */ } return prosorinos;

81 int eisagogi_dentro(typos_deikti *riza, typos_stoixeiou stoixeio) { /* Mετά: Aν το stoixeio δεν ανήκει στο ΔΔA τότε εισάγεται και επιστρέφεται 1, αλλιώς επιστρέφεται 0. */ typos_deikti prosorinos,pateras; int vrethike; anazitisi_patera(*riza,stoixeio,&pateras,&vrethike); if (vrethike) return 0; else { prosorinos = (typos_deikti) malloc(sizeof(struct typos_komvou)); prosorinos->dedomena = stoixeio; prosorinos->apaidi = NULL; συνέχεια prosorinos->dpaidi = NULL;

82 } } if ( pateras == NULL ) /* Kενό Δέντρο */ *riza = prosorinos; else if ( stoixeio < pateras->dedomena ) pateras->apaidi = prosorinos; else pateras->dpaidi = prosorinos; return 1;

83 Διαγραφή κόµβου Για τη διαγραφή ενός κόµβου x από ένα ΔΔΑ διακρίνουµε τρεις περιπτώσεις: 1. Ο κόµβος x είναι φύλλο. 2. Ο κόµβος x έχει ένα παιδί. 3. Ο κόµβος x έχει δύο παιδιά.

84 1. Ο κόµβος x είναι φύλλο D B F A C E G x.

85 D B F A C E G x.

86 2. Ο κόµβος x έχει ένα παιδί x. B D F x. B D F A E G A E G

87 Διαγραφή κόµβου µε το πολύ ένα υποδέντρο. pateras x. 2 1 ypodentro

88 ypodentro = x.dpaidi; {o x δεν έχει αριστερό υπόδεντρο} if (ypodentro == NULL) ypodentro = x.apaidi; if (pateras == NULL) /*διαγράφεται η ρίζα*/ riza = ypodentro; else if (pateras.apaidi == x) pateras.apaidi = ypodentro; else pateras.dpaidi = ypodentro;

89 3. Ο κόµβος x έχει δύο παιδιά x. D Α F. pateras xepomenos. E G

90 x. E Α F xepomenos. E G

91 x. D Α F. pateras xepomenos. E G

92 Μη Αναδροµικό void diagrafi_dentrou (typos_deikti *riza, typos_stoixeiou stoixeio) /*Εντοπίζει τον κόµβο µε περιεχόµενο stoixeio και το διαγράφει από το ΔΔΑ*/ typos_deikth x; /*δείχνει τον κόµβο µε περιεχόµενο stoixeio*/ typos_deikth pateras; /*ο πατέρας του x ή του xepomenos*/ typos_deikth xepomenos; /*ο ενδοδιατεταγµένος επόµενος του x*/ typos_deikth ypodentro; /*δείχνει το υποδέντρο του x*/ char vrethike; /*true αν το περιεχόµενο της stoixeio βρίσκεται στο ΔΔΑ*/ συνέχεια

93 { anazitisi_patera (*riza, stoixeio, x, &pateras, &vrethike); if (!vrethike) printf ( Ο κόµβος δεν υπάρχει στο ΔΔΑ ); else { if ((x->apaidi!= NULL) && (x->dpaidi!= NULL)) { /*ο κόµβος έχει δύο παιδιά*/ /*εντοπισµός του ενδοδιατεταγµένου επόµενου κόµβου και του πατέρα του*/ xepomenos = x->dpaidi; pateras = x; while (xepomenos->apaidi!= NULL) { /*µονοπάτι αριστερών υποδέντρων*/ pateras = xepomenos; συνέχεια

94 xepomenos := xepomenos^.apaidi } /*ανταλλαγή των περιεχοµένων των xepomenos και και αλλαγή της τιµής του x ώστε να δείχνει τον xepomenos που πρόκειται να διαγραφτεί*/ x->dedomena = xepomenos->dedomena; x = xepomenos; } /*Προχώρησε για τις περιπτώσεις όπου ο κόµβος έχει 0 ή 1 παιδί*/ ypodentro = x ->dpaidi; if (ypodentro ==NULL) ypodentro = x ->apaidi; if (pateras == NULL) /*διαγράφεται η ρίζα*/ riza = ypodentro; συνέχεια

95 else if (pateras->apaidi == x) /*αριστερό παιδί του πατέρα*/ pateras->apaidi = ypodentro; else pateras->dpaidi = ypodentro; free(x); } } /*diagrafi_dentrou*/

96 Αναδροµικό int diagrafi(typos_deikti *riza, typos_stoixeiou stoixeio) { /* Mετά: Aν το stoixeio ανήκει στο ΔΔA τότε διαγράφεται και η συνάρτηση επίστρέφει 1,αλλιώς 0. */ int diagraf; if (keno_dentro(*riza)) /* Δεν υπάρχει στο ΔΔA */ diagraf = 0; else if ((*riza)->dedomena < stoixeio ) diagraf = diagrafi (&((*riza)->dpaidi),stoixeio); else if ((*riza)->dedomena > stoixeio ) diagraf = diagrafi ( &((*riza)->apaidi),stoixeio); else {diagrafi_komvou(riza); diagraf = 1;} return diagraf; }

97 Το υποπρόγραµµα diagrafi-komvou(riza) διαγράφει τον κόµβο που δείχνει η riza. void diagrafi_komvou(typos_deikti *riza) { /* Προ : Tο *riza είναι ένα µη κενό ΔΔA.Mετά: Aν ο κόµβος *riza είχε 1 ακριβώς παιδί τότε διαγράφθηκε το περιεχόµενο της ρίζας από το ΔΔA και το παιδί έγινε ρίζα. Aν ο κόµβος *riza δεν είχε κανένα παιδί τότε έγινε κενό ΔΔA. Aν ο κόµβος *riza είχε 2 παιδιά τότε ιαγράφθηκε ο ενδοδιατεταγµένος επόµενός του και το περιεχόµενό του αντιγράφθηκε στον *riza */ } typos_deikti prosorinos; prosorinos = *riza; if ((prosorinos->dpaidi) == NULL ) { (*riza) = prosorinos->apaidi; free(prosorinos); } else if ((prosorinos->apaidi) == NULL ) { (*riza) = prosorinos->dpaidi; free(prosorinos);} else andalagi(&((*riza)->dpaidi),*riza);

98 Oπου το υποπρόγραµµα andalagi(p,q) εντοποίζει τον ενδοδιατεταγµένο επόµενο του κόµβου που δείχει 0 p. void andalagi(typos_deikti *epomenos, typos_deikti riza) {/* Προ : Tο riza δείχνει κάποιο κόµβο ΔΔA και το *epomenos το δεξί παιδί του. Mετά: Tο περιεχόµενο του κόµβου που έχει διεύθυνση riza έγινε ίσο µε το περιεχόµενο του ενδοδιατεταγµένου εποµενού του και απελευθερώθηκε ο χώρος που καταλαµβανόταν από τον ενδοδιατεταγµένο επόµενο. */ /* εύρεση του ενδοδιατεταγµένου επόµενου */ if (((*epomenos)->apaidi)!= NULL) andalagi(&((*epomenos)->apaidi),riza); συνέχεια

99 } else /* βρέθηκε ο ενδοδιατεταγµένος επόµενος */ { riza->dedomena=(*epomenos)->dedomena; free(*epomenos); /* αντικατάσταση του *epomenos µε το δεξί παιδί του */ *epomenos = (*epomenos)->dpaidi; }

100 Εφαρµογές δυαδικών δέντρων : Κώδικες Huffman Επεκταµένο Δυαδικό Δέντρο A B C D E F G

101 l G = = 4 E = = 27 I = = 13 Πρόταση : Αν s i είναι το πλήθος των εξωτερικών κόµβων στο επίπεδο i, τότε : E = h + 1 i= 2 si( i -1) Πρόταση : Αν s i είναι το πλήθος των εξωτερικών κόµβων στο επίπεδο i, τότε : I n ) = h i= 2 i( i -1

102 Ι(Τ) µέση απόσταση ενός εσωτερικού κ κόµβ = n Ε(Τ) µέση απόσταση ενός εξωτερικού κκόµβο = n + 1 I( ) = 0 ( ) I T = = I(T 1 ) + I(T r ) + n - 1 T 1 T r

103 E( ) = 0 ( ) E T = = E(T 1 ) + E(T r ) + n + 1 T 1 T r Πρόταση : Για ένα δυαδικό δέντρο Τ µε n εσωτερικούς κόµβους ισχύει : D(T) = 2n όπου D(T) = E(T) - I(T)

104 Eχουµε ότι : E(T) = I(T) + 2n πράγµα που σηµαίνει ότι αρκεί να µελετηθούν οι ιδιότητες µόνο του Ε(Τ) ή του Ι(Τ). Ο µέσος αριθµός συγκρίσεων S(n) σε µια επιτυχηµένη αναζήτηση είναι : S(n) = 1+ I n όπου υποτίθεται ότι όλοι οι κόµβοι έχουν την ίδια πιθανότητα εµφάνισης.

105 Ο µέσος αριθµός συγκρίσεων U(n) σε µια αποτυχηµένη αναζήτηση είναι : U(n) E = n + 1 Συνδιάζοντας τις ανωτέρω σχέσεις εύκολα προκύπτει : S(n) = n U(n) Συνεπώς ο µέσος αριθµός συγκρίσεων για µια επιτυχηµένη αναζήτηση είναι περίπου ο ίδιος µε εκείνον για µια αποτυχηµένη αναζήτηση. Γνωρίζοντας δηλαδή ότι ένα στοιχείο βρίσκεται στη λίστα, η αναζήτησή του µε τη µέθοδο των συγκρίσεων των κλειδιών του δεν προσφέρει µεγάλη βοήθεια. -1

106 Ποιά είναι όµως η ελάχιστη και µέγιστη δυνατή τιµή του Ι από όλα τα δυαδικά δέντρα µε n εσωτερικούς κόµβους ; Ι = (n-2) + (n-1) = n(n-1)/2. Ο(n 2 ) Η ελάχιστη τιµή του Ι επιτυγχάνεται για ένα πλήρες δυαδικό δέντρο : Ι min = O(nlog 2 n)

107 E = E = 63 7 E = E = 48 1 i n w i I i Ποιός είναι ο καλύτερος κώδικας για το σύνολο των χαρακτήρων {C 1, C 2,, C n };

108 Αλγόριθµος Huffman 1. Δηµιουργία µιας λίστας από δυαδικά δέντρα µε ένα κόµβο που περιέχουν τα βάρη w 1, w 2,..., w n ταξινοµηµένα (π.χ. σε αύξουσα σειρά), ένα για κάθε χαρακτήρα C 1, C 2,..., C n. 2. Τα παρακάτω βήµατα εκτελούνται n-1 φορές: a. Εύρεση δύο δέντρων Τ και Τ της λίστας µε ρίζες τα µικρότερα βάρη w και w. b. Αντικατάσταση των δέντρων αυτών µε ένα δυαδικό δέντρο του οποίου η ρίζα είναι w + w υποδέντρα του τα Τ και Τ δίνοντας τις τιµές 0 και 1 για τους δείκτες του αριστερού και δεξιού υποδέντρου του, αντίστοιχα. 3. Ο κώδικας για τον χαρακτήρα C i είναι εκείνη η διψήφια σειρά χαρακτήρων που ξεκινά από τη ρίζα του τελικού δυαδικού δέντρου και καταλήγει στο φύλλο C i.

109 w +w 0 1 Τ Τ Στη συνέχεια ας υποθέσουµε ότι έχουµε τον παρακάτω πίνακα: Χαρακτήρας Α B C D E βάρος Τότε η εφαρµογή του αλγορίθµου του Huffman παράγει τις παρακάτω διαδοχικές φάσεις δηµιουργίας του δυαδικού δέντρου αποκωδικοποίησης:

110 1) B E A D C ) B E A D C

111 ) B E A D C

112 ) B E A D C

113 ) B E A D C

114 Οι κώδικες Huffman που λαµβάνονται από το παραπάνω δέντρο είναι: Χαρακτήρας A B C D E Κώδικας Huffmann E = Επίσης η ποσότητα είναι ίση µε : 1 i n w i I i Ε = 0.1*3+0.15*3+0.2*2+0.25*2+0.3*2 = 2.25

115 Ας σηµειωθεί ότι είναι δυνατή µια διαφορετική αντιστοιχία κωδικών στους χαρακτήρες του παραδείγµατος µε την ίδια τιµή για την Ε. Πράγµατι, στη δεύτερη φάση δηµιουργίας του δυαδικού δέντρου θα µπορούσαµε να προχωρήσουµε όπως φαίνεται παρακάτω: B E A D C

116 B E C A D

117 B E C A D

118 Στην περίπτωση αυτή οι κώδικες που αντιστοιχούν στους χαρακτήρες δίνονται από τον παρακάρω πίνακα : Χαρακτήρας A B C D E Κώδικας Huffmann

119 Αλγόριθµος αποκωδικοποίησης Huffman 1. Αρχικά ένας δείκτης p τοποθετείται στη ρίζα του δέντρου Huffman. 2. Οσο δεν έχει βρεθεί το τέλος του µηνύµατος να εκτελούνται τα παρακάτω: α. Εστω x είναι το επόµενο bit στη σειρά χαρακτήρων. β. Αν x == 0 τότε p = p.apaidi διαφορετικά p = p.dpaidi γ. Αν ο p δείχνει σ' ένα φύλλο τότε: i. Να εκτυπωθεί ο χαρακτήρας αυτού του φύλλου ii. p = riza

120 Για παράδειγµα, ας υποτεθεί ότι το µήνυµα έχει ληφθεί και κωδικοποιήθηκε µε τη δηµιουργία του δεύτερου δέντρου Huffman. Τότε η εκάστοτε διαδροµή του p είναι αυτή που παριστάνεται µε τα ορθογώνια στο παρακάτω σχήµα : D E A D

121 1 h = h = 6 5 6

122 Το ύψος h ενός ΔΔΑ εξαρτάται από το σχήµα του. Ας υποθέσουµε ότι οι κόµβοι έχουν φθάσει µε µια τυχαία σειρά, τότε πόσες περισσότερες συγκρίσεις, κατά µέσο όρο, απαιτούνται σε µια αναζήτηση του προκυπτόµενου τυχαίου ΔΔΑ από εκείνες που απαιτεί ένα τέλεια ισοζυγισµένο ΔΔΑ; S(n) = U(n) n -1 (1) S(n) = 1+ U(0) + U(1) n U(n -1) (2)

123 (1),(2) (n + 1)U(n) = 2n + U(0) + U(1) U(n -1) (3) n := n+1 n U(n -1) 2(n -1) + U(0) + U(1) U(n - 2) = (4) (3) - (4) 2 U(n) = U(n -1) + (5) n + 1

124 U(n) = 0 n=1, n=2,... U(1) = U(0) + U(2) = U(1) U(1) = U(1) = U(n) = n + 1 U(n) = 2 Hn+ 1 ή (6) 2

125 όπου n H n + 1 = αρµονικός αριθµός H = ln(n) + γ n 12n 120n - n (7) 1 0, γ n σταθερά του Euler (6) (7) U(n) = 2 Hn ln(n) ln(n) = (ln2) (log2n) U(n) 2 (ln2) (log2n) ή U(n) 1.39 log2n

126 όπου n H n + 1 = αρµονικός αριθµός H = ln(n) + γ n 12n 120n - n (7) 1 0, γ n σταθερά του Euler

127 (6) (7) ή U(n) = 2 Hn ln(n) ln(n) = (ln2) (log2n) U(n) 2 (ln2) (log2n) U(n) 1.39 log2n Το µέσο κόστος για τη µη ισοζύγιση ενός ΔΔΑ είναι περίπου 39% περισσότερες συγκρίσεις.

128 AVL δέντρα h L - h R 1 h L h R G.M. Adelson_Velkii και E.M. Landis 1962

129 AVL Δέντρα _

130 Μη AVL Δέντρα

131 Εισαγωγή κόµβου 4, 6 : 4 12 : 4 Αριστερή στροφή _ _ 12

132 8, 14 : _ 4 6 _ 12 7 : 6 _ 4 12 Δεξιά στροφή _ 14 _ 7

133 _ Αριστερή στροφή _ 6 _ 8 12 _ 7 12 _ 14 _

134 LL : ο νέος κόµβος Υ εισάγεται στο αριστερό υποδέντρο του αριστερού υποδέντρου του Α. LR : ο νέος κόµβος Υ εισάγεται στο δεξί υποδέντρο του αριστερού υποδέντρου του Α. RR : ο νέος κόµβος Υ εισάγεται στο δεξί υποδέντρο του δεξιού υποδέντρου του Α. RL : ο νέος κόµβος Υ εισάγεται στο αριστερό υποδέντρο του δεξιού υποδέντρου του Α.

135 Περίπτωση 1 : Δεξία Υψηλό h Τ 1 p. r x. Αριστερή στροφή p. prosorinos r p h+1 4. prosorinos x h+1 Τ 3 h Τ 2 Τ 3 Τ 1 Τ 2 Συνολικό ύψος = h+3 νέος Συνολικό ύψος = h+2

136 void aristeri_peristrofi (typos_deikti *p); { /*Ο p δείχνει τη ρίζα του υποδέντρου που περιστρέφεται*/ typos_deikti prosorinos; if (keno_dentro(*p)) /*Είναι αδύνατη η περιστροφή*/ printf ( Κενό δέντρο ) /*ενός κενού δέντρου*/ else if (keno_dentro((*p)->dpaidi)) /*Είναι αδύνατο να γίνει ρίζα ένα κενό υποδέντρο*/ printf ( Κενό δεξί υποδέντρο ) else { prosorinos = (*p)->dpaidi; συνέχεια

137 (*p)->dpaidi = prosorinos->apaidi; prosorinos->apaidi :=* p; *p = prosorinos; } } /*aristeri_peristrofi*/

138 Περίπτωση 2 :Αριστερά Υψηλό 2 r h w 1 Τ 1 h - 1 ή h Τ 2 ή h - 1 ή h Τ 3 Τ 4 h νέος νέος Ενα από τα Τ 2 ή Τ 3 έχει ύψος h.. Συνολικό ύψος = h+3

139 r w h Τ 1 x Τ 2. Συνολικό ύψος = h+3 h - 1 Τ 3 Τ 4 h

140 _ w r x h Τ 1 Τ 2 Τ 3 Τ 4. Συνολικό ύψος = h+2 Αποκατάσταση ισοζύγισης (διπλή RL περιστροφή). Οι αριθµοί στους κύκλους δηλώνουν την προτεραιότητα των ενεργειών. Εθνικό & Καποδιστριακό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής

141 παλιό w _ νέο r _ νέο x _

142 H αποκατάσταση της ισοζύγισης µε τις RR και RL περιστροφές υλοποιείται µε το παρακάτω υποπρόγραµµα. void dexi_varos (typos_deikti *riza); { typos_deikti x; {δείκτης στο δεξί υποδέντρο της ρίζας} typos_deikti w; x = (*riza)->dpaidi; switch (x->pi) { case DY: {απλή RR περιστροφή} (*riza)->pi = IY; x->pi = IY; aristeri_peristrofi(riza); ypsilotero = false break; συνέχεια

143 case IY: /*Δεν συµβαίνει η περίπτωση αυτή*/ printf ( Λάθος ); break; case AY:/*διπλή RL περιστροφή*/ w = x->apaidi; switch (w->pi) { case IY: riza->pi=iy; x->pi= IY break; case AY: riza->pi=iy; x->pi= DY break; case DY: riza->pi=ay; x->pi=iy break; } w->pi=iy; dexia_peristrofi(&x); συνέχεια

144 } } }/*dexi_varos*/ /*o x δείχνει τώρα τον w*/ riza->dpaidi = x; aristeri_peristrofi(*riza); ypsilotero = false;

145 Tο υποπρόγραµµα εισαγωγής ενός κόµβου σε ένα AVL δέντρο είναι το ακόλουθο : void avl_eisagogi (typos_deikti *riza, typos_deikti prosorinos, typos_deikti stoixeio, char *ypsilotero) { char ypsilotero_ypodentro; /* Εχει αυξηθεί το ύψος ενός υποδέντρου*/ typos_deikti temp; συνέχεια

146 { if (keno_dentro(riza)) { *riza = prosorinos; (*riza)->apaidi = NULL; (*riza)->dpaidi = NULL; (*riza)->pi = IY; ypsilotero = true;} else if (prosorinos->dedomena == stoixeio) printf( Ο κόµβος υπάρχει ήδη στο ΔΔΑ ); else if (prosorinos->dedomena < stoixeio) { /*εισαγωγή στο αριστερό υποδέντρο*/ temp=(*riza)->apaidi; avl_eisagogi (&temp, prosorinos, stoixeio, ypsilotero_ypodentro); (*riza)->apaidi=temp; συνέχεια

147 } if (ypsilotero_ypodentro) switch (pi) { case AY: aristero_varos(*riza); break; case IY: pi=ay; ypsilotero=true; break; case DY: pi=iy;ypsilotero=false; break; } else ypsilotero = false; συνέχεια

148 } }/*avl_eisagogi*/ else {/*εισαγωγή στο δεξί υποδέντρο*/ avl_eisagogi (dpaidi, prosorinos, stoixeio, ypsilotero_ypdodentro); if (ypsilotero_ypodentro) switch (pi) case AY:pi=IY;ypsilotero=false; break; case IY: pi=dy;ypsilotero=true; break; case DY: dexi_varos(*riza); break; } } ypsilotero = false;

149 Το ύψος ενός AVL δέντρου h-1 F l F r h-2 F = Fh-1 + Fh- 2 h + F 0 = 1 F 1 = 2 1 F h + 1= k h+ 2

150 h 1.44 log 2 F h ή h 1.44 log2n Εποµένως οι αλγόριθµοι για την επεξεργασία των AVL δέντρων απαιτούν το πολύ 44% περισσότερο χρόνο από το βέλτιστο. Στην πράξη όµως έχει βρεθεί ότι ο χρόνος αυτός είναι πολύ λιγότερος.

151 Δέντρα Fibonacci _ F 1 _ F 2 _ F 3

152 _ F 4

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

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

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

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

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

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

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

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

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

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

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

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

AVL δέντρα. h L h R. G.M. Adelson_Velkii και E.M. Landis 1962

AVL δέντρα. h L h R. G.M. Adelson_Velkii και E.M. Landis 1962 AVL δέντρα L - R 1 L R G.M. AdelsonVelkii και E.M. Landis 1962 AVL Δέντρα Μη AVL Δέντρα Εισαγωγή κόμβου 4, 6 : 4 12 : 6 4 6 Αριστερή στροφή 6 4 12 12 8, 14 : 6 4 12 8 14 7 : 4 6 12 6 4 8 6 8 12 7 8 14

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

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 6: ΑΤΔ Δένδρο, ΑΤΔ Δυαδικό Δένδρο Αναζήτησης (ΔΔΑ)

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 6: ΑΤΔ Δένδρο, ΑΤΔ Δυαδικό Δένδρο Αναζήτησης (ΔΔΑ) Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 6: ΑΤΔ Δένδρο, ΑΤΔ Δυαδικό Δένδρο Αναζήτησης (ΔΔΑ) Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Σκοποί ενότητας Ορίσει

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

υαδικό δέντρο έντρα (Trees) -Ιεραρχική οµή

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

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

Μη AVL Δέντρα Εισαγωγή κόμβου 4, 6 : 4 12 :

Μη AVL Δέντρα Εισαγωγή κόμβου 4, 6 : 4 12 : AVL δέντρα AVL Δέντρα L R G.M. AdelsonVelkii και E.M. Landis 192 Μη AVL Δέντρα Εισαγωγή κόμβου, : : Αριστερή στροφή 1 8, 1 : 8 1 7 : 7 8 1 Δεξιά στροφή 8 7 Αριστερή στροφή 1 8 7 1 Περιπτώσεις LL : ο νέος

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

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

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

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

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας ΣΤΟΙΒΕΣ (stacks) Η στοίβα είναι µια συλλογή δεδοµένων µε γραµµική διάταξη στην οποία όλες οι εισαγωγές και οι διαγραφές γίνονται στο ένα άκρο που λέγεται κορυφή (top) της στοίβας Σχήµα: Λειτουργία Στοίβας

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

ΕΠΛ232: Εργαστήριο 2

ΕΠΛ232: Εργαστήριο 2 ΕΠΛ232: Εργαστήριο 2 Παράδειγμα σε Στοίβες 1 Υπολογισμός Αριθμητικών Παραστάσεων - Πολωνικός Συμβολισμός A + (B * C) A + (BC * ) A(BC *) + ABC * + Ενδοθεματική μορφή Μεταθεματική μορφή Οι κανόνες που διέπουν

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

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών ΛΙΣΤΕΣ Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα Υλοποίηση με δείκτες (pointers) Υλοποίηση με πίνακα Εφαρμογές και Χρήση Λιστών Λίστες (Lists) Δεδομένα

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

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

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

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

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

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

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

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

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

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

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή.

Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή. Tύπος δεδοµένων (data type) µιας µεταβλητής (σε µια γλώσσα προγραµµατισµού) είναι το σύνολο των τιµών που µπορεί να πάρει η µεταβλητή. Αφηρηµένος τύπος δεδοµένων (abstract data type): είναι ένα θεωρητικό

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

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

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

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

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

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

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

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

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

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out)

ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ. Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 20: Δυαδικό Δέντρο Αναζήτησης Δυαδικό δέντρο Κάθε κόμβος «γονέας» περιέχει δύο δείκτες που δείχνουν σε δύο κόμβους «παιδιά» του ιδίου τύπου. Αν οι δείκτες προς αυτούς

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

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

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

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

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

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

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

Εκτενείς Δομές Δεδομένων

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

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

Ισοζυγισμένα υαδικά έντρα Αναζήτησης

Ισοζυγισμένα υαδικά έντρα Αναζήτησης Ισοζυγισμένα υαδικά έντρα Αναζήτησης ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη Ισοζυγισμένα υαδικά έντρα Αναζήτησης Ισοζυγισμένα Α είναι

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

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

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

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

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

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

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

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

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

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

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

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

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

Χρήσεις Στοίβας ΣΤΟΙΒΑ. Ορισμός Στοίβας (stack) Βασική Λειτουργικότητα

Χρήσεις Στοίβας ΣΤΟΙΒΑ. Ορισμός Στοίβας (stack) Βασική Λειτουργικότητα ΣΤΟΙΒΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΗ ΙΔΙΟΤΗΤΑ ΤΗΣ ΣΤΟΙΒΑΣ Το τελευταίο στοιχείο που εισήχθη θα εξαχθεί πρώτο. Άλλο όνομα L I F O (Last In First Out) Χρήσεις Στοίβας Καθημερινή Ζωή (όχι πάρα πολλές) Δίσκοι Τραπεζαρίας

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

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

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

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

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω

Ουρές (Queues) FIFO A B C. Διαγραφή. Εισαγωγή. εµπρός. πίσω. πίσω. πίσω εµπρός Ουρές (Queues) A B C FIFO εµπρός πίσω B C Διαγραφή εµπρός πίσω B C D E Εισαγωγή πίσω Ορισµός Η ουρά είναι µια γραµµική λίστα στην οποία η διαγραφή ενός στοιχείου γίνεται στο ένα άκρο το οποίο καλείται

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εκτενείς Δομές Δεδομένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ????

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ???? η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα θέση (index) dedomena epomenos lista = 0 1 3 Ελένη Σπύρος Βασίλης -1 1 Στη συνέχεια θα πρέπει να γνωρίζουμε την οργάνωση

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

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

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

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

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα. Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 2: ΑΤΔ Στοίβα Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Σκοποί ενότητας Ορίζει τον ΑΤΔ Στοίβα Σχεδιαστικές Επιλογές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Η διαδικασία PercolateDown, Δημιουργία Σωρού O Αλγόριθμος Ταξινόμησης HeapSort Υλοποίηση, Παραδείγματα

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 Χρησιµοποιούµε τη δοµή Κατ οίκον Εργασία 3 Σκελετοί Λύσεων typedef struct Node int data; struct node *lchild; struct node *rbro; node; και υποθέτουµε πως ένα τυχαίο δένδρο είναι υλοποιηµένο ως

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

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

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

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

Προγραµµατισµός Ι (ΗΥ120)

Προγραµµατισµός Ι (ΗΥ120) Προγραµµατισµός Ι (ΗΥ120) Διάλεξη 15: Διασυνδεµένες Δοµές - Λίστες Δοµές δεδοµένων! Ένα τυπικό πρόγραµµα επεξεργάζεται δεδοµένα Πώς θα τα διατάξουµε? 2 Τι λειτουργίες θέλουµε να εκτελέσουµε? Πώς θα υλοποιήσουµε

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

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

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

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

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ Ουρές Προτεραιότητας (Priority Queues) Θεωρούµε ότι τα προς αποθήκευση στοιχεία έχουν κάποια διάταξη (καθένα έχει µια προτεραιότητα). Τα προς αποθήκευση στοιχεία είναι

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

ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3.

ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων. Bασικές πράξεις : 1. Δηµιουργία. 2. Μήκος. 3. ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συµβολοσειρά Μία συµβολοσειρά είναι µία ακολουθία χαρακτήρων Bασικές πράξεις : 1. Δηµιουργία 2. Μήκος 3. Ανάκτηση 4. Προσάρτηση 5. Διαγραφή 6. Αντιγραφή 7. Συνένωση 8. Αναζήτηση

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

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης

Δοµές Δεδοµένων. 18η Διάλεξη Ισορροπηµένα δέντρα. Ε. Μαρκάκης Δοµές Δεδοµένων 18η Διάλεξη Ισορροπηµένα δέντρα Ε. Μαρκάκης Περίληψη Επανάληψη των Τυχαιοποιηµένων ΔΔΑ, Στρεβλών ΔΔΑ, Δέντρων 2-3-4 Δέντρα κόκκινου-µαύρου Λίστες Παράλειψης Χαρακτηριστικά επιδόσεων - συµπεράσµατα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #5 2 Γενικά Στο Τετράδιο #5 του Εργαστηρίου θα ασχοληθούμε με πιο προχωρημένα θέματα υλοποίησης

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

Δρ. Πέτρος Παναγή B123

Δρ. Πέτρος Παναγή B123 Δρ. Πέτρος Παναγή petrosp@cs.ucy.ac.cy B123 1 ΣΥΜΒΟΛΟΣΕΙΡΕΣ (Strings) Ο ΑΤΔ Συμβολοσειρά Μία συμβολοσειρά είναι μία συλλογή χαρακτήρων με διάταξη Bασικές πράξεις : (Είναιτοελάχιστοδυνατόσύνολοπράξεων)

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

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

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

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

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

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

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

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

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

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

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

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

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

AVL-trees C++ implementation

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

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

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

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

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

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

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

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

Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους

Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους Κάθε στοιχείο του ΑΤΔ συνδεδεμένη λίστα (linked list) καλείται κόμβος (node) και περιέχει δύο πεδία. Στο ένα πεδίο αποθηκεύονται τα δεδομένα και Στο άλλο αποθηκεύεται

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

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

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

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

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα?

h/2. Άρα, n 2 h/2-1 h 2log(n+1). Πως υλοποιούµε τη LookUp()? Πολυπλοκότητα? Κόκκινα-Μαύρα ένδρα (Red-Black Trees) Ένα κόκκινο-µαύρο δένδρο είναι ένα δυαδικό δένδρο αναζήτησης στο οποίο οι κόµβοι µπορούν να χαρακτηρίζονται από ένα εκ των δύο χρωµάτων: µαύρο-κόκκινο. Το χρώµα της

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

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

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

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

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

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

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

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

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

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,

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

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

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

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) Αρχείο είναι μια συλλογή δεδομένων του ίδιου τύπου. Ενα αρχείο αποθηκεύεται στην περιφερειακή μνήμη (σκληρό δίσκο, δισκέττα). Τα αρχεία είναι μόνιμα. Τα δεδομένα

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου 2011 Θέµα 1 (α') 1 - i 2 - ii 3 - iii 4 - iv 5 - v 6 - vi 7 - vii 8 - viii 9 - ix 10 - x Το αποτέλεσµα είναι η αντιστοιχία των

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

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα ηµήτρης Φωτάκης Τµήµα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστηµάτων έντρα Αναζήτησης Πολλαπλής ιακλάδωσης ( ΑΠ ) ΑΠ ή έντρα m-δρόµων: Σ Βάσεων εδοµένων.

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

Οι Πράξεις. 1 η Υλοποίηση του ΑΤΔ: μονά συνδεδεμένη λίστα με δείκτες. Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους

Οι Πράξεις. 1 η Υλοποίηση του ΑΤΔ: μονά συνδεδεμένη λίστα με δείκτες. Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους Σχεδιασμός: Λίστα με Συνδεδεμένους Κόμβους Κάθε στοιχείο του ΑΤΔ συνδεδεμένη λίστα (linked list) καλείται κόμβος (node) και περιέχει δύο πεδία Στο ένα πεδίο αποθηκεύονται τα δεδομένα και Στο άλλο αποθηκεύεται

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

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

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

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

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t)

διεύθυνση πρώτου στοιχείου διεύθυνση i-οστού στοιχείου T t[n]; &t[0] είναι t &t[i] είναι t + i*sizeof(t) Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 18: ιασυνδεµένες οµές - Λίστες ιασυνδεδεµένες δοµές δεδοµένων Η µνήµη ενός πίνακα δεσµεύεται συνεχόµενα. Η πρόσβαση στο i-οστό στοιχείο είναι άµεσηκαθώς η διεύθυνση του

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Ταξινόµηση Mergesort Κεφάλαιο 8 Ε. Μαρκάκης Επίκουρος Καθηγητής Περίληψη Ταξινόµηση µε συγχώνευση Αλγόριθµος Mergesort Διµερής συγχώνευση Αφηρηµένη επιτόπου συγχώνευση Αναλυτική ταξινόµηση

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

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

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