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

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

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

Transcript

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

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

3 Ουρά Προτεραιότητας (priority queue) Στοιχειώδης υλοποίηση με μη διατεταγμένο πίνακα static int N; static int *pq; void PQinit(int maxn) { pq = malloc(maxn*sizeof(int)); N = 0;} void exch(int *a, int i, int j) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } int PQempty() { return N==0;} void PQinsert(int v) { pq[n++]=v; } [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] N maxn-1 int PQdelmax() { int j, max = 0; for (j = 1; j < N; j++) if (pq[max] < pq[j]) max = j; exch(pq,max,n-1); // ανταλλαγή pq[max] και pq[n-1] return pq[--n]; }

4 Ουρά Προτεραιότητας (priority queue) Άλλες στοιχειώδεις υλοποιήσεις Διατεταγμένος πίνακας: Το μέγιστο στοιχείο στην τελευταία μη κενή θέση [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] N maxn-1 Μη διατεταγμένη λίστα head Διατεταγμένη λίστα: Το μέγιστο στοιχείο στην αρχή της λίστας head

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

6 Ουρά Προτεραιότητας (priority queue) εισαγωγή διαγραφή μέγιστου διαγραφή ( * ) εύρεση μέγιστου αλλαγή προτεραιότητας ένωση διατεταγμένος πίνακας διατεταγμένη λίστα μη διατεταγμένος πίνακας μη διατεταγμένη λίστα σωρός διωνυμική ουρά καλύτερος θεωρητικά ( ** ) ( ** ) ( ** ) ( * ) Υποθέτει ότι γνωρίζουμε τη θέση του στοιχείου που διαγράφεται ( ** ) Απαιτεί πιο σύνθετη συνδεδεμένη λίστα, π.χ. διπλή λίστα

7 Δομή Δεδομένων Σωρού (heap) Υποστηρίζει αποδοτικά τις λειτουργίες μιας ουράς προτεραιότητας. Αναπαράσταση ως πλήρες δυαδικό δένδρο: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του

8 Δομή Δεδομένων Σωρού (heap) Υποστηρίζει αποδοτικά τις λειτουργίες μιας ουράς προτεραιότητας. Σωρός μέγιστου: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. Σωρός ελάχιστου: κάθε κόμβος έχει κλειδί μεγαλύτερο ή ίσο με το κλειδί του γονέα του σωρός μέγιστου : γρήγορη εξαγωγή μέγιστου στοιχείου σωρός ελάχιστου : γρήγορη εξαγωγή ελάχιστου στοιχείου

9 Δομή Δεδομένων Σωρού (heap) Υποστηρίζει αποδοτικά τις λειτουργίες μιας ουράς προτεραιότητας. Αναπαράσταση ως πλήρες δυαδικό δένδρο: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του η ρίζα έχει το μέγιστο κλειδί. ύψος lgn

10 Δομή Δεδομένων Σωρού (heap) Υποστηρίζει αποδοτικά τις λειτουργίες μιας ουράς προτεραιότητας. Αναπαράσταση ως πλήρες δυαδικό δένδρο: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 20 η ρίζα έχει το μέγιστο κλειδί. [2] [3] ύψος lgn [8] [4] [5] [9] [10] [11] [6] 6 9 [12] 5 [7] Υλοποίηση με πίνακα: το στοιχείο στη θέση i είναι ο γονέας των στοιχείων στις θέσεις 2i και 2i+1. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]

11 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 20 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12]

12 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 20 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12] παραβίαση της συνθήκης σωρού

13 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 20 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12] αντιμετάθεση με το γονέα

14 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 20 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12] αντιμετάθεση με το γονέα

15 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. η συνθήκη σωρού αποκαταστάθηκε [1] 20 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12] αντιμετάθεση με το γονέα

16 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 20 [2] [3] fixup(int *a, int k) { while (k>1 && (a[k/2]<a[k])) { exch(a,k,k/2); k=k/2; } } void exch(int *a, int i, int j) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12]

17 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 20 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12]

18 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. παραβίαση της συνθήκης σωρού [1] 14 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12]

19 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. αντιμετάθεση με μεγαλύτερο παιδί [1] 18 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12]

20 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. αντιμετάθεση με μεγαλύτερο παιδί [1] 18 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12]

21 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. αντιμετάθεση με μεγαλύτερο παιδί [1] 18 [2] [3] [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12] η συνθήκη σωρού αποκαταστάθηκε

22 Αλγόριθμοι σε Σωρούς Συνθήκη σωρού: κάθε κόμβος έχει κλειδί μικρότερο ή ίσο με το κλειδί του γονέα του. [1] 18 [2] [3] fixdown (int *a, int k, int N) { int j; while (2*k <= N) { j=2*k; if ((j<n) && (a[j]<a[j+1])) j++; if (a[k] > a[j]) break; exch(a,k,j); k=j; } } void exch(int *a, int i, int j) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } [4] [5] [6] 9 5 [7] [8] [9] [10] [11] 6 [12]

23 Αλγόριθμοι σε Σωρούς Ουρά προτεραιότητας βασισμένη σε σωρό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } [1] 18 [2] 15 [3] 12 [4] 11 [5] 14 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] [11] 6 [12]

24 Αλγόριθμοι σε Σωρούς Ουρά προτεραιότητας βασισμένη σε σωρό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } διαγραφή μέγιστου [1] 18 [2] 15 [3] 12 [4] 11 [5] 14 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] [11] 6 [12]

25 Αλγόριθμοι σε Σωρούς Ουρά προτεραιότητας βασισμένη σε σωρό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } διαγραφή μέγιστου [1] 6 [2] 15 [3] 12 [4] 11 [5] 14 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] [11] 18 [12]

26 Αλγόριθμοι σε Σωρούς Ουρά προτεραιότητας βασισμένη σε σωρό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } διαγραφή μέγιστου [1] 15 [2] 6 [3] 12 [4] 11 [5] 14 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] [11] 18 [12]

27 Αλγόριθμοι σε Σωρούς Ουρά προτεραιότητας βασισμένη σε σωρό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } διαγραφή μέγιστου [1] 15 [2] 14 [3] 12 [4] 11 [5] 6 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] [11] 18 [12]

28 Αλγόριθμοι σε Σωρούς Ουρά προτεραιότητας βασισμένη σε σωρό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } διαγραφή μέγιστου [1] 15 [2] 14 [3] 12 [4] 11 [5] 13 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] [11] 18 [12]

29 Αλγόριθμοι σε Σωρούς Ουρά προτεραιότητας βασισμένη σε σωρό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } διαγραφή μέγιστου [1] 15 [2] 14 [3] 12 [4] 11 [5] 13 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] [11] 18 [12]

30 Αλγόριθμοι σε Σωρούς Ταξινόμηση με ουρά προτεραιότητας void PQsort(int *a, int N) { int k; PQinit(); for (k=1; k<=n; k++) PQinsert(a[k]); for (k=n; k>=1; k--) a[k]=pqdelmax(); }

31 Αλγόριθμοι σε Σωρούς Ταξινόμηση με ουρά προτεραιότητας void PQsort(int *a, int N) { int k; PQinit(); for (k=1; k<=n; k++) PQinsert(a[k]); for (k=n; k>=1; k--) a[k]=pqdelmax(); } Διαδοχική εισαγωγή των στοιχείων στην ουρά O(N logn) χρόνος

32 Αλγόριθμοι σε Σωρούς Ταξινόμηση με ουρά προτεραιότητας void PQsort(int *a, int N) { int k; PQinit(); for (k=1; k<=n; k++) PQinsert(a[k]); for (k=n; k>=1; k--) a[k]=pqdelmax(); } Διαδοχική εισαγωγή των στοιχείων στην ουρά O(N logn) χρόνος Διαδοχική εξαγωγή μέγιστου στοιχείου O(N logn) χρόνος

33 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος

34 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] 4 18 [4] [5] 9 13 [6] 5 14 [7] [8] [9] [10] [11] 12 [12]

35 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] 4 18 [4] [5] 9 13 [6] 5 14 [7] [8] [9] [10] [11] 12 [12]

36 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] 4 18 [4] [5] 9 13 [6] [7] [8] [9] [10] [11] 5 [12]

37 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] 4 18 [4] [5] 9 13 [6] [7] [8] [9] [10] [11] 5 [12]

38 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] 4 18 [4] [5] 9 15 [6] [7] [8] [9] [10] [11] 5 [12]

39 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] 4 18 [4] [5] 9 15 [6] [7] [8] [9] [10] [11] 5 [12]

40 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] 4 18 [4] [5] 9 15 [6] [7] [8] [9] [10] [11] 5 [12]

41 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] 4 18 [4] [5] 9 15 [6] [7] [8] [9] [10] [11] 5 [12]

42 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] [4] [5] 9 4 [6] [7] [8] [9] [10] [11] 5 [12]

43 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] [4] [5] 9 4 [6] [7] [8] [9] [10] [11] 5 [12]

44 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] [4] [5] 9 13 [6] [7] [8] [9] [10] [11] 5 [12]

45 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 11 [2] [3] [4] [5] 9 13 [6] [7] [8] [9] [10] [11] 5 [12]

46 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 18 [2] [3] [4] [5] 9 13 [6] [7] [8] [9] [10] [11] 5 [12]

47 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 18 [2] [3] [4] [5] 9 13 [6] [7] [8] [9] [10] [11] 5 [12]

48 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 18 [2] [3] [4] [5] 9 13 [6] [7] [8] [9] [10] [11] 5 [12]

49 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος [1] 18 [2] [3] [4] [5] 9 13 [6] [7] [8] [9] [10] [11] 5 [12]

50 Αλγόριθμοι σε Σωρούς Ταξινόμηση με σωρό void heapsort(int *a, int N) { int k; for (k=n/2; k>=1; k--) fixdown(a,k,n); while (N>1) { exch(a,1,n); fixdown(a,1,--n); } } Τακτοποίηση σωρού (αντικαθιστά τη διαδοχική εισαγωγή των στοιχείων στην ουρά) O(N) χρόνος Απόδειξη για Ο αριθμός των αντιμεταθέσεων είναι το πολύ

51 Αλγόριθμοι Ταξινόμησης Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις Οι αλγόριθμοι ταξινόμησης που μελετάμε στο μάθημα βασίζονται σε συγκρίσεις ανά δύο των στοιχείων της ακολουθίας: a[i] > a[j] OXI NAI Οποιοσδήποτε τέτοιος αλγόριθμος μπορεί να αναπαρασταθεί με ένα δένδρο απόφασης Θα δείξουμε ότι ο χρόνος εκτέλεσης στη χειρότερη περίπτωση είναι

52 Αλγόριθμοι Ταξινόμησης Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις Δένδρο απόφασης a[i]<a[j]? a[b]<a[c]? a[d]<a[e]? a[f]<a[g]? a[h]<a[i]? a[j]<a[k]? a[l]<a[m]?

53 Αλγόριθμοι Ταξινόμησης Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις Δένδρο απόφασης Π.χ. για n=3 a[1]<a[2]? a[1]<a[3]? a[1]<a[3]? a[2]<a[3]? a[3]< a[1]< a[2] a[2]< a[1]< a[3] a[2]<a[3]? a[1]< a[2]< a[3] a[1]< a[3]< a[2] a[2]< a[3]< a[1] a[3]< a[2]< a[1] Η εκτέλεση του αλγόριθμου ακολουθεί ένα μονοπάτι από τη ρίζα προς κάποιο φύλλο

54 Αλγόριθμοι Ταξινόμησης Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις Δένδρο απόφασης Π.χ. για n=3 a[1]<a[2]? Για a=[1,2,3] a[1]<a[3]? a[1]<a[3]? a[2]<a[3]? a[3]< a[1]< a[2] a[2]< a[1]< a[3] a[2]<a[3]? a[1]< a[2]< a[3] a[1]< a[3]< a[2] a[2]< a[3]< a[1] a[3]< a[2]< a[1] Η εκτέλεση του αλγόριθμου ακολουθεί ένα μονοπάτι από τη ρίζα προς κάποιο φύλλο

55 Αλγόριθμοι Ταξινόμησης Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις Δένδρο απόφασης Π.χ. για n=3 a[1]<a[2]? Για a=[2,1,3] a[1]<a[3]? a[1]<a[3]? a[2]<a[3]? a[3]< a[1]< a[2] a[2]< a[1]< a[3] a[2]<a[3]? a[1]< a[2]< a[3] a[1]< a[3]< a[2] a[2]< a[3]< a[1] a[3]< a[2]< a[1] Η εκτέλεση του αλγόριθμου ακολουθεί ένα μονοπάτι από τη ρίζα προς κάποιο φύλλο

56 Αλγόριθμοι Ταξινόμησης Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις Δένδρο απόφασης a[i]<a[j]? a[b]<a[c]? a[d]<a[e]? a[f]<a[g]? a[h]<a[i]? a[j]<a[k]? a[l]<a[m]? Κάθε μετάθεση της ακολουθίας εισόδου αντιστοιχεί σε διαφορετικό φύλλο υπάρχουν n! φύλλα Ο αριθμός των συγκρίσεων που πραγματοποιεί μια εκτέλεση του αλγόριθμου στη χειρότερη περίπτωση είναι ίσος με το ύψος του δένδρου

57 Αλγόριθμοι Ταξινόμησης Κάτω φράγμα για ταξινόμηση που χρησιμοποιεί μόνο συγκρίσεις Δένδρο απόφασης a[i]<a[j]? Ύψος δυαδικού δένδρου με n! φύλλα = a[b]<a[c]? a[d]<a[e]? a[f]<a[g]? a[h]<a[i]? a[j]<a[k]? a[l]<a[m]? Κάθε μετάθεση της ακολουθίας εισόδου αντιστοιχεί σε διαφορετικό φύλλο υπάρχουν n! φύλλα Ο αριθμός των συγκρίσεων που πραγματοποιεί μια εκτέλεση του αλγόριθμου στη χειρότερη περίπτωση είναι ίσος με το ύψος του δένδρου

58 δ-σωρός Αποτελεί άμεση γενίκευση του δυαδικού σωρού : Κάθε κόμβος έχει το πολύ παιδιά και οι νέοι κόμβοι προστίθενται στο τελευταίο επίπεδο από τα αριστερά προς τα δεξιά 3-σωρός ελάχιστου [1] 2 [2] 6 [3] [4] 4 14 [5] [6] [7] [8] [9] Εισαγωγή : Διαγραφή : χρόνος χρόνος

59 Διωνυμικές ουρές (binomial queues) Δυαδικά δένδρα αριστερά διατεταγμένα σε σωρό Το κλειδί κάθε κόμβου είναι μεγαλύτερο ή ίσο από όλα τα κλειδιά του αριστερού υποδένδρου αυτού του κόμβου. Σωρός δύναμης του 2 Δένδρο αριστερά διατεταγμένο σε σωρό, στο οποίο το δεξί υποδένδρο της ρίζας είναι κενό και το αριστερό υποδένδρο είναι πλήρες

60 Διωνυμικές ουρές (binomial queues) Δυαδικά δένδρα αριστερά διατεταγμένα σε σωρό Το κλειδί κάθε κόμβου είναι μεγαλύτερο ή ίσο από όλα τα κλειδιά του αριστερού υποδένδρου αυτού του κόμβου. Σωρός δύναμης του 2 Δένδρο αριστερά διατεταγμένο σε σωρό, στο οποίο το δεξί υποδένδρο της ρίζας είναι κενό και το αριστερό υποδένδρο είναι πλήρες Διωνυμικό δένδρο 20 Δένδρο που με την αντιστοίχηση αριστερού παιδιού και δεξιού αδελφού δίνει σωρό δύναμης του

61 Διωνυμικές ουρές (binomial queues) Υλοποίηση Δυαδικό δένδρο 8 Νοητή αναπαράσταση: Διωνυμικό δένδρο διατεταγμένο σε σωρό

62 Διωνυμικές ουρές (binomial queues) Διωνυμικά δένδρα

63 Διωνυμικές ουρές (binomial queues) Διωνυμικά δένδρα Το διωνυμικό δένδρο έχει κόμβους : κόμβους στο επίπεδο

64 Διωνυμικές ουρές (binomial queues) Δυαδικά δένδρα αριστερά διατεταγμένα σε σωρό Το κλειδί κάθε κόμβου είναι μεγαλύτερο ή ίσο από όλα τα κλειδιά του αριστερού υποδένδρου αυτού του κόμβου. Σωρός δύναμης του 2 Δένδρο αριστερά διατεταγμένο σε σωρό, στο οποίο το δεξί υποδένδρο της ρίζας είναι κενό και το αριστερό υποδένδρο είναι πλήρες Διωνυμικό δένδρο 20 Δένδρο που με την αντιστοίχηση αριστερού παιδιού και δεξιού αδελφού δίνει σωρό δύναμης του Το πλήθος των κόμβων σε ένα σωρό δύναμης του 2 είναι δύναμη του 2 Κανένας κόμβος δεν έχει κλειδί μεγαλύτερο από το κλειδί της ρίζας Τα διωνυμικά δέντρα είναι διατεταγμένα σε σωρό

65 Διωνυμικές ουρές (binomial queues)

66 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Παράδειγμα: διωνυμική ουρά μεγέθους 13 = (1101) Μια διωνυμική ουρά με σωρούς δύναμης του 2 κλειδιά αποτελείται από το πολύ

67 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου

68 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου

69 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 1

70 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 0

71 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου

72 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου

73 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 1

74 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 1

75 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 1

76 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 1

77 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 1

78 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 1

79 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο 1

80 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Εισαγωγή στοιχείου κρατούμενο Χρόνος =

81 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Διαγραφή μέγιστου από σωρό δύναμης του

82 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Διαγραφή μέγιστου από σωρό δύναμης του

83 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Διαγραφή μέγιστου

84 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Διαγραφή μέγιστου Πρέπει να ενώσουμε δύο ουρές

85 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Ένωση δύο διωνυμικών ουρών κρατούμενο 0

86 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Ένωση δύο διωνυμικών ουρών κρατούμενο 1

87 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Ένωση δύο διωνυμικών ουρών κρατούμενο

88 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Ένωση δύο διωνυμικών ουρών κρατούμενο

89 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Ένωση δύο διωνυμικών ουρών κρατούμενο

90 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Ένωση δύο διωνυμικών ουρών κρατούμενο Χρόνος =

91 Διωνυμικές ουρές (binomial queues) Διωνυμική ουρά Σύνολο σωρών δύναμης του 2 οι οποίοι δεν έχουν το ίδιο μέγεθος. Η δομή της καθορίζεται από τη δυαδική αναπαράσταση του αριθμού των κόμβων της. Κατασκευή διωνυμικής ουράς με κλειδιά Η κατασκευή μιας διωνυμικής ουράς με ουρά απαιτεί χρόνο διαδοχικές εισαγωγές σε αρχικά κενή Για κάθε εισαγωγή έχουμε μια πράξη ένωσης σωρών δύναμης του δύο για κάθε bit που αλλάζει από 1 σε 0 στη δυαδική αναπαράσταση του αριθμού των κόμβων της ουράς

92 Διωνυμικές ουρές (binomial queues) Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει

93 Διωνυμικές ουρές (binomial queues) Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει ο ψηφίο από το τέλος: αλλάζει με κάθε επαύξηση

94 Διωνυμικές ουρές (binomial queues) Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει ο ψηφίο από το τέλος: αλλάζει με κάθε δεύτερη επαύξηση

95 Διωνυμικές ουρές (binomial queues) Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει ο ψηφίο από το τέλος: αλλάζει με κάθε τέταρτη επαύξηση

96 Διωνυμικές ουρές (binomial queues) Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει ο ψηφίο από το τέλος: αλλάζει με κάθε όγδοη επαύξηση

97 Διωνυμικές ουρές (binomial queues) Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Γενικά το i-οστό ψηφίο από το τέλος αλλάζει μετά από επαυξήσεις. Σε ακολουθία N πράξεων το i-οστό ψηφίο από το τέλος αλλάζει συνολικά φορές Σύνολο αλλαγών για όλα τα ψηφία =

98 Διωνυμικές ουρές (binomial queues) Επαύξηση δυαδικού μετρητή Έστω ένας μετρητής C με k bits : μια πράξη επαύξησης θέτει Γενικά το i-οστό ψηφίο από το τέλος αλλάζει μετά από επαυξήσεις. Σε ακολουθία N πράξεων το i-οστό ψηφίο από το τέλος αλλάζει συνολικά φορές Σύνολο αλλαγών για όλα τα ψηφία =

99 Πλεονάζον αριθμητικό σύστημα Ο χρόνος εισαγωγής μπορεί να βελτιωθεί χρησιμοποιώντας ένα πιο ευέλικτο αριθμητικό σύστημα Επιτρέπουμε κάποια ψηφία να λάβουν την τιμή 2 με ελεγχόμενο τρόπο. H ίδια τιμή μπορεί να αντιστοιχεί σε περισσότερες ακολουθίες ψηφίων. Για παράδειγμα Κανονικές ακολουθίες Μια ακολουθία στο πλεονάζον αριθμητικό σύστημα είναι κανονική εάν τα 2 και τα 0 εναλλάσσονται (δηλαδή ανάμεσα από διαδοχικά 2 μεσολαβεί κάποιο 0 και αντιστρόφως).

100 Σωρός Fibonacci Βασίζεται στο διωνυμικό σωρό (δηλαδή αποτελεί μια συλλογή από δένδρα) αλλά έχει πιο χαλαρή δομή δείκτης στον κόμβο (ρίζα) με ελάχιστο κλειδί πλήθος κόμβων Αντισταθμιστικοί χρόνοι εκτέλεσης εισαγωγή, ένωση, εύρεση ελάχιστου, μείωση κλειδιού διαγραφή, εξαγωγή ελάχιστου

101 Σωρός Fibonacci Βασίζεται στο διωνυμικό σωρό (δηλαδή αποτελεί μια συλλογή από δένδρα) αλλά έχει πιο χαλαρή δομή δείκτης στον κόμβο (ρίζα) με ελάχιστο κλειδί πλήθος κόμβων Κάθε κόμβος αποθηκεύει εκτός από το κλειδί του τα παρακάτω δεδομένα γονέας αριθμός παιδιών αριστερός αδερφός δεξιός αδερφός bit επισήμανσης παιδί (οποιοδήποτε)

102 Σωρός Fibonacci Βασίζεται στο διωνυμικό σωρό (δηλαδή αποτελεί μια συλλογή από δένδρα) αλλά έχει πιο χαλαρή δομή δείκτης στον κόμβο (ρίζα) με ελάχιστο κλειδί πλήθος κόμβων Κάθε κόμβος αποθηκεύει εκτός από το κλειδί του τα παρακάτω δεδομένα γονέας αριθμός παιδιών αριστερός αδερφός δεξιός αδερφός bit επισήμανσης παιδί (οποιοδήποτε)

103 Σωρός Fibonacci Βασίζεται στο διωνυμικό σωρό (δηλαδή αποτελεί μια συλλογή από δένδρα) αλλά έχει πιο χαλαρή δομή δείκτης στον κόμβο (ρίζα) με ελάχιστο κλειδί πλήθος κόμβων Κάθε κόμβος αποθηκεύει εκτός από το κλειδί του τα παρακάτω δεδομένα γονέας αριθμός παιδιών αριστερός αδερφός δεξιός αδερφός bit επισήμανσης παιδί (οποιοδήποτε)

104 Σωρός Fibonacci Μέγιστος βαθμός Σε ένα σωρό Fibonacci με είναι κλειδιά ο μέγιστος βαθμός που μπορεί να έχει οποιοσδήποτε κόμβος Δυναμικό σωρού Για την αντισταθμιστική ανάλυση των λειτουργιών ενός σωρού Fibonacci ορίζουμε το δυναμικό του όπου το πλήθος των δένδρων το πλήθος των επισημασμένων κόμβων σταθερά Για να απλοποιήσουμε την ανάλυση θέτουμε σε κάποια σταθερή ποσότητα εργασίας και υποθέτουμε ότι μια μονάδα δυναμικού αντιστοιχεί

105 Σωρός Fibonacci Μέγιστος βαθμός Σε ένα σωρό Fibonacci με είναι κλειδιά ο μέγιστος βαθμός που μπορεί να έχει οποιοσδήποτε κόμβος Δυναμικό σωρού Για την αντισταθμιστική ανάλυση των λειτουργιών ενός σωρού Fibonacci ορίζουμε το δυναμικό του όπου το πλήθος των δένδρων το πλήθος των επισημασμένων κόμβων

106 Σωρός Fibonacci Μέγιστος βαθμός Σε ένα σωρό Fibonacci με είναι κλειδιά ο μέγιστος βαθμός που μπορεί να έχει οποιοσδήποτε κόμβος Δυναμικό σωρού Για την αντισταθμιστική ανάλυση των λειτουργιών ενός σωρού Fibonacci ορίζουμε το δυναμικό του όπου το πλήθος των δένδρων το πλήθος των επισημασμένων κόμβων

107 Σωρός Fibonacci Εύρεση ελάχιστου κόμβου Επιστρέφει τον κόμβο με ελάχιστο κλειδί Το πραγματικό κόστος της εύρεσης είναι Πρέπει επίσης να φράξουμε το αντισταθμιστικό κόστος. Το δυναμικό της δομής μετά την πράξη είναι Άρα το αντισταθμιστικό κόστος είναι

108 Σωρός Fibonacci Εισαγωγή κόμβου Δημιουργείται νέο δένδρο με μόνο ένα κόμβο και εισάγεται στη λίστα των ριζών δίπλα από το Αν το εισαγόμενο κλειδί είναι το ελάχιστο τότε ο δείκτης δείχνει στο νέο κόμβο εισαγωγή(8)

109 Σωρός Fibonacci Εισαγωγή κόμβου Δημιουργείται νέο δένδρο με μόνο ένα κόμβο και εισάγεται στη λίστα των ριζών δίπλα από το Αν το εισαγόμενο κλειδί είναι το ελάχιστο τότε ο δείκτης δείχνει στο νέο κόμβο εισαγωγή(2)

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

111 Σωρός Fibonacci Ένωση δύο σωρών Fibonacci Ενώνει τις αντίστοιχες λίστες ριζικών κόμβων χρησιμοποιώντας τους δείκτες και Ο δείκτης δείχνει στον κόμβο με το ελάχιστο κλειδί μεταξύ των και ένωση

112 Σωρός Fibonacci Ένωση δύο σωρών Fibonacci Ενώνει τις αντίστοιχες λίστες ριζικών κόμβων χρησιμοποιώντας τους δείκτες και Ο δείκτης δείχνει στον κόμβο με το ελάχιστο κλειδί μεταξύ των και Το πραγματικό κόστος της ένωσης είναι Το δυναμικό της δομής μετά την πράξη είναι Άρα το αντισταθμιστικό κόστος ένωσης είναι

113 Σωρός Fibonacci Εξαγωγή ελάχιστου Διαγράφει τον κόμβο με το ελάχιστο κλειδί και ενοποιεί δένδρα στο ριζικό επίπεδο

114 Σωρός Fibonacci Εξαγωγή ελάχιστου Διαγράφει τον κόμβο με το ελάχιστο κλειδί και ενοποιεί δένδρα στο ριζικό επίπεδο

115 Σωρός Fibonacci Εξαγωγή ελάχιστου Διαγράφει τον κόμβο με το ελάχιστο κλειδί και ενοποιεί δένδρα στο ριζικό επίπεδο ο βήμα διαγραφής μέγιστου

116 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών Πριν την ενοποίηση θέτουμε

117 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

118 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

119 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

120 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

121 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

122 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

123 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

124 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

125 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

126 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

127 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

128 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

129 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

130 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

131 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

132 Σωρός Fibonacci Εξαγωγή ελάχιστου Η ρουτίνα ενοποίησης (consolidate) χρησιμοποιεί ένα βοηθητικό πίνακα δεικτών

133 Σωρός Fibonacci Εξαγωγή ελάχιστου Το πραγματικό κόστος της εξαγωγής είναι Το δυναμικό της δομής πριν την πράξη είναι Το δυναμικό της δομής μετά την πράξη είναι Άρα η μεταβολή του δυναμικού είναι Το αντισταθμιστικό κόστος εξαγωγής είναι

134 Σωρός Fibonacci Μείωση κλειδιού Η εκτέλεση αυτής της πράξης έχει ως αποτέλεσμα τα δένδρα του σωρού Fibonacci να μην παραμένουν διωνυμικά. Για να μειώσουμε το κλειδί του κόμβου από σε εκτελούμε

135 Σωρός Fibonacci Μείωση κλειδιού Η εκτέλεση αυτής της πράξης έχει ως αποτέλεσμα τα δένδρα του σωρού Fibonacci να μην παραμένουν διωνυμικά μείωση του 46 σε

136 Σωρός Fibonacci Μείωση κλειδιού Η εκτέλεση αυτής της πράξης έχει ως αποτέλεσμα τα δένδρα του σωρού Fibonacci να μην παραμένουν διωνυμικά μείωση του 35 σε θα εκτελεστεί κλιμακωτή αποκοπή (cascading cut)

137 Σωρός Fibonacci Μείωση κλειδιού Η εκτέλεση αυτής της πράξης έχει ως αποτέλεσμα τα δένδρα του σωρού Fibonacci να μην παραμένουν διωνυμικά θα εκτελεστεί κλιμακωτή αποκοπή (cascading cut) θα εκτελεστεί κλιμακωτή αποκοπή (cascading cut)

138 Σωρός Fibonacci Μείωση κλειδιού Η εκτέλεση αυτής της πράξης έχει ως αποτέλεσμα τα δένδρα του σωρού Fibonacci να μην παραμένουν διωνυμικά θα εκτελεστεί κλιμακωτή αποκοπή (cascading cut) η κλιμακωτή αποκοπή τερματίζεται

139 Σωρός Fibonacci Μείωση κλειδιού Η εκτέλεση αυτής της πράξης έχει ως αποτέλεσμα τα δένδρα του σωρού Fibonacci να μην παραμένουν διωνυμικά

140 Σωρός Fibonacci Μείωση κλειδιού Έστω ότι η διαδικασία κλιμακωτής αποκοπής εκτελέστηκε φορές Το πραγματικό κόστος της μείωσης είναι Το δυναμικό της δομής πριν την πράξη είναι Το δυναμικό της δομής μετά την πράξη είναι η αποκοπή του δημιούργησε 1 δένδρο οι κλιμακωτές αποκοπές δημιούργησαν δένδρα

141 Σωρός Fibonacci Μείωση κλειδιού Έστω ότι η διαδικασία κλιμακωτής αποκοπής εκτελέστηκε φορές Το πραγματικό κόστος της μείωσης είναι Το δυναμικό της δομής πριν την πράξη είναι Το δυναμικό της δομής μετά την πράξη είναι οι κλιμακωτές αποκοπές έσβησαν την επισήμανση η τελική κλιμακωτή αποκοπή ίσως επισήμανε ένα κόμβο κόμβων

142 Σωρός Fibonacci Μείωση κλειδιού Έστω ότι η διαδικασία κλιμακωτής αποκοπής εκτελέστηκε φορές Το πραγματικό κόστος της μείωσης είναι Το δυναμικό της δομής πριν την πράξη είναι Το δυναμικό της δομής μετά την πράξη είναι Άρα η μεταβολή του δυναμικού είναι Το αντισταθμιστικό κόστος εξαγωγής είναι

143 Σωρός Fibonacci Διαγραφή κόμβου Έστω ο κόμβος που θέλουμε να διαγράψουμε. Η διαγραφή γίνεται σε δύο βήματα 1. Μειώνουμε το κλειδί του σε 2. Εκτελούμε εξαγωγή ελάχιστου Το αντισταθμιστικό κόστος της διαγραφής είναι

144 Σωρός Fibonacci Μέγιστος βαθμός Σε ένα σωρό Fibonacci με είναι κλειδιά ο μέγιστος βαθμός που μπορεί να έχει οποιοσδήποτε κόμβος Χωρίς την πράξη μείωσης κλειδιού τα δένδρα ενός σωρού Fibonacci είναι διωνυμικά, άρα Με τη μείωση κλειδιού το παραπάνω φράγμα δεν ισχύει. Θα δείξουμε όμως ότι όπου Ακολουθία Fibonacci

145 Σωρός Fibonacci Μέγιστος βαθμός Σε ένα σωρό Fibonacci με είναι κλειδιά ο μέγιστος βαθμός που μπορεί να έχει οποιοσδήποτε κόμβος Χωρίς την πράξη μείωσης κλειδιού τα δένδρα ενός σωρού Fibonacci είναι διωνυμικά, άρα Με τη μείωση κλειδιού το παραπάνω φράγμα δεν ισχύει. Θα δείξουμε όμως ότι όπου Ακολουθία Fibonacci Ισχύει

146 Σωρός Fibonacci Μέγιστος βαθμός Λήμμα Έστω το πλήθος των απογόνων του κόμβου δένδρο που τον περιέχει. Αν τότε

147 Σωρός Fibonacci Μέγιστος βαθμός Λήμμα Έστω το πλήθος των απογόνων του κόμβου δένδρο που τον περιέχει. Αν τότε Τότε αν ο έχει μέγιστο βαθμό έχουμε

148 Σωρός Fibonacci Μέγιστος βαθμός Λήμμα Έστω το πλήθος των απογόνων του κόμβου δένδρο που τον περιέχει. Αν τότε Παρατήρηση : Έστω τα παιδιά του με τη σειρά με την οποία τα απέκτησε από το πιο παλιό στο πιο πρόσφατο. Τότε και Ισχύει γιατί όταν συνδέθηκε ο με τον τότε αφού ο είχε ήδη παιδιά τους. Από εκείνη τη στιγμή ο μπορεί να έχασε το πολύ ένα παιδί.

149 Σωρός Fibonacci Μέγιστος βαθμός Λήμμα Έστω το πλήθος των απογόνων του κόμβου δένδρο που τον περιέχει. Αν τότε Έστω ο ελάχιστος δυνατός αριθμός απογόνων ενός κόμβου με βαθμό Ας υποθέσουμε ότι και ότι ο έχει παιδιά Από την προηγούμενη παρατήρηση ισχύει και Δείχνουμε με επαγωγή ότι. Η βάση της επαγωγής ισχύει αφού Επομένως

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.1 Αλγόριθμοι Ένα ενδεικτικό πρόβλημα: συνδετικότητα Αλγόριθμοι ένωσης-εύρεσης Προοπτική Σύνοψη θεμάτων 46

1.1 Αλγόριθμοι Ένα ενδεικτικό πρόβλημα: συνδετικότητα Αλγόριθμοι ένωσης-εύρεσης Προοπτική Σύνοψη θεμάτων 46 Περιεχόμενα ΜΕΡΟΣ ΕΝΑ Θεμελιώδεις έννοιες 21 ΚΕΦΑΛΑΙΟ ΕΝΑ. Εισαγωγή 23 1.1 Αλγόριθμοι 24 1.2 Ένα ενδεικτικό πρόβλημα: συνδετικότητα 26 1.3 Αλγόριθμοι ένωσης-εύρεσης 31 1.4 Προοπτική 44 1.5 Σύνοψη θεμάτων

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντισταθμιστική ανάλυση

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

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

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

Οσρά Προτεραιότητας (priority queue) Οσρά Προτεραιότητας (priority queue) Γνκή δεδνκέλσλ πνπ ππνζηεξίδεη ηηο αθόινπζεο ιεηηνπξγίεο εηζαγσγή ζηνηρείνπ επηζηξνθή ηνπ ζηνηρείνπ κε ην κεγαιύηεξν θιεηδί (ή ειάρηζην θιεηδί) θαη δηαγξαθή ηνπ από

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση

Κεφάλαιο 13 Αντισταθμιστική Ανάλυση Κεφάλαιο 13 Αντισταθμιστική Ανάλυση Περιεχόμενα 13.1 Αντισταθμιστική Ανάλυση... 248 13.2 Μέθοδοι Αντισταθμιστικής Ανάλυσης... 250 13.2.1 Η χρεωπιστωτική μέθοδος... 250 13.2.2 Η ενεργειακή μέθοδος... 251

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

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

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

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

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου Συμπίεση Η συμπίεση δεδομένων ελαττώνει το μέγεθος ενός αρχείου : Εξοικονόμηση αποθηκευτικού χώρου Εξοικονόμηση χρόνου μετάδοσης Τα περισσότερα αρχεία έχουν πλεονασμό στα δεδομένα τους Είναι σημαντική

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 12η Διάλεξη Διάσχιση Δέντρων και Ουρές Προτεραιότητας. Ε. Μαρκάκης

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

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

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

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

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

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

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

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

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

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

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

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) Ένα κόκκινο-µαύρο δένδρο είναι ένα δυαδικό δένδρο αναζήτησης στο οποίο οι κόµβοι µπορούν να χαρακτηρίζονται από ένα εκ των δύο χρωµάτων: µαύρο-κόκκινο. Το χρώµα της

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

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

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

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

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

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

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

Ουρές προτεραιότητας

Ουρές προτεραιότητας Ουρές προτεραιότητας Πελάτες... στο ταµείο µιας τράπεζας Κάθε πελάτης µε ένα νούµερο/αριθµός προτεραιότητας! Όσοοαριθµός είναι µεγάλος, τόσο οι πελάτες είναι πιο ενδιαφέροντες(!) ένα µόνο ταµείο ανοικτό

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

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

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

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

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

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

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

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

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

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

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

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

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

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική

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

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

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

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

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i. Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων

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

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

Αλγόριθμοι ταξινόμησης Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης BuubleSort, SelectionSort, InsertionSort, Merger Sort, Quick Soft ΕΠΛ Δομές Δεδομένων και Αλγόριθμοι

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

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

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

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

Κεφάλαιο 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 Σωρός και Ταξινόμηση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Σωρός Μεγίστου ως ΑΤΔ Ένας σωρός μεγίστου (max heap) είναι ένας ΑΤΔ που

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

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

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

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2018-2019 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

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

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

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

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

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012

Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012 Πανεπιστήμιο Ιωαννίνων Τμήμα Πληροφορικής Δομές Δεδομένων [ΠΛΥ302] Χειμερινό Εξάμηνο 2012 Ενδεικτικές απαντήσεις 1 ου σετ ασκήσεων. Άσκηση 1 Πραγματοποιήσαμε μια σειρά μετρήσεων του χρόνου εκτέλεσης τριών

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

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

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

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Ταξινόμηση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Είσοδος n αντικείμενα a 1, a 2,..., a n με κλειδιά (συνήθως σε ένα πίνακα, ή λίστα, κ.τ.λ)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι Δομές Δεδομένων & Αναζήτηση & Ταξινόμηση 1 Αναζήτηση Έχω έναν πίνακα Α με Ν στοιχεία. Πρόβλημα: Βρες αν το στοιχείο x ανήκει στον πίνακα Αν ο πίνακας είναι αταξινόμητος τότε μόνη λύση σειριακή αναζήτηση

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

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

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

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

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης Περιεχόμενα 7.1 Ο αφηρημένος τύπος δεδομένων λεξικού... 133 7.1.1 Διατεταγμένα λεξικά... 134 7.2 Στοιχειώδεις υλοποιήσεις με πίνακες και λίστες... 135 7.2.1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δυναμικός Κατακερματισμός Βάσεις Δεδομένων 2017-2018 1 Κατακερματισμός Πρόβλημα στατικού κατακερματισμού: Έστω Μ κάδους και r εγγραφές ανά κάδο - το πολύ Μ * r εγγραφές (αλλιώς μεγάλες αλυσίδες υπερχείλισης)

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

Κεφάλαιο 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 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

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

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

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

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