Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

Download "Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη"

Transcript

1 Αλγόριθμοι Σωρών 1. Σωρός Μεγίστων 2. Ταξινόμηση με Σωρό 3. Σωρός Ελαχίστων Μεγίστων 4. Διπλός Σωρός Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

2 Ουρά Προτεραιότητας Η ουρά προτεραιότητας (prioiity queue) είναι µία σημαντική αφηρημένη δομή δεδομένων, που διακρίνεται για τις εξής δύο βασικές λειτουργίες εισαγωγή στοιχείου µε τυχούσα προτεραιότητα, και εξαγωγή στοιχείου µε τη μεγαλύτερη (ή τη μικρότερη) προτεραιότητα. Οι ουρές προτεραιότητας είναι πολύ σημαντικές κατά τη δημιουργία προσομοιώσεων γιατί περιγράφουν πολλά φαινόμενα της καθημερινής ζωής. Ο σωρός (heap) είναι µία δενδρική δομή για την υλοποίηση ουρών προτεραιότητας. Με άλλα λόγια, αν και ο σωρός είναι µία δενδρική δομή δεν έχει καμία σχέση µε τη λειτουργία της Δυαδικού Δένδρου Αναζήτησης. Στην έννοια του σωρού συμπεριλαμβάνεται µία μεγάλη οικογένεια δομών και αντίστοιχων αλγορίθμων. Οι δομές αυτές ανήκουν σε δύο βασικές κατηγορίες: τους σωρούς που υλοποιούνται µε στατικές δομές (δηλαδή µε πίνακες), και τους σωρούς που υλοποιούνται µε δυναμικές δομές (δηλαδή µε δείκτες). Στις επόμενες παραγράφους θα εξετάσουμε τη δομή του σωρού μεγίστων, του σωρού ελαχίστων και μεγίστων. 2

3 Δένδρο Μεγίστων - Ελαχίστων Πριν ορισθεί η έννοια του σωρού μεγίστων (max heap) είναι απαραίτητο να δοθεί ο εξής ορισμός. Ορισμός. Δένδρο μεγίστων (max tree) είναι το δένδρο, όπου η τιμή του κλειδιού κάθε κόμβου δεν είναι μικρότερη από τις τιμές των κλειδιών των δύο παιδιών. Αντίστοιχα, δένδρο ελαχίστων (min tree) είναι το δένδρο, όπου η τιμή του κλειδιού κάθε κόμβου δεν είναι μεγαλύτερη από τις τιμές των κλειδιών των δύο παιδιών. Σχεδόν πλήρες δυαδικό δένδρο : συμπληρωμένα πλήρως όλα τα επίπεδα εκτός ενδεχόμενα του τελευταίου επιπέδου. Το τελευταίο επίπεδο συμπληρώνεται από αριστερά προς τα δεξιά. 3

4 Σωρός Μεγίστων - Ελαχίστων Ορισμός. Σωρός μεγίστων (max Heap) το σχεδόν πλήρες δυαδικό δένδρο που είναι επίσης δένδρο μεγίστων. Σωρός ελαχίστων (min Heap) είναι το σχεδόν πλήρες δυαδικό δένδρο που είναι επίσης δένδρο ελαχίστων. Η δομή του σωρού μεγίστων συναντάται και µε την ονομασία φθίνων σωρός (descending heap) ή ακόμη και ως μερικά. διατεταγμένο φθίνον δένδρο (descending partially ordered tree). Επίσης ο σωρός ελαχίστων συναντάται και ως αύξων σωρός (ascending heap) ή μερικά. διατεταγμένο αύξον δένδρο (ascending partially ordered tree). 4

5 Ιδιότητα σωρού Για κάθε κόμβο i εκτός της ρίζας ισχύει: Μέγιστο σωρό: A[parent(i)] A[i] Ελάχιστο σωρό: A[parent(i)] A[i] Οπου το A[i] συμβολίζει το στοιχείο που είναι αποθηκευμένο στον κόμβο i Το μεγαλύτερο στοιχείο ενός υποδένδρου είναι η ρίζα του υποδένδρου 5

6 Σωρός ως Δομή δεδομένων Αποθήκευση του σωρού σε πίνακα με έμμεσους δείκτες Αριστερό παιδί: left(i) = 2i Δεξί παιδί: right(i) = 2i+1 Πατέρας του i είναι: parent(i) = i/2 A[1]: στοιχείο αποθηκευμένο στη ρίζα Ο πίνακας έχει 2 χαρακτηριστικά μήκος[a]: αριθμός στοιχείων πίνακα A μέγεθος[a] = n: αριθμός στοιχείων του σωρού που έχουν αποθηκευτεί στον A n μήκος[a] 6

7 Ύψος κόμβου & σωρού Ορίζουμε ύψος κόμβου του σωρού ως το πλήθος των ακμών στη μακρύτερη απλή καθοδική διαδρομή από τον κόμβο μέχρι κάποιον τερματικό κόμβο (φύλλο). Ορίζουμε ύψος του σωρού ως το πλήθος των ακμών στη μακρύτερη απλή καθοδική διαδρομή από τη ρίζα προς έναν τερματικό κόμβο. 4 Υψος της ρίζας = Υψος (2)= Επίπεδο του (10)=

8 Χρήσιμες ιδιότητες -1- Πρόταση 1. Σε ένα δυαδικό δένδρο στο επίπεδο d υπάρχουν το πολύ 2 d κόμβοι Πρόταση 2. Ένα δυαδικό δένδρο ύψους d έχει το πολύ 2 d+1 1 κόμβους Απόδειξη: Το Δυαδικό δένδρο στο επίπεδο 0 έχει 2 0 το πολύ κόμβους Το Δυαδικό δένδρο στο επίπεδο 1 έχει 2 1 το πολύ κόμβους Το Δυαδικό δένδρο στο επίπεδο 2 έχει 2 2 το πολύ κόμβους Το Δυαδικό δένδρο στο επίπεδο d έχει 2 d το πολύ κόμβους. Αρα οι κόμβοι n ενός δυαδικού δένδρου ύψους d είναι το άθροισμα των κόμβων όλων των επιπέδων: d d n = = l d l= Ένα Δυαδικό δένδρο με k επίπεδα (0 έως k-1) έχει το πολύ 2 k 1 κόμβους 8

9 Χρήσιμες ιδιότητες -2- Πρόταση 3. Το ύψος h ενός δυαδικού δένδρου με n κόμβους είναι τουλάχιστον Απόδειξη: Ένα δυαδικό δένδρο ύψους h έχει το πολύ 2 h+1 1 κόμβους. Αν το δυαδικό δένδρο ύψους h είναι πλήρες τότε έχει 2 h+1 1 κόμβους. Αν το δυαδικό δένδρο ύψους h δεν είναι πλήρες τότε το μικρότερο πλήθος κόμβων που μπορεί να έχει είναι οι κόμβοι δυαδικού δένδρου ύψους h-1 και 1 κόμβο στο επίπεδο h. Αρα για το δδ με το μικρότερο πλήθος κόμβων ισχύει: Αρα για δυαδικό δένδρο ύψους h με n κόμβους ισχύει: Επειδή h ακέραιος άρα : n h 2 log = 9 h h h h i i = + = + = + + = 1 log h n h n h h h n h 2 log =

10 Χρήσιμες ιδιότητες -3- Πρόταση 4. Σ ένα πλήρες δυαδικό δένδρο αν m είναι πλήθος των φύλλων τότε m-1 είναι το πλήθος των εσωτερικών κόμβων και 2m-1 είναι το πλήθος όλων των κόμβων Απόδειξη: Το πλήρες Δυαδικό δένδρο στο επίπεδο 0 έχει 2 0 κόμβους Το πλήρες Δυαδικό δένδρο στο επίπεδο 1 έχει 2 1 κόμβους Το πλήρες Δυαδικό δένδρο στο επίπεδο 2 έχει 2 2 κόμβους Το πλήρες Δυαδικό δένδρο στο επίπεδο d-1 έχει 2 d-1 κόμβους. Το πλήρες Δυαδικό δένδρο στο επίπεδο d έχει 2 d = m κόμβους φύλλα (1) Αρα οι εσωτερικοί κόμβοι ενός πλήρους δυαδικού δένδρου ύψους d είναι το άθροισμα των κόμβων των επιπέδων 0 έως και d-1 d 1 d 1+ 1 i 2 1 d (2) 2 = = 2 1 = m 1 i= Αρα το πλήθος των όλων των κόμβων = πλήθος φύλλων + πλήθος εσωτερικών κόμβων = (από τις 1 & 2) = m + (m - 1) = 2m -1 10

11 Χρήσιμες ιδιότητες -4- Πρόταση 5. Σε ένα σωρό με n κόμβους και ύψος h ισχύει : 2 h n 2 h+1-1 Απόδειξη: Με τον βάση τον ορισμό του σωρού, όλα τα επίπεδα του δέντρου είναι εντελώς συμπληρωμένα εκτός ίσως για το χαμηλότερο επίπεδο, το οποίο είναι συμπληρωμένο από τα αριστερά μέχρι ενός σημείου. Είναι σαφές ότι ένας σωρός ύψους h έχει τον ελάχιστο αριθμό κόμβων, όταν έχει μόνο έναν κόμβο στο χαμηλότερο επίπεδο. Τα επίπεδα πάνω από το χαμηλότερο επίπεδο σχηματίζουν ένα πλήρες δυαδικό δένδρο ύψους h -1 και 2 (h-1)+1-1 = 2 h -1 κόμβους. Ο ελάχιστος αριθμός κόμβων σε ένα σωρό ύψους h είναι 2 h (προκύπτει: (πλήθος κόμβων σωρού ύψους h-1) + 1 κόμβο του χαμηλότερου επιπέδου h = (2 h -1) +1= 2 h ). Ενας σωρός ύψους h, έχει το μέγιστο αριθμό των στοιχείων, όταν το χαμηλότερο επίπεδο είναι τελείως γεμάτο. Στην περίπτωση αυτή, ο σωρός είναι ένα πλήρες δυαδικό δένδρο ύψους h και ως εκ τούτου έχει 2 h +1-1 κόμβους. Ετσι για ένα σωρό με n κόμβους και ύψος h έχουμε: 2 h n 2 h

12 Χρήσιμες ιδιότητες -5- Πρόταση 6: Ενας σωρός με n στοιχεία έχει ύψος log 2 n. Απόδειξη Εστω ότι ο σωρός με n στοιχεία έχει ύψος h. Από την Πρόταση 5 γνωρίζουμε ότι το ελάχιστο και το μέγιστο πλήθος κόμβων που έχει ένας σωρός ύψους h είναι: 2 h n 2 h+1-1 ισχύει και 2 h n 2 h+1-1 < 2 h+1 Λογαριθμώντας με βάση το 2. h lοg 2 n < h +1 Συνεπάγεται καθώς το h είναι ακέραιος: h = log2 n (από τον ορισμό του ) 12

13 Χρήσιμες ιδιότητες -6- Πρόταση 7: Οι τελευταίοι n/2 κόμβοι ενός σωρού είναι όλοι φύλλα. Απόδειξη m = 2 d 1: πλήθος κόμβων στο επίπεδο d 1 f : πλήθος κόμβων στο επίπεδο d (τελευταίο επίπεδο) 13

14 Χρήσιμες ιδιότητες -7- Απόδειξη πλήθος των φύλλων = f + (m f/2 ) = m+ f/2 m + (m 1) + f = n (Πρόταση 4: m φύλλα, m-1 εσωτερικοί κόμβοι) 2m + f = n ( 2m + f ) = ( n + 1) m + f/2 = n/2 m + f/2 = n/2 αποδείχθηκε πλήθος φύλλων = n/2 m = 2 d 1 14

15 Χρήσιμες ιδιότητες -8-15

16 Χρήσιμες ιδιότητες -8α- Πρόταση 8: Σε έναν σωρό n στοιχείων υπάρχουν το πολύ κόμβοι n/2 h+1 ύψους h Απόδειξη (με επαγωγή) 1. Για h = 0. O αριθμός των φύλλων ύψους h = 0 είναι ο αριθμός των φύλλων ενός σωρού με n στοιχεία. Ο πατέρας του n-οστού στοιχείου (τελευταίου στοιχείου του σωρού) είναι ο n/2 κόμβος που είναι και ο τελευταίος πατέρας του σωρού όλοι οι άλλοι κόμβοι μετά απ αυτόν είναι φύλλα. Αρα ο αριθμός των φύλλων είναι n - n/2 = n/2 = n/2 1 = n/2 0+1 = n/2 h+1 άρα η σχέση ισχύει για h = Υποθέτουμε ότι ο αριθμός των κόμβων ύψους h-1 δίνεται από τη σχέση: n/2 h-1+1 = n/2 h 16

17 Χρήσιμες ιδιότητες -8β- 1 κόμβος ο 4 ύψους 3 1 κόμβος ο 1 ύψους 2 2 κόμβοι οι 2, 3 ύψους 1 5 κόμβοι ύψους 0 1 κόμβος ο 4 ύψους 2 1 κόμβος ο 1 ύψους 1 2 κόμβοι οι 2, 3 ύψους 0 Σχήμα Ο αριθμός των κόμβων ύψους h στον αρχικό σωρό (σχήμα 1) είναι ο ίδιος με τον αριθμό των κόμβων ύψους h-1 στο νέο σωρό (σχήμα 2) (από τον αρχικό αφαιρέθηκαν τα φύλλα του αρχικού) Σχήμα 2 A: Εσωτερικοί κόμβοι n = 9 Ο πατέρας του n- οστού στοιχείου (τελευταίου στοιχείου του σωρού) του 8 είναι ο n/2 = 9/2 = 4ος n/2 = 9/2 = 4 εσωτερικοί κόμβοι n - n/2 = n/2 = 5 φύλλα

18 Χρήσιμες ιδιότητες -8γ- 3. Θα δείξουμε ότι ισχύει για κόμβους ύψους h. Αν αφαιρέσουμε όλα τα φύλλα του σωρού τότε οι κόμβοι που είχαν ύψος 1 (στον αρχικό σωρό) τώρα γίνονται φύλλα στο νέο σωρό, δηλαδή έχουν ύψος 0. Αντίστοιχα για όλους τους κόμβους του νέου σωρού το ύψος τους είναι κατά 1 μικρότερο απ αυτό που είχαν στο παλιό σωρό. Στο νέο σωρό (αυτόν που προέκυψε μετά την απομάκρυνση των φύλλων του σωρού ύψους h) το πλήθος των κόμβων του είναι n - n/2 = n/2. Ο αριθμός των κόμβων ύψους h στο παλιό σωρό είναι ο ίδιος με τον αριθμό των κόμβων ύψους h-1 στο νέο σωρό. Αρα με βάση το βήμα 2 ισχύει (n - n/2 ) /2 h = n/2 /2 h (n/2)/2 h = n/2 h+1 18

19 Πρόταση 9. Σε ένα σωρό μεγίστων η εισαγωγή και η εξαγωγή απαιτούν χρόνο τάξης O(lοg 2 n) (α) (β) (γ) (δ) (ε) 19

20 Πρόταση 9. Σε ένα σωρό μεγίστων η εισαγωγή στοιχείου και η εξαγωγή (διαγραφή) απαιτούν χρόνο τάξης O(lοg 2 n) (α) Εισαγωγή: Η αλήθεια της πρότασης θα γίνει κατανοητή µε τη βοήθεια ενός παραδείγματος. Έστω ότι στον πρώτο σωρό του σχήματος πρέπει να εισαχθεί ένα νέο στοιχείο. Η θέση του νέου στοιχείου επιβάλλεται να είναι αριστερό παιδί του κόμβου µε το κλειδί 5, επειδή το δένδρο πρέπει να είναι σχεδόν πλήρες. Αν η τιμή του νέου κλειδιού είναι μεγαλύτερη του 5, τότε παραβιάζεται η ιδιότητα που θέλει το σωρό να είναι ένα δένδρο μεγίστων. Έτσι αν η τιμή του νέου κλειδιού είναι 3, 14 ή 20, τότε προκύπτουν τα αντίστοιχα σχήματα. (β) (γ) 20

21 Συνέχεια Εξαγωγή: Εστω ότι από τον προτελευταίο σωρό του σχήματος αυτού πρέπει να εξαχθεί η ρίζα, δηλαδή το 20. Η δομή έχει πλέον πέντε στοιχεία και θα πρέπει να αποκατασταθούν οι ιδιότητες του σωρού. Έτσι λαμβάνεται το τελευταίο στοιχείο της δομής, δηλαδή το 5, και τοποθετείται στην κενή ρίζα. Η δομή αυτή είναι µεν ένα σχεδόν πλήρες δυαδικό δένδρο, δεν είναι όμως ένα δένδρο μεγίστων. Για το λόγο αυτό το μεγαλύτερο παιδί της ρίζας, δηλαδή το 19, ανταλλάσσεται µε το 5 όπως φαίνεται στο τελικό σχήμα. Βέβαια είναι ευνόητο ότι η πορεία του κλειδιού που εγκαθίσταται στη ρίζα μπορεί να συνεχιστεί και να φθάσει μέχρι τα φύλλα, ανάλογα µε τις τιμές των κλειδιών που θα βρεθούν στο σχετικό μονοπάτι. Άρα κατά την εισαγωγή κλειδιού στη θέση n είναι ενδεχόμενο να διανυθεί το μονοπάτι προς τη ρίζα μήκους όσο το ύψος του n-οστού κόμβου, δηλαδή h = log2 n 21

22 Εισαγωγή - Διαγραφή σε Σωρό Μεγίστων Στη συνέχεια δίνονται οι διαδικασίες της εισαγωγής και της εξαγωγής σε ένα σωρό µμεγίστων. Επειδή ο σωρός είναι ένα σχεδόν πλήρες δυαδικό δένδρο μπορεί εύκολα και αποτελεσματικά να υλοποιηθεί µε ένα πίνακα που ονομάζουμε Heap. Στη διαδικασία που ακολουθεί υποτίθεται ότι εισάγουμε το (n+1)-οστό στοιχείο στο Heap που περιέχει έχει αρκετά μεγάλο μέγεθος (ώστε να αποφύγουμε τις εντολές ελέγχου υπερχείλισης). Αντίστοιχα στη διαδικασία της εξαγωγής υποθέτουμε ότι υπάρχει ένα τουλάχιστον στοιχείο προς εξαγωγή (ώστε να αποφύγουμε τις εντολές ελέγχου υποχείλισης). 22

23 Αλγόριθμος InsertMaxHeap(key); 1. n n+1; hole n; done false; 2. while not done do 3. if (hole==1) then done true 4. else if (key<=heap [hole /2]) then done true 5. else 6. Heap[hole] Heap [hole /2]; hole hole /2 7. Heap [hole] key 23

24 Αλγόριθμος DeleteMaxHeap(key); 1. key Heap[1]; temp Heap [n]; n n -1; 2. father 1; child 2; done false; 3. while (child <=n) and (not done) do 4. if (child < n) then if (Heap [child ]<Heap [child +1]) then child child +1; 5. if (temp>=heap [child ] then done true 6. else 7. Heap[father ] Heap [child ]; father child ; child 2* child; 8. Heap[father ] temp 24

25 Κατασκευή Σωρού Μεγίστων -1- Ιδιαίτερα σημαντική είναι και η διαδικασία της αρχικής κατασκευής του σωρού. Στη συνέχεια δίνεται η διαδικασία MakeHeap (επαναληπτικός αλγόριθμος) που κατασκευάζει ένα σωρό μεγίστων, δεδομένου ενός συνόλου n κλειδιών. Αλγόριθμος MakeHeap; 1. for i 2 to n do 2. child i; father i/2; 3. while (child 1) and (Heap[father]<=Heap[child]) do 4. swap (Heap [father], Heap[child]); 5. child father; father child/2; 25

26 Η προηγούμενη διαδικασία συνίσταται στη σταδιακή θεώρηση του αταξινόμητου πίνακα Heap και την εισαγωγή των κλειδιών στο σωρό μεγίστων, που σταδιακά μεγεθύνεται. Θεωρούμε ότι δημιουργείται σωρός μεγέθους i, όταν το i-οστό κλειδί του πίνακα εισάγεται σε σωρό μεγέθους i - 1. Η τιμή του κλειδιού που πρόκειται να εισαχτεί, Κ i συγκρίνεται µε την τιμή του κλειδιού του κόμβου πατέρα K j. Αν ισχύει Κ i > K j, τότε το περιεχόμενο των κόμβων ανταλλάσσεται. Αυτή η διαδικασία συγκρίσεων και ανταλλαγών συνεχίζεται μέχρις ότου ή βρεθεί κάποιος πρόγονος µε τιμή κλειδιού μεγαλύτερη από Κ i ή ο νέος κόμβος γίνει η νέα ρίζα του σωρού. Στο σημείο αυτό τελειώνει η φάση της δημιουργίας του σωρού μεγέθους i επιτυγχάνοντας τη βέβαιη τοποθέτηση του μεγαλύτερου κλειδιού στη ρίζα του σωρού. 26

27 Πρόταση 10. Στη χειρότερη περίπτωση ο αριθμός των συγκρίσεων και ανταλλαγών κλειδιών κατά τη δημιουργία του σωρού µε τον αλγόριθμο Make-Heap είναι πολυπλοκότητας O(nlog 2 n). Απόδειξη. Ο αριθμός των επαναλήψεων στον εξωτερικό βρόχο είναι n - 1. Κατά την εισαγωγή του i-οστού κλειδιού απαιτούνται συγκρίσεις και ανταλλαγές στη χειρότερη περίπτωση, που αντιστοιχεί στην περίπτωση όπου το θεωρούμενο κλειδί καταλήγει να πάρει τη θέση της ρίζας του σωρού, δηλαδή θα διανύσει το μονοπάτι προς τη ρίζα που αντιστοιχεί στο ύψος του κόμβου i που γνωρίζουμε ότι είναι log 2 i. Επομένως συνολικά η χειρότερη τιμή του αριθμού των ανταλλαγών είναι: n i= 2 log 2 log 2 i n log i= 2 ( n) = log 2 2 i = log Αρα προκύπτει ότι η χειρότερη τιμή του αριθμού των συγκρίσεων και ανταλλαγών είναι O(nlog 2 n) ( n) = log 2 log log 2 n! log 2 2 n n n = = n log 2 n 27

28 Κατασκευή Σωρού Μεγίστων Μετατρέπουμε τον πίνακα A[1 n] σε ένα max-heap (n = length[a]) 2. Τα στοιχεία του υποπίνακα A[( n/2 +1).. n] είναι φύλλα 3. Εφαρμόζουμε τον MAX-HEAPIFY για τα στοιχεία μεταξύ των n/2 και 1 Build-Max-Heap(A): heap_length[a] length[a] for i length[a]/2 downto 1 do Max-Heapify(A, i) A:

29 Αναδρομικός Αλγόριθμος κατασκευής σωρού μεγίστων Max-Heapify(A, i): 1. left 2i; 2. right 2i largest i Build-Max-Heap(A): heap_length[a] length[a] for i length[a]/2 downto 1 do Max-Heapify(A, i) 4. if left heap_length[a] and A[left] > A[largest] then largest left 5. if right heap_length[a] and A[right] > A[largest] then largest right 7. if largest i then 8. swap A[i] A[largest] 9. Max-Heapify(A, largest) 29

30 Example: A i = 5 i = 4 i = i = 2 i =

31 Max-Heapify() Example A =

32 Max-Heapify() Example A =

33 Max-Heapify() Example A =

34 Max-Heapify() Example A =

35 Max-Heapify() Example A =

36 Max-Heapify() Example A =

37 Max-Heapify() Example A =

38 Max-Heapify() Example A =

39 Max-Heapify() Example A =

40 Διαισθητική ανάλυση πολυπλοκότητας του Max-Heapify Για την Μαx-Heapify(A, i) έστω h(i) το ύψος του κόμβου i το πολύ h(i) επίπεδα αναδρομής θα εκτελεστούν Σταθερός ο χρόνος για κάθε επίπεδο, άρα: Θ(1) Συνεπώς T(i) = O(h(i)) Ο σωρός είναι σχεδόν πλήρες δυαδικό δένδρο h(i) = O(lgn) Τ(n) = O(lgn) 40

41 Τυπική ανάλυση πολυπλοκότητας του Max-Heapify -1- Ο χρόνος εκτέλεσης του Max-Heapify σε υποδένδρο μεγέθους n που εκφύεται από έναν δεδομένο κόμβο i αντιστοιχεί στο χρόνο Θ(1) που απαιτείται για να αποκατασταθούν οι σωστές σχέσεις μεταξύ των A[i], A[left] και A[right] συν το χρόνο εκτέλεσης της Max-Heapify σε ένα υποδένδρο που εκφύεται από κάποιον από τους θυγατρικούς του κόμβου i. Το καθένα απ αυτά τα υποδένδρα έχει μέγεθος μικρότερο ή ίσο από 2n/3 η χειρότερη περίπτωση προκύπτει όταν το τελευταίο επίπεδο του δένδρου είναι ημισυμπληρωμένο και επομένως ο χρόνος εκτέλεσης της Max-Heapify περιγράφεται από την αναδρομική σχέση T(n) T(2n/3) + Θ(1) 41

42 Τυπική ανάλυση πολυπλοκότητας του Max-Heapify -2- Απόδειξη: Η χειρότερη περίπτωση συμβαίνει όταν η τελευταία γραμμή των κόμβων του υποδένδρου S i, που εκφύεται από τον κόμβο i, είναι κατά το ήμισυ γεμάτη. Ο σωρός αν δεν είναι πλήρες ΔΔ τότε καθώς η τελευταία γραμμή κόμβων συμπληρώνεται από αριστερά προς τα δεξιά συνεπάγεται ότι το δεξί υποδένδρο θα έχει λιγότερους κόμβους. Οπου S L(i) και S R(i) είναι πλήρη δυαδικά δένδρα με ύψος h(i) - 1 και h(i) - 2, αντίστοιχα 42

43 Τυπική ανάλυση πολυπλοκότητας του Max-Heapify -4- Εστω m ο αριθμός των φύλλων του S L(i) S L(i) = m + (m 1) = 2m 1 S R(i) = m/2 + (m/2 1) = m 1 S L(i) + S R(i) + 1 = n Πρόταση 4 (2m 1) + (m 1) +1 = n m = (n+1)/3 S L(i) = 2m 1 = 2(n+1)/3 1 = (2n/3+2/3) 1 = = 2n/3 1/3 2n/3 T(n) T(2n/3) + Θ(1) Τ(n) = O(lgn) από τη 2 η περίπτωση του κεντρικού θεωρήματος 43

44 Ανάλυση του Build-Max-Heap Build-Max-Heap(A): heap_length[a] length[a] for i length[a]/2 downto 1 do Max-Heapify(A, i) O(lοg 2 n) O(n) Μπορούμε να υπολογίσουμε ένα απλό άνω φράγμα για το χρόνο εκτέλεσης του Build-Max-Heap ως εξής: Σε κάθε κλήση της Max-Heapify (αποκατάσταση σωρού μεγίστου) απαιτεί χρόνο O(lοg 2 n) και εκτελούνται O(n) τέτοιες κλήσεις. Επομένως ο χρόνος είναι O(nlοg 2 n). Όμως το φράγμα αυτό δεν είναι ασυμπτωτικά αυστηρό. Μπορούμε να προσδιορίσουμε ένα αυστηρότερο φράγμα παρατηρώντας ότι ο χρόνος εκτέλεσης της Max-heapify() για ένα συγκεκριμένο κόμβο εξαρτάται από το ύψος του κόμβου στο δένδρο. 44

45 Ανάλυση του Build-Max-Heap Πρόταση 11. Το κόστος για να αποκατασταθεί η ιδιότητα του μέγιστου σωρού για έναν κόμβο i είναι ανάλογο του ύψους h i του κόμβου i. Αρα το κόστος του Build-Max-Heap είναι h h i T ( n) = n i h 2 ( h i) = O(n) Υψος h 0 = 3 ( log 2 n ) i= 0 i = i=0 Επίπεδο i = 0 Πλήθος κόμβων 2 0 h 1 = 2 i = h 2 = 1 i = h 3 = 0 i = 3 ( log 2 n ) 2 3 h i = h i n i = 2 i h i : ύψος του (υπο)σωρού με ρίζα στο επίπεδο i h : ύψος σωρού n i : πλήθος των κόμβων στο επίπεδο i 45

46 Ανάλυση του Build-Max-Heap l =επίπεδο, h l ύψος κόμβου στο επίπεδο l Αν ο σωρός είναι πλήρες δυαδικό δένδρο τότε h l = d l Αλλιώς οι κόμβοι δοσμένου επιπέδου δεν έχουν όλοι το ίδιο ύψος και ισχύει d l 1 h d l 46

47 1 η Απόδειξη T( n) = h i= 0 h n i h i Κόστος του Max-Heapify στο επίπεδο i πλήθος κόμβων στο επίπεδο i i = 2 ( h i) Αντικαθιστούμε τις τιμές των n i και h i που i=0 υπολογίστηκαν πριν h h i h = 2 Πολ/ζουμε με 2 h αριθμητή και παρονομαστή και h i i= 0 2 γράφουμε 2 i i ως 1 2 h h k = 2 Αντικαθιστούμε με: k = h - i n k k = 0 2 k k k = 0 2 = O(n) Το παραπάνω άθροισμα είναι μικρότερο από όλα τα στοιχεία για και h = lοg 2 n είναι 1 2 Το άθροισμα k x kx = = = k= 0 ( 1 x) ( 1 1 2) μικρότερο από 2. Άρα αποδείξαμε ένα αυστηρότερο άνω φράγμα για τον Build-Max-Heap 47

48 2 η Απόδειξη Γνωρίζουμε ότι ένας σωρός n στοιχείων έχει ύψος lgn (πρόταση 3) και το πολύ n/2 h+1 κόμβους ύψους h (Πρόταση 8). Ο χρόνος που απαιτεί η Max-Heapify όταν καλείται για έναν κόμβο ύψους h είναι O(h) και επομένως το συνολικό κόστος της Build-Max-Heap μπορεί να φραγεί άνω ως εξής: lgn lgn n h T ( n) = O( h) = O h+ n 1 h= 0 2 h= 0 2 k x τύπο kx = ( ) x k= Για να υπολογίσουμε το τελευταίο h άθροισμα αντικαθιστούμε στον h 1 2 όπου x =1/2, και έχουμε = = 2 h k= 0 ( ) ο χρόνος εκτέλεσης του Build-Max-Heap μπορεί να φραγεί ως O n lgn h= 0 h h O n = O = h = h h= ( n) O( n) Άρα αποδείξαμε ένα αυστηρότερο άνω φράγμα για τον Build-Max-Heap 48

49 Ταξινόμηση µε Σωρό Η αρχική μέθοδος, όπως διατυπώθηκε από τους Williams και Floyd, είναι λιγότερο αποτελεσματική από τη γρήγορη ταξινόμηση. Ωστόσο, νεότερη παραλλαγή της ταξινόμησης µε σωρό (Heapsort) είναι η καλύτερη μέθοδος που έχει εμφανισθεί στη βιβλιογραφία. Η ταξινόμηση µε σωρό αποτελείται από δύο φάσεις: (α) τη φάση της δημιουργίας του σωρού, και (β) τη φάση της επεξεργασίας του σωρού. Η φάση α) έχει παρουσιαστεί εκτενώς παραπάνω. Κατά τη β) φάση της επεξεργασίας του σωρού το κλειδί της ρίζας ανταλλάσσεται µε το τελευταίο κλειδί του σωρού και στο εξής δεν λαμβάνεται υπ' όψη. Όµως µε την ανταλλαγή αυτή τα εναπομένοντα κλειδιά δεν αποτελούν πλέον σωρό. Έτσι ακολουθεί µία διαδικασία αποκατάστασης των ιδιοτήτων του σωρού. 49

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

51 Heapsort Στη συνέχεια δίνεται ο αλγόριθμος HeapSort που υλοποιεί την προηγούμενη ανάπτυξη χρησιμοποιώντας ένα σωρό μεγίστων. Η διαδικασία αποτελείται από δύο εντολές for. Η πρώτη εντολή for δημιουργεί τον αρχικό σωρό από τον αταξινόμητο πίνακα, ενώ η δεύτερη εντολή for επεξεργάζεται αυτόν το σωρό. Και στις δύο φάσεις καλείται ο αλγόριθμος Restore. 51

52 Heapsort Αλγόριθμος Restore(first, last) 1. father first; child 2*father; 2. while (father last) do 3. if (child < last) then 4. if (A[child] < A[child+1]) then child child + 1; 5. if A[father ] < A[child] then 6. A[child/2] A[child]; child 2*child; 7. else father last + 1; 8. A[child/2] <-- A[father ] ; Αλγόριθμος HeapSort 1. for i (n/2) downto 1 do Restore(i, n); 2. for i n downto 2 do 3. Swap(A[1], A[i]); Restore(1, i-1); 52

53 Heapsort Example Στο παρακάτω σχήμα φαίνεται η επεξεργασία του σωρού. Τα τετράγωνα πλαίσια δείχνουν ότι το κλειδί έχει καταλάβει την τελική του θέση και δεν υπόκειται σε άλλη επεξεργασία. Στη δεύτερη φάση της επεξεργασίας του σωρού η διαδικασία Restore καλείται οκτώ φορές μέσα από το δεύτερο for της διαδικασίας HeapSort. Έτσι, µετά την όγδοη κλήση τα κλειδιά είναι τοποθετημένα στον πίνακα κατά αύξουσα τάξη. 53

54 Έχουμε τον αρχικό σωρό Και στο διπλανό Σχήµα φαίνεται η επεξεργασία του σωρού. Τα τετράγωνα πλαίσια δείχνουν ότι το κλειδί έχει καταλάβει την τελική του θέση και δεν υπόκειται σε άλλη επεξεργασία. 54

55 55

56 Heapsort Με βάση το Build-Max-Heap() μια άλλη έκφραση του Heapsort μπορεί να δοθεί: Μέγιστο στοιχείο είναι το A[1] Το απομακρύνουμε και το ανταλλάσοντας με A[n] Μειώνουμε το μέγεθος του heap (heap_size[a]) Το A[n] έχει πλέον σωστή τιμή Αποκαθιστούμε την ιδιότητα heap για το A[1] καλώντας τη Max-Heapify() Επαναλαμβάνουμε ανταλλάσοντας το A[1] με το A[heap_size(A)] 56

57 Heapsort Heapsort(A) { Build-Max-Heap (A); for (i = length(a) downto 2) { Swap(A[1], A[i]); heap_size(a) -= 1; Max-Heapify(A, 1); } } O(n) O(lοg 2 n) n-1 times Αρα η πολυπλοκότητα του Heapsort είναι O(nlog 2 n). Μπορεί να αποδειχθεί Θ(nlog 2 n) 57

58 Σωρός Ελαχίστων και Μεγίστων Η αφηρημένη δομή δεδομένων ουρά προτεραιότητας µε δύο άκρα (double-ended priority queue) διακρίνεται για τις εξής τρεις βασικές λειτουργίες: εισαγωγή στοιχείου µε οποιοδήποτε κλειδί, εξαγωγή στοιχείου µε το μικρότερο κλειδί, και εξαγωγή στοιχείου µε το μεγαλύτερο κλειδί. Ο σωρός ελαχίστων και μεγίστων (min-max heap), που προτάθηκε από τους Atkinson et al. (1986), είναι η δομή που υλοποιεί µία ουρά προτεραιότητας µε δύο άκρα. Ορισμός. Ο σωρός ελαχίστων και μεγίστων είναι ένα σχεδόν πλήρες δυαδικό δένδρο. Τα κλειδιά των κόμβων που βρίσκονται στα περιττά (άρτια) επίπεδα είναι μικρότερα (αντίστοιχα, μεγαλύτερα) από τα κλειδιά όλων των κόμβων του αντίστοιχου υποδένδρου. 58

59 Σωρός Ελαχίστων και Μεγίστων Η ρίζα βρίσκεται πάντα στο επίπεδο των ελαχίστων. Έστω x οποιοσδήποτε κόμβος του min-max heap. Αν ο x βρίσκεται στο επίπεδο των ελαχίστων τότε ο κόμβος x έχει τη μικρότερη τιμή μεταξύ όλων των κόμβων του υποδένδρου με ρίζα τον x. Εστω x οποιοσδήποτε κόμβος του min-max heap. Αν ο x βρίσκεται στο επίπεδο των μεγίστων τότε ο κόμβος x έχει τη μεγαλύτερη τιμή μεταξύ όλων των κόμβων του υποδένδρου με ρίζα τον x. 59

60 Σωρός Ελαχίστων και Μεγίστων 7 min max min max 60

61 Εισαγωγή στοιχείου στο min-max heap Συγκρίνεται το κλειδί με τον πατέρα του αν είναι μικρότερο από τον πατέρα του τότε είναι μικρότερο από όλα τα κλειδιά των κόμβων στο μονοπάτι από τον κόμβο αυτό μέχρι τη ρίζα. Χρειάζεται να ελεγχτούν μόνο τα κλειδιά στα επίπεδα των ελαχίστων. Αν το κλειδί είναι στη σωστή θέση σταματάμε αλλιώς το ανταλλάσουμε με τον πατέρα του. Συγκρίνεται το κλειδί με τον πατέρα του αν είναι μεγαλύτερο από τον πατέρα του τότε είναι μεγαλύτερο από όλα τα κλειδιά των κόμβων στο μονοπάτι από τον κόμβο αυτό μέχρι τη ρίζα. Χρειάζεται να ελεγχτούν μόνο τα κλειδιά στα επίπεδα των μεγίστων. Αν το κλειδί είναι στη σωστή θέση σταματάμε αλλιώς το ανταλλάσουμε με τον πατέρα του. 61

62 Στο σχήμα παρουσιάζεται η εναλλαγή του ρόλου των επιπέδων σε µία τέτοια δομή µε 12 στοιχεία. Η ρίζα είναι στο πρώτο επίπεδο και συνεπώς περιέχει το μικρότερο κλειδί της δομής. Εισαγωγή στοιχείου Αν πρέπει στη δομή αυτή να εισαχθεί ένα στοιχείο, τότε αυτό θα καταλάβει τη θέση του δεξιού παιδιού του κόμβου µε κλειδί 10, έτσι ώστε το δένδρο να είναι σχεδόν πλήρες. Το κλειδί του εισαγόμενου στοιχείου συγκρίνεται µε το κλειδί του κόμβου πατέρα, ώστε να υπάρχει η σωστή σχέση διάταξης ανάλογα µε το ρόλο των δύο διαδοχικών επιπέδων. Έτσι αν το εισαγόμενο κλειδί έχει τιμή 2, τότε διαπιστώνεται ότι έχει τιμή μικρότερη από τον κόμβο πατέρα που βρίσκεται σε επίπεδο ελαχίστων. Άρα αρχικά είναι απαραίτητο να γίνει µία ανταλλαγή μεταξύ των κλειδιών 2 και 10. Κατόπιν γίνεται έλεγχος στα επίπεδα των ελαχίστων στο μονοπάτι προς τη ρίζα, οπότε το κλειδί µε τιμή 2 ανταλλάσσεται και µε τη ρίζα που έχει τιμή 4, καταλήγοντας στη δομή του σχήματος (β). Αν στην ίδια θέση έπρεπε να εισαχθεί κλειδί µε τιμή 146, τότε θα χρειαζόταν µόνο ανταλλαγή µε το κλειδί 90 του αμέσως ανωτέρου επιπέδου μεγίστων και θα προέκυπτε η αμέσως επόμενη δομή (σχήμα (γ)). 62

63 Εισαγωγή κλειδιού με τιμή 146 (σχήμα γ). 63

64 Εισαγωγή στο Min-Max Heap 7 min max min j max Εισαγωγή του 5 στη θέση j. Επειδή 5 < 10 (είναι ο πατέρας του j), το 5 εγγυάται ότι είναι μικρότερο από όλα τα κλειδιά που βρίσκονται στα επίπεδα max στο μονοπάτι προς τη ρίζα. Οπότε χρειάζεται να ελεγχθεί μόνο με τα κλειδιά των min επιπέδων. 64

65 Min-Max Heap μετά την εισαγωγή του 5 5 min max min max 65

66 Εισαγωγή στο Min-Max Heap 7 min max min j max Όταν εισάγεται το 80 στο min-max heap, επειδή 80 > 10, και το 10 είναι στο min επίπεδο, είμαστε βέβαιοι ότι το 80 είναι μεγαλύτερο από όλα τα κλειδιά που είναι και στα επίπεδα min στο μονοπάτι προς τη ρίζα. Χρειάζεται μόνο να ελεγχθεί με τα κλειδιά των max επιπέδων. 66

67 Min-Max Heap μετά την εισαγωγή του 80 7 min max min max Όταν εισάγεται το 80 στο min-max heap, επειδή 80 > 10, και το 10 είναι στο min επίπεδο, είμαστε βέβαιοι ότι το 80 είναι μεγαλύτερο από όλα τα κλειδιά που είναι και στα επίπεδα min. Χρειάζεται μόνο να ελέγχουν τα κλειδιά των max επιπέδων. 67

68 Διαγραφή στοιχείου Από ένα σωρό ελαχίστων και μεγίστων πρέπει να εξαχθεί το μικρότερο στοιχείο που βρίσκεται στη ρίζα. Η θέση του θα αναπληρωθεί από το τελευταίο στοιχείο του σωρού, ώστε το δένδρο να είναι σχεδόν πλήρες. Ωστόσο, η δομή δεν είναι πλέον σωρός και επομένως χρειάζεται κάποια επεξεργασία, που έχει την αντίστροφη λογική από τη διαδικασία εισαγωγής. i. Αν η ρίζα δεν έχει παιδιά, τότε η διαδικασία τελειώνει. ii. Αν όμως η ρίζα έχει ένα τουλάχιστον παιδί, τότε πρέπει να ελεγχθούν τα δύο κατώτερα επίπεδα µε σκοπό την εύρεση του μικρότερου κλειδιού που είναι μικρότερου από τη νέα ρίζα. Διακρίνονται, λοιπόν, τρεις περιπτώσεις: 1. Αν δεν βρεθεί μικρότερο κλειδί από το κλειδί της ρίζας, τότε και πάλι η διαδικασία τελειώνει, 2. Αν το μικρότερο κλειδί βρεθεί στο δεύτερο επίπεδο, που είναι επίπεδο μεγίστων, τότε αρκεί µία ανταλλαγή μεταξύ των δύο κλειδιών επειδή δεν υπάρχει σε όλη τη δομή άλλο κλειδί μικρότερο, ενώ 3. Αν το μικρότερο κλειδί ανήκει στο τρίτο επίπεδο, που είναι επίπεδο ελαχίστων, τότε στη διαδικασία συμμετέχουν τα τρία κλειδιά του μονοπατιού και γίνονται οι εξής ενέργειες: a. το μικρότερο κλειδί αποθηκεύεται στη ρίζα, b. από τα άλλα δύο το μεγαλύτερο αποθηκεύεται στο δεύτερο επίπεδο, και c. στο τρίτο επίπεδο εισάγεται το απονέμον κλειδί. Έτσι μπορεί να εφαρμοσθεί και πάλι η ίδια διαδικασία αναδρομικά, γιατί ο κόμβος του τρίτου επιπέδου είναι η ρίζα ενός υποσωρού ελαχίστων και μεγίστων. 68

69 Διαγραφή στοιχείου εξαγωγή ρίζας Σχήμα (δ). Eστω ότι εξάγεται η ρίζα, το κλειδί 4 (αρχικός σωρός σχήμα α). Στη θέση της έρχεται το τελευταίο κλειδί, δηλαδή το 12. Το μικρότερο κλειδί από το δεύτερο ή το τρίτο επίπεδο είναι το κλειδί 5. Συνεπώς στη διαδικασία εμπλέκονται τρία κλειδιά, το 12, το 142 και το 5. Το κλειδί 5 πρέπει να αποθηκευθεί στη ρίζα, το κλειδί 142 πρέπει να αποθηκευθεί στο δεύτερο επίπεδο, ενώ το κλειδί 12 πρέπει να εισαχθεί στον υποσωρό. 69

70 Διαγραφή στοιχείου - ρίζας 7 min max min max 70

71 Διαγραφή στοιχείου - ρίζας 12 min max min max 71

72 Min-Max Heap μετά τη διαγραφή του Min στοιχείου 9 min max min max 72

73 Αλγόριθμοι Εισαγωγής - Διαγραφής σε Σωρό Ελαχίστων-Μεγίστων Στη συνέχεια δίνεται οι αλγόριθμοι InsertMinMax και DeleteMin που εκτελούν τις αντίστοιχες λειτουργίες στον πίνακα MinMax πoυ περιέχει ακέραια κλειδιά. Η InsertMin καλεί τις διαδικασίες VerifyMin και VerifyMax, που ελέγχουν τα αντίστοιχα μονοπάτια προς τη ρίζα, και τη συνάρτηση LevelMin που επιστρέφει την τιμή true (false) αν η εισαγωγή γίνεται σε επίπεδο ελαχίστων (αντίστοιχα, μεγίστων). Η διαδικασία DeleteMin καλεί τη διαδικασία MinChildGrandChild, που βρίσκει το μικρότερο κλειδί μεταξύ των κόμβων του δευτέρου και του τρίτου επιπέδου. Σε περίπτωση ισότητας κλειδιών από το δεύτερο και το τρίτο επίπεδο πρέπει να επιλεχθεί το κλειδί του δευτέρου επιπέδου για λόγους αποτελεσματικότητας. 73

74 Αλγόριθμος VerifyMax(i, key); 1. GrandParent i/4; 2. while (GrandParent 0) do 3. if (key > MinMax[GrandParent]) then 4. MinMax[i] MinMax[GrandParent]; 5. i GrandParent; 6. GrandParent GrandParent/4 7. else GrandParent 0; 8. MinMax[i] key 74

75 Αλγόριθμος InsertMinMax(key); 1. n n+1; p n/2; 2. if (p = 0) then MinMax[1] key 3. else 4. switch LevelMin(p) 5. case true: //πατέρας σε επίπεδο ελαχίστων 6. if (key < MinMax[p]) then 7. MinMax[n] MinMax[p]; 8. VerifyMin(n, key); 9. else VerifyMax(n, key); 10. case false: //πατέρας σε επίπεδο μεγίστων 11. if (key > MinMax[p]) then 12. MinMax[n] MinMax[p]; 13. VerifyMax(n, key); 14. else VerifyMin(n, key) 75

76 Αλγόριθμος DeleteMin(key); 1. key MinMax[1]; temp MinMax[n]; 2. n n-1; i 1; j n/2; done false; 3. while (i j) and (not done) do 4. k MinChildGrandChild(i); 5. if (temp MinMax[k]) then done true; 6. else 7. MinMax[i] MinMax[k]; 8. if (k 2*i+1) then done true; 9. else 10. l k/2; l πατέρας του k 11. if (temp > MinMax[l]) then 12. Swap(temp, MinMax[l]); 13. i k; 14. MinMax[i] temp k 2*i < 2*i+1 k= άρτιος k θέση του μικρότερου στοιχείου από η νέα ρίζα (μεταξύ αυτών που βρίσκονται στο 2 ο και 3 ο επίπεδο) ii.1 Αν δεν βρεθεί μικρότερο κλειδί από το κλειδί της ρίζας, τότε και πάλι η διαδικασία τελειώνει ii.2 Αν το μικρότερο κλειδί βρεθεί στο δεύτερο επίπεδο, που είναι επίπεδο μεγίστων, τότε αρκεί µία ανταλλαγή μεταξύ των δύο κλειδιών επειδή δεν υπάρχει σε όλη τη δομή άλλο κλειδί μικρότερο iii.3 Αν το μικρότερο κλειδί ανήκει στο τρίτο επίπεδο, που είναι επίπεδο ελαχίστων, τότε στη διαδικασία συμμετέχουν τα τρία κλειδιά του μονοπατιού και γίνονται οι εξής ενέργειες: a. το μικρότερο κλειδί αποθηκεύεται στη ρίζα, b. από τα άλλα δύο το μεγαλύτερο αποθηκεύεται στο δεύτερο επίπεδο, και c. στο τρίτο επίπεδο εισάγεται το απονέμον κλειδί. Έτσι μπορεί να εφαρμοσθεί και πάλι η ίδια διαδικασία αναδρομικά, γιατί ο κόμβος του τρίτου επιπέδου είναι η ρίζα ενός υποσωρού ελαχίστων και μεγίστων. 76

77 Πρόταση. Σε ένα σωρό ελαχίστων και μεγίστων η εισαγωγή τυχόντος κλειδιού, και η εξαγωγή του μικρότερου κλειδιού απαιτούν χρόνο τάξης O(log 2 n). Atkinson et al. Min-Max Heaps and Generalized Priority Queues 77

78 Διπλός Σωρός Ο διπλός σωρός (double-ended heap, deap) προτάθηκε από τον Carlsson (1987) και είναι µία δομή που εκτελεί τις ίδιες ακριβώς λειτουργίες που εκτελεί και ο σωρός ελαχίστων και μεγίστων και μάλιστα µε την ίδια ποιοτική επίδοση. Η διαφορά τους είναι ότι η διαχείριση του διπλού σωρού είναι απλούστερη και επομένως η επίδοση είναι οριακά καλύτερη. 78

79 Διπλός Σωρός Ορισμός. Ο διπλός σωρός είναι ένα σχεδόν πλήρες δυαδικό δένδρο µε τα εξής χαρακτηριστικά: 1. η ρίζα είναι κενή, 2. το αριστερό υποδένδρο είναι σωρός ελαχίστων, 3. το δεξιό υποδένδρο είναι σωρός μεγίστων, και 4. αν το δεξιό υποδένδρο δεν είναι κενό, i είναι ένας κόμβος του αριστερού υποδένδρου και j είναι ο συμμετρικός κόμβος του στο δεξιό υποδένδρο, τότε το κλειδί του κόμβου i είναι μικρότερο ή ίσο από το κλειδί του κόμβου j. Αν ο κόμβος i δεν έχει συμμετρικό κόμβο στο δεξιό υποδένδρο, τότε ως j λαμβάνεται ο συμμετρικός του πατέρα του κόμβου i. 79

80 Στο επόμενο σχήμα δίνεται ένας διπλός σωρός µε 12 κόμβους, δηλαδή µε 11 κλειδιά. Στο διπλό σωρό η ρίζα μένει κενή εκτός αν ο σωρός περιέχει ένα µόνο στοιχείο. Με βάση το τέταρτο χαρακτηριστικό του ορισμού απαιτείται η συσχέτιση των στοιχείων i και j. Ισχύει, λοιπόν: j i + 2 = 1 2 logi ( logi 1 i + 2 ) 1 αν j αν j n > n 80

81 Για παράδειγμα, έστω ότι πρέπει να εισαχθεί ένα νέο στοιχείο µε κλειδί 2 στην πρώτη δομή του σχήματος. Η αρχική θέση του είναι ως δεξιό παιδί του κόμβου µε κλειδί το 71. Ο πρώτος έλεγχος γίνεται σε σχέση µε το κλειδί του συμμετρικού κόμβου, δηλαδή το 52. Επειδή δεν ισχύει το τέταρτο χαρακτηριστικό του ορισμού, πρέπει να γίνει ανταλλαγή των δύο στοιχείων. Στο δεύτερο στάδιο ελέγχεται ο σωρός ελαχίστων, οπότε το κλειδί 2 ανέρχεται μέχρι το δεύτερο επίπεδο. Τέλος, στο τρίτο στάδιο ελέγχεται ο σωρός μεγίστων και εκτελούνται οι σχετικές ανταλλαγές αν χρειάζεται. Στη δεύτερη δομή του σχήματος φαίνεται η τελική μορφή της δομής. 81

82 Αν στην πρώτη δομή του σχήματος (α) εισαχθεί ένα νέο κλειδί µε τιμή 90, τότε θα προκύψει ο τελικός σωρός του σχήματος (γ). 82

83 A Deap Example

84 Εισαγωγή σε Deap του j i j = i logi 1 ( logi 1 i + 2 ) αν j n αν j > n 84

85 Το Deap μετά την εισαγωγή του

86 Εισαγωγή σε Deap του j i j = i logi 1 logi 1 ( i + 2 ) αν j n αν j > n 86

87 Το Deap μετά την εισαγωγή του

88 Αλγόριθμος Εισαγωγής σε Deap Στη συνέχεια δίνεται η διαδικασία InsertDeap που εκτελεί τη σχετική λειτουργία στον πίνακα Deap µε n ακεραίους. Η διαδικασία αυτή καλεί τα εξής υποπρογράμματα: τη συνάρτηση MaxHeap που επιστρέφει την τιμή true (false) αν η n-οστή θέση βρίσκεται στο σωρό μεγίστων (αντίστοιχα, ελαχίστων), η συνάρτηση MinPartner (MaxPartner) που υπολογίζει στο σωρό ελαχίστων ( αντίστοιχα, μεγίστων) τη θέση του συμμετρικού κόμβου (αντίστοιχα, του πατέρα) του η-οστού κόμβου, τις διαδικασίες MinInsert και MaxInsert που εκτελούν αντίστοιχα την εισαγωγή στο σωρό ελαχίστων και στο σωρό μεγίστων. Σημειώνεται ότι οι δυο αυτοί σωροί έχουν τη ρίζα τους στη δεύτερη και στην τρίτη θέση αντίστοιχα 88

89 Αλγόριθμος InsertDeap(key); 1. n n+1; 2. if (n=2) Deap[2] key; 3. else switch MaxHeap(n) τις διαδικασίες MinInsert και MaxInsert που εκτελούν αντίστοιχα την εισαγωγή στο σωρό ελαχίστων και στο σωρό μεγίστων 4. case true: //η n-οστή θέση βρίσκεται στο σωρό μεγίστων 5. i MinPartner(n); 6. if (key < Deap[i]) 7. Deap[n] Deap[i]; Minlnsert(i,key) 8. else Maxlnsert(n,key) 9. case false: 10. i MaxPartner(n); 11. if (key > Deap[i]) 12. Deap[n] Deap[i]; Maxlnsert(i,key) 13. else Minlnsert(n,key) 89

90 Διαγραφή του Min από το Deap Διαγραφή του ελάχιστου στοιχείου από το Deap. Θέτουμε το τελευταίο στοιχείο του deap σε μια προσωρινή θέση t. Η κενή θέση που δημιουργείται από τη διαγραφή του ελάχιστου στοιχείου είναι η θέση 2. Το μικρότερο από τα παιδιά του κάθε φορά τρέχοντος κόμβου μετακινείται προς τα επάνω. Στη συνέχεια μετακινείται στοιχείο στη θέση που μέχρι τώρα κατείχε το μετακινούμενο στοιχείο. Επαναλαμβάνουμε τη διαδικασία μέχρι να προκύψει κενή θέση σε φύλλο. Συγκρίνουμε το κλειδί που τέθηκε στην προσωρινή θέση t με το max (maxpartener) «συμμετρικό κόμβο (αντίστοιχα πατέρα». If <, δεν χρειάζεται ανταλλαγή. Το στοιχείο της προσωρινής θέσης αποθηκεύεται στην κενή θέση φύλλο. If >, τα ανταλλάσουμε. 90

91 Διαγραφή του Min από το Deap

92 Το Deap μετά τη διαγραφή του Min

93 Η βέλτιστη μέθοδος για τη κατασκευή του μέγιστου σωρού ξεκινά με την αυθαίρετη τοποθέτηση των στοιχείων σε ένα δυαδικό δέντρο, το δέντρο θα μπορούσε να αναπαρασταθεί με έναν πίνακα. Στη συνέχεια, αρχής γενομένης από το χαμηλότερο επίπεδο και προχωρώντας προς τα πάνω, η ρίζα του κάθε υποδέντρου μετακινείται προς τα κάτω, όπως στον αλγόριθμο διαγραφής μέχρι η ιδιότητα του μέγιστου σωρού να αποκατασταθεί. Πιο συγκεκριμένα, αν για όλα τα υποδένδρα που αρχίζουν από κάποιο ύψος h έχει ήδη αποκατασταθεί η ιδιότητα του μέγιστου σωρού ("heapified"), τότε για τα δέντρα σε ύψος h+1 μπορεί να αποκατασταθεί η ιδιότητα του μέγιστου σωρού στέλνοντας τη ρίζα τους προς τα κάτω, κατά μήκος της διαδρομής των παιδιών με τη μέγιστη αξία κατά την οικοδόμηση ενός μέγιστου σωρού. 93

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

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

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

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

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

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

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014 Κεφάλαιο 2 Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014 Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Σωρός και Ταξινόμηση

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 2. Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.1, 12/05/2010

Κεφάλαιο 2. Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.1, 12/05/2010 Κεφάλαιο 2 Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση., 2/05/200 Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Σωρός και Ταξινόµηση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Όρια Αλγόριθμων Ταξινόμησης Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Όρια Αλγόριθμων Ταξινόμησης Μέχρι στιγμής εξετάσθηκαν μέθοδοι ταξινόμησης µε πολυπλοκότητα της τάξης Θ ) ή Θlog ). Τι εκφράζει

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

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

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

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

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

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

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

ταξινόμηση σωρού Παύλος Εφραιμίδης Δομές Δεδομένων και

ταξινόμηση σωρού Παύλος Εφραιμίδης Δομές Δεδομένων και ταξινόμηση σωρού Παύλος Εφραιμίδης ταξινόμηση σωρού ταξινόμηση σωρού άλλος ένας αλγόριθμος ταξινόμησης πολυπλοκότητας O(n lgn) Ιδιαίτερα χαρακτηριστικά: χρησιμοποιεί μια δομή δεδομένων που ονομάζεται «σωρός»

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

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

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

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

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ταξινόμηση. 1. Στατιστικά Διάταξης 2. Στατιστικά σε Μέσο Γραμμικό Χρόνο. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Ταξινόμηση. Στατιστικά Διάταξης. Στατιστικά σε Μέσο Γραμμικό Χρόνο Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Στατιστικά Διάταξης Με τον όρο στατιστικά διάταξης (order statistics) εννοούμε την περίπτωση

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι Σωροί 1 Ορισμοί Ένα δέντρο μεγίστων (δένδρο ελαχίστων) είναι ένα δένδρο, όπου η τιμή κάθε κόμβου είναι μεγαλύτερη (μικρότερη) ή ίση με των τιμών των παιδιών του Ένας σωρός μεγίστων (σωρός ελαχίστων) είναι

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

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

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

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

Heapsort Using Multiple Heaps

Heapsort Using Multiple Heaps sort sort Using Multiple s. Λεβεντέας Χ. Ζαρολιάγκης Τµήµα Μηχανικών Η/Υ & Πληροφορικής 29 Αυγούστου 2008 sort 1 Ορισµός ify Build- 2 sort Πως δουλεύει Ιδιότητες 3 4 Προβλήµατα Προτάσεις Ανάλυση Κόστους

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

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

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

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

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

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

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

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

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

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

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap Δομές Δεδομένων Ουρά Προτεραιότητας: Heap Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο (Αναπαράσταση,)

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

Ουρά Προτεραιότητας: Heap

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

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

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

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

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

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Παπαγιαννόπουλος Δημήτριος 30 Μαρτίου 2017 18 Μαΐου 2017 papagianno@ceid.upatras.gr 1 Περιεχόμενα Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο Ουρές προτεραιότητας Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο αριθμός είναι μεγάλος, τόσο οι πελάτες

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

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2 Δοµές Δεδοµένων Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2 Δοµές Δεδοµένων (Αναπαράσταση,) οργάνωση και διαχείριση συνόλων αντικειµένων για αποδοτική ενηµέρωση και ανάκτηση πληροφορίας.

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

Κεφάλαιο 6 Ουρές Προτεραιότητας Κεφάλαιο 6 Ουρές Προτεραιότητας Περιεχόμενα 6.1 Ο αφηρημένος τύπος δεδομένων ουράς προτεραιότητας... 114 6.2 Ουρές προτεραιότητας με στοιχειώδεις δομές δεδομένων... 115 6.3 Δυαδικός σωρός... 116 6.3.1

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

Διαχρονικές δομές δεδομένων

Διαχρονικές δομές δεδομένων Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής Π.χ. κοκκινόμαυρο δένδρο εισαγωγή 0 18 0 5 39 73 1 46 6 80 Αποκατάσταση ισορροπίας 5 39 73 0 46 6 80

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

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

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

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

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

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

σωροί ταξινόμηση σωρού οόροςheap σωρός (heap) συστοιχία Α για έναν σωρό μια δομή δεδομένων που πχ.

σωροί ταξινόμηση σωρού οόροςheap σωρός (heap) συστοιχία Α για έναν σωρό μια δομή δεδομένων που πχ. Παύλος Εφραιμίδης άλλος ένας αλγόριθμος ταξινόμησης πολυπλοκότητας O(n lgn) Ιδιαίτερα χαρακτηριστικά: χρησιμοποιεί μια δομή δεδομένων που ονομάζεται «σωρός» είναι επιτόπια: το πλήθος των στοιχείων της

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

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης Περιεχόμενα 8.1 Κατηγορίες ισορροπημένων δένδρων αναζήτησης... 155 8.1.1 Περιστροφές... 156 8.2 Δένδρα AVL... 157 8.2.1 Αποκατάσταση συνθήκης ισορροπίας... 158

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

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap Ουρά Προτεραιότητας: Heap ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο ομές εδομένων (Αναπαράσταση,) οργάνωση και διαχείριση συνόλων αντικειμένων για

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

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

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα.0 Σταύρος Δ. Νικολόπουλος 06-7 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Ταξινόμηση Selection-Sort Bubble-Sort και

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

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

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

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

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Ταξινόμηση. 1. Ταξινόμηση με Εισαγωγή 2. Ταξινόμηση με Επιλογή. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Ταξινόμηση. Ταξινόμηση με Εισαγωγή. Ταξινόμηση με Επιλογή Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Ταξινόμηση Η ταξινόμηση sortg τοποθετεί ένα σύνολο κόμβων ή εγγραφών σε μία συγκεκριμένη διάταξη

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

Διάλεξη 18: B-Δένδρα

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

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

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap Ουρά Προτεραιότητας: Heap ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

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

Ταξινόμηση. 1. Ταξινόμηση του Shell. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας Περιεχόμενα 14.1 Διωνυμικά Δένδρα... 255 14.2 Διωνυμικές Ουρές... 258 14.1.1 Εισαγωγή στοιχείου σε διωνυμική ουρά... 258 14.1.2 Διαγραφή μεγίστου από διωνυμική

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

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

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

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

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

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

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

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης Ουρές Προτεραιότητας: Υπενθύμιση Σωροί / Αναδρομή / Ταξινόμηση Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς (Abstract Data Type) με μεθόδους: Μπορεί να υλοποιηθεί με

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

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

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

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

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

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

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

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

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

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

Ταχεία Ταξινόμηση Quick-Sort

Ταχεία Ταξινόμηση Quick-Sort Ταχεία Ταξινόμηση Quc-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 1 Outlne Quc-sort Αλγόριθμος Βήμα διαχωρισμού Δένδρο Quc-sort

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ουρές προτεραιότητας Κεφάλαιο 9. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

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

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

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

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι Κατανεμημένα Συστήματα Ι Εκλογή αρχηγού και κατασκευή BFS δένδρου σε σύγχρονο γενικό δίκτυο Παναγιώτα Παναγοπούλου Περίληψη Εκλογή αρχηγού σε γενικά δίκτυα Ορισμός του προβλήματος Ο αλγόριθμος FloodMax

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

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

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

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

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

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

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

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

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

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

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

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

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 3 Αλγόριθμοι Ταξινόμησης Μέρος 3 Μανόλης Κουμπαράκης 1 Ταξινόμηση με Ουρά Προτεραιότητας Θα παρουσιάσουμε τώρα δύο αλγόριθμους ταξινόμησης που χρησιμοποιούν μια ουρά προτεραιότητας για την υλοποίηση τους.

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

Διάλεξη 04: Παραδείγματα Ανάλυσης

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

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

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

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

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

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

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

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

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

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

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

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

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε. Ψηφιακά Δένδρα Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών τα οποία είναι ακολουθίες συμβάλλων από ένα πεπερασμένο αλφάβητο Ένα στοιχείο γράφεται ως, όπου κάθε. Μπορούμε να

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

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3)

Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) Εισαγωγή στην Ανάλυση Αλγορίθμων (2-3) 3.1 Ασυμπτωτικός συμβολισμός (Ι) Οι ορισμοί που ακολουθούν μας επιτρέπουν να επιχειρηματολογούμε με ακρίβεια για την ασυμπτωτική συμπεριφορά. Οι f(n) και g(n) συμβολίζουν

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

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

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

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

Διάλεξη 14: Δέντρα IV - B-Δένδρα

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

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

Αλγόριθμοι Γραφημάτων

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων 1. Minimum Spanning Trees 2. Αλγόριθμος Prim 3. Αλγόριθμος Kruskal Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Minimum Spanning Tree Πρόβλημα: Για δοσμένο συνεκτικό, μη προσανατολισμένο,

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

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

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

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

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

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

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

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

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

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

Σχεδίαση & Ανάλυση Αλγορίθμων

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 3 Αλγόριθμοι Επιλογής Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Αλγόριθμοι Επιλογής Γνωρίζουμε

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

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

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

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

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

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

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

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

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων

Σχεδίαση και Ανάλυση Αλγορίθμων Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4.0 Επιλογή Αλγόριθμοι Επιλογής Select και Quick-Select Σταύρος Δ. Νικολόπουλος 2016-17 Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros

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