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

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

Transcript

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

2 Outlne Quc-sort Αλγόριθμος Βήμα διαχωρισμού Δένδρο Quc-sort Παράδειγμα εκτέλεσης Ανάλυση του quc-sort In-place quc-sort Περίληψη αλγορίθμων ταξινόμησης Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 2

3 QucSort Βασίζεται στην τεχνική του διαίρει και βασίλευε (dvde & conquer) Στην τεχνική αυτή για να λύσω ένα πρόβλημα το σπάω σε υποπροβλήματα. Λύνω κάθε υποπρόβλημα ξεχωριστά και συνθέτω τις επιμέρους λύσεις για να παράγω την τελική λύση του προβλήματος. ΕΦΑΡΜΟΓΗ - Ας υποθέσω ότι έχω στη διάθεσή μου μια συνάρτηση Partton() που κάνει τα ακόλουθα: δοθέντος ενός στοιχείου του πίνακα Α τοποθετεί το στοιχείο στη σωστή θέση στον πίνακα έτσι ώστε όλα τα στοιχεία που βρίσκονται αριστερά του να είναι μικρότερα και όλα που είναι δεξιά του μεγαλύτερα. - Το στοιχείο το οποίο μπαίνει στη «σωστή» θέση το ονομάζουμε στοιχείο διαχώρισης (pvot element) Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 3

4 QucSort Πρόκειται για απλή και γρήγορη μέθοδο ταξινόμησης Εάν θεωρήσουμε τον πίνακα Α: τον οποίο θέλουμε να ταξινομήσουμε. Σε αυτόν τον πίνακα ο αριθμός 33 έχει μια σημαντική ιδιότητα. Όλοι οι αριθμοί στα αριστερά είναι μικρότεροι και όλοι οι αριθμοί στα δεξιά είναι μεγαλύτεροι Αυτό σημαίνει ότι ο αριθμός 33 βρίσκεται στη σωστή στου θέση!! Έτσι προκειμένου να ταξινομήσουμε τον πίνακα αρκεί να επικεντρώσουμε την προσοχή μας στα δύο υποσύνολα το δεξί και το αριστερό. Το πρόβλημα χωρίστηκε σε δύο υποπροβλήματα (Διαίρει και Βασίλευε) Πώς δημιουργούμε στοιχεία σαν το 33? Τα κατασκευάζουμε! Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 4

5 QucSort Έστω λοιπόν συνάρτηση: nt Partton(nt A[], left, rght, pvotindex) που παίρνει σαν ορίσματα έναν πίνακα Α, το αριστερό και δεξί όριο του πίνακα και τη θέση του στοιχείου διαχώρισης και επιστρέφει την καινούργια θέση του στοιχείου διαχώρισης. Η συνάρτηση Partton πραγματοποιεί τη αναδιάταξη και διαίρεση του πίνακα A[p,r]. ΕΡΩΤΗΣΗ: Πως μπορώ να χρησιμοποιήσω τη συνάρτηση για να λύσω το πρόβλημα της ταξινόμησης? Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 5

6 Ταχεία Ταξινόμηση QucSort vod Qucsort(nt A[], nt left, nt rght) { f (left>=rght) return; nt p = Partton (A, left, rght-1, pvot); Qucsort(A, left, p-1); Qucsort(A, p+1, rght); Όπου η διαδικασία partton (A,, j-1,pvot), χωρίζει τον πίνακα Α[ j-1] έτσι ώστε Α[..-1] να περιέχει στοιχεία < pvot, A[ j-1] να περιέχει στοιχεία >pvot, και επιστρέφει την τιµή. Ο αλγόριθμος είναι σωστός αφού η Partton εξασφαλίζει ότι το στοιχείο που θα βρεθεί στη θέση p είναι και αυτό που θα ήταν αν ο πίνακας ήταν ταξινομημένος, ενώ όλα που είναι αριστερά του θα είναι μικρότερα (αλλά αταξινόμητα) και όσα είναι δεξιά μεγαλύτερα (και αταξινόμητα). H Partton οργανώνει τη διαίρεση του πίνακα A[p,r] γύρω από το στοιχείο x=a[p]. Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 6

7 Quc-Sort Ο Quc-sort είναι ένας randomzed αλγόριθμος ταξινόμησης βασισμένος στο πρότυπο «διαίρει και βασίλευε»: Dvde: διάλεξε ένα τυχαίο στοιχείο x (που καλείται pvot) και χώρισε το S σε L στοιχεία μικρότερα του x E στοιχεία ίσα με x G στοιχεία μεγαλύτερα του x Recur: ταξινόμησε τα L και G Conquer: ένωσε τα L, E και G L x E x G x Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 7

8 QucSort ΠΑΡΑΔΕΙΓΜΑ Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 8

9 QucSort ΜΕΘΟΔΟΛΟΓΙΑ (Partton) - Ξεκίνα ένα αριστερό counter (lc) και ένα δεξί counter (rc) - Αρχικά lc = left + 1 //μια θέση μετά το pvot και rc = rght - O lc θα ανεβαίνει όσο A[lc]<=A[pvotIndex] και ο rc θα κατεβαίνει όσο Α[rc]>A[pvotIndex] - Όταν σταματήσουν και οι δύο αντιμεταθέτω τα Α[rc] και Α[lc] και συνεχίζω - Τελειώνουμε όταν ο rc ξεπεράσει το lc - Η θέση που σταμάτησε ο rc είναι και η θέση που πρέπει να μπει το pvot Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 9

10 QucSort ΠΑΡΑΔΕΙΓΜΑ (Partton) pvot lc rc Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 10

11 QucSort Partton (nt A[], nt left, nt rght, nt pvotindex){ swap (A[left], A[pvotIndex]);//στη γενική περίπτωση //pvotindex!=left nt lc = left + 1; nt rc = rght; whle (lc<rc){ whle (A[lc]<=A[left] && lc<rght) lc++; whle (A[rc]>A[left]) rc--; f (lc<rc) swap (A[lc], A[rc]); swap (A[left], A[rc]); return rc; Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 11

12 Διαχωρισμός Διαχωρίζουμε μια ακολουθία εισόδου ως εξής: Αφαιρούμε, κατά σειρά, κάθε στοιχείο y από το S και Εισάγουμε το y στο L, E ή G, ανάλογα με το αποτέλεσμα της σύγκρισης με το pvot x Κάθε εισαγωγή και αφαίρεση γίνεται στην αρχή ή στο τέλος μιας ακολουθίας, και έτσι χρειάζεται χρόνο O(1) Έτσι, το βήμα διαχωρισμού του qucsort χρειάζεται χρόνο O(n) αλγόριθμος partton(s, p) Είσοδος ακολουθία S, θέση p του pvot Έξοδος υποακολουθίες L, E, G των στοιχείων του S που είναι μικρότερα, ίσα, ή μεγαλύτερα από το pvot. L, E, G κενές ακολουθίες x S.remove(p) whle S.sEmpty() y S.remove(S.frst()) f y < x L.nsertLast(y) else f y = x E.nsertLast(y) else { y > x G.nsertLast(y) return L, E, G Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 12

13 QucSort (Ανάλυση) ΧΕΙΡΟΤΕΡΗ ΠΕΡΙΠΤΩΣΗ - Όταν σαν pvot επιλέγουμε πάντα το Α[left] τότε η χειρότερη περίπτωση για τον αλγόριθμο είναι να είναι ο πίνακας ήδη ταξινομημένος. - Στην πρώτη κλήση η Partton συγκρίνει/μεταθέτει Ν στοιχεία και διασπά τον πίνακα σε έναν κενό αριστερό πίνακα και ένα δεξί πίνακα μεγέθους Ν-1. - Όμοια στη δεύτερη κλήση θα απομείνει στα δεξιά πίνακας Ν-2 μεγέθους ενώ θα έχουν εκτελεστεί Ν-1 συγκρίσεις. Άρα κόστος = Ν + Ν = Ο(Ν 2 ) Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 13

14 QucSort (Ανάλυση) ΜΕΣΗ ΠΕΡΙΠΤΩΣΗ - Στη μέση περίπτωση το pvot μπορεί να βρεθεί σε οποιαδήποτε θέση του πίνακα με την ίδια πιθανότητα. - Υπάρχουν Ν δυνατές θέσεις κάθε μια με πιθανότητα 1/Ν Έστω, το μέγεθος του αριστερού κομματιού μετά το χωρισμό των στοιχείων. Αφού ο pvot είναι στη μέση το αριστερό κομμάτι θα είναι N--1. O μέσος χρόνος για ταξινόμηση του αριστερού και δεξιού θα είναι αντίστοιχα T() και Τ(N--1). Ο χρόνος που απαιτείται για το χωρισμό των στοιχείων θα είναι μικρότερος του cn, όπου c σταθερά. Άρα: T ( N) c N 1 N N 1 0 [ T ( ) T ( N 1)] => T ( N) c N 2 N N 1 0 T ( ) Για να επιλύσουμε την παραπάνω αναδρομική πρέπει να διώξω το άθροισμα Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 14

15 QucSort (Ανάλυση) Πολλαπλασιάζω τις σχέσεις για Ν και Ν-1 με Ν και Ν-1 αντίστοιχα και κατόπιν τις αφαιρώ ( N NT NT ( N 1) T ( N ) c 1) N 2 2 c ( N N 1 0 1) T ( ) 2 2 με αφαίρεση => ( N ) ( N 1) T ( N 1) 2cN 2c 2T ( N 1) Για να συνεχίσω θα πρέπει να διώξω το Τ(Ν-1). Για να γίνει αυτό διαιρώ με Ν(Ν-1) και αθροίζω N 2 0 T ( ) NT ( N ) ( N 1) T ( N 1) 2cN 2T ( N 1) NT ( N ) 2cN ( N 1) T ( N 1) => => Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 15

16 T ( N ) 2c T ( N 1) N 1 N 1 N QucSort (Ανάλυση) T( N 1) N 2c N T( N 2) N 1... T( 2) 2c T (1) 2 με πρόσθεση => T N N 1 ( N) 2c 1 j 3 1 j T (1) 2 Για Ν=1 δε γίνεται κλήση επομένως Τ(1) =0. Άρα η παραπάνω σχέση γίνεται: N 1 T ( N) 2c( N 1) j 3 1 j Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 16

17 QucSort (Ανάλυση) Ισχύει όμως: N 1 j 3 1 N 1 j 2 dx x 1 ln( N 1) Άρα έχω: T ( N) 2c( N 1)(1 ln( N 1)) c ' N log N O( N log N) Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 17

18 QucSort (Ανάλυση) Η πολυπλοκότητα στη μέση περίπτωση λοιπόν είναι Ο(ΝlogN). Ίδια πολυπλοκότητα με τον HeapSort αν και στην πράξη ο QucSort είναι γρηγορότερος. Τι μπορούμε να κάνουμε για να αποφύγουμε το Ο(Ν 2 ) της χειρότερης περίπτωσης? ΑΠΑΝΤΗΣΗ Εφόσον το πρόβλημα προκύπτει όταν ο πίνακας είναι ταξινομημένος αντί να διαλέγουμε το πρώτο στοιχείο σαν pvot διάλεξε ένα τυχαίο (Randomzed QucSort). Μπορεί να δειχτεί ότι η εκδοχή αυτή στη μέση περίπτωση έχει πολυπλοκότητα Ο(ΝlogN) Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 18

19 Θεωρητικό Όριο Ερώτηση: Μπορούμε να κατασκευάσουμε αλγόριθμο ταξινόμησης (βασιζόμενο σε συγκρίσεις δύο στοιχείων) που να έχει πολυπλοκότητα μικρότερη του Ο(ΝlogN)? Απάντηση: OXI (με την προϋπόθεση ότι ο αλγόριθμος θα πρέπει να λειτουργεί για οποιοδήποτε τύπο στοιχείων αρκεί φυσικά να ορίζεται ο τελεστής σύγκρισης). Παρατήρηση: Αν τα στοιχεία προς ταξινόμηση είναι ακέραιοι μπορώ να πετύχω χρόνο Ο(Ν) Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 19

20 Θεωρητικό Όριο Απόδειξη: - Περιγράφουμε τον αλγόριθμο σαν ένα δέντρο απόφασης - Έστω αρχικά ο αλγόριθμος συγκρίνει τα στοιχεία Α[] και A[j]. Το αριστερό υπόδεντρο της ρίζας θα αντιστοιχεί στην περίπτωση Α[]<A[j] και δεξί στην περίπτωση Α[]>A[j] - Ένας κόμβος του δέντρου περιέχει τις περιπτώσεις της τελικής λύσης που ικανοποιούν τις συγκρίσεις που έγιναν στο μονοπάτι από τη ρίζα προς τον κόμβο αυτόν. - Τα φύλλα περιέχουν μία λύση. Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 20

21 Θεωρητικό Όριο Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 21

22 Θεωρητικό Όριο - Έστω αλγόριθμος ταξινόμησης Ι και Τ το δέντρο απόφασής του. - Το πλήθος των φύλλων είναι Ν! (όσες και οι δυνατές διατάξεις Ν στοιχείων) - Το ύψος του δυαδικού δέντρου αντιστοιχεί σε κάτω φράγμα για την απόδοση του αλγορίθμου - Ένα δυαδικό δέντρο έχει το πολύ 2 h φύλλα όπου h το ύψος του - Άρα για οποιονδήποτε αλγόριθμο θα πρέπει: 2 h N! => h log(n!) => h log(n/e) N => h NlogN-Nloge - Άρα οποιοσδήποτε αλγόριθμος είναι Ω(NlogN) Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 22

23 Δένδρο Quc-Sort Μια εκτέλεση του quc-sort απεικονίζεται από ένα δυαδικό δένδρο Κάθε κόμβος αναπαριστά μια αναδρομική κλήση του quc-sort και αποθηκεύει Μη ταξινομημένη ακολουθία πριν την εκτέλεση και τον pvot αυτής Ταξινομημένη ακολουθία στο τέλος της εκτέλεσης Η ρίζα είναι η αρχική κλήση Τα φύλλα είναι κλήσεις σε υποακολουθίες μεγέθους 0 ή Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 23

24 Παράδειγμα εκτέλεσης Επιλογή Pvot Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 24

25 Παράδειγμα εκτέλεσης (συνέχεια) Διαχωρισμός, αναδρομική κλήση, επιλογή pvot Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 25

26 Παράδειγμα εκτέλεσης (συνέχεια) Διαχωρισμός, αναδρομική κλήση, βασική περίπτωση Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 26

27 Παράδειγμα εκτέλεσης (συνέχεια) Αναδρομική κλήση,, βασική περίπτωση, συνένωση Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 27

28 Παράδειγμα εκτέλεσης (συνέχεια) Αναδρομική κλήση, επιλογή pvot Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 28

29 Παράδειγμα εκτέλεσης (συνέχεια) Διαχωρισμός,, αναδρομική κλήση, βασική περίπτωση Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 29

30 Παράδειγμα εκτέλεσης (συνέχεια) Συνένωση, συνένωση Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 30

31 Χρόνος Εκτέλεσης Χειρότερης Περίπτωσης Η χειρότερη περίπτωση για τον quc-sort συμβαίνει όταν το pvot είναι το μοναδικό ελάχιστο ή μέγιστο στοιχείο Ένα από τα L και G έχει μέγεθος n 1 και το άλλο 0 Ο χρόνος εκτέλεσης είναι ανάλογος με το άθροισμα n (n 1) 2 Έτσι, ο χρόνος εκτέλεσης χειρότερης περίπτωσης είναι O(n 2 ) βάθος χρόνος 0 n 1 n 1 n 1 1 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 31

32 Αναμενόμενος Χρόνος Εκτέλεσης Σκεφτείτε μια αναδρομική κλήση του quc-sort σε μια ακολουθία μεγέθους s Καλή κλήση: τα μεγέθη των L και G είναι το καθένα λιγότερο από 3s 4 Κακή κλήση: ένα από τα L και G έχει μέγεθος μεγαλύτερο από 3s Good call Bad call Μια κλήση είναι καλή με πιθανότητα 1 2 1/2 των πιθανών pvots προκαλούν καλές κλήσεις: Δομές Δεδομένων και Αλγόριθμοι Κακοί pvots Καλοί pvots Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής Κακοί pvots 32

33 Αναμενόμενος Χρόνος Εκτέλεσης, Μέρος 2 Πιθανοτικό γεγονός: ο αναμενόμενος αριθμός ρίψεων νομίσματος που απαιτείται για να έρθουν κορώνες είναι 2 Για έναν κόμβο βάθους, περιμένουμε ότι Οι 2 πρόγονοι είναι καλές κλήσεις Το μέγεθος της ακολουθίας εισόδου για την παρούσα κλήση είναι το πολύ (3 4) 2 n Άρα έχουμε Για έναν κόμβο βάθους 2log 4 3 n, το αναμενόμενο μέγεθος εισόδου είναι ένα Το αναμενόμενο ύψος του δένδρου quc-sort tree είναι O(log n) Το ποσό της εργασίας που γίνεται στους κόμβους ίδιου βάθους είναι O(n) Έτσι ο αναμενόμενος χρόνος εκτέλεσης είναι O(n log n) expected heght O(log n) s(a) s(r) s(b) s(c) s(d) s(e) s(f) tme per level O(n) O(n) O(n) total expected tme: O(n log n) Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 33

34 In-Place Quc-Sort Ο Quc-sort μπορεί να υλοποιηθεί για να τρέχει n-place Στο βήμα διαχωρισμού, χρησιμοποιούμε πράξεις αντικατάστασης για να αναδιατάξουμε τα στοιχεία της ακολουθίας εισόδου έτσι ώστε Τα στοιχεία μικρότερα του pvot έχουν βαθμό μικρότερο του h Τα στοιχεία που είναι ίσα με το pvot έχουν βαθμό ανάμεσα σε h και Τα στοιχεία μεγαλύτερα του pvot έχουν βαθμό μεγαλύτερο από Οι αναδρομικές κλήσεις λαμβάνουν υπόψη Στοιχεία με βαθμό μικρότερο από h Στοιχεία με βαθμό μεγαλύτερο από Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής Αλγόριθμος nplacequcsort(s, l, r) Είσοδος ακολουθία S, βαθμοί l και r Έξοδος ακολουθία S με στοιχεία βαθμού ανάμεσα σε l και r αναδιατεταγμένα σε αύξουσα σειρά f l r return a r και om nteger between l και r x S.elemAtRan() (h, ) nplacepartton(x) nplacequcsort(s, l, h 1) nplacequcsort(s, 1, r) 34

35 In-Place Διαχωρισμός Εκτέλεσε το διαχωρισμό με 2 δείκτες για να χωρίσεις το S σε L και E G (μια παρόμοια μέθοδος μπορεί να χωρίσει το E G σε E και G). j (pvot = 6) Επανάλαβε μέχρι τα j και να διασταυρωθούν: Διάτρεξε το j δεξιά μέχρι να βρεις στοιχείο > x. Διάτρεξε το αριστερά μέχρι να βρεις στοιχείο < x. Άλλαξε τις θέσεις των στοιχείων που δείχνουν οι j και j Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 35

36 Παράδειγμα A. Κατασκευάστε το δυαδικό δέντρο (bnary tree) που αντιστοιχεί στην εκτέλεση του αλγόριθμου ταξινόμησης qucsort (ταξινόμηση με διαμερισμό και ανταλλαγή) στον πίνακα Α=[10, 4, 15, 7, 23, 6, 15,14, 16, 20]. Κάθε κόμβος του δέντρου θα περιέχει τον υποπίνακα που κάθε φορά καλείται με τις αναδρομικές κλήσεις της συνάρτησης. Β. Πώς επηρεάζει η επιλογή του άξονα (pvot) την απόδοση του αλγόριθμου qucsort; Μπορούμε να χρησιμοποιούμε ως άξονα το τελευταίο στοιχείο του πίνακα; Δικαιολογείστε την απάντησή σας. Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 36

37 A. Κατασκευάστε το δυαδικό δέντρο (bnary tree) που αντιστοιχεί στην εκτέλεση του αλγόριθμου ταξινόμησης qucsort (ταξινόμηση με διαμερισμό και ανταλλαγή) στον πίνακα Α=[10, 4, 15, 7, 23, 6, 15,14, 16, 20]. Κάθε κόμβος του δέντρου θα περιέχει τον υποπίνακα που κάθε φορά καλείται με τις αναδρομικές κλήσεις της συνάρτησης. Μέχρι να πάρουμε τα δύο πρώτα παιδιά, (6,4,7) και (15,23,10,15,14,16,20), γίνονται οι παρακάτω ανταλλαγές (swaps): 10 με 6, 15 (το αριστερότερο) με 7. Μέχρι να πάρουμε τα δύο παιδιά (14,15,10) και (23,15,16,20) γίνονται οι παρακάτω ανταλλαγές (swaps): 15 (το αριστερότερο) με 14, 23 με 15 (το αριστερότερο). Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 37

38 Παράδειγμα Β. Πώς επηρεάζει η επιλογή του άξονα (pvot) την απόδοση του αλγόριθμου qucsort; Μπορούμε να χρησιμοποιούμε ως άξονα το τελευταίο στοιχείο του πίνακα; Δικαιολογείστε την απάντησή σας. Aν κάθε φορά επιλέγεται ως άξονας το μεσαίο στοιχείο και οι τιμές των κλειδιών ακολουθούν τυχαία κατανομή τότε η ταξινόμηση είναι αποτελεσματική γιατί ο πίνακας χωρίζεται σε δύο περίπου ισομήκεις υποπίνακες Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 38

39 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Pvot το 1 ο στοιχείο του πίνακα =

40 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot =

41 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot =

42 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot =

43 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot =

44 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot =

45 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot =

46 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot =

47 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot =

48 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = Άρα, μετά το partton στον πίνακα ταξινομήσαμε τα στοιχεία έτσι ώστε στα αριστερά του pvot (8) να είναι όλα όσα είναι μικρότερα από αυτό (κανένα) και στα δεξιά όλα όσα είναι μεγαλύτερα. Με βάση τον αλγόριθμο του qucsort θα πρέπει να κάνουμε qucsort για κάθε υποπίνακα ο οποίος στο παράδειγμά μας είναι ο null για τα στοιχεία «μικρότερα του 8» και ο [ ] για τα στοιχεία «μεγαλύτερα του 8»

49 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; gude

50 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Pvot το 1 ο στοιχείο του πίνακα = gude

51 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

52 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

53 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

54 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

55 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

56 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

57 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

58 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

59 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

60 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

61 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

62 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

63 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

64 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

65 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude Άρα, μετά το partton στον πίνακα ταξινομήσαμε τα στοιχεία έτσι ώστε στα αριστερά του pvot (12) να είναι όλα όσα είναι μικρότερα από αυτό και στα δεξιά όλα όσα είναι μεγαλύτερα. Με βάση τον αλγόριθμο του qucsort θα πρέπει να κάνουμε qucsort για κάθε υποπίνακα ο οποίος στο παράδειγμά μας είναι ο [ ] για τα στοιχεία «μικρότερα του 12» και ο [ ] για τα στοιχεία «μεγαλύτερα του 12»

66 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Pvot το 1 ο στοιχείο του πίνακα = gude

67 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

68 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

69 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

70 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

71 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

72 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude

73 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot = gude Άρα, μετά το partton στον πίνακα ταξινομήσαμε τα στοιχεία έτσι ώστε στα αριστερά του pvot (10) να είναι όλα όσα είναι μικρότερα από αυτό και στα δεξιά όλα όσα είναι μεγαλύτερα. Με βάση τον αλγόριθμο του qucsort θα πρέπει να κάνουμε qucsort για κάθε υποπίνακα ο οποίος στο παράδειγμά μας είναι ο [9] για τα στοιχεία «μικρότερα του 10» και ο [11] για τα στοιχεία «μεγαλύτερα του 10»

74 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Η συνθήκη f δεν ισχύει άρα τελειώσαμε με το αριστερό τμήμα gude

75 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Η συνθήκη f δεν ισχύει άρα τελειώσαμε με το δεξί τμήμα gude

76 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; gude Άρα, συνεχίζουμε με το δεξί τμήμα του gude=12 που είναι ο πίνακας [ ]

77 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Pvot το 1 ο στοιχείο του πίνακα = gude

78 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot= gude

79 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot= gude

80 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot= gude

81 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot= gude

82 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; pvot= gude Άρα, μετά το partton στον πίνακα ταξινομήσαμε τα στοιχεία έτσι ώστε στα αριστερά του pvot (13) να είναι όλα όσα είναι μικρότερα από αυτό και στα δεξιά όλα όσα είναι μεγαλύτερα. Με βάση τον αλγόριθμο του qucsort θα πρέπει να κάνουμε qucsort για κάθε υποπίνακα ο οποίος στο παράδειγμά μας είναι ο null για τα στοιχεία «μικρότερα του 13» και ο [15 14] για τα στοιχεία «μεγαλύτερα του 13»

83 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Η συνθήκη f δεν ισχύει άρα τελειώσαμε με το αριστερό τμήμα gude

84 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; gude

85 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; gude

86 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; gude

87 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; gude

88 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; gude Άρα, μετά το partton στον πίνακα ταξινομήσαμε τα στοιχεία έτσι ώστε στα αριστερά του pvot (15) να είναι όλα όσα είναι μικρότερα από αυτό και στα δεξιά όλα όσα είναι μεγαλύτερα. Με βάση τον αλγόριθμο του qucsort θα πρέπει να κάνουμε qucsort για κάθε υποπίνακα ο οποίος στο παράδειγμά μας είναι ο [14] για τα στοιχεία «μικρότερα του 15» και ο null για τα στοιχεία «μεγαλύτερα του 15»

89 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Η συνθήκη f δεν ισχύει άρα τελειώσαμε με το αριστερό τμήμα gude

90 qucsort(a,, ) { f( < ) { gude = partton(a,, ) qucsort(a,, gude-1); qucsort(a, gude+1, ); partton (A,, ) { pvot= πρώτο στοιχείο, ή μεσαίο στοιχείο, ή τυχαίο στοιχείο του πίνακα; swap(a[], pvot); = ; = +1; ++ untl (A[] >= pvot or ==); -- untl (A[] <= pvot or ==); f (<) swap(a[], A[]); untl >=; swap(a[], A[]); return ; Ο πίνακας ταξινομημένος είναι :

91 Περίληψη Αλγορίθμων Ταξινόμησης Αλγόριθμος Μέσος Χρόνος Χειρότερος Χρόνος Παρατηρήσεις Bubble sort O(n 2 ) O(n 2 ) selecton-sort O(n 2 ) O(n 2 ) nserton-sort O(n 2 ) O(n 2 ) n-place αργός (καλός για μικρές εισόδους) n-place αργός (καλός για μικρές εισόδους) n-place αργός (καλός για μικρές εισόδους) quc-sort O(n log n) expected O(n 2 ) n-place, randomzed ταχύτατος (καλός για μεγάλες εισόδους) heap-sort O(n log n) O(n log n) merge-sort O(n log n) O(n log n) n-place ταχύς (καλός για μεγάλες εισόδους) σειριακή πρόσβαση δεδομένων ταχύς (καλός για πολύ μεγάλες εισόδους) Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής 91

Ο αλγόριθμος 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 Παράδειγμα εκτέλεσης

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

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Διαίρει και Βασίλευε Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαίρει και Βασίλευε Divide and Conquer Η τεχνική διαίρει και βασίλευε αναφέρεται

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

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή 3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ 3.1 ΑΝΑ ΡΟΜΗ 3.1.1 Εισαγωγή ΕΦΑΡΜΟΣΜΕΝΗ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Αναδροµή είναι η µέθοδος κατά την οποία, σε µία γλώσσα προγραµµατισµού, µία διαδικασία ή συνάρτηση έχει την δυνατότητα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην Ανάλυση Αλγορίθμων Εισαγωγή στην Ανάλυση Αλγορίθμων (4) Μεθοδολογία αναδρομικών σχέσεων (Ι) Με επανάληψη της αναδρομής Έστω όπου r και a είναι σταθερές. Βρίσκουμε τη σχέση που εκφράζει την T(n) συναρτήσει της T(n-) την T(n)

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

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

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

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

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

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

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

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

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

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

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

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

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

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

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

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

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

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

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012 3 5 1 Ταξινόμηση - Sorting Πίνακας Α 1 3 5 5 3 1 Ταξινόμηση (Φθίνουσα) Χωρίς Ταξινόμηση Ταξινόμηση

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

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

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

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

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

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

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

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

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

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 7 η Βασίλης Στεφανής Αλγόριθμοι ταξινόμησης Στην προηγούμενη διάλεξη είδαμε: Binary search Λειτουργεί μόνο σε ταξινομημένους πίνακες Πώς τους ταξινομούμε? Πολλοί τρόποι. Ενδεικτικά:

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

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ (ΑΛΓΟΡΙΘΜΟΙ, Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani, σελ. 55-62 ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΩΝ, Jon Kleinberg, Eva Tardos, Κεφάλαιο 5) Δυαδική αναζήτηση

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

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

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

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

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

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

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

Διάλεξη 19: Κατανομή Πόρων Κόψιμο Τούρτας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 19: Κατανομή Πόρων Κόψιμο Τούρτας. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 19: Κατανομή Πόρων Κόψιμο Τούρτας ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Ορισμός Προβλήματος Τι θα δούμε σήμερα Συνθήκη Δικαιοσύνης Αλγόριθμος 2 επεξεργαστών (Cut & Choose) Αλγόριθμος 3 επεξεργαστών

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

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

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

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα Βάσεις

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ 1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #10: Αλγόριθμοι Διαίρει & Βασίλευε: Master Theorem, Αλγόριθμοι Ταξινόμησης, Πιθανοτικός

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

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

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

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης Δοµές Δεδοµένων 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι Ε. Μαρκάκης Περίληψη Bubble Sort Selection Sort Insertion Sort Χαρακτηριστικά επιδόσεων Shellsort Ταξινόµηση συνδεδεµένων λιστών Δοµές Δεδοµένων

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

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

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

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

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Προηγμένα Συστήματα Πληροφορικής»

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Προηγμένα Συστήματα Πληροφορικής» Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Προηγμένα Συστήματα Πληροφορικής» Μεταπτυχιακή Διατριβή Τίτλος Διατριβής Μελέτη του Προβλήματος των Κίβδηλων Νομισμάτων Ονοματεπώνυμο

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

Εργαστηριακή Άσκηση 1

Εργαστηριακή Άσκηση 1 Εργαστηριακή Άσκηση 1 Επανάληψη προγραμματισμού Βασικοί Αλγόριθμοι Είσοδος τιμών από το πληκτρολόγιο Σε όλα τα προγράμματα που θα γράψουμε στην συνέχεια του εξαμήνου θα χρειαστεί να εισάγουμε τιμές σε

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

Τεχνικές Σχεδιασμού Αλγορίθμων

Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Διαίρει και Βασίλευε Δυναμικός Προγραμματισμός Απληστία Π. Μποζάνης ΤHMMY - Αλγόριθμοι 2014-2015 1 Διαίρει και Βασίλευε Βασικά Βήματα Διαίρει: Κατάτμηση του αρχικού προβλήματος

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

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγοριθμικές Τεχνικές

Αλγοριθμικές Τεχνικές Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Αλγοριθμικές Τεχνικές 1 Τεχνικές Σχεδιασμού Αλγορίθμων Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 22 Counting sort, bucket sort και radix sort 1 / 16 Ιδιότητες αλγορίθμων ταξινόμησης ευστάθεια (stable

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Βασικές έννοιες και εφαρμογές Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή

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

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

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

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

ΕΝΟΤΗΤΑ 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. Λειτουργίες που θέλουµε

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

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

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

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

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

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

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Επεξεργασία Ερωτήσεων Αρχεία ευρετηρίου Κατάλογος συστήματος Αρχεία δεδομένων ΒΑΣΗ Ε ΟΜΕΝΩΝ Σύστημα Βάσεων εδομένων (ΣΒ ) Βάσεις Δεδομένων 2007-2008

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

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

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 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): επιστρέφει

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

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

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

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

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

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

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

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

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

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήματος 1. Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασμός) 2. Προγραμματισμός (Σχεσιακή Άλγεβρα, SQL) ημιουργία/κατασκευή Εισαγωγή εδομένων

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

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015 ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ B- Trees Δομές Δεδομένων Μπαλτάς Αλέξανδρος 21 Απριλίου 2015 ampaltas@ceid.upatras.gr Περιεχόμενα 1. Εισαγωγή 2. Ορισμός B- tree 3. Αναζήτηση σε B- tree 4. Ένθεση σε

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

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1 Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 4 ης διάλεξης 4.1. (α) Αποδείξτε ότι αν η h είναι συνεπής, τότε h(n

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

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ.

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ. Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ. Σάλαρης Πολλές φορές μας δίνεται να λύσουμε ένα πρόβλημα που από την πρώτη

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

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

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

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

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28)

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28) ίκτυα Ταξινόµησης (CLR κεφάλαιο 28) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: ίκτυα σύγκρισης, δίκτυα ταξινόµησης Αρχή - ιτονική ταξινόµηση ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2- Μοντέλο στο οποίο

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

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ  Άνοιξη I. ΜΗΛΗΣ ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2016 - I. ΜΗΛΗΣ ΑΠΛΗΣΤΟΙ ΑΛΓΟΡΙΘΜΟΙ Greedy Algorithms 1 Greedy algorithms H βασική ιδέα: Άρχισε από ένα υπο-πρόβλημα μικρού μεγέθους Επαναληπτικά,

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

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

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

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

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

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

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

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση Διάλεξη 17η: Ταξινόμηση και Αναζήτηση Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Ταξινόμηση CS100, 2016-2017 1 / 10 Το πρόβλημα της Αναζήτησης

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

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

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

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

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

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

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

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

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

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

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

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

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/ Τεχνητή Νοημοσύνη 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

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

(Γραμμικές) Αναδρομικές Σχέσεις

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

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

Ερώτημα 1. Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n.

Ερώτημα 1. Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n. Πρώτο Σύνολο Ασκήσεων 2014-2015 Κατερίνα Ποντζόλκοβα, 5405 Αθανασία Ζαχαριά, 5295 Ερώτημα 1 Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n. Ο αλγόριθμος εύρεσης

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

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

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

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

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Άπληστοι Αλγόριθμοι Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Άπληστοι Αλγόριθμοι Είναι δύσκολο να ορίσουμε ακριβώς την έννοια του άπληστου

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ ΘΕΜΑ 1 ο (2,5 μονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ Τελικές εξετάσεις Πέμπτη 21 Ιουνίου 2012 16:30-19:30 Υποθέστε ότι θέλουμε

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

Η κλασματική γραμμή είναι η πράξη της διαίρεσης.

Η κλασματική γραμμή είναι η πράξη της διαίρεσης. όροι του κλάσματος : αριθμητής παρονομαστής πόσα ίσα μέρη της ακέραιης μονάδας πήρα πόσα ίσα μέρη χώρισα την ακέραιη μονάδα Η κλασματική γραμμή είναι η πράξη της διαίρεσης. Τα κόκκινα κομμάτια αποτελούν

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

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

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

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

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

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

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

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

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

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

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους k πρόβλημα μεγέθους Ν-k Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση επιλύουμε αναδρομικά τα υποπροβλήματα πρόβλημα μεγέθους k πρόβλημα

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

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

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ÌïëëÜ Ì. Á μýô Á.Ì. : 5 moll@moll.r ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΜΑΘΗΜΑ : ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΤΥΟ (ΕΡΓΑΣΤΗΡΙΟ) Ε ΕΞΑΜΗΝΟ ΕΙΣΗΓΗΤΕΣ: Χαϊδόγιαννος Χαράλαμπος ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ

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

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

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

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

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης 1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης Στη συγκεκριμένη ενότητα εξετάζουμε θέματα σχετικά με την αριθμητική πεπερασμένης ακρίβειας που χρησιμοποιούν οι σημερινοί υπολογιστές και τα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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