ΗΥ240 - Παναγιώτα Φατούρου 2

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

Download "ΗΥ240 - Παναγιώτα Φατούρου 2"

Transcript

1 Ενότητα 9 Ταξινόµηση ΗΥ0 - Παναγιώτα Φατούρου Ταξινόµηση Θεωρούµε έναν πίνακα Α[0..n-] µε n στοιχεία στα οποία έχει ορισθεί µια γραµµική διάταξη, δηλαδή ζεύγος στοιχείων x,y του Α, είτε x < y, ή x > y ή x = y. Η διαδικασία ταξινόµησης του Α συνίσταται στην αναδιάταξη των στοιχείων του έτσι ώστε µετά το πέρας της διαδικασίας αυτής να ισχύει Α[0] Α[] Α[n-]. Ταξινόµηση µε Χρήση Ουρών Προτεραιότητας εδοµένου ότι µια βιβλιοθήκη παρέχει ουρές προτεραιότητας, ζητείται αλγόριθµος που να ταξινοµεί τα n στοιχεία του πίνακα Α. Αλγόριθµος Ταξινόµησης µε Χρήση Ουράς Προτεραιότητας MakeEmptySet(S); for (j = 0; j < n; j++) εισαγωγή του στοιχείου Α[j] στην ουρά προτεραιότητας S; for (j = 0; j < n; j++) Print(DeleteMin(S)); Ποια είναι η χρονική πολυπλοκότητα του αλγορίθµου αυτού? Η πολυπλοκότητα εξαρτάται από την πολυπλοκότητα των λειτουργιών Insert() και DeleteMin() της ουράς προτεραιότητας. Αν η ουρά προτεραιότητας υλοποιείται µε τη χρήση ενός σωρού, τότε η χρονική πολυπλοκότητα του αλγορίθµου είναι Ο(nlogn). ΗΥ0 - Παναγιώτα Φατούρου

2 Ταξινόµηση χρησιµοποιώντας άλλες οµές εδοµένων Αλγόριθµος Ταξινόµησης µε Χρήση Ταξινοµηµένων ένδρων MakeEmptyBinarySearchTree(T); for (j = 0; j < n; j++) BinarySearchTreeInsert(Τ, A[j]); Inorder(T) // µε τη Visit() να εκτελεί µια εκτύπωση του κλειδιού του εκάστοτε κόµβου Χρονική Πολυπλοκότητα Η χρονική πολυπλοκότητα του παραπάνω αλγορίθµου είναι Ο(nh), όπου h το ύψος του ταξινοµηµένου δένδρου µετά από τις n εισαγωγές. Αν το ταξινοµηµένο δένδρο είναι AVL, (-) δένδρο ή κοκκινόµαυρο δένδρο τότε η χρονική πολυπλοκότητα του παραπάνω αλγορίθµου είναι Ο(nlogn) (αφού h = O(logn)). Χωρική Πολυπλκότητα Τα n στοιχεία που είναι αποθηκευµένα στον πίνακα Α απαιτείται να αποθηκευτούν εκ νέου σε µια νέα δοµή. Το ίδιο ισχύει και στην περίπτωση χρήσης ουράς προτεραιότητας. Αυτό προκαλεί σπατάλη µνήµης! ΗΥ0 - Παναγιώτα Φατούρου Ταξινόµηση - Ο Αλγόριθµος InsertionSort Πρόβληµα Είσοδος Μια ακολουθία από n αριθµούς <a, a,..., a n >. Έξοδος (output): Μια µετάθεση (αναδιάταξη) < a, a,..., a n > της ακολουθίας εισόδου έτσι ώστε: a a... a n Πως λειτουργεί ο αλγόριθµος αν A = <,,,,,>; Ο αλγόριθµος InsertionSort() και η πολυπλοκότητά του έχουν συζητηθεί αναλυτικά στην Ενότητα του µαθήµατος. Algorithm InsertionSort (Α[..n]) { // Είσοδος: ένας µη-ταξινοµηµένος πίνακας Α ακεραίων αριθµών // Έξοδος: ο πίνακας Α µε τα στοιχεία του σε αύξουσα διάταξη int key, i, j; for (j = ; j n; j++) { key = A[j]; i = j-; while (i > 0 && A[i] > key) { A[i+] = A[i]; i = i-; A[i+] = key; return A; ΗΥ0 - Παναγιώτα Φατούρου

3 Ταξινόµηση - Ο αλγόριθµος InsertionSort() Algorithm InsertionSort (Α[..n]) { int key, i, j; for (j = ; j n; j++) { key = A[j]; i = j-; while (i > 0 && A[i] > key) { A[i+] = A[i]; i = i-; A[i+] = key; return A; Βασική Ιδέα Επαναληπτικά, επιλέγεται το επόµενο στοιχείο από το µη-ταξινοµηµένο κοµµάτι Α[j..n-] του πίνακα και τοποθετείται στην κατάλληλη θέση του ταξινοµηµένου κοµµατιού Α[0..j-] του πίνακα. Πως λειτουργεί ο αλγόριθµος αν A = <,,,,,>; ΗΥ0 - Παναγιώτα Φατούρου Ταξινόµηση - Ο αλγόριθµος SelectionSort() Βασική Ιδέα Επαναληπτική αναζήτηση, στο µηταξινοµηµένο κοµµάτι του πίνακα Α, του στοιχείου εκείνου που θα αποτελέσει το επόµενο στοιχείο στο ταξινοµηµένο κοµµάτι του πίνακα (το µέγεθος του ταξινοµηµένου κοµµατιού του πίνακα αυξάνει κατά ένα µετά από κάθε επανάληψη). Πως λειτουργεί ο αλγόριθµος αν A = <,,,,,>; Procedure SelectionSort(table A[0..n-]) { // sort A by repeatedly selecting the smallest element // from the unsorted part for (i = 0; i < n-; i++) { j = i; for (k = i+; k < n; k++) if (A[k] < A[j]) j = k; swap(a[i], A[j]); Άσκηση για το σπίτι Αποδείξτε ότι η χρονική πολυπλοκότητα της SelectionSort() είναι Θ(n ). i =, j = i = 0, j = ΗΥ0 - Παναγιώτα Φατούρου i =, j = i =, j = i =, j =

4 Ταξινόµηση - Ο αλγόριθµος HeapSort() Βασικές Ιδέες Αποδοτικότερη έκδοση του SelectionSort(), στην οποία το µη-ταξινοµηµένο κοµµάτι του Α διατηρείται ως ένας σωρός που το ελάχιστο στοιχείο του βρίσκεται στη θέση Α[n-] του πίνακα, ενώ τα υπόλοιπα στοιχεία είναι αποθηκευµένα µε την κατάλληλη σειρά σε φθίνουσες θέσεις του A ξεκινώντας από την A[n-]. Υποθέτουµε ότι αρχικά τα στοιχεία που είναι αποθηκευµένα στον πίνακα έχουν την ιδιότητα της µερικής ταξινόµησης (αυτό επιτυγχάνεται µε κλήση µιας διαδικασίας που ονοµάζεται InitializeHeap()). ιατρέχουµε όλα τα στοιχεία του Α και για κάθε ένα από αυτά το ανταλλάσουµε µε το στοιχείο Α[n-] (δηλαδή το ελάχιστο του σωρού) και εκτελούµε µια διαδικασία, που ονοµάζεται Heapify(), η οποία επαναφέρει την ιδιότητα της µερικής ταξινόµησης του σωρού (εφαρµόζοντας τις τεχνικές που συζητήθηκαν στην Ενότητα 8). Procedure HeapSort( table A[0..n-]) { InitializeHeap(Α); // Η InitializeHeap() αναλαµβάνει τη // µερική ταξινόµηση του αρχικού //πίνακα ώστε αυτός να µετατραπεί // σε σωρό for (i = 0; i < n-; i++) { swap(a[i], A[n-]); // επαναληπτική αποθήκευση του // µικρότερου στοιχείου του // σωρού στη θέση i του πίνακα Heapify(A[i+ n-]); // επαναφορά της µερικής // διάταξης του σωρού που µπορεί // να έχει καταστραφεί στη ρίζα ΗΥ0 - Παναγιώτα Φατούρου 7 procedure Heapify(table A[i..j]) { Παράδειγµα Εκτέλεσης της // Αρχικά, το κοµµάτι Α[i..j-] είναι µερικώς ταξινοµηµένο, ενώ µετά την εκτέλεση της Heapify() το κοµµάτι A[i..j] είναι µερικώς HeapSort(A) όπου A = [,,,,,] ταξινοµηµένο που είναι σωρός. m = j; while ((leftchild(m) i AND A[leftchild(m)] < A[m]) OR (rightchild(m) i AND A[rightchild(m)] < A[m]) { // αν υπάρχει αριστερό παιδί µε µικρότερο κλειδί από του m ή αν // υπάρχει δεξιό παιδί µε µικρότερο κλειδί από του m if (rightchild(m) i ) { if (A[leftchild(m)] < A[rightchild(m)]) Ταξινόµηση - Ο αλγόριθµος HeapSort() p = leftchild(m) else p = rightchild(m); else p = i; swap(α[m], A[p]); m = p; Στον παραπάνω κώδικα ισχύει ότι: leftchild(m) = m-n rightchild(m) = m-n- i = 0 i = 0 i = 0 πριν την εκτέλεση της Heapify() µετά την εκτέλεση της Heapify() 0 i =, πριν Heapify() i =, µετά Heapify() i =, πριν Heapify() i =, µετά Heapify() i =, πριν Heapify() i =, µετά Heapify() i =, πριν Heapify() i =, µετά Heapify() 0 ΗΥ0 - Παναγιώτα Φατούρου 8

5 Ταξινόµηση - Ο αλγόριθµος HeapSort() Procedure InitializeHeap(table A[0..n-]) { // Μετατροπή του Α σε σωρό for (i=; i < n; i++) Heapify(A[0..i]); αρχικά i=: τα φύλλα και δεν έχουν παιδιά η Heapify() δεν επιφέρει καµία αλλαγή! 0 0 i=: τα φύλλα, και δεν έχουν παιδιά η Heapify() δεν επιφέρει καµία αλλαγή! µετά ανακύκλωση i = µετά ανακύκλωση i = µετά ανακύκλωση i = µετά ανακύκλωση i = µετά ανακύκλωση i = i=: η ιδιότητα της µερικής ταξινόµησης καταστρατηγείται από το η Heapify() ανταλλάσει το µε το. i=: ο κόµβος είναι ο µόνος που έχει παιδιά η Heapify() ανταλλάσει το µε το παιδί του, i=: η ιδιότητα της µερικής ταξινόµησης έχει που έχει τιµή και είναι µικρότερο. ΗΥ0 - Παναγιώτα καταστρατηγηθεί Φατούρου στη ρίζα η Heapify() ανταλλάσει9 το µε το και στη συνέχεια το µε το. Ταξινόµηση - Ο αλγόριθµος HeapSort() Χρονική Πολυπλοκότητα της HeapSort() (Χρονική Πολυπλοκότητα της InitializeHeap()) + ((n-) * Χρονική Πολυπλοκότητα της Heapify(A[0..n-])) (Χρονική Πολυπλοκότητα της InitializeHeap()) (n-) * (Χρονική Πολυπλοκότητα της Heapify(A[0..n-])) Χρονική Πολυπλοκότητα της Heapify(A[0..n-]) = O(logn)! Εποµένως: Χρονική Πολυπλοκότητα της HeapSort() = O(nlogn)! Χωρική Πολυπλοκότητα της HeapSort() Τα στοιχεία αποθηκεύονται κάθε χρονική στιγµή στον ίδιο τον πίνακα Α. Ο αλγόριθµος είναι πολύ αποδοτικός ως προς την χωρική πολυπλοκότητα. ΗΥ0 - Παναγιώτα Φατούρου 0

6 Ταξινόµηση - Ο αλγόριθµος MergeSort() Τεχνική «ιαίρει και Κυρίευε» Η τεχνική περιλαµβάνει τρία βήµατα:. ιαίρεση του προβλήµατος σε διάφορα υποπροβλήµατα που είναι παρόµοια µε το αρχικό πρόβληµα αλλά µικρότερου µεγέθους.. Κυριαρχία επί των υποπροβληµάτων, επιλύοντας τα αναδροµικά µέχρι αυτά να γίνουν αρκετά µικρού µεγέθους οπότε και τα επιλύουµε απευθείας.. Συνδυασµός των επιµέρους λύσεων των υποπροβληµάτων ώστε να συνθέσουµε µια λύση του αρχικού προβλήµατος. Ο αλγόριθµος MergeSort() ακολουθεί το µοντέλο «ιαίρει και Κυρίευε»:. ιαίρεση: Η προς ταξινόµηση ακολουθία των n στοιχείων διαιρείται σε δύο υπακολουθίες των n/ στοιχείων η κάθε µια.. Κυριαρχία: Οι δυο υπακολουθίες ταξινοµούνται καλώντας αναδροµικά τη MergeSort() για κάθε µια από αυτές. Η αναδροµή εξαντλείται όταν η προς ταξινόµηση υπακολουθία έχει µήκος (αφού κάθε υπακολουθία µήκους είναι ταξινοµηµένη).. Συνδυασµός: Συγχωνεύουµε τις δύο ταξινοµηµένες υπακολουθίες ώστε να σχηµατίσουµε την τελική ταξινοµηµένη ακολουθία. ΗΥ0 - Παναγιώτα Φατούρου Ταξινόµηση - Ο αλγόριθµος MergeSort() ιαδικασία Συγχώνευσης Χρησιµοποιείται µια βοηθητική διαδικασία Merge(table A, int p,q,r), της οποίας οι παράµετροι είναι ένας πίνακας Α και τρεις ακέραιοι, δείκτες στον πίνακα, τ.ω. p q < r. H διαδικασία προϋποθέτει ότι οι υποπίνακες A[p..q] και A[q+..r] είναι ταξινοµηµένοι και συγχωνεύει τα στοιχεία τους ώστε να σχηµατίσει µια ενιαία ταξινοµηµένη υπακολουθία, η οποία αντικαθιστά την αρχική A[p..r]. Αποθηκεύουµε στο τέλος κάθε υποπίνακα έναν κόµβο φρουρό, ώστε όταν αυτός προσεγγισθεί, η τιµή του να είναι σίγουρα µεγαλύτερη από την τιµή του τρέχοντος στοιχείου στον άλλο υποπίνακα. void Merge(table A, int p,q,r) { n = q-p+; n = r-q; // δηµιουργία υποπινάκων L[0..n] και R[0..n] for (i=0; i < n; i++) L[i] = A[p+i]; for (i = 0; i < n; i++) R[i] = A[q++i]; i = j = 0; L[n] = R[n] = ; // κόµβοι φρουροί των πινάκων for (k = p; k <= r; k++) { if (L[i] < R[j]) { A[k] = L[i]; i++; else { A[k] = R[j]; j++; /* for */ /*Merge */ ΗΥ0 - Παναγιώτα Φατούρου

7 Ταξινόµηση - Ο αλγόριθµος MergeSort() Συνθήκη που ισχύει αναλλοίωτη κατά την εκτέλεση της Merge() «Στην αρχή κάθε επανάληψης της ης for, ο υποπίνακας Α[p..k-] περιέχει τα k-p µικρότερα στοιχεία των L[0..n] και R[0..n], ταξινοµηµένα. Επιπλέον, τα L[i] και R[j] είναι τα µικρότερα στοιχεία των υποπινάκων αυτών που δεν έχουν ακόµη καταχωρηθεί στον πίνακα Α.» Ο ισχυρισµός αυτός αποδεικνύεται µε επαγωγή στο k. Η απόδειξη αφήνεται ως άσκηση για το σπίτι! Ποια είναι η χρονική πολυπλοκότητα της Merge(); Θ(n+n) = Θ(n)! void Merge(table A, int p,q,r) { n = q-p+; Θ() n = r-q; Θ() for (i=0; i < n; i++) -- L[i] = A[p+i]; - Θ(n) for (i = 0; i < n; i++) -- R[i] = A[q++i]; - Θ(n) i = j = 0; Θ() L[n] = R[n] = ; --- Θ() for (k = p; k <= r; k++) if (L[i] < R[j]) { A[k] = L[i]; i++; Θ(n+n) else { A[k] = R[j]; j++; ΗΥ0 - Παναγιώτα Φατούρου Ταξινόµηση - Ο αλγόριθµος MergeSort() Παράδειγµα εκτέλεσης της Merge(A, 9,, ), όπου Α[9..] = <,,,7,,,,> Οι ελαφρά σκιασµένες θέσεις στον πίνακα Α έχουν λάβει τις τελικές τους τιµές, ενώ οι έντονα σκιασµένες θέσεις θα αντικατασταθούν στη συνέχεια από άλλες τιµές. Οι ελαφρά σκιασµένες θέσεις στους πίνακες L,R περιέχουν τιµές οι οποίες δεν έχουν ακόµη επανακαταχωρηθεί στον Α, ενώ οι έντονα σκιασµένες το αντίθετο. ΗΥ0 - Παναγιώτα Φατούρου 7

8 Ταξινόµηση - Ο αλγόριθµος MergeSort() ΗΥ0 - Παναγιώτα Φατούρου Ταξινόµηση - Ο αλγόριθµος MergeSort() void MergeSort(table A, int p, r) { if (p < r) { q = (p+r)/ ; MergeSort(A,p,q); MergeSort(A,q+,r); Merge(A,p,q,r); ΗΥ0 - Παναγιώτα Φατούρου 8

9 Ανάλυση Αλγορίθµων τύπου «ιαίρει και Κυρίευε» Έστω T(n) ο χρόνος εκτέλεσης ενός αλγορίθµου που λειτουργεί βάσει της τεχνικής «διαίρει και κυρίευε», όπου n είναι το µέγεθος της εισόδου. Αν το n είναι αρκετά µικρό, π.χ., n c, όπου c είναι µια σταθερά, η απευθείας λύση απαιτεί χρόνο Θ(). Έστω ότι κατά τη διαίρεση του προβλήµατος προκύπτουν a υποπροβλήµατα που το καθένα έχει µέγεθος το /b του µεγέθους του πλήρους προβλήµατος. Έστω ότι η διαίρεση του προβλήµατος σε υποπροβλήµατα απαιτεί χρόνο D(n) και ότι η σύνθεση των επιµέρους λύσεων των υποπροβληµάτων για το σχηµατισµό της πλήρους λύσης απαιτεί χρόνο C(n). Τότε: Θ() αν n c T ( n) = at ( n / b) + D( n) + C( n) διαϕορετικά ΗΥ0 - Παναγιώτα Φατούρου 7 Ανάλυση αλγορίθµου MergeSort() Υποθέτουµε ότι το n είναι κάποια δύναµη του (για λόγους απλότητας). Η MergeSort() για ένα µόνο στοιχείο απαιτεί σταθερό χρόνο Θ(). Όταν εκτελείται σε (υπο)πίνακα µε n > στοιχεία, αναλύουµε τη χρονική πολυπλοκότητα ως εξής: ιαίρει: D(n) = Θ() (υπολογισµός του µεσαίου στοιχείου του υποπίνακα σε χρόνο Θ()) Κυρίευε: Αναδροµική επίλυση δύο υπο-προβληµάτων µεγέθους n/ τα καθένα. Άρα, το χρονικό κόστος του βήµατος αυτού είναι Τ(n/). Συνδύασε: Η κλήση της Merge() απαιτεί χρόνο Θ(n) C(n) = Θ(n). Η αναδροµική σχέση που περιγράφει τη χρονική πολυπλοκότητα της MergeSort() είναι: c αν n =, όπου c και c είναι σταθερές. T ( n) = T ( n / ) + c n αν n >, Άσκηση για το σπίτι Αποδείξτε (είτε επαγωγικά ή µε τη µέθοδο της αντικατάστασης) ότι T(n) = Θ(nlogn)! ΗΥ0 - Παναγιώτα Φατούρου 8 9

10 Ταξινόµηση - Ο αλγόριθµος QuickSort() Βασίζεται στην τεχνική «ιαίρει και Κυρίευε». ιαίρεση: Επιλέγεται ένα στοιχείο x της προς ταξινόµηση ακολουθίας (π.χ., το τελευταίο) και η αρχική ακολουθία Α[p..r] χωρίζεται στις υπακολουθίες Α[p..q-] και Α[q+..r] έτσι ώστε κάθε στοιχείο της Α[p..q-] να είναι µικρότερο του x, ενώ κάθε στοιχείο της A[q+..r] να είναι µεγαλύτερο του x. Μέρος του βήµατος αυτού είναι και ο υπολογισµός της κατάλληλης θέσης q του πίνακα στην οποία θα πρέπει να βρίσκεται το στοιχείο x µετά την ταξινόµηση. Κυριαρχία: Ταξινοµούµε τις δύο υπακολουθίες Α[p..q-] και A[q+..r] µε αναδροµικές κλήσεις της QuickSort(). Συνδυασµός: εν χρειάζεται κάποια ιδιαίτερη ενέργεια για το συνδυασµό των δυο υπακολουθιών Α[p..q-] και A[q+..r], αφότου αυτές ταξινοµηθούν (λόγω του τρόπου που αυτές δηµιουργήθηκαν). ηλαδή, η συνολική ακολουθία A[p..r] είναι και αυτή ταξινοµηµένη χωρίς την εκτέλεση περαιτέρω ενεργειών. Παρατηρήσεις Ο χρόνος εκτέλεσης χειρότερης περίπτωσης της QuickSort() για ένα πίνακα n στοιχείων είναι Θ(n ). Ο αναµενόµενος χρόνος εκτέλεσής της είναι Θ(n logn)! Οι σταθεροί συντελεστές που κρύβονται στο Θ είναι µικροί! Ο αλγόριθµος QuickSort() θα µελετηθεί αναλυτικά στο µάθηµα «Αλγόριθµοι και Πολυπλοκότητα». ΗΥ0 - Παναγιώτα Φατούρου 9 Ενότητα 0 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ0 - Παναγιώτα Φατούρου 0 0

11 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή S i S j =, για κάθε i,j µε i j και S S k = U. Λειτουργίες MakeSet(X): επιστρέφει ένα νέο σύνολο που περιέχει µόνο το σύνολο X. Union(S,T): επιστρέφει το σύνολο S T, το οποίο αντικαθιστά τα S, T. Find(X): επιστρέφει το σύνολο S στο οποίο ανήκει το στοιχείο Χ. Εφαρµογές Το πρόβληµα της διαχειρίσεως ξένων µεταξύ τους συνόλων εµφανίζεται σε αρκετές εφαρµογές. Υπάρχουν αλγόριθµοι ευρέσεως σκελετικών δένδρων (spanning trees) που ξεκινούν από n στοιχειώδη σκελετικά δένδρα µε έναν κόµβο το καθένα και βήµα προς βήµα συνενώνουν ξένα µεταξύ τους σκελετικά υποδένδρα µέχρι να προκύψει τελικά ένα δένδρο που αποτελεί το προς αναζήτηση σκελετικό δένδρο. ΗΥ0 - Παναγιώτα Φατούρου Ξένα Σύνολα µε τη Up-Tree Είναι δένδρο στο οποίο κάθε κόµβος διατηρεί µόνο ένα δείκτη προς τον πατρικό του κόµβο (έτσι όλοι οι δείκτες δείχνουν προς τα πάνω). Ένας κόµβος µπορεί να έχει οποιοδήποτε πλήθος παιδιών. Το σύνολο U είναι ένα δάσος από Up-trees. Κάθε τέτοιο δένδρο περιέχει τα στοιχεία ενός από τα ξένα σύνολα. Το στοιχείο της ρίζας αποτελεί το αναγνωριστικό του συνόλου. Υλοποίηση Find(X) Ακολούθησε τους δείκτες από τον κόµβοο(ύψος προς τηδένδρου) ρίζα. Ποια είναι η πολυπλοκότητα της Find(); ΗΥ0 - Παναγιώτα Φατούρου

12 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έλεγχος αν ένα στοιχείο Χ ανήκει στο σύνολο S Ελέγχουµε αν η Find(X) επιστρέφει S. Υλοποίηση Union(S,T) Κάνε τη ρίζα του ενός δένδρου να δείχνει στη ρίζα του άλλου. Ποια είναι η πολυπλοκότητα της Union(); Ο() Είναι επιθυµητό να κρατήσουµε το ύψος του δένδρου όσο το δυνατό µικρότερο Χρειάζεται προσοχή στο ποιού δένδρου η ρίζα θα δείξει στη ρίζα του άλλου! ΗΥ0 - Παναγιώτα Φατούρου Ξένα Σύνολα που υποστηρίζουν τη Παράδειγµα Έστω ότι έχουµε n σύνολα µε ένα στοιχείο το καθένα. Ποιο είναι το χειρότερο ύψος δένδρου που µπορεί να προκύψει και πως πρέπει να εκτελεστεί η Union() για να προκύψει ένα τέτοιο δένδρο; S S S S S S Στρατηγική για µείωση ύψους δένδρου «Πάντα συνενώνουµε το µικρότερο δένδρο στο µεγαλύτερο, δηλαδή κάνουµε τη ρίζα του µικρότερου δένδρου να δείχνει στη ρίζα του µεγαλύτερου δένδρου». Ένα δένδρο είναι µεγαλύτερο από ένα άλλο αν έχει περισσότερους κόµβους. S S S ΗΥ0 - Παναγιώτα Φατούρου S

13 Ξένα Σύνολα που υποστηρίζουν τη νέα ακµή δένδρο µε λιγότερους κόµβους ΗΥ0 - Παναγιώτα Φατούρου Ξένα Σύνολα που υποστηρίζουν τη Κάθε κόµβος είναι ένα struct µε πεδία κάποια πληροφορία για το στοιχείο, το δείκτη parent στο γονικό κόµβο, και ένα µετρητή count, που χρησιµοποιείται µόνο αν ο κόµβος είναι η ρίζα και περιέχει το πλήθος των κόµβων στο up-tree. pointer UpTreeFind(pointer P) { // return the root of the tree containing P if (P == NULL) error; q = P; while (q->parent!= NULL) do q = q->parent return q; pointer UpTreeUnion(pointer S,T) { // S and T are roots of up-trees */ // returns result of merging smaller into larger if (S == NULL OR P == NULL) return; if (S->count >= T->count) { S->count = S->count + T->count; T->parent = S; return S; else { T->count = T->count + S->count; S->parent = T; return T; ΗΥ0 - Παναγιώτα Φατούρου

14 Ξένα Σύνολα που υποστηρίζουν τη Λήµµα Έστω ότι T είναι ένα up-tree που αναπαριστά ένα σύνολο µεγέθους n, το οποίο δηµιουργήθηκε µε τη συνένωση n συνόλων µεγέθους χρησιµοποιώντας τον παραπάνω αλγόριθµο. Τότε, το ύψος του T είναι το πολύ log n. Απόδειξη: Αποδεικνύουµε ότι για κάθε h, αν το Τ είναι up-tree ύψους h που δηµιουργήθηκε από τη συνένωση n συνόλων µεγέθους (βάσει του αλγορίθµου της σελίδας ), τότε το Τ έχει τουλάχιστον h κόµβους, δηλαδή Τ h. Με επαγωγή στο h. Βάση Επαγωγής (h=0): Τότε το Τ αποτελείται από έναν µόνο κόµβο Τ = 0. Επαγωγική Υπόθεση: Υποθέτουµε πως για κάθε up-tree S, αν το ύψος h του S είναι h, τότε S h. ΗΥ0 - Παναγιώτα Φατούρου 7 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Επαγωγικό Βήµα: Συµβολίζουµε µε Τ το πρώτο δένδρο που δηµιουργείται µε ύψος h+ (εφαρµόζοντας τον παραπάνω αλγόριθµο). Τότε, το Τ δηµιουργείται µε τη συνένωση ενός up-tree Τ σε ένα uptree Τ για τα οποία ισχύουν τα εξής: το Τ έχει ύψος h, ενώ το Τ έχει ύψος το πολύ h και Τ Τ. Από επαγωγική υπόθεση, Τ h. Εποµένως, Τ = Τ + Τ * Τ * h = h+. ΗΥ0 - Παναγιώτα Φατούρου 8

15 Ξένα Σύνολα που υποστηρίζουν τη Ποια είναι η πολυπλοκότητα της Find(X); Υπάρχει όµως ένα λεπτό σηµείο Πως βρίσκουµε τη θέση του X στο up-tree; H Find(X) εµπεριέχει µια LookUp(). Πως θα υλοποιήσουµε αυτή τη LookUp; Περιπτώσεις. Ο χώρος των κλειδιών είναι µικρός (π.χ. έχω 00 κλειδιά συνολικά). Τότε, είναι εφικτό να αποθηκευτούν αυτά σε πίνακα 00 στοιχείων που περιέχει δείκτες σε κάθε ένα από αυτά τα κλειδιά, οπότε η LookUp() υλοποιείται σε σταθερό χρόνο.. Ο χώρος των κλειδιών είναι µεγάλος. Τότε, απαιτείται µια βοηθητική δοµή (π.χ., µια από τις δενδρικές δοµές που υλοποιούν λεξικά) που η πληροφορία κάθε κόµβου είναι δείκτης σε ένα από τα κλειδιά του up-tree. Ποια είναι η πολυπλοκότητα της Find() µε τα νέα δεδοµένα; Ο(logn) ΗΥ0 - Παναγιώτα Φατούρου 9 Ξένα Σύνολα που υποστηρίζουν τη Στρατηγική Συµπίεσης Μονοπατιού «Κατά τη διάρκεια εκτέλεσης µιας Find(Χ) κάνε το parent πεδίο κάθε κόµβου στο µονοπάτι που διατρέχεις από τον κόµβο µε κλειδί Χ στη ρίζα να δείχνει στη ρίζα». Τι αλλαγές επιφέρει η στρατηγική συµπίεσης µονοπατιού στην απόδοση? Οι MakeEmptySet() και Union() εξακολουθούν να χρειάζονται σταθερό χρόνο. Η Find() αρχικά εκτελείται µέσα στον ίδιο ακριβώς χρόνο όπως χωρίς να εφαρµόζεται η στρατηγική, αλλά µετά την εκτέλεση αρκετών Find(), η πολυπλοκότητά της γίνεται «σχεδόν σταθερή». Τι θα πει σχεδόν σταθερή; ΗΥ0 - Παναγιώτα Φατούρου 0

16 Ξένα Σύνολα που υποστηρίζουν τη Για κάθε j, έστω F(j) η αναδροµική συνάρτηση που ορίζεται ως εξής: F(0) = και F(j+) = F(j), j 0. Οι τιµές της F(j) αυξάνουν πάρα πολύ γρήγορα καθώς αυξάνεται το j, π.χ., για j =, Φ() = Ο αριθµός αυτός είναι τροµερά µεγάλος (η διάµετρος του σύµπαντος είναι 0 0 και το πλήθος µορίων σε ολόκληρο το σύµπαν είναι µικρότερο από 0 0 )!!! Ορίζουµε την log*n να είναι η αντίστροφη της F: log*n = log log log log n j φορές Οι τιµές της log*n µειώνονται πάρα πολύ γρήγορα καθώς αυξάνει το n, π.χ., log*n είναι για οποιαδήποτε «χρήσιµη» τιµή του n. Αν η Find() εκτελείται σε χρόνο Ο(log*n) είναι εποµένως σαν να είναι σταθερή! Αυτό συµβαίνει µετά από πολλαπλές εκτελέσεις της Find(). ΗΥ0 - Παναγιώτα Φατούρου Ξένα Σύνολα που υποστηρίζουν τη Τεχνική Συµπίεσης Μονοπατιού Καθώς ακολουθείται το µονοπάτι από τον κόµβο από όπου εκκινείται η Find() προς τη ρίζα, το πεδίο parent κάθε κόµβου στο µονοπάτι ενηµερώνεται ώστε να δείχνει στη ρίζα του δένδρου. Αποτέλεσµα Find(D) όταν χρησιµοποιείται η στρατηγική συµπίεσης µονοπατιού. ΗΥ0 - Παναγιώτα Φατούρου

ΗΥ240 - Παναγιώτα Φατούρου 2

ΗΥ240 - Παναγιώτα Φατούρου 2 Ενότητα 8 Ταξινόµηση ΗΥ0 - Παναγιώτα Φατούρου Ταξινόµηση Θεωρούµε έναν πίνακα Α[0..n-] µε n στοιχεία στα οποία έχει ορισθεί µια γραµµική διάταξη, δηλαδή ζεύγος στοιχείων x,y του Α, είτε x < y, ή x > y

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

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

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

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

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

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

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

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

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

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

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

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

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND) Ένωση Ξένων Συνόλων (Disjoint Sets with Union) S 1,, S k : ξένα υποσύνολα ενός συνόλου U δηλ., S i S j =, αν i j, και S 1 S k = U. Λειτουργίες που θέλουµε

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

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

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

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις Άσκηση 1 Αποδείξτε τη µεταβατική και τη συµµετρική ιδιότητα του Θ. Λύση Μεταβατική Ιδιότητα (ορισµός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)). Για

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

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 9 ο Ταξινόµηση Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ταξινόµηση Εισαγωγή Selection sort Insertion sort Bubble sort

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

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

Ταξινόμηση. Παύλος Εφραιμίδης. Δομές Δεδομένων Ταξινόμηση 1 Ταξινόμηση Παύλος Εφραιμίδης Δομές Δεδομένων Ταξινόμηση 1 Το πρόβλημα της ταξινόμησης Δομές Δεδομένων Ταξινόμηση 2 Ταξινόμηση Δίνεται πολυ-σύνολο Σ με στοιχεία από κάποιο σύμπαν U (πχ. U = το σύνολο των

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

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

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

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

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

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

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

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

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

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

Ταξινόμηση με συγχώνευση Merge Sort

Ταξινόμηση με συγχώνευση Merge Sort Ταξινόμηση με συγχώνευση Merge Sort 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 Πληροφορικής 1 Διαίρει και Βασίλευε Η μέθοδος του «Διαίρει και Βασίλευε» είναι μια γενική αρχή σχεδιασμού αλγορίθμων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } } Πανεπιστήµιο Ιωαννίνων, Τµήµα Πληροφορικής 2 Νοεµβρίου 2005 Η/Υ 432: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκού Έτους 2005-2006 Παναγιώτα Φατούρου Ηµεροµηνία Παράδοσης 1 ο Σετ Ασκήσεων Θεωρητικό Μέρος:

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

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

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

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

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης

Δοµές Δεδοµένων. 10η Διάλεξη Ταξινόµηση. E. Μαρκάκης Δοµές Δεδοµένων 10η Διάλεξη Ταξινόµηση E. Μαρκάκης Περίληψη Ταξινόµηση µε αριθµοδείκτη κλειδιού Ταξινόµηση µε συγχώνευση Αλγόριθµος Mergesort Διµερής συγχώνευση Αφηρηµένη επιτόπου συγχώνευση Αναλυτική

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

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

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

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

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Α. SelectionSort Ταξινόμηση με Επιλογή Β. InsertionSort Ταξινόμηση με Εισαγωγή

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

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

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

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

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

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

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

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

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

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

1o Φροντιστήριο ΗΥ240

1o Φροντιστήριο ΗΥ240 1o Φροντιστήριο ΗΥ240 Άσκηση 1 Αποδείξτε τη μεταβατική και τη συμμετρική ιδιότητα του Θ Μεταβατική Ιδιότητα (ορισμός): Αν f(n) = Θ(g(n)) και g(n) = Θ(h(n)) τότε f(n)=θ(h(n)) Για να ισχύει f(n)= Θ(h(n))

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

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

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

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

Ταξινόµηση. Παύλος Εφραιµίδης. οµές εδοµένων και

Ταξινόµηση. Παύλος Εφραιµίδης. οµές εδοµένων και Παύλος Εφραιµίδης 1 Το πρόβληµα της ταξινόµησης 2 3 ίνεται πολυ-σύνολο Σ µε στοιχεία από κάποιο σύµπαν U (πχ. U = το σύνολο των ακεραίων αριθµών). του Σ είναι η επιβολή µιας διάταξης στα στοιχεία του συνόλου

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 14: Αλγόριθμοι Ταξινόμησης Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Οι αλγόριθμοι ταξινόμησης 3) Mergesort Ταξινόμηση με Συγχώνευση 4) BucketSort Ταξινόμηση με Κάδους Διδάσκων:

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

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

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

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

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

Στοιχεία Αλγορίθµων και Πολυπλοκότητας Στοιχεία Αλγορίθµων και Πολυπλοκότητας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Πολυπλοκότητα 1 / 16 «Ζέσταµα» Να γράψετε τις συναρτήσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Πολλαπλασιασμός μεγάλων ακεραίων (1) Για να πολλαπλασιάσουμε δύο ακεραίους με n 1 και n 2 ψηφία με το χέρι, θα εκτελέσουμε n 1 n 2 πράξεις πολλαπλασιασμού Πρόβλημα ρβημ όταν έχουμε πολλά ψηφία: A = 12345678901357986429

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

a 1 a 2 a n. 3. i = j 1 5. A[i + 1] = A[i] 6. i = i 1

a 1 a 2 a n. 3. i = j 1 5. A[i + 1] = A[i] 6. i = i 1 Εισαγωγη στον Σχεδιασμο και Αναλυση αλγοριθμων Αλγοριθμοι Ταξινομησης Η ταξινόμηση μιας ακολουθίας αριθμών είναι από τα βασικά αποτελέσματα της θεωρίας αλγορίθμων. Μια ευρεία γκάμα τέτοιων αλγορίθμων έχουν

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

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

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

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

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο Σχεδίαση Αλγορίθμων Διαίρει και Βασίλευε http://delab.csd.auth.gr/courses/algorithms/ auth 1 Διαίρει και Βασίλευε Η γνωστότερη ρημέθοδος σχεδιασμού αλγορίθμων: 1. Διαιρούμε το στιγμιότυπο του προβλήματος

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

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

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

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

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

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

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

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων Τεχνικές Σχεδιασµού Αλγορίθµων Αλγόριθµοι Παύλος Εφραιµίδης pefraimi@ee.duth.gr Ορισµένες γενικές αρχές για τον σχεδιασµό αλγορίθµων είναι: ιαίρει και Βασίλευε (Divide and Conquer) υναµικός Προγραµµατισµός

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών Συγχωνευτική Ταξινόμηση (Merge Sort) 7 2 9 4 2 4 7 9 7 2 2 7 9 4

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

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1 Merge Sort (Ταξινόμηση με συγχώνευση) 7 2 9 4 2 4 7 9 7 2 2 7 9 4 4 9 7 7 2 2 9 9 4 4 6/14/2007 3:04 AM Merge Sort 1 Κύρια σημεία για μελέτη Το παράδειγμα του «διαίρει και βασίλευε» ( 4.1.1) Merge-sort

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

Ταξινόμηση. Σαλτογιάννη Αθανασία

Ταξινόμηση. Σαλτογιάννη Αθανασία Ταξινόμηση Σαλτογιάννη Αθανασία Ταξινόμηση Ταξινόμηση Τι εννοούμε όταν λέμε ταξινόμηση; Ταξινόμηση Τι εννοούμε όταν λέμε ταξινόμηση; Ποια είδη αλγορίθμων ταξινόμησης υπάρχουν; Ταξινόμηση Τι εννοούμε όταν

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

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1 Διαίρει-και-Βασίλευε Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Διαίρει-και-Βασίλευε Γενική μέθοδος

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

Αναδρομή Ανάλυση Αλγορίθμων

Αναδρομή Ανάλυση Αλγορίθμων Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αρχές Ανάλυσης Αλγορίθµων Κεφάλαιο 2. Ε. Μαρκάκης Επικ. Καθηγητής

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

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2 Πρόβληµα (ADT) Λεξικού Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2 Πρόβληµα (ADT) Λεξικού Δυναµικά µεταβαλλόµενη συλλογή αντικειµένων που αναγνωρίζονται µε κλειδί (π.χ. κατάλογοι,

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

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

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

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

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

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

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

Heapsort Using Multiple Heaps

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

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

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1 Ο αλγόριθμος Quick-Sort 7 4 9 6 2 2 4 6 7 9 4 2 2 4 7 9 7 9 2 2 9 9 6/14/2007 3:42 AM Quick-Sort 1 Κύρια σημεία για μελέτη Quick-sort ( 4.3) Αλγόριθμος Partition step Δέντρο Quick-sort Παράδειγμα εκτέλεσης

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

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

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

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 2 ιαίρει και Βασίλευε Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 2 1 / 24 Επιλογή Το πρόβληµα

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

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

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

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

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

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

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

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

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

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 4. Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 4 Διαίρει και Βασίλευε (Divide and Conquer) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 Διαίρει και Βασίλευε (Divide-and-Conquer) Διαίρει-και-βασίλευε (γενικά) Χωρίζουµε

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

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ

ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ΕΝΟΤΗΤΑ 5 ΥΝΑΜΙΚΑ ΛΕΞΙΚΑ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ενδρικές οµές για Υλοποίηση υναµικών Λεξικών υναµικά λεξικά λειτουργίες LookUp( ), Insert( ) και Delete( ) Αναζητούµε δένδρα για την αποτελεσµατική υλοποίηση

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 4 Αλγόριθμοι Ταξινόμησης Μέρος 4 Μανόλης Κουμπαράκης Δομές Δεδομένων και Τεχνικές 1 Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Οι αλγόριθμοι ταξινόμησης που είδαμε μέχρι τώρα αποφασίζουν πώς να

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

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

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

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

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Quicksort ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Quicksort [Hoare, 62] Στοιχείο διαχωρισμού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση

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

ΗΥ240 - Παναγιώτα Φατούρου 2

ΗΥ240 - Παναγιώτα Φατούρου 2 ΕΝΟΤΗΤΑ ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΕΝ ΡΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Ισοζυγισµένα ένδρα Χρονική Πολυπλοκότητα αναζήτησης σε δοµές που έχουν ήδη διδάχθει: Στατική Μη-Ταξινοµηµένη Λίστα -> Ο(n), όπου

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

Ταχεία Ταξινόμηση 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

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

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1 Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1 Quicksort [Hoare, 62] Στοιχείο διαχωρισµού (pivot), π.χ. πρώτο, τυχαίο, Αναδιάταξη και διαίρεση εισόδου σε δύο υπο-ακολουθίες:

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

ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ

ΕΝΟΤΗΤΑ 5 ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ ΕΝΟΤΗΤΑ ΥΛΟΠΟΙΗΣΗ ΛΕΞΙΚΩΝ ΜΕ ΙΣΟΖΥΓΙΣΜΕΝΑ ΔΕΝΔΡΑ ΗΥ24 - Παναγιώτα Φατούρου 1 Ισοζυγισµένα Δένδρα Χρονική Πολυπλοκότητα αναζήτησης σε δοµές που έχουν ήδη διδάχθει: q Στατική Μη-Ταξινοµηµένη Λίστα -> Ο(n),

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

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

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

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

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

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

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

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ ΕΝΟΤΗΤΑ 1 ΕΙΣΑΓΩΓΗ 1 εδοµένα Σύνολο από πληροφορίες που πρέπει να αποθηκευτούν σε έναν υπολογιστή Υπολογιστικό Μοντέλο ένας επεξεργαστής και µεγάλος

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΑΛΓΟΡΙΘΜΟΙ  Άνοιξη I. ΜΗΛΗΣ ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2016 - I. ΜΗΛΗΣ ΠΑΡΑΔΕΙΓΜΑΤΑ ΑΛΓΟΡΙΘΜΩΝ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΙ - ΑΝΟΙΞΗ 2016 - Ι. ΜΗΛΗΣ - 03 - EXAMPLES ALG & COMPL 1 Example: GCD συνάρτηση

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Οι αλγόριθμοι ταξινόμησης: Γ. MergeSort Ταξινόμηση με Συγχώνευση Δ. BucketSort Ταξινόμηση με Κάδους Διδάσκων:

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

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

Τηλ , Fax: , URL:

Τηλ , Fax: , URL: Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ Παναγιώτα Φατούρου faturu@cs.uoi.gr Σεπτέµβριος, 2005 Τµήµα Πληροφορικής, Πανεπιστήµιο Ιωαννίνων, Τ.Θ. 1186, Γραφείο Α26, Τηλ. +30 26510 98808, Fax:

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

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

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

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

Αναδρομικοί Αλγόριθμοι

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Πρόβληµα, Στιγµιότυπο, Αλγόριθµος Εργαλεία εκτίµησης πολυπλοκότητας: οι τάξεις Ο(n), Ω(n), Θ(n) Ανάλυση Πολυπλοκότητας Αλγορίθµων

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 4: Διαίρει και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

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

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

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

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

ΗΥ240: οµές εδοµένων. ιδάσκουσα: Παναγιώτα Φατούρου ΗΥ240 - Παναγιώτα Φατούρου 2

ΗΥ240: οµές εδοµένων. ιδάσκουσα: Παναγιώτα Φατούρου ΗΥ240 - Παναγιώτα Φατούρου 2 ΗΥ240: οµές εδοµένων ιδάσκουσα: Παναγιώτα Φατούρου Υποχρεωτικό Μάθηµα 2ου έτους Τµήµα Επιστήµης Υπολογιστών Πανεπιστήµιο Κρήτης Ενότητα 1 Εισαγωγή ΗΥ240 - Παναγιώτα Φατούρου 2 Εισαγωγικά Θέµατα Αντικείµενο

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

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1 Πρόβληµα Επιλογής Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1 Πρόβληµα Επιλογής Πίνακας Α[ Αριθµός k, 1 k n. ] µε n στοιχεία (όχι ταξινοµηµένος). Υπολογισµός του k-οστού µικρότερου στοιχείου (στοιχείο

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

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

Δομές Δεδομένων & Αλγόριθμοι - Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται

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

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

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

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